From 68ee3d7bcf9b4a085a47702049fb7b33d35d13a5 Mon Sep 17 00:00:00 2001 From: William Emfinger Date: Fri, 28 Mar 2025 23:31:41 -0500 Subject: [PATCH 01/39] wip doom --- components/doom/CMakeLists.txt | 16 + components/doom/include/doom.hpp | 25 + components/doom/prboom/AUTHORS | 163 + components/doom/prboom/CMakeLists.txt | 19 + components/doom/prboom/COPYING | 367 ++ components/doom/prboom/am_map.c | 1584 ++++++ components/doom/prboom/am_map.h | 111 + components/doom/prboom/config.h | 52 + components/doom/prboom/d_client.c | 529 ++ components/doom/prboom/d_deh.c | 3083 +++++++++++ components/doom/prboom/d_deh.h | 1113 ++++ components/doom/prboom/d_englsh.h | 707 +++ components/doom/prboom/d_event.h | 125 + components/doom/prboom/d_items.c | 140 + components/doom/prboom/d_items.h | 59 + components/doom/prboom/d_main.c | 1057 ++++ components/doom/prboom/d_main.h | 74 + components/doom/prboom/d_net.h | 214 + components/doom/prboom/d_player.h | 234 + components/doom/prboom/d_server.c | 754 +++ components/doom/prboom/d_think.h | 94 + components/doom/prboom/d_ticcmd.h | 59 + components/doom/prboom/data/doom1.wad | Bin 0 -> 4196020 bytes components/doom/prboom/data/prboom.wad | Bin 0 -> 143312 bytes components/doom/prboom/dbopl.c | 1596 ++++++ components/doom/prboom/dbopl.h | 219 + components/doom/prboom/docs/DMSPEC16.txt | 3810 ++++++++++++++ components/doom/prboom/doomdata.h | 204 + components/doom/prboom/doomdef.c | 45 + components/doom/prboom/doomdef.h | 297 ++ components/doom/prboom/doomstat.c | 105 + components/doom/prboom/doomstat.h | 322 ++ components/doom/prboom/doomtype.h | 104 + components/doom/prboom/dstrings.c | 85 + components/doom/prboom/dstrings.h | 80 + components/doom/prboom/f_finale.c | 668 +++ components/doom/prboom/f_finale.h | 56 + components/doom/prboom/f_wipe.c | 202 + components/doom/prboom/f_wipe.h | 45 + components/doom/prboom/g_game.c | 2891 +++++++++++ components/doom/prboom/g_game.h | 175 + components/doom/prboom/hu_lib.c | 746 +++ components/doom/prboom/hu_lib.h | 247 + components/doom/prboom/hu_stuff.c | 1592 ++++++ components/doom/prboom/hu_stuff.h | 90 + components/doom/prboom/i_joy.h | 47 + components/doom/prboom/i_main.h | 42 + components/doom/prboom/i_network.h | 74 + components/doom/prboom/i_sound.h | 117 + components/doom/prboom/i_system.h | 47 + components/doom/prboom/i_video.h | 65 + components/doom/prboom/info.c | 4900 ++++++++++++++++++ components/doom/prboom/info.h | 1501 ++++++ components/doom/prboom/lprintf.c | 95 + components/doom/prboom/lprintf.h | 53 + components/doom/prboom/m_argv.c | 58 + components/doom/prboom/m_argv.h | 47 + components/doom/prboom/m_bbox.c | 58 + components/doom/prboom/m_bbox.h | 56 + components/doom/prboom/m_cheat.c | 745 +++ components/doom/prboom/m_cheat.h | 58 + components/doom/prboom/m_fixed.h | 223 + components/doom/prboom/m_menu.c | 2328 +++++++++ components/doom/prboom/m_menu.h | 170 + components/doom/prboom/m_misc.c | 764 +++ components/doom/prboom/m_misc.h | 100 + components/doom/prboom/m_random.c | 147 + components/doom/prboom/m_random.h | 154 + components/doom/prboom/m_swap.h | 134 + components/doom/prboom/midifile.c | 1274 +++++ components/doom/prboom/midifile.h | 194 + components/doom/prboom/mus2mid.c | 357 ++ components/doom/prboom/mus2mid.h | 49 + components/doom/prboom/opl.c | 459 ++ components/doom/prboom/opl.h | 123 + components/doom/prboom/opl_queue.c | 280 + components/doom/prboom/opl_queue.h | 45 + components/doom/prboom/oplplayer.c | 1447 ++++++ components/doom/prboom/oplplayer.h | 73 + components/doom/prboom/p_ceilng.c | 472 ++ components/doom/prboom/p_doors.c | 704 +++ components/doom/prboom/p_enemy.c | 2602 ++++++++++ components/doom/prboom/p_enemy.h | 118 + components/doom/prboom/p_floor.c | 1036 ++++ components/doom/prboom/p_genlin.c | 1155 +++++ components/doom/prboom/p_inter.c | 914 ++++ components/doom/prboom/p_inter.h | 75 + components/doom/prboom/p_lights.c | 434 ++ components/doom/prboom/p_map.c | 2381 +++++++++ components/doom/prboom/p_map.h | 92 + components/doom/prboom/p_maputl.c | 683 +++ components/doom/prboom/p_maputl.h | 89 + components/doom/prboom/p_mobj.c | 1526 ++++++ components/doom/prboom/p_mobj.h | 403 ++ components/doom/prboom/p_plats.c | 436 ++ components/doom/prboom/p_pspr.c | 829 +++ components/doom/prboom/p_pspr.h | 119 + components/doom/prboom/p_saveg.c | 1029 ++++ components/doom/prboom/p_saveg.h | 66 + components/doom/prboom/p_setup.c | 1654 ++++++ components/doom/prboom/p_setup.h | 57 + components/doom/prboom/p_sight.c | 338 ++ components/doom/prboom/p_spec.c | 3330 ++++++++++++ components/doom/prboom/p_spec.h | 1141 ++++ components/doom/prboom/p_switch.c | 1145 ++++ components/doom/prboom/p_telept.c | 345 ++ components/doom/prboom/p_tick.c | 291 ++ components/doom/prboom/p_tick.h | 75 + components/doom/prboom/p_user.c | 452 ++ components/doom/prboom/p_user.h | 47 + components/doom/prboom/prboom_wad.h | 1312 +++++ components/doom/prboom/protocol.h | 97 + components/doom/prboom/r_bsp.c | 570 ++ components/doom/prboom/r_bsp.h | 64 + components/doom/prboom/r_data.c | 704 +++ components/doom/prboom/r_data.h | 109 + components/doom/prboom/r_defs.h | 422 ++ components/doom/prboom/r_demo.c | 88 + components/doom/prboom/r_demo.h | 45 + components/doom/prboom/r_draw.c | 1139 ++++ components/doom/prboom/r_draw.h | 163 + components/doom/prboom/r_drawcolpipeline.inl | 51 + components/doom/prboom/r_drawcolumn.inl | 378 ++ components/doom/prboom/r_drawflush.inl | 300 ++ components/doom/prboom/r_drawspan.inl | 160 + components/doom/prboom/r_filter.c | 123 + components/doom/prboom/r_filter.h | 175 + components/doom/prboom/r_fps.c | 450 ++ components/doom/prboom/r_fps.h | 77 + components/doom/prboom/r_main.c | 621 +++ components/doom/prboom/r_main.h | 120 + components/doom/prboom/r_patch.c | 745 +++ components/doom/prboom/r_patch.h | 110 + components/doom/prboom/r_plane.c | 459 ++ components/doom/prboom/r_plane.h | 66 + components/doom/prboom/r_segs.c | 843 +++ components/doom/prboom/r_segs.h | 44 + components/doom/prboom/r_sky.c | 56 + components/doom/prboom/r_sky.h | 55 + components/doom/prboom/r_state.h | 116 + components/doom/prboom/r_things.c | 1032 ++++ components/doom/prboom/r_things.h | 72 + components/doom/prboom/s_sound.c | 647 +++ components/doom/prboom/s_sound.h | 99 + components/doom/prboom/sounds.c | 245 + components/doom/prboom/sounds.h | 299 ++ components/doom/prboom/st_lib.c | 374 ++ components/doom/prboom/st_lib.h | 209 + components/doom/prboom/st_stuff.c | 1145 ++++ components/doom/prboom/st_stuff.h | 102 + components/doom/prboom/tables.c | 2114 ++++++++ components/doom/prboom/tables.h | 86 + components/doom/prboom/v_video.c | 889 ++++ components/doom/prboom/v_video.h | 192 + components/doom/prboom/version.c | 38 + components/doom/prboom/version.h | 40 + components/doom/prboom/w_wad.c | 482 ++ components/doom/prboom/w_wad.h | 115 + components/doom/prboom/wi_stuff.c | 1935 +++++++ components/doom/prboom/wi_stuff.h | 64 + components/doom/prboom/z_zone.c | 463 ++ components/doom/prboom/z_zone.h | 123 + components/doom/src/doom.cpp | 167 + 163 files changed, 85074 insertions(+) create mode 100644 components/doom/CMakeLists.txt create mode 100644 components/doom/include/doom.hpp create mode 100644 components/doom/prboom/AUTHORS create mode 100644 components/doom/prboom/CMakeLists.txt create mode 100644 components/doom/prboom/COPYING create mode 100644 components/doom/prboom/am_map.c create mode 100644 components/doom/prboom/am_map.h create mode 100644 components/doom/prboom/config.h create mode 100644 components/doom/prboom/d_client.c create mode 100644 components/doom/prboom/d_deh.c create mode 100644 components/doom/prboom/d_deh.h create mode 100644 components/doom/prboom/d_englsh.h create mode 100644 components/doom/prboom/d_event.h create mode 100644 components/doom/prboom/d_items.c create mode 100644 components/doom/prboom/d_items.h create mode 100644 components/doom/prboom/d_main.c create mode 100644 components/doom/prboom/d_main.h create mode 100644 components/doom/prboom/d_net.h create mode 100644 components/doom/prboom/d_player.h create mode 100644 components/doom/prboom/d_server.c create mode 100644 components/doom/prboom/d_think.h create mode 100644 components/doom/prboom/d_ticcmd.h create mode 100644 components/doom/prboom/data/doom1.wad create mode 100644 components/doom/prboom/data/prboom.wad create mode 100644 components/doom/prboom/dbopl.c create mode 100644 components/doom/prboom/dbopl.h create mode 100644 components/doom/prboom/docs/DMSPEC16.txt create mode 100644 components/doom/prboom/doomdata.h create mode 100644 components/doom/prboom/doomdef.c create mode 100644 components/doom/prboom/doomdef.h create mode 100644 components/doom/prboom/doomstat.c create mode 100644 components/doom/prboom/doomstat.h create mode 100644 components/doom/prboom/doomtype.h create mode 100644 components/doom/prboom/dstrings.c create mode 100644 components/doom/prboom/dstrings.h create mode 100644 components/doom/prboom/f_finale.c create mode 100644 components/doom/prboom/f_finale.h create mode 100644 components/doom/prboom/f_wipe.c create mode 100644 components/doom/prboom/f_wipe.h create mode 100644 components/doom/prboom/g_game.c create mode 100644 components/doom/prboom/g_game.h create mode 100644 components/doom/prboom/hu_lib.c create mode 100644 components/doom/prboom/hu_lib.h create mode 100644 components/doom/prboom/hu_stuff.c create mode 100644 components/doom/prboom/hu_stuff.h create mode 100644 components/doom/prboom/i_joy.h create mode 100644 components/doom/prboom/i_main.h create mode 100644 components/doom/prboom/i_network.h create mode 100644 components/doom/prboom/i_sound.h create mode 100644 components/doom/prboom/i_system.h create mode 100644 components/doom/prboom/i_video.h create mode 100644 components/doom/prboom/info.c create mode 100644 components/doom/prboom/info.h create mode 100644 components/doom/prboom/lprintf.c create mode 100644 components/doom/prboom/lprintf.h create mode 100644 components/doom/prboom/m_argv.c create mode 100644 components/doom/prboom/m_argv.h create mode 100644 components/doom/prboom/m_bbox.c create mode 100644 components/doom/prboom/m_bbox.h create mode 100644 components/doom/prboom/m_cheat.c create mode 100644 components/doom/prboom/m_cheat.h create mode 100644 components/doom/prboom/m_fixed.h create mode 100644 components/doom/prboom/m_menu.c create mode 100644 components/doom/prboom/m_menu.h create mode 100644 components/doom/prboom/m_misc.c create mode 100644 components/doom/prboom/m_misc.h create mode 100644 components/doom/prboom/m_random.c create mode 100644 components/doom/prboom/m_random.h create mode 100644 components/doom/prboom/m_swap.h create mode 100644 components/doom/prboom/midifile.c create mode 100644 components/doom/prboom/midifile.h create mode 100644 components/doom/prboom/mus2mid.c create mode 100644 components/doom/prboom/mus2mid.h create mode 100644 components/doom/prboom/opl.c create mode 100644 components/doom/prboom/opl.h create mode 100644 components/doom/prboom/opl_queue.c create mode 100644 components/doom/prboom/opl_queue.h create mode 100644 components/doom/prboom/oplplayer.c create mode 100644 components/doom/prboom/oplplayer.h create mode 100644 components/doom/prboom/p_ceilng.c create mode 100644 components/doom/prboom/p_doors.c create mode 100644 components/doom/prboom/p_enemy.c create mode 100644 components/doom/prboom/p_enemy.h create mode 100644 components/doom/prboom/p_floor.c create mode 100644 components/doom/prboom/p_genlin.c create mode 100644 components/doom/prboom/p_inter.c create mode 100644 components/doom/prboom/p_inter.h create mode 100644 components/doom/prboom/p_lights.c create mode 100644 components/doom/prboom/p_map.c create mode 100644 components/doom/prboom/p_map.h create mode 100644 components/doom/prboom/p_maputl.c create mode 100644 components/doom/prboom/p_maputl.h create mode 100644 components/doom/prboom/p_mobj.c create mode 100644 components/doom/prboom/p_mobj.h create mode 100644 components/doom/prboom/p_plats.c create mode 100644 components/doom/prboom/p_pspr.c create mode 100644 components/doom/prboom/p_pspr.h create mode 100644 components/doom/prboom/p_saveg.c create mode 100644 components/doom/prboom/p_saveg.h create mode 100644 components/doom/prboom/p_setup.c create mode 100644 components/doom/prboom/p_setup.h create mode 100644 components/doom/prboom/p_sight.c create mode 100644 components/doom/prboom/p_spec.c create mode 100644 components/doom/prboom/p_spec.h create mode 100644 components/doom/prboom/p_switch.c create mode 100644 components/doom/prboom/p_telept.c create mode 100644 components/doom/prboom/p_tick.c create mode 100644 components/doom/prboom/p_tick.h create mode 100644 components/doom/prboom/p_user.c create mode 100644 components/doom/prboom/p_user.h create mode 100644 components/doom/prboom/prboom_wad.h create mode 100644 components/doom/prboom/protocol.h create mode 100644 components/doom/prboom/r_bsp.c create mode 100644 components/doom/prboom/r_bsp.h create mode 100644 components/doom/prboom/r_data.c create mode 100644 components/doom/prboom/r_data.h create mode 100644 components/doom/prboom/r_defs.h create mode 100644 components/doom/prboom/r_demo.c create mode 100644 components/doom/prboom/r_demo.h create mode 100644 components/doom/prboom/r_draw.c create mode 100644 components/doom/prboom/r_draw.h create mode 100644 components/doom/prboom/r_drawcolpipeline.inl create mode 100644 components/doom/prboom/r_drawcolumn.inl create mode 100644 components/doom/prboom/r_drawflush.inl create mode 100644 components/doom/prboom/r_drawspan.inl create mode 100644 components/doom/prboom/r_filter.c create mode 100644 components/doom/prboom/r_filter.h create mode 100644 components/doom/prboom/r_fps.c create mode 100644 components/doom/prboom/r_fps.h create mode 100644 components/doom/prboom/r_main.c create mode 100644 components/doom/prboom/r_main.h create mode 100644 components/doom/prboom/r_patch.c create mode 100644 components/doom/prboom/r_patch.h create mode 100644 components/doom/prboom/r_plane.c create mode 100644 components/doom/prboom/r_plane.h create mode 100644 components/doom/prboom/r_segs.c create mode 100644 components/doom/prboom/r_segs.h create mode 100644 components/doom/prboom/r_sky.c create mode 100644 components/doom/prboom/r_sky.h create mode 100644 components/doom/prboom/r_state.h create mode 100644 components/doom/prboom/r_things.c create mode 100644 components/doom/prboom/r_things.h create mode 100644 components/doom/prboom/s_sound.c create mode 100644 components/doom/prboom/s_sound.h create mode 100644 components/doom/prboom/sounds.c create mode 100644 components/doom/prboom/sounds.h create mode 100644 components/doom/prboom/st_lib.c create mode 100644 components/doom/prboom/st_lib.h create mode 100644 components/doom/prboom/st_stuff.c create mode 100644 components/doom/prboom/st_stuff.h create mode 100644 components/doom/prboom/tables.c create mode 100644 components/doom/prboom/tables.h create mode 100644 components/doom/prboom/v_video.c create mode 100644 components/doom/prboom/v_video.h create mode 100644 components/doom/prboom/version.c create mode 100644 components/doom/prboom/version.h create mode 100644 components/doom/prboom/w_wad.c create mode 100644 components/doom/prboom/w_wad.h create mode 100644 components/doom/prboom/wi_stuff.c create mode 100644 components/doom/prboom/wi_stuff.h create mode 100644 components/doom/prboom/z_zone.c create mode 100644 components/doom/prboom/z_zone.h create mode 100644 components/doom/src/doom.cpp diff --git a/components/doom/CMakeLists.txt b/components/doom/CMakeLists.txt new file mode 100644 index 0000000..bcd1f7d --- /dev/null +++ b/components/doom/CMakeLists.txt @@ -0,0 +1,16 @@ +idf_component_register( + INCLUDE_DIRS "include" + SRC_DIRS "src" "prboom" + PRIV_INCLUDE_DIRS "." + REQUIRES box-emu + ) +# target_compile_options(${COMPONENT_LIB} PRIVATE -Wno-char-subscripts -Wno-attributes -Wno-implicit-fallthrough -Wno-unused-function -Wno-unused-variable -Wno-discarded-qualifiers) +target_compile_options(${COMPONENT_LIB} PRIVATE + -Wno-error=address + -Wno-misleading-indentation + -Wno-format-overflow + -Wno-char-subscripts + -Wno-missing-field-initializers + -DHAVE_CONFIG_H + -O2 +) diff --git a/components/doom/include/doom.hpp b/components/doom/include/doom.hpp new file mode 100644 index 0000000..761a2fb --- /dev/null +++ b/components/doom/include/doom.hpp @@ -0,0 +1,25 @@ +#pragma once + +#include +#include +#include + +void reset_doom(); +void init_doom(const std::string& rom_filename, uint8_t *romdata, size_t rom_data_size); +void load_doom(std::string_view save_path); +void save_doom(std::string_view save_path); +void start_doom_tasks(); +void stop_doom_tasks(); +void run_doom_rom(); +void deinit_doom(); +void set_doom_video_original(); +void set_doom_video_fit(); +void set_doom_video_fill(); +std::vector get_doom_video_buffer(); + +extern "C" { +void doom_pause_video_task(); +void doom_resume_video_task(); +void doom_pause_audio_task(); +void doom_resume_audio_task(); +} diff --git a/components/doom/prboom/AUTHORS b/components/doom/prboom/AUTHORS new file mode 100644 index 0000000..7839f8e --- /dev/null +++ b/components/doom/prboom/AUTHORS @@ -0,0 +1,163 @@ +This file is now the amalgamated list of authors, contributors and credits +for PrBoom. Hopefully by keeping these all in one place, they will remain +more accurate. + +Doom was originally written by id software; when playing with any id main +wad file, you can see their list of credits, which includes the list of +programmers. After some years, they released the source code, to allow +others to work on improving the game. + +One of the first projects was DosDoom, by Chi Hoang. This was a quick port +of the released source code, which was for Linux, to DOS. This was then +picked up by TeamTNT (http://www.teamtnt.com/), who produced Boom, a greatly +debugged and extended version of Doom. The Boom programmers were Lee +Killough, Jim Flynn, Rand Phares, Ty Halderman. + +Several projects started working from the Boom source code. One was PrBoom, +made by Florian Schulze, that ported the code to Windows, added suport for +higher resolutions and later OpenGL. Another was Marine's Best Friend +(known as MBF) by Lee Killough, which fixed a lot of Boom bugs and added +many new game features. Finally, there was LxDoom, a port of Boom to Linux +by Colin Phipps. + +In October 1999, id Software re-released the Doom source code under the +GNU General Public License. TeamTNT have also changed to the new license, +and the other sources mentioned above have all allowed their code to be +GPLed. So PrBoom is covered by the GPL. + +In May 2000, LxDoom, PrBoom, and a derived port called LSDLDoom, merged into +one. The current authors of PrBoom are: + +Florian Schulze +Colin Phipps +Neil Stevens - Mac OS X porting +Andrey Budko +Rob Young (RjY) + +Our thanks go to all the authors of the ports mentioned above, and also the +following people who contributed code to LxDoom or PrBoom: + +Jess Haas +Of LSDLdoom, who merged his project into PrBoom, contributing his SDL code. + +Nicolas Kalkhof +Much work on the OpenGL renderer. + +James "Quasar" Haley +Ever willing to talk about source ideas, and has pointed me in the direction of +a lot of Boom and MBF bugs; also various bits code from his port Eternity have +been used, such as the BEX enhancements. + +Bob Aman (sporkmonger.com) +Created the RMUDAnsiTextView class used in the Mac launcher. + +Gady Kozma gady@math.tau.ac.il +Added hires to the SVGALib version of LxDoom, and other useful patches. + +Dick Leban +Lots of feedback about portability issues and helping get the network code +working properly back at v1.3.6. + +Eduardo Casino Almao +Lots of helpful feedback and suggestions, but more importantly actually getting +to grips with the code and giving very precise bug reports and patches. + +Joey Hess +For numerous patches, like the glibc fixes and window manager updates, and +help with the music. + +Ben Winslow +Various useful patches, like the colour ENDOOM code. + +Josh Parsons josh@schlick.anu.edu.au +Sent me the patches to use autoconf for configuring LxDoom. + +Steve Van Devender +Found the bug causing slight noise at the start of sounds playing, and other +patches. + +Barry Mead +Improvements to the mouse code and other odd patches. + +Mattias Kunkel +Made the lxdoom.spec file for creating LxDoom RPMs. + +Vicente Aguilar vicente@hal.dhis.org +Handy patch for the file handling + +Benjamin L McGee +Patch fixing the joystick code. + +Chris Young +Patch improving the ENDOOM printing + +Peter Jay Salzman +Cleanup patches + +Oliver Kraus +Send bug reports and patches for Solaris/Sparc. + +Paul S Jenner +Nice patch to make RPM building easier + +Julian +Fixed inline asm for gcc-2.95 (from Eternity) + +Lionel Ulmer +Patch to fix alignment problems on ARM processors. + +Ville Vuorinen +Spotted and helped patch the player spawn bug, as well as helping with some +Win32 issues. + +Steven Elliot +Misc patches. + +Andreas Dehmel +Spotted & patched a savegame bug. + +Jon Dowland +Bug reports & fixes, documentation improvements. + +If you have sent in patches and I forgot to list you, I apologise. Please email +me and I will add you. + +Also, thanks to the following people who have helped in various ways: + +Simon "fraggle" Howard +More MBF bugs. + +Robert Phipps +Network game testing, feature suggestions etc. + +Udo Monk +His port xdoom is very portable, and I referred to his code sometimes for help +with the X stuff; also his collection of Doom tools (XWadTools) is the +definitive tools collection for Linux. + +Andre Majorel +For Yadex, so I can debug those problematic levels more easily. + +Michael Heasley +Author of musserver, which helped me first add music support. + +Rafael Reilova +Helped with the music server program for LxDoom + +Frederic Oghdayan +For useful feedback on LxDoom v1.0.1, and repeating his bug reports until I +believed them :-). + +Adam Hegyi +Prompted me to hunt down those last few demo sync bugs, and provided some useful +insights and example demos to help. + +Adam Williamson +Pointing me toward yet another compatibility bug. + +Ingo van Lil +Another bug spotter. + +Everyone who contributed indirectly to MBF and Boom and Doom; see the +respective documentation files. + diff --git a/components/doom/prboom/CMakeLists.txt b/components/doom/prboom/CMakeLists.txt new file mode 100644 index 0000000..3f4b6f8 --- /dev/null +++ b/components/doom/prboom/CMakeLists.txt @@ -0,0 +1,19 @@ +set(COMPONENT_SRCDIRS ".") +set(COMPONENT_ADD_INCLUDEDIRS ".") +set(COMPONENT_REQUIRES "retro-go") +register_component() + +# The PSRAM cache bug seems responsible for very odd bugs that I spent way too much time +# trying to debug... In retro-go the fix is disabled because of the huge performance overhead +# but I guess we'll have to live with it in at least the prboom-go module... + +rg_setup_compile_options( + -Wno-error=address + -Wno-misleading-indentation + -Wno-format-overflow + -Wno-char-subscripts + -Wno-missing-field-initializers + -mfix-esp32-psram-cache-issue + -DHAVE_CONFIG_H + -O2 +) diff --git a/components/doom/prboom/COPYING b/components/doom/prboom/COPYING new file mode 100644 index 0000000..f698bce --- /dev/null +++ b/components/doom/prboom/COPYING @@ -0,0 +1,367 @@ +GNU GENERAL PUBLIC LICENSE +Version 2, June 1991 + +Copyright (C) 1989, 1991 Free Software Foundation, Inc. +59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + +Preamble +The licenses for most software are designed to take away your freedom +to share and change it. By contrast, the GNU General Public License +is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit +to using it. (Some other Free Software Foundation software is covered +by the GNU Library General Public License instead.) You can apply it +to your programs, too. + +When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge +for this service if you wish), that you receive source code or can +get it if you want it, that you can change the software or use pieces +of it in new free programs; and that you know you can do these +things. + +To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the software, or if you modify it. + +For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + +We protect your rights with two steps: (1) copyright the software, +and (2) offer you this license which gives you legal permission to +copy, distribute and/or modify the software. + +Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, +we want its recipients to know that what they have is not the +original, so that any problems introduced by others will not reflect +on the original authors' reputations. + +Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making +the program proprietary. To prevent this, we have made it clear that +any patent must be licensed for everyone's free use or not licensed +at all. + +The precise terms and conditions for copying, distribution and +modification follow. + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION +0. This License applies to any program or other work which contains a +notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the +Program is covered only if its contents constitute a work based on +the Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + +1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any +warranty; and give any other recipients of the Program a copy of this +License along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a +fee. + +2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + +a) You must cause the modified files to carry prominent notices +stating that you changed the files and the date of any change. + +b) You must cause any work that you distribute or publish, that in +whole or in part contains or is derived from the Program or any part +thereof, to be licensed as a whole at no charge to all third parties +under the terms of this License. + +c) If the modified program normally reads commands interactively when +run, you must cause it, when started running for such interactive use +in the most ordinary way, to print or display an announcement +including an appropriate copyright notice and a notice that there is +no warranty (or else, saying that you provide a warranty) and that +users may redistribute the program under these conditions, and +telling the user how to view a copy of this License. (Exception: if +the Program itself is interactive but does not normally print such an +announcement, your work based on the Program is not required to print +an announcement.) +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the +Program with the Program (or with a work based on the Program) on a +volume of a storage or distribution medium does not bring the other +work under the scope of this License. + +3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the +following: + +a) Accompany it with the complete corresponding machine-readable +source code, which must be distributed under the terms of Sections 1 +and 2 above on a medium customarily used for software interchange; +or, + +b) Accompany it with a written offer, valid for at least three years, +to give any third party, for a charge no more than your cost of +physically performing source distribution, a complete +machine-readable copy of the corresponding source code, to be +distributed under the terms of Sections 1 and 2 above on a medium +customarily used for software interchange; or, + +c) Accompany it with the information you received as to the offer to +distribute corresponding source code. (This alternative is allowed +only for noncommercial distribution and only if you received the +program in object code or executable form with such an offer, in +accord with Subsection b above.) +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + +4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this +License. However, parties who have received copies, or rights, from +you under this License will not have their licenses terminated so +long as such parties remain in full compliance. + +5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + +6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject +to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted +herein. You are not responsible for enforcing compliance by third +parties to this License. + +7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do +not excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under +this License and any other pertinent obligations, then as a +consequence you may not distribute the Program at all. For example, +if a patent license would not permit royalty-free redistribution of +the Program by all those who receive copies directly or indirectly +through you, then the only way you could satisfy both it and this +License would be to refrain entirely from distribution of the +Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended +to apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is +willing to distribute software through any other system and a +licensee cannot impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + +8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + +9. The Free Software Foundation may publish revised and/or new +versions of the General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published +by the Free Software Foundation. If the Program does not specify a +version number of this License, you may choose any version ever +published by the Free Software Foundation. + +10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the +author to ask for permission. For software which is copyrighted by +the Free Software Foundation, write to the Free Software Foundation; +we sometimes make exceptions for this. Our decision will be guided by +the two goals of preserving the free status of all derivatives of our +free software and of promoting the sharing and reuse of software +generally. + +NO WARRANTY + +11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + +END OF TERMS AND CONDITIONS +How to Apply These Terms to Your New Programs +If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make +it free software which everyone can redistribute and change under +these terms. + +To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + +one line to give the program's name and an idea of what it does. +Copyright (C) yyyy name of author + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +02111-1307, USA. + +Also add information on how to contact you by electronic and paper +mail. + +If the program is interactive, make it output a short notice like +this when it starts in an interactive mode: + +Gnomovision version 69, Copyright (C) yyyy name of author +Gnomovision comes with ABSOLUTELY NO WARRANTY; for details +type `show w'. This is free software, and you are welcome +to redistribute it under certain conditions; type `show c' +for details. + +The hypothetical commands `show w' and `show c' should show the +appropriate parts of the General Public License. Of course, the +commands you use may be called something other than `show w' and +`show c'; they could even be mouse-clicks or menu items--whatever +suits your program. + +You should also get your employer (if you work as a programmer) or +your school, if any, to sign a "copyright disclaimer" for the +program, if necessary. Here is a sample; alter the names: + +Yoyodyne, Inc., hereby disclaims all copyright +interest in the program `Gnomovision' +(which makes passes at compilers) written +by James Hacker. + +signature of Ty Coon, 1 April 1989 +Ty Coon, President of Vice + +This General Public License does not permit incorporating your +program into proprietary programs. If your program is a subroutine +library, you may consider it more useful to permit linking +proprietary applications with the library. If this is what you want +to do, use the GNU Library General Public License instead of this +License. + + +---------------------------------------------------------------------- +---------- +Return to GNU's home page. +FSF & GNU inquiries & questions to gnu@gnu.org. Other ways to contact +the FSF. + +Comments on these web pages to webmasters@www.gnu.org, send other +questions to gnu@gnu.org. + +Copyright notice above. +Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, +MA 02111, USA + +Updated: 16 Feb 1998 tower + diff --git a/components/doom/prboom/am_map.c b/components/doom/prboom/am_map.c new file mode 100644 index 0000000..3ab48c3 --- /dev/null +++ b/components/doom/prboom/am_map.c @@ -0,0 +1,1584 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * the automap code + * + *----------------------------------------------------------------------------- + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "doomstat.h" +#include "st_stuff.h" +#include "r_main.h" +#include "p_setup.h" +#include "p_maputl.h" +#include "w_wad.h" +#include "v_video.h" +#include "p_spec.h" +#include "am_map.h" +#include "dstrings.h" +#include "d_deh.h" // Ty 03/27/98 - externalizations +#include "lprintf.h" // jff 08/03/98 - declaration of lprintf +#include "g_game.h" + +//jff 1/7/98 default automap colors added +int mapcolor_back; // map background +int mapcolor_grid; // grid lines color +int mapcolor_wall; // normal 1s wall color +int mapcolor_fchg; // line at floor height change color +int mapcolor_cchg; // line at ceiling height change color +int mapcolor_clsd; // line at sector with floor=ceiling color +int mapcolor_rkey; // red key color +int mapcolor_bkey; // blue key color +int mapcolor_ykey; // yellow key color +int mapcolor_rdor; // red door color (diff from keys to allow option) +int mapcolor_bdor; // blue door color (of enabling one but not other ) +int mapcolor_ydor; // yellow door color +int mapcolor_tele; // teleporter line color +int mapcolor_secr; // secret sector boundary color +int mapcolor_exit; // jff 4/23/98 add exit line color +int mapcolor_unsn; // computer map unseen line color +int mapcolor_flat; // line with no floor/ceiling changes +int mapcolor_sprt; // general sprite color +int mapcolor_item; // item sprite color +int mapcolor_frnd; // friendly sprite color +int mapcolor_enemy; // enemy sprite color +int mapcolor_hair; // crosshair color +int mapcolor_sngl; // single player arrow color +int mapcolor_me; // consoleplayer's chosen colour +int mapcolor_plyr[4] = { 112, 88, 64, 32 }; // colors for player arrows in multiplayer + +//jff 3/9/98 add option to not show secret sectors until entered +int map_secret_after; +//jff 4/3/98 add symbols for "no-color" for disable and "black color" for black +#define NC 0 +#define BC 247 + +// drawing stuff +#define FB 0 + +// scale on entry +#define INITSCALEMTOF (.2*FRACUNIT) +// how much the automap moves window per tic in frame-buffer coordinates +// moves 140 pixels in 1 second +#define F_PANINC 4 +// how much zoom-in per tic +// goes to 2x in 1 second +#define M_ZOOMIN ((int) (1.02*FRACUNIT)) +// how much zoom-out per tic +// pulls out to 0.5x in 1 second +#define M_ZOOMOUT ((int) (FRACUNIT/1.02)) + +#define PLAYERRADIUS (16*(1<>16) +// translates between frame-buffer and map coordinates +#define CXMTOF(x) (f_x + MTOF((x)-m_x)) +#define CYMTOF(y) (f_y + (f_h - MTOF((y)-m_y))) + +typedef struct +{ + mpoint_t a, b; +} mline_t; + +// +// The vector graphics for the automap. +// A line drawing of the player pointing right, +// starting from the middle. +// +#define R ((8*PLAYERRADIUS)/7) +mline_t player_arrow[] = +{ + { { -R+R/8, 0 }, { R, 0 } }, // ----- + { { R, 0 }, { R-R/2, R/4 } }, // -----> + { { R, 0 }, { R-R/2, -R/4 } }, + { { -R+R/8, 0 }, { -R-R/8, R/4 } }, // >----> + { { -R+R/8, 0 }, { -R-R/8, -R/4 } }, + { { -R+3*R/8, 0 }, { -R+R/8, R/4 } }, // >>---> + { { -R+3*R/8, 0 }, { -R+R/8, -R/4 } } +}; +#undef R +#define NUMPLYRLINES (sizeof(player_arrow)/sizeof(mline_t)) + +#define R ((8*PLAYERRADIUS)/7) +mline_t cheat_player_arrow[] = +{ // killough 3/22/98: He's alive, Jim :) + { { -R+R/8, 0 }, { R, 0 } }, // ----- + { { R, 0 }, { R-R/2, R/4 } }, // -----> + { { R, 0 }, { R-R/2, -R/4 } }, + { { -R+R/8, 0 }, { -R-R/8, R/4 } }, // >----> + { { -R+R/8, 0 }, { -R-R/8, -R/4 } }, + { { -R+3*R/8, 0 }, { -R+R/8, R/4 } }, // >>---> + { { -R+3*R/8, 0 }, { -R+R/8, -R/4 } }, + { { -R/10-R/6, R/4}, {-R/10-R/6, -R/4} }, // J + { { -R/10-R/6, -R/4}, {-R/10-R/6-R/8, -R/4} }, + { { -R/10-R/6-R/8, -R/4}, {-R/10-R/6-R/8, -R/8} }, + { { -R/10, R/4}, {-R/10, -R/4}}, // F + { { -R/10, R/4}, {-R/10+R/8, R/4}}, + { { -R/10+R/4, R/4}, {-R/10+R/4, -R/4}}, // F + { { -R/10+R/4, R/4}, {-R/10+R/4+R/8, R/4}}, +}; +#undef R +#define NUMCHEATPLYRLINES (sizeof(cheat_player_arrow)/sizeof(mline_t)) + +#define R (FRACUNIT) +mline_t triangle_guy[] = +{ +{ { (fixed_t)(-.867*R), (fixed_t)(-.5*R) }, { (fixed_t)( .867*R), (fixed_t)(-.5*R) } }, +{ { (fixed_t)( .867*R), (fixed_t)(-.5*R) }, { (fixed_t)(0 ), (fixed_t)( R) } }, +{ { (fixed_t)(0 ), (fixed_t)( R) }, { (fixed_t)(-.867*R), (fixed_t)(-.5*R) } } +}; +#undef R +#define NUMTRIANGLEGUYLINES (sizeof(triangle_guy)/sizeof(mline_t)) + +//jff 1/5/98 new symbol for keys on automap +#define R (FRACUNIT) +mline_t cross_mark[] = +{ + { { -R, 0 }, { R, 0} }, + { { 0, -R }, { 0, R } }, +}; +#undef R +#define NUMCROSSMARKLINES (sizeof(cross_mark)/sizeof(mline_t)) +//jff 1/5/98 end of new symbol + +#define R (FRACUNIT) +mline_t thintriangle_guy[] = +{ +{ { (fixed_t)(-.5*R), (fixed_t)(-.7*R) }, { (fixed_t)( R), (fixed_t)( 0) } }, +{ { (fixed_t)( R), (fixed_t)( 0) }, { (fixed_t)(-.5*R), (fixed_t)( .7*R) } }, +{ { (fixed_t)(-.5*R), (fixed_t)( .7*R) }, { (fixed_t)(-.5*R), (fixed_t)(-.7*R) } } +}; +#undef R +#define NUMTHINTRIANGLEGUYLINES (sizeof(thintriangle_guy)/sizeof(mline_t)) + +int ddt_cheating = 0; // killough 2/7/98: make global, rename to ddt_* + +static int leveljuststarted = 1; // kluge until AM_LevelInit() is called + +enum automapmode_e automapmode; // Mode that the automap is in + +// location of window on screen +static int f_x; +static int f_y; + +// size of window on screen +static int f_w; +static int f_h; + +static mpoint_t m_paninc; // how far the window pans each tic (map coords) +static fixed_t mtof_zoommul; // how far the window zooms each tic (map coords) +static fixed_t ftom_zoommul; // how far the window zooms each tic (fb coords) + +static fixed_t m_x, m_y; // LL x,y window location on the map (map coords) +static fixed_t m_x2, m_y2; // UR x,y window location on the map (map coords) + +// +// width/height of window on map (map coords) +// +static fixed_t m_w; +static fixed_t m_h; + +// based on level size +static fixed_t min_x; +static fixed_t min_y; +static fixed_t max_x; +static fixed_t max_y; + +static fixed_t max_w; // max_x-min_x, +static fixed_t max_h; // max_y-min_y + +// based on player size +static fixed_t min_w; +static fixed_t min_h; + + +static fixed_t min_scale_mtof; // used to tell when to stop zooming out +static fixed_t max_scale_mtof; // used to tell when to stop zooming in + +// old stuff for recovery later +static fixed_t old_m_w, old_m_h; +static fixed_t old_m_x, old_m_y; + +// old location used by the Follower routine +static mpoint_t f_oldloc; + +// used by MTOF to scale from map-to-frame-buffer coords +static fixed_t scale_mtof = (fixed_t)INITSCALEMTOF; +// used by FTOM to scale from frame-buffer-to-map coords (=1/scale_mtof) +static fixed_t scale_ftom; + +static player_t *plr; // the player represented by an arrow + +// killough 2/22/98: Remove limit on automap marks, +// and make variables external for use in savegames. + +mpoint_t *markpoints = NULL; // where the points are +int markpointnum = 0; // next point to be assigned (also number of points now) +int markpointnum_max = 0; // killough 2/22/98 + +static boolean stopped = true; + +// +// AM_activateNewScale() +// +// Changes the map scale after zooming or translating +// +// Passed nothing, returns nothing +// +static void AM_activateNewScale(void) +{ + m_x += m_w/2; + m_y += m_h/2; + m_w = FTOM(f_w); + m_h = FTOM(f_h); + m_x -= m_w/2; + m_y -= m_h/2; + m_x2 = m_x + m_w; + m_y2 = m_y + m_h; +} + +// +// AM_saveScaleAndLoc() +// +// Saves the current center and zoom +// Affects the variables that remember old scale and loc +// +// Passed nothing, returns nothing +// +static void AM_saveScaleAndLoc(void) +{ + old_m_x = m_x; + old_m_y = m_y; + old_m_w = m_w; + old_m_h = m_h; +} + +// +// AM_restoreScaleAndLoc() +// +// restores the center and zoom from locally saved values +// Affects global variables for location and scale +// +// Passed nothing, returns nothing +// +static void AM_restoreScaleAndLoc(void) +{ + m_w = old_m_w; + m_h = old_m_h; + if (!(automapmode & am_follow)) + { + m_x = old_m_x; + m_y = old_m_y; + } + else + { + m_x = (plr->mo->x >> FRACTOMAPBITS) - m_w/2;//e6y + m_y = (plr->mo->y >> FRACTOMAPBITS) - m_h/2;//e6y + } + m_x2 = m_x + m_w; + m_y2 = m_y + m_h; + + // Change the scaling multipliers + scale_mtof = FixedDiv(f_w<= markpointnum_max) + markpoints = realloc(markpoints, + (markpointnum_max = markpointnum_max ? + markpointnum_max*2 : 16) * sizeof(*markpoints)); + + markpoints[markpointnum].x = m_x + m_w/2; + markpoints[markpointnum].y = m_y + m_h/2; + markpointnum++; +} + +// +// AM_findMinMaxBoundaries() +// +// Determines bounding box of all vertices, +// sets global variables controlling zoom range. +// +// Passed nothing, returns nothing +// +static void AM_findMinMaxBoundaries(void) +{ + int i; + fixed_t a; + fixed_t b; + + min_x = min_y = INT_MAX; + max_x = max_y = -INT_MAX; + + for (i=0;i max_x) + max_x = vertexes[i].x; + + if (vertexes[i].y < min_y) + min_y = vertexes[i].y; + else if (vertexes[i].y > max_y) + max_y = vertexes[i].y; + } + + max_w = (max_x >>= FRACTOMAPBITS) - (min_x >>= FRACTOMAPBITS);//e6y + max_h = (max_y >>= FRACTOMAPBITS) - (min_y >>= FRACTOMAPBITS);//e6y + + min_w = 2*PLAYERRADIUS; // const? never changed? + min_h = 2*PLAYERRADIUS; + + a = FixedDiv(f_w< max_x) + m_x = max_x - m_w/2; + else if (m_x + m_w/2 < min_x) + m_x = min_x - m_w/2; + + if (m_y + m_h/2 > max_y) + m_y = max_y - m_h/2; + else if (m_y + m_h/2 < min_y) + m_y = min_y - m_h/2; + + m_x2 = m_x + m_w; + m_y2 = m_y + m_h; +} + + +// +// AM_initVariables() +// +// Initialize the variables for the automap +// +// Affects the automap global variables +// Status bar is notified that the automap has been entered +// Passed nothing, returns nothing +// +static void AM_initVariables(void) +{ + int pnum; + static event_t st_notify = { ev_keyup, AM_MSGENTERED, 0, 0 }; + + automapmode |= am_active; + + f_oldloc.x = INT_MAX; + + m_paninc.x = m_paninc.y = 0; + ftom_zoommul = FRACUNIT; + mtof_zoommul = FRACUNIT; + + m_w = FTOM(f_w); + m_h = FTOM(f_h); + + // find player to center on initially + if (!playeringame[pnum = consoleplayer]) + for (pnum=0;pnummo->x >> FRACTOMAPBITS) - m_w/2;//e6y + m_y = (plr->mo->y >> FRACTOMAPBITS) - m_h/2;//e6y + AM_changeWindowLoc(); + + // for saving & restoring + old_m_x = m_x; + old_m_y = m_y; + old_m_w = m_w; + old_m_h = m_h; + + // inform the status bar of the change + ST_Responder(&st_notify); +} + +// +// AM_loadPics() +// +static void AM_loadPics(void) +{ + // cph - mark numbers no longer needed cached +} + +// +// AM_unloadPics() +// +static void AM_unloadPics(void) +{ + // cph - mark numbers no longer needed cached +} + +// +// AM_clearMarks() +// +// Sets the number of marks to 0, thereby clearing them from the display +// +// Affects the global variable markpointnum +// Passed nothing, returns nothing +// +void AM_clearMarks(void) +{ + markpointnum = 0; +} + +// +// AM_LevelInit() +// +// Initialize the automap at the start of a new level +// should be called at the start of every level +// +// Passed nothing, returns nothing +// Affects automap's global variables +// +// CPhipps - get status bar height from status bar code +static void AM_LevelInit(void) +{ + leveljuststarted = 0; + + f_x = f_y = 0; + f_w = SCREENWIDTH; // killough 2/7/98: get rid of finit_ vars + f_h = SCREENHEIGHT-ST_SCALED_HEIGHT;// to allow runtime setting of width/height + + AM_findMinMaxBoundaries(); + scale_mtof = FixedDiv(min_scale_mtof, (int) (0.7*FRACUNIT)); + if (scale_mtof > max_scale_mtof) + scale_mtof = min_scale_mtof; + scale_ftom = FixedDiv(FRACUNIT, scale_mtof); +} + +// +// AM_Stop() +// +// Cease automap operations, unload patches, notify status bar +// +// Passed nothing, returns nothing +// +void AM_Stop (void) +{ + static event_t st_notify = { 0, ev_keyup, AM_MSGEXITED, 0 }; + + AM_unloadPics(); + automapmode &= ~am_active; + ST_Responder(&st_notify); + stopped = true; +} + +// +// AM_Start() +// +// Start up automap operations, +// if a new level, or game start, (re)initialize level variables +// init map variables +// load mark patches +// +// Passed nothing, returns nothing +// +void AM_Start(void) +{ + static int lastlevel = -1, lastepisode = -1; + + if (!stopped) + AM_Stop(); + stopped = false; + if (lastlevel != gamemap || lastepisode != gameepisode) + { + AM_LevelInit(); + lastlevel = gamemap; + lastepisode = gameepisode; + } + AM_initVariables(); + AM_loadPics(); +} + +// +// AM_minOutWindowScale() +// +// Set the window scale to the maximum size +// +// Passed nothing, returns nothing +// +static void AM_minOutWindowScale(void) +{ + scale_mtof = min_scale_mtof; + scale_ftom = FixedDiv(FRACUNIT, scale_mtof); + AM_activateNewScale(); +} + +// +// AM_maxOutWindowScale(void) +// +// Set the window scale to the minimum size +// +// Passed nothing, returns nothing +// +static void AM_maxOutWindowScale(void) +{ + scale_mtof = max_scale_mtof; + scale_ftom = FixedDiv(FRACUNIT, scale_mtof); + AM_activateNewScale(); +} + +// +// AM_Responder() +// +// Handle events (user inputs) in automap mode +// +// Passed an input event, returns true if its handled +// +boolean AM_Responder +( event_t* ev ) +{ + int rc; + static int bigstate=0; + int ch; // phares + + rc = false; + + if (!(automapmode & am_active)) + { + if (ev->type == ev_keydown && ev->data1 == key_map) // phares + { + AM_Start (); + rc = true; + } + } + else if (ev->type == ev_keydown) + { + rc = true; + ch = ev->data1; // phares + if (ch == key_map_right) // | + if (!(automapmode & am_follow)) // V + m_paninc.x = FTOM(F_PANINC); + else + rc = false; + else if (ch == key_map_left) + if (!(automapmode & am_follow)) + m_paninc.x = -FTOM(F_PANINC); + else + rc = false; + else if (ch == key_map_up) + if (!(automapmode & am_follow)) + m_paninc.y = FTOM(F_PANINC); + else + rc = false; + else if (ch == key_map_down) + if (!(automapmode & am_follow)) + m_paninc.y = -FTOM(F_PANINC); + else + rc = false; + else if (ch == key_map_zoomout) + { + mtof_zoommul = M_ZOOMOUT; + ftom_zoommul = M_ZOOMIN; + } + else if (ch == key_map_zoomin) + { + mtof_zoommul = M_ZOOMIN; + ftom_zoommul = M_ZOOMOUT; + } + else if (ch == key_map) + { + bigstate = 0; + AM_Stop (); + } + else if (ch == key_map_gobig) + { + bigstate = !bigstate; + if (bigstate) + { + AM_saveScaleAndLoc(); + AM_minOutWindowScale(); + } + else + AM_restoreScaleAndLoc(); + } + else if (ch == key_map_follow) + { + automapmode ^= am_follow; // CPhipps - put all automap mode stuff into one enum + f_oldloc.x = INT_MAX; + // Ty 03/27/98 - externalized + plr->message = (automapmode & am_follow) ? s_AMSTR_FOLLOWON : s_AMSTR_FOLLOWOFF; + } + else if (ch == key_map_grid) + { + automapmode ^= am_grid; // CPhipps + // Ty 03/27/98 - *not* externalized + plr->message = (automapmode & am_grid) ? s_AMSTR_GRIDON : s_AMSTR_GRIDOFF; + } + else if (ch == key_map_mark) + { + /* Ty 03/27/98 - *not* externalized + * cph 2001/11/20 - use doom_printf so we don't have our own buffer */ + doom_printf("%s %d", s_AMSTR_MARKEDSPOT, markpointnum); + AM_addMark(); + } + else if (ch == key_map_clear) + { + AM_clearMarks(); // Ty 03/27/98 - *not* externalized + plr->message = s_AMSTR_MARKSCLEARED; // ^ + } // | + else if (ch == key_map_rotate) { + automapmode ^= am_rotate; + plr->message = (automapmode & am_rotate) ? s_AMSTR_ROTATEON : s_AMSTR_ROTATEOFF; + } + else if (ch == key_map_overlay) { + automapmode ^= am_overlay; + plr->message = (automapmode & am_overlay) ? s_AMSTR_OVERLAYON : s_AMSTR_OVERLAYOFF; + } + else // phares + { + rc = false; + } + } + else if (ev->type == ev_keyup) + { + rc = false; + ch = ev->data1; + if (ch == key_map_right) + { + if (!(automapmode & am_follow)) + m_paninc.x = 0; + } + else if (ch == key_map_left) + { + if (!(automapmode & am_follow)) + m_paninc.x = 0; + } + else if (ch == key_map_up) + { + if (!(automapmode & am_follow)) + m_paninc.y = 0; + } + else if (ch == key_map_down) + { + if (!(automapmode & am_follow)) + m_paninc.y = 0; + } + else if ((ch == key_map_zoomout) || (ch == key_map_zoomin)) + { + mtof_zoommul = FRACUNIT; + ftom_zoommul = FRACUNIT; + } + } + return rc; +} + +// +// AM_rotate() +// +// Rotation in 2D. +// Used to rotate player arrow line character. +// +// Passed the coordinates of a point, and an angle +// Returns the coordinates rotated by the angle +// +// CPhipps - made static & enhanced for automap rotation + +static void AM_rotate(fixed_t* x, fixed_t* y, angle_t a, fixed_t xorig, fixed_t yorig) +{ + fixed_t tmpx; + + //e6y + xorig>>=FRACTOMAPBITS; + yorig>>=FRACTOMAPBITS; + + tmpx = + FixedMul(*x - xorig,finecosine[a>>ANGLETOFINESHIFT]) + - FixedMul(*y - yorig,finesine[a>>ANGLETOFINESHIFT]); + + *y = yorig + + FixedMul(*x - xorig,finesine[a>>ANGLETOFINESHIFT]) + + FixedMul(*y - yorig,finecosine[a>>ANGLETOFINESHIFT]); + + *x = tmpx + xorig; +} + +// +// AM_changeWindowScale() +// +// Automap zooming +// +// Passed nothing, returns nothing +// +static void AM_changeWindowScale(void) +{ + // Change the scaling multipliers + scale_mtof = FixedMul(scale_mtof, mtof_zoommul); + scale_ftom = FixedDiv(FRACUNIT, scale_mtof); + + if (scale_mtof < min_scale_mtof) + AM_minOutWindowScale(); + else if (scale_mtof > max_scale_mtof) + AM_maxOutWindowScale(); + else + AM_activateNewScale(); +} + +// +// AM_doFollowPlayer() +// +// Turn on follow mode - the map scrolls opposite to player motion +// +// Passed nothing, returns nothing +// +static void AM_doFollowPlayer(void) +{ + if (f_oldloc.x != plr->mo->x || f_oldloc.y != plr->mo->y) + { + m_x = FTOM(MTOF(plr->mo->x >> FRACTOMAPBITS)) - m_w/2;//e6y + m_y = FTOM(MTOF(plr->mo->y >> FRACTOMAPBITS)) - m_h/2;//e6y + m_x2 = m_x + m_w; + m_y2 = m_y + m_h; + f_oldloc.x = plr->mo->x; + f_oldloc.y = plr->mo->y; + } +} + +// +// AM_Ticker() +// +// Updates on gametic - enter follow mode, zoom, or change map location +// +// Passed nothing, returns nothing +// +void AM_Ticker (void) +{ + if (!(automapmode & am_active)) + return; + + if (automapmode & am_follow) + AM_doFollowPlayer(); + + // Change the zoom if necessary + if (ftom_zoommul != FRACUNIT) + AM_changeWindowScale(); + + // Change x,y location + if (m_paninc.x || m_paninc.y) + AM_changeWindowLoc(); +} + +// +// AM_clipMline() +// +// Automap clipping of lines. +// +// Based on Cohen-Sutherland clipping algorithm but with a slightly +// faster reject and precalculated slopes. If the speed is needed, +// use a hash algorithm to handle the common cases. +// +// Passed the line's coordinates on map and in the frame buffer performs +// clipping on them in the lines frame coordinates. +// Returns true if any part of line was not clipped +// +static boolean AM_clipMline +( mline_t* ml, + fline_t* fl ) +{ + enum + { + LEFT =1, + RIGHT =2, + BOTTOM =4, + TOP =8 + }; + + register int outcode1 = 0; + register int outcode2 = 0; + register int outside; + + fpoint_t tmp; + int dx; + int dy; + + +#define DOOUTCODE(oc, mx, my) \ + (oc) = 0; \ + if ((my) < 0) (oc) |= TOP; \ + else if ((my) >= f_h) (oc) |= BOTTOM; \ + if ((mx) < 0) (oc) |= LEFT; \ + else if ((mx) >= f_w) (oc) |= RIGHT; + + + // do trivial rejects and outcodes + if (ml->a.y > m_y2) + outcode1 = TOP; + else if (ml->a.y < m_y) + outcode1 = BOTTOM; + + if (ml->b.y > m_y2) + outcode2 = TOP; + else if (ml->b.y < m_y) + outcode2 = BOTTOM; + + if (outcode1 & outcode2) + return false; // trivially outside + + if (ml->a.x < m_x) + outcode1 |= LEFT; + else if (ml->a.x > m_x2) + outcode1 |= RIGHT; + + if (ml->b.x < m_x) + outcode2 |= LEFT; + else if (ml->b.x > m_x2) + outcode2 |= RIGHT; + + if (outcode1 & outcode2) + return false; // trivially outside + + // transform to frame-buffer coordinates. + fl->a.x = CXMTOF(ml->a.x); + fl->a.y = CYMTOF(ml->a.y); + fl->b.x = CXMTOF(ml->b.x); + fl->b.y = CYMTOF(ml->b.y); + + DOOUTCODE(outcode1, fl->a.x, fl->a.y); + DOOUTCODE(outcode2, fl->b.x, fl->b.y); + + if (outcode1 & outcode2) + return false; + + while (outcode1 | outcode2) + { + // may be partially inside box + // find an outside point + if (outcode1) + outside = outcode1; + else + outside = outcode2; + + // clip to each side + if (outside & TOP) + { + dy = fl->a.y - fl->b.y; + dx = fl->b.x - fl->a.x; + tmp.x = fl->a.x + (dx*(fl->a.y))/dy; + tmp.y = 0; + } + else if (outside & BOTTOM) + { + dy = fl->a.y - fl->b.y; + dx = fl->b.x - fl->a.x; + tmp.x = fl->a.x + (dx*(fl->a.y-f_h))/dy; + tmp.y = f_h-1; + } + else if (outside & RIGHT) + { + dy = fl->b.y - fl->a.y; + dx = fl->b.x - fl->a.x; + tmp.y = fl->a.y + (dy*(f_w-1 - fl->a.x))/dx; + tmp.x = f_w-1; + } + else if (outside & LEFT) + { + dy = fl->b.y - fl->a.y; + dx = fl->b.x - fl->a.x; + tmp.y = fl->a.y + (dy*(-fl->a.x))/dx; + tmp.x = 0; + } + + if (outside == outcode1) + { + fl->a = tmp; + DOOUTCODE(outcode1, fl->a.x, fl->a.y); + } + else + { + fl->b = tmp; + DOOUTCODE(outcode2, fl->b.x, fl->b.y); + } + + if (outcode1 & outcode2) + return false; // trivially outside + } + + return true; +} +#undef DOOUTCODE + +// +// AM_drawMline() +// +// Clip lines, draw visible parts of lines. +// +// Passed the map coordinates of the line, and the color to draw it +// Color -1 is special and prevents drawing. Color 247 is special and +// is translated to black, allowing Color 0 to represent feature disable +// in the defaults file. +// Returns nothing. +// +static void AM_drawMline +( mline_t* ml, + int color ) +{ + static fline_t fl; + + if (color==-1) // jff 4/3/98 allow not drawing any sort of line + return; // by setting its color to -1 + if (color==247) // jff 4/3/98 if color is 247 (xparent), use black + color=0; + + if (AM_clipMline(ml, &fl)) + V_DrawLine(&fl, color); // draws it on frame buffer using fb coords +} + +// +// AM_drawGrid() +// +// Draws blockmap aligned grid lines. +// +// Passed the color to draw the grid lines +// Returns nothing +// +static void AM_drawGrid(int color) +{ + fixed_t x, y; + fixed_t start, end; + mline_t ml; + + // Figure out start of vertical gridlines + start = m_x; + if ((start-bmaporgx)%(MAPBLOCKUNITS<> LockedKeyShift; + if (!type || type==7) + return 3; //any or all keys + else return (type-1)%3; + } + switch (type) // closed keyed door + { + case 26: case 32: case 99: case 133: + /*bluekey*/ + return 1; + case 27: case 34: case 136: case 137: + /*yellowkey*/ + return 2; + case 28: case 33: case 134: case 135: + /*redkey*/ + return 0; + default: + return -1; //not a keyed door + } +} + +// +// Determines visible lines, draws them. +// This is LineDef based, not LineSeg based. +// +// jff 1/5/98 many changes in this routine +// backward compatibility not needed, so just changes, no ifs +// addition of clauses for: +// doors opening, keyed door id, secret sectors, +// teleports, exit lines, key things +// ability to suppress any of added features or lines with no height changes +// +// support for gamma correction in automap abandoned +// +// jff 4/3/98 changed mapcolor_xxxx=0 as control to disable feature +// jff 4/3/98 changed mapcolor_xxxx=-1 to disable drawing line completely +// +static void AM_drawWalls(void) +{ + int i; + static mline_t l; + + // draw the unclipped visible portions of all lines + for (i=0;ix >> FRACTOMAPBITS;//e6y + l.a.y = lines[i].v1->y >> FRACTOMAPBITS;//e6y + l.b.x = lines[i].v2->x >> FRACTOMAPBITS;//e6y + l.b.y = lines[i].v2->y >> FRACTOMAPBITS;//e6y + + if (automapmode & am_rotate) { + AM_rotate(&l.a.x, &l.a.y, ANG90-plr->mo->angle, plr->mo->x, plr->mo->y); + AM_rotate(&l.b.x, &l.b.y, ANG90-plr->mo->angle, plr->mo->x, plr->mo->y); + } + + // if line has been seen or IDDT has been used + if (ddt_cheating || (lines[i].flags & ML_MAPPED)) + { + if ((lines[i].flags & ML_DONTDRAW) && !ddt_cheating) + continue; + { + /* cph - show keyed doors and lines */ + int amd; + if ((mapcolor_bdor || mapcolor_ydor || mapcolor_rdor) && + !(lines[i].flags & ML_SECRET) && /* non-secret */ + (amd = AM_DoorColor(lines[i].special)) != -1 + ) + { + { + switch (amd) /* closed keyed door */ + { + case 1: + /*bluekey*/ + AM_drawMline(&l, + mapcolor_bdor? mapcolor_bdor : mapcolor_cchg); + continue; + case 2: + /*yellowkey*/ + AM_drawMline(&l, + mapcolor_ydor? mapcolor_ydor : mapcolor_cchg); + continue; + case 0: + /*redkey*/ + AM_drawMline(&l, + mapcolor_rdor? mapcolor_rdor : mapcolor_cchg); + continue; + case 3: + /*any or all*/ + AM_drawMline(&l, + mapcolor_clsd? mapcolor_clsd : mapcolor_cchg); + continue; + } + } + } + } + if /* jff 4/23/98 add exit lines to automap */ + ( + mapcolor_exit && + ( + lines[i].special==11 || + lines[i].special==52 || + lines[i].special==197 || + lines[i].special==51 || + lines[i].special==124 || + lines[i].special==198 + ) + ) { + AM_drawMline(&l, mapcolor_exit); /* exit line */ + continue; + } + + if (!lines[i].backsector) + { + // jff 1/10/98 add new color for 1S secret sector boundary + if (mapcolor_secr && //jff 4/3/98 0 is disable + ( + ( + map_secret_after && + P_WasSecret(lines[i].frontsector) && + !P_IsSecret(lines[i].frontsector) + ) + || + ( + !map_secret_after && + P_WasSecret(lines[i].frontsector) + ) + ) + ) + AM_drawMline(&l, mapcolor_secr); // line bounding secret sector + else //jff 2/16/98 fixed bug + AM_drawMline(&l, mapcolor_wall); // special was cleared + } + else /* now for 2S lines */ + { + // jff 1/10/98 add color change for all teleporter types + if + ( + mapcolor_tele && !(lines[i].flags & ML_SECRET) && + (lines[i].special == 39 || lines[i].special == 97 || + lines[i].special == 125 || lines[i].special == 126) + ) + { // teleporters + AM_drawMline(&l, mapcolor_tele); + } + else if (lines[i].flags & ML_SECRET) // secret door + { + AM_drawMline(&l, mapcolor_wall); // wall color + } + else if + ( + mapcolor_clsd && + !(lines[i].flags & ML_SECRET) && // non-secret closed door + ((lines[i].backsector->floorheight==lines[i].backsector->ceilingheight) || + (lines[i].frontsector->floorheight==lines[i].frontsector->ceilingheight)) + ) + { + AM_drawMline(&l, mapcolor_clsd); // non-secret closed door + } //jff 1/6/98 show secret sector 2S lines + else if + ( + mapcolor_secr && //jff 2/16/98 fixed bug + ( // special was cleared after getting it + (map_secret_after && + ( + (P_WasSecret(lines[i].frontsector) + && !P_IsSecret(lines[i].frontsector)) || + (P_WasSecret(lines[i].backsector) + && !P_IsSecret(lines[i].backsector)) + ) + ) + || //jff 3/9/98 add logic to not show secret til after entered + ( // if map_secret_after is true + !map_secret_after && + (P_WasSecret(lines[i].frontsector) || + P_WasSecret(lines[i].backsector)) + ) + ) + ) + { + AM_drawMline(&l, mapcolor_secr); // line bounding secret sector + } //jff 1/6/98 end secret sector line change + else if (lines[i].backsector->floorheight != + lines[i].frontsector->floorheight) + { + AM_drawMline(&l, mapcolor_fchg); // floor level change + } + else if (lines[i].backsector->ceilingheight != + lines[i].frontsector->ceilingheight) + { + AM_drawMline(&l, mapcolor_cchg); // ceiling level change + } + else if (mapcolor_flat && ddt_cheating) + { + AM_drawMline(&l, mapcolor_flat); //2S lines that appear only in IDDT + } + } + } // now draw the lines only visible because the player has computermap + else if (plr->powers[pw_allmap]) // computermap visible lines + { + if (!(lines[i].flags & ML_DONTDRAW)) // invisible flag lines do not show + { + if + ( + mapcolor_flat + || + !lines[i].backsector + || + lines[i].backsector->floorheight + != lines[i].frontsector->floorheight + || + lines[i].backsector->ceilingheight + != lines[i].frontsector->ceilingheight + ) + AM_drawMline(&l, mapcolor_unsn); + } + } + } +} + +// +// AM_drawLineCharacter() +// +// Draws a vector graphic according to numerous parameters +// +// Passed the structure defining the vector graphic shape, the number +// of vectors in it, the scale to draw it at, the angle to draw it at, +// the color to draw it with, and the map coordinates to draw it at. +// Returns nothing +// +static void AM_drawLineCharacter +( mline_t* lineguy, + int lineguylines, + fixed_t scale, + angle_t angle, + int color, + fixed_t x, + fixed_t y ) +{ + int i; + mline_t l; + + if (automapmode & am_rotate) angle -= plr->mo->angle - ANG90; // cph + + for (i=0;imo->angle, + mapcolor_sngl, //jff color + plr->mo->x >> FRACTOMAPBITS,//e6y + plr->mo->y >> FRACTOMAPBITS//e6y + ); + else + AM_drawLineCharacter + ( + player_arrow, + NUMPLYRLINES, + 0, + plr->mo->angle, + mapcolor_sngl, //jff color + plr->mo->x >> FRACTOMAPBITS,//e6y + plr->mo->y >> FRACTOMAPBITS);//e6y + return; + } + + for (i=0;imo->x >> FRACTOMAPBITS, y = p->mo->y >> FRACTOMAPBITS;//e6y + if (automapmode & am_rotate) + AM_rotate(&x, &y, ANG90-plr->mo->angle, plr->mo->x, plr->mo->y); + + AM_drawLineCharacter (player_arrow, NUMPLYRLINES, 0, p->mo->angle, + p->powers[pw_invisibility] ? 246 /* *close* to black */ + : mapcolor_plyr[i], //jff 1/6/98 use default color + x, y); + } + } +} + +// +// AM_drawThings() +// +// Draws the things on the automap in double IDDT cheat mode +// +// Passed colors and colorrange, no longer used +// Returns nothing +// +static void AM_drawThings(void) +{ + int i; + mobj_t* t; + + // for all sectors + for (i=0;ix >> FRACTOMAPBITS, y = t->y >> FRACTOMAPBITS;//e6y + + if (automapmode & am_rotate) + AM_rotate(&x, &y, ANG90-plr->mo->angle, plr->mo->x, plr->mo->y); + + //jff 1/5/98 case over doomednum of thing being drawn + if (mapcolor_rkey || mapcolor_ykey || mapcolor_bkey) + { + switch(t->info->doomednum) + { + //jff 1/5/98 treat keys special + case 38: case 13: //jff red key + AM_drawLineCharacter + ( + cross_mark, + NUMCROSSMARKLINES, + 16<angle, + mapcolor_rkey!=-1? mapcolor_rkey : mapcolor_sprt, + x, y + ); + t = t->snext; + continue; + case 39: case 6: //jff yellow key + AM_drawLineCharacter + ( + cross_mark, + NUMCROSSMARKLINES, + 16<angle, + mapcolor_ykey!=-1? mapcolor_ykey : mapcolor_sprt, + x, y + ); + t = t->snext; + continue; + case 40: case 5: //jff blue key + AM_drawLineCharacter + ( + cross_mark, + NUMCROSSMARKLINES, + 16<angle, + mapcolor_bkey!=-1? mapcolor_bkey : mapcolor_sprt, + x, y + ); + t = t->snext; + continue; + default: + break; + } + } + //jff 1/5/98 end added code for keys + //jff previously entire code + AM_drawLineCharacter + ( + thintriangle_guy, + NUMTHINTRIANGLEGUYLINES, + 16<angle, + t->flags & MF_FRIEND && !t->player ? mapcolor_frnd : + /* cph 2006/07/30 - Show count-as-kills in red. */ + ((t->flags & (MF_COUNTKILL | MF_CORPSE)) == MF_COUNTKILL) ? mapcolor_enemy : + /* bbm 2/28/03 Show countable items in yellow. */ + t->flags & MF_COUNTITEM ? mapcolor_item : mapcolor_sprt, + x, y + ); + t = t->snext; + } + } +} + +// +// AM_drawMarks() +// +// Draw the marked locations on the automap +// +// Passed nothing, returns nothing +// +// killough 2/22/98: +// Rewrote AM_drawMarks(). Removed limit on marks. +// +static void AM_drawMarks(void) +{ + int i; + for (i=0;imo->angle, plr->mo->x, plr->mo->y); + + fx = CXMTOF(fx); fy = CYMTOF(fy); + + do + { + int d = j % 10; + if (d==1) // killough 2/22/98: less spacing for '1' + fx++; + + if (fx >= f_x && fx < f_w - w && fy >= f_y && fy < f_h - h) { + // cph - construct patch name and draw marker + char namebuf[] = { 'A', 'M', 'M', 'N', 'U', 'M', '0'+d, 0 }; + + V_DrawNamePatch(fx, fy, FB, namebuf, CR_DEFAULT, VPT_NONE); + } + fx -= w-1; // killough 2/22/98: 1 space backwards + j /= 10; + } + while (j>0); + } +} + +// +// AM_drawCrosshair() +// +// Draw the single point crosshair representing map center +// +// Passed the color to draw the pixel with +// Returns nothing +// +// CPhipps - made static inline, and use the general pixel plotter function + +inline static void AM_drawCrosshair(int color) +{ + fline_t line; + + line.a.x = (f_w/2)-1; + line.a.y = (f_h/2); + line.b.x = (f_w/2)+1; + line.b.y = (f_h/2); + V_DrawLine(&line, color); + + line.a.x = (f_w/2); + line.a.y = (f_h/2)-1; + line.b.x = (f_w/2); + line.b.y = (f_h/2)+1; + V_DrawLine(&line, color); +} + +// +// AM_Drawer() +// +// Draws the entire automap +// +// Passed nothing, returns nothing +// +void AM_Drawer (void) +{ + // CPhipps - all automap modes put into one enum + if (!(automapmode & am_active)) return; + + if (!(automapmode & am_overlay)) // cph - If not overlay mode, clear background for the automap + V_FillRect(FB, f_x, f_y, f_w, f_h, (byte)mapcolor_back); //jff 1/5/98 background default color + if (automapmode & am_grid) + AM_drawGrid(mapcolor_grid); //jff 1/7/98 grid default color + AM_drawWalls(); + AM_drawPlayers(); + if (ddt_cheating==2) + AM_drawThings(); //jff 1/5/98 default double IDDT sprite + AM_drawCrosshair(mapcolor_hair); //jff 1/7/98 default crosshair color + + AM_drawMarks(); +} diff --git a/components/doom/prboom/am_map.h b/components/doom/prboom/am_map.h new file mode 100644 index 0000000..850c9ce --- /dev/null +++ b/components/doom/prboom/am_map.h @@ -0,0 +1,111 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * AutoMap module. + * + *-----------------------------------------------------------------------------*/ + +#ifndef __AMMAP_H__ +#define __AMMAP_H__ + +#include "d_event.h" + +#define MAPBITS 12 +#define FRACTOMAPBITS (FRACBITS-MAPBITS) + +// Used by ST StatusBar stuff. +#define AM_MSGHEADER (('a'<<24)+('m'<<16)) +#define AM_MSGENTERED (AM_MSGHEADER | ('e'<<8)) +#define AM_MSGEXITED (AM_MSGHEADER | ('x'<<8)) + +// Called by main loop. +boolean AM_Responder (event_t* ev); + +// Called by main loop. +void AM_Ticker (void); + +// Called by main loop, +// called instead of view drawer if automap active. +void AM_Drawer (void); + +// Called to force the automap to quit +// if the level is completed while it is up. +void AM_Stop (void); + +// killough 2/22/98: for saving automap information in savegame: + +extern void AM_Start(void); + +//jff 4/16/98 make externally available + +extern void AM_clearMarks(void); + +typedef struct +{ + fixed_t x,y; +} mpoint_t; + +extern mpoint_t *markpoints; +extern int markpointnum, markpointnum_max; + +// end changes -- killough 2/22/98 + +// killough 5/2/98: moved from m_misc.c + +//jff 1/7/98 automap colors added +extern int mapcolor_back; // map background +extern int mapcolor_grid; // grid lines color +extern int mapcolor_wall; // normal 1s wall color +extern int mapcolor_fchg; // line at floor height change color +extern int mapcolor_cchg; // line at ceiling height change color +extern int mapcolor_clsd; // line at sector with floor=ceiling color +extern int mapcolor_rkey; // red key color +extern int mapcolor_bkey; // blue key color +extern int mapcolor_ykey; // yellow key color +extern int mapcolor_rdor; // red door color (diff from keys to allow option) +extern int mapcolor_bdor; // blue door color (of enabling one not other) +extern int mapcolor_ydor; // yellow door color +extern int mapcolor_tele; // teleporter line color +extern int mapcolor_secr; // secret sector boundary color +//jff 4/23/98 +extern int mapcolor_exit; // exit line +extern int mapcolor_unsn; // computer map unseen line color +extern int mapcolor_flat; // line with no floor/ceiling changes +extern int mapcolor_sprt; // general sprite color +extern int mapcolor_item; // item sprite color +extern int mapcolor_enemy; // enemy sprite color +extern int mapcolor_frnd; // friendly sprite color +extern int mapcolor_hair; // crosshair color +extern int mapcolor_sngl; // single player arrow color +extern int mapcolor_plyr[4]; // colors for players in multiplayer +extern int mapcolor_me; // consoleplayer's chosen colour +//jff 3/9/98 +extern int map_secret_after; // secrets do not appear til after bagged + +#endif diff --git a/components/doom/prboom/config.h b/components/doom/prboom/config.h new file mode 100644 index 0000000..5b039af --- /dev/null +++ b/components/doom/prboom/config.h @@ -0,0 +1,52 @@ +/* Uncomment this to exhaustively run memory checks while the game is running + (this is EXTREMELY slow). */ +/* #undef CHECKHEAP */ + +/* Define for support for MBF helper dogs */ +//#define DOGS 0 + +/* Uncomment this to cause heap dumps to be generated. Only useful if + INSTRUMENTED is also defined. */ +/* #undef HEAPDUMP */ + +/* Define on targets supporting 386 assembly */ +/* #undef I386_ASM */ + +/* Define this to see real-time memory allocation statistics, and enable extra + debugging features */ +/* #undef INSTRUMENTED */ + +/* If your platform has a fast version of max, define MAX to it */ +/* #undef MAX */ + +/* If your platform has a fast version of min, define MIN to it */ +/* #undef MIN */ + +/* Name of package */ +#define PACKAGE "prboom-go" + +/* Set to the attribute to apply to struct definitions to make them packed */ +#define PACKEDATTR __attribute__((packed)) + +/* Define to enable internal range checking */ +/* #undef RANGECHECK */ + +/* When defined this causes quick checks which only impose significant + overhead if a posible error is detected. */ +#define SIMPLECHECKS + +/* Defining this causes time stamps to be created each time a lump is locked, + and lumps locked for long periods of time are reported */ +/* #undef TIMEDIAG */ + +/* Version number of package */ +#define VERSION "2.5.0" + +/* Define to remove DEH support */ +#define NODEHSUPPORT + +/* Define to remove true color support (keep 8bit palette only) */ +#define NOTRUECOLOR + +/* Define to bundle prboom.wad (minus the trig tables, which we always include) */ +#define PRBOOMWAD diff --git a/components/doom/prboom/d_client.c b/components/doom/prboom/d_client.c new file mode 100644 index 0000000..9887755 --- /dev/null +++ b/components/doom/prboom/d_client.c @@ -0,0 +1,529 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Network client. Passes information to/from server, staying + * synchronised. + * Contains the main wait loop, waiting for network input or + * time before doing the next tic. + * Rewritten for LxDoom, but based around bits of the old code. + * + *----------------------------------------------------------------------------- + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#ifdef HAVE_SYS_WAIT_H +#include +#endif + +#ifdef USE_SDL_NET + #include "SDL.h" +#endif + +#include "doomtype.h" +#include "doomstat.h" +#include "d_net.h" +#include "z_zone.h" + +#include "d_main.h" +#include "g_game.h" +#include "m_menu.h" + +#include "protocol.h" +#include "i_network.h" +#include "i_system.h" +#include "i_main.h" +#include "i_video.h" +#include "m_argv.h" +#include "r_fps.h" +#include "lprintf.h" + +ticcmd_t netcmds[MAXPLAYERS][BACKUPTICS]; +static ticcmd_t* localcmds; +int maketic; +int ticdup = 1; + +static boolean isExtraDDisplay = false; + +#ifdef HAVE_NET +static boolean server; +static int remotetic; // Tic expected from the remote +static int remotesend; // Tic expected by the remote +static unsigned numqueuedpackets; +static packet_header_t** queuedpacket; +static int xtratics = 0; +static int wanted_player_number; + +static void D_QuitNetGame (void); + +void D_InitNetGame (void) +{ + int i; + int numplayers = 1; + + i = M_CheckParm("-net"); + if (i && i < myargc-1) i++; + + if (!(netgame = server = !!i)) { + playeringame[consoleplayer = 0] = true; + // e6y + // for play, recording or playback using "single-player coop" mode. + // Equivalent to using prboom_server with -N 1 + netgame = M_CheckParm("-solo-net"); + } else { + // Get game info from server + packet_header_t *packet = Z_Malloc(1000, PU_STATIC, NULL); + struct setup_packet_s *sinfo = (void*)(packet+1); + struct { packet_header_t head; short pn; } PACKEDATTR initpacket; + + I_InitNetwork(); + udp_socket = I_Socket(0); + I_ConnectToServer(myargv[i]); + + do + { + do { + // Send init packet + initpacket.pn = doom_htons(wanted_player_number); + packet_set(&initpacket.head, PKT_INIT, 0); + I_SendPacket(&initpacket.head, sizeof(initpacket)); + I_WaitForPacket(5000); + } while (!I_GetPacket(packet, 1000)); + if (packet->type == PKT_DOWN) I_Error("Server aborted the game"); + } while (packet->type != PKT_SETUP); + + // Once we have been accepted by the server, we should tell it when we leave + atexit(D_QuitNetGame); + + // Get info from the setup packet + consoleplayer = sinfo->yourplayer; + compatibility_level = sinfo->complevel; + G_Compatibility(); + startskill = sinfo->skill; + deathmatch = sinfo->deathmatch; + startmap = sinfo->level; + startepisode = sinfo->episode; + ticdup = sinfo->ticdup; + xtratics = sinfo->extratic; + G_ReadOptions(sinfo->game_options); + + lprintf(LO_INFO, "\tjoined game as player %d/%d; %d WADs specified\n", + consoleplayer+1, numplayers = sinfo->players, sinfo->numwads); + { + char *p = sinfo->wadnames; + int i = sinfo->numwads; + + while (i--) { + D_AddFile(p, source_net); + p += strlen(p) + 1; + } + } + Z_Free(packet); + } + localcmds = netcmds[displayplayer = consoleplayer]; + for (i=0; itype != PKT_GO); + } + Z_Free(packet); +} + +boolean D_NetGetWad(const char* name) +{ +#if defined(HAVE_WAIT_H) + size_t psize = sizeof(packet_header_t) + strlen(name) + 500; + packet_header_t *packet; + boolean done = false; + + if (!server || strchr(name, '/')) return false; // If it contains path info, reject + + do { + // Send WAD request to remote + packet = Z_Malloc(psize, PU_STATIC, NULL); + packet_set(packet, PKT_WAD, 0); + *(byte*)(packet+1) = consoleplayer; + strcpy(1+(byte*)(packet+1), name); + I_SendPacket(packet, sizeof(packet_header_t) + strlen(name) + 2); + + I_uSleep(10000); + } while (!I_GetPacket(packet, psize) || (packet->type != PKT_WAD)); + Z_Free(packet); + + if (!strcasecmp((void*)(packet+1), name)) { + pid_t pid; + int rv; + byte *p = (byte*)(packet+1) + strlen(name) + 1; + + /* Automatic wad file retrieval using wget (supports http and ftp, using URLs) + * Unix systems have all these commands handy, this kind of thing is easy + * Any windo$e port will have some awkward work replacing these. + */ + /* cph - caution here. This is data from an untrusted source. + * Don't pass it via a shell. */ + if ((pid = fork()) == -1) + perror("fork"); + else if (!pid) { + /* Child chains to wget, does the download */ + execlp("wget", "wget", p, NULL); + } + /* This is the parent, i.e. main LxDoom process */ + wait(&rv); + if (!(done = !access(name, R_OK))) { + if (!strcmp(p+strlen(p)-4, ".zip")) { + p = strrchr(p, '/')+1; + if ((pid = fork()) == -1) + perror("fork"); + else if (!pid) { + /* Child executes decompressor */ + execlp("unzip", "unzip", p, name, NULL); + } + /* Parent waits for the file */ + wait(&rv); + done = !!access(name, R_OK); + } + /* Add more decompression protocols here as desired */ + } + Z_Free(buffer); + } + return done; +#else /* HAVE_WAIT_H */ + return false; +#endif +} + +void NetUpdate(void) +{ + static int lastmadetic; + if (isExtraDDisplay) + return; + if (server) { // Receive network packets + size_t recvlen; + packet_header_t *packet = Z_Malloc(10000, PU_STATIC, NULL); + while ((recvlen = I_GetPacket(packet, 10000))) { + switch(packet->type) { + case PKT_TICS: + { + byte *p = (void*)(packet+1); + int tics = *p++; + unsigned long ptic = doom_ntohl(packet->tic); + if (ptic > (unsigned)remotetic) { // Missed some + packet_set(packet, PKT_RETRANS, remotetic); + *(byte*)(packet+1) = consoleplayer; + I_SendPacket(packet, sizeof(*packet)+1); + } else { + if (ptic + tics <= (unsigned)remotetic) break; // Will not improve things + remotetic = ptic; + while (tics--) { + int players = *p++; + while (players--) { + int n = *p++; + RawToTic(&netcmds[n][remotetic%BACKUPTICS], p); + p += sizeof(ticcmd_t); + } + remotetic++; + } + } + } + break; + case PKT_RETRANS: // Resend request + remotesend = doom_ntohl(packet->tic); + break; + case PKT_DOWN: // Server downed + { + int j; + for (j=0; j 0 ? newtics : 0); + lastmadetic += newtics; + if (ffmap) newtics++; + while (newtics--) { + I_StartTic(); + if (maketic - gametic > BACKUPTICS/2) break; + G_BuildTiccmd(&localcmds[maketic%BACKUPTICS]); + maketic++; + } + if (server && maketic > remotesend) { // Send the tics to the server + int sendtics; + remotesend -= xtratics; + if (remotesend < 0) remotesend = 0; + sendtics = maketic - remotesend; + { + size_t pkt_size = sizeof(packet_header_t) + 2 + sendtics * sizeof(ticcmd_t); + packet_header_t *packet = Z_Malloc(pkt_size, PU_STATIC, NULL); + + packet_set(packet, PKT_TICC, maketic - sendtics); + *(byte*)(packet+1) = sendtics; + *(((byte*)(packet+1))+1) = consoleplayer; + { + void *tic = ((byte*)(packet+1)) +2; + while (sendtics--) { + TicToRaw(tic, &localcmds[remotesend++%BACKUPTICS]); + tic = (byte *)tic + sizeof(ticcmd_t); + } + } + I_SendPacket(packet, pkt_size); + Z_Free(packet); + } + } + } +} +#else + +void D_BuildNewTiccmds(void) +{ + static int lastmadetic; + int newtics = I_GetTime() - lastmadetic; + lastmadetic += newtics; + while (newtics--) + { + I_StartTic(); + if (maketic - gametic > BACKUPTICS/2) break; + G_BuildTiccmd(&localcmds[maketic%BACKUPTICS]); + maketic++; + } +} +#endif + +#ifdef HAVE_NET +/* cph - data passed to this must be in the Doom (little-) endian */ +void D_NetSendMisc(netmisctype_t type, size_t len, void* data) +{ + if (server) { + size_t size = sizeof(packet_header_t) + 3*sizeof(int) + len; + packet_header_t *packet = Z_Malloc(size, PU_STATIC, NULL); + int *p = (void*)(packet+1); + + packet_set(packet, PKT_EXTRA, gametic); + *p++ = LONG(type); *p++ = LONG(consoleplayer); *p++ = LONG(len); + memcpy(p, data, len); + I_SendPacket(packet, size); + + Z_Free(packet); + } +} + +static void CheckQueuedPackets(void) +{ + int i; + for (i=0; (unsigned)itic) <= gametic) + switch (queuedpacket[i]->type) { + case PKT_QUIT: // Player quit the game + { + int pn = *(byte*)(queuedpacket[i]+1); + playeringame[pn] = false; + doom_printf("Player %d left the game\n", pn); + } + break; + case PKT_EXTRA: + { + int *p = (int*)(queuedpacket[i]+1); + size_t len = LONG(*(p+2)); + switch (LONG(*p)) { + case nm_plcolour: + G_ChangedPlayerColour(LONG(*(p+1)), LONG(*(p+3))); + break; + case nm_savegamename: + if (len < SAVEDESCLEN) { + memcpy(savedescription, p+3, len); + // Force terminating 0 in case + savedescription[len] = 0; + } + break; + } + } + break; + default: // Should not be queued + break; + } + + { // Requeue remaining packets + int newnum = 0; + packet_header_t **newqueue = NULL; + + for (i=0; (unsigned)itic) > gametic) { + newqueue = Z_Realloc(newqueue, ++newnum * sizeof *newqueue, + PU_STATIC, NULL); + newqueue[newnum-1] = queuedpacket[i]; + } else Z_Free(queuedpacket[i]); + + Z_Free(queuedpacket); + numqueuedpackets = newnum; queuedpacket = newqueue; + } +} +#endif // HAVE_NET + +void TryRunTics (void) +{ + int runtics; + int entertime = I_GetTime(); + + // Wait for tics to run + while (1) { +#ifdef HAVE_NET + NetUpdate(); + runtics = (server ? remotetic : maketic) - gametic; +#else + D_BuildNewTiccmds(); + runtics = maketic - gametic; +#endif + if (!runtics) { + if (!movement_smooth) { +#ifdef HAVE_NET + if (server) + I_WaitForPacket(ms_to_next_tick); + else +#endif + // I_uSleep(ms_to_next_tick*1000); + } + if (I_GetTime() - entertime > 10) { +#ifdef HAVE_NET + if (server) { + char buf[sizeof(packet_header_t)+1]; + remotesend--; + packet_set((packet_header_t *)buf, PKT_RETRANS, remotetic); + buf[sizeof(buf)-1] = consoleplayer; + I_SendPacket((packet_header_t *)buf, sizeof buf); + } +#endif + M_Ticker(); return; + } + //if ((displaytime) < (tic_vars.next-SDL_GetTicks())) + { + WasRenderedInTryRunTics = true; + if (movement_smooth && gamestate==wipegamestate) + { + isExtraDDisplay = true; + D_Display(); + isExtraDDisplay = false; + } + } + } else break; + } + + while (runtics--) { +#ifdef HAVE_NET + if (server) CheckQueuedPackets(); +#endif + if (advancedemo) + D_DoAdvanceDemo (); + M_Ticker (); + if (movement_smooth) { + tic_vars.start = I_GetTimeMS(); + tic_vars.next = (unsigned int)((tic_vars.start * tic_vars.msec + 1.0f) / tic_vars.msec); + tic_vars.step = tic_vars.next - tic_vars.start; + } + G_Ticker (); + gametic++; +#ifdef HAVE_NET + NetUpdate(); // Keep sending our tics to avoid stalling remote nodes +#endif + } +} + +#ifdef HAVE_NET +static void D_QuitNetGame (void) +{ + byte buf[1 + sizeof(packet_header_t)]; + packet_header_t *packet = (void*)buf; + int i; + + if (!server) return; + buf[sizeof(packet_header_t)] = consoleplayer; + packet_set(packet, PKT_QUIT, gametic); + + for (i=0; i<4; i++) { + I_SendPacket(packet, 1 + sizeof(packet_header_t)); + I_uSleep(10000); + } +} +#endif diff --git a/components/doom/prboom/d_deh.c b/components/doom/prboom/d_deh.c new file mode 100644 index 0000000..fd59710 --- /dev/null +++ b/components/doom/prboom/d_deh.c @@ -0,0 +1,3083 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2004 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Dehacked file support + * New for the TeamTNT "Boom" engine + * + * Author: Ty Halderman, TeamTNT + * + *--------------------------------------------------------------------*/ + +// killough 5/2/98: fixed headers, removed rendunant external declarations: +#include "doomdef.h" +#include "doomtype.h" +#include "doomstat.h" +#include "d_deh.h" +#include "sounds.h" +#include "info.h" +#include "m_cheat.h" +#include "p_inter.h" +#include "p_enemy.h" +#include "g_game.h" +#include "d_think.h" +#include "w_wad.h" + +// CPhipps - modify to use logical output routine +#include "lprintf.h" + +// haleyjd 9/22/99 +int HelperThing = -1; // in P_SpawnMapThing to substitute helper thing + +// variables used in other routines +boolean deh_pars = false; // in wi_stuff to allow pars in modified games + +// #include "d_deh.h" -- we don't do that here but we declare the +// variables. This externalizes everything that there is a string +// set for in the language files. See d_deh.h for detailed comments, +// original English values etc. These are set to the macro values, +// which are set by D_ENGLSH.H or D_FRENCH.H(etc). BEX files are a +// better way of changing these strings globally by language. + +// ==================================================================== +// Any of these can be changed using the bex extensions +#include "dstrings.h" // to get the initial values +/* cph - const's + * - removed redundant "can't XXX in a netgame" strings. + */ +const char *s_D_DEVSTR = D_DEVSTR; +const char *s_D_CDROM = D_CDROM; +const char *s_PRESSKEY = PRESSKEY; +const char *s_PRESSYN = PRESSYN; +const char *s_QUITMSG = QUITMSG; +const char *s_QSAVESPOT = QSAVESPOT; // PRESSKEY; +const char *s_SAVEDEAD = SAVEDEAD; // PRESSKEY; // remove duplicate y/n +const char *s_QSPROMPT = QSPROMPT; // PRESSYN; +const char *s_QLPROMPT = QLPROMPT; // PRESSYN; +const char *s_NEWGAME = NEWGAME; // PRESSKEY; +const char *s_RESTARTLEVEL= RESTARTLEVEL; // PRESSYN; +const char *s_NIGHTMARE = NIGHTMARE; // PRESSYN; +const char *s_SWSTRING = SWSTRING; // PRESSKEY; +const char *s_MSGOFF = MSGOFF; +const char *s_MSGON = MSGON; +const char *s_NETEND = NETEND; // PRESSKEY; +const char *s_ENDGAME = ENDGAME; // PRESSYN; // killough 4/4/98: end +const char *s_DOSY = DOSY; +const char *s_DETAILHI = DETAILHI; +const char *s_DETAILLO = DETAILLO; +const char *s_GAMMALVL0 = GAMMALVL0; +const char *s_GAMMALVL1 = GAMMALVL1; +const char *s_GAMMALVL2 = GAMMALVL2; +const char *s_GAMMALVL3 = GAMMALVL3; +const char *s_GAMMALVL4 = GAMMALVL4; +const char *s_EMPTYSTRING = EMPTYSTRING; +const char *s_GOTARMOR = GOTARMOR; +const char *s_GOTMEGA = GOTMEGA; +const char *s_GOTHTHBONUS = GOTHTHBONUS; +const char *s_GOTARMBONUS = GOTARMBONUS; +const char *s_GOTSTIM = GOTSTIM; +const char *s_GOTMEDINEED = GOTMEDINEED; +const char *s_GOTMEDIKIT = GOTMEDIKIT; +const char *s_GOTSUPER = GOTSUPER; +const char *s_GOTBLUECARD = GOTBLUECARD; +const char *s_GOTYELWCARD = GOTYELWCARD; +const char *s_GOTREDCARD = GOTREDCARD; +const char *s_GOTBLUESKUL = GOTBLUESKUL; +const char *s_GOTYELWSKUL = GOTYELWSKUL; +const char *s_GOTREDSKULL = GOTREDSKULL; +const char *s_GOTINVUL = GOTINVUL; +const char *s_GOTBERSERK = GOTBERSERK; +const char *s_GOTINVIS = GOTINVIS; +const char *s_GOTSUIT = GOTSUIT; +const char *s_GOTMAP = GOTMAP; +const char *s_GOTVISOR = GOTVISOR; +const char *s_GOTMSPHERE = GOTMSPHERE; +const char *s_GOTCLIP = GOTCLIP; +const char *s_GOTCLIPBOX = GOTCLIPBOX; +const char *s_GOTROCKET = GOTROCKET; +const char *s_GOTROCKBOX = GOTROCKBOX; +const char *s_GOTCELL = GOTCELL; +const char *s_GOTCELLBOX = GOTCELLBOX; +const char *s_GOTSHELLS = GOTSHELLS; +const char *s_GOTSHELLBOX = GOTSHELLBOX; +const char *s_GOTBACKPACK = GOTBACKPACK; +const char *s_GOTBFG9000 = GOTBFG9000; +const char *s_GOTCHAINGUN = GOTCHAINGUN; +const char *s_GOTCHAINSAW = GOTCHAINSAW; +const char *s_GOTLAUNCHER = GOTLAUNCHER; +const char *s_GOTPLASMA = GOTPLASMA; +const char *s_GOTSHOTGUN = GOTSHOTGUN; +const char *s_GOTSHOTGUN2 = GOTSHOTGUN2; +const char *s_PD_BLUEO = PD_BLUEO; +const char *s_PD_REDO = PD_REDO; +const char *s_PD_YELLOWO = PD_YELLOWO; +const char *s_PD_BLUEK = PD_BLUEK; +const char *s_PD_REDK = PD_REDK; +const char *s_PD_YELLOWK = PD_YELLOWK; +const char *s_PD_BLUEC = PD_BLUEC; +const char *s_PD_REDC = PD_REDC; +const char *s_PD_YELLOWC = PD_YELLOWC; +const char *s_PD_BLUES = PD_BLUES; +const char *s_PD_REDS = PD_REDS; +const char *s_PD_YELLOWS = PD_YELLOWS; +const char *s_PD_ANY = PD_ANY; +const char *s_PD_ALL3 = PD_ALL3; +const char *s_PD_ALL6 = PD_ALL6; +const char *s_GGSAVED = GGSAVED; +const char *s_HUSTR_MSGU = HUSTR_MSGU; +const char *s_HUSTR_E1M1 = HUSTR_E1M1; +const char *s_HUSTR_E1M2 = HUSTR_E1M2; +const char *s_HUSTR_E1M3 = HUSTR_E1M3; +const char *s_HUSTR_E1M4 = HUSTR_E1M4; +const char *s_HUSTR_E1M5 = HUSTR_E1M5; +const char *s_HUSTR_E1M6 = HUSTR_E1M6; +const char *s_HUSTR_E1M7 = HUSTR_E1M7; +const char *s_HUSTR_E1M8 = HUSTR_E1M8; +const char *s_HUSTR_E1M9 = HUSTR_E1M9; +const char *s_HUSTR_E2M1 = HUSTR_E2M1; +const char *s_HUSTR_E2M2 = HUSTR_E2M2; +const char *s_HUSTR_E2M3 = HUSTR_E2M3; +const char *s_HUSTR_E2M4 = HUSTR_E2M4; +const char *s_HUSTR_E2M5 = HUSTR_E2M5; +const char *s_HUSTR_E2M6 = HUSTR_E2M6; +const char *s_HUSTR_E2M7 = HUSTR_E2M7; +const char *s_HUSTR_E2M8 = HUSTR_E2M8; +const char *s_HUSTR_E2M9 = HUSTR_E2M9; +const char *s_HUSTR_E3M1 = HUSTR_E3M1; +const char *s_HUSTR_E3M2 = HUSTR_E3M2; +const char *s_HUSTR_E3M3 = HUSTR_E3M3; +const char *s_HUSTR_E3M4 = HUSTR_E3M4; +const char *s_HUSTR_E3M5 = HUSTR_E3M5; +const char *s_HUSTR_E3M6 = HUSTR_E3M6; +const char *s_HUSTR_E3M7 = HUSTR_E3M7; +const char *s_HUSTR_E3M8 = HUSTR_E3M8; +const char *s_HUSTR_E3M9 = HUSTR_E3M9; +const char *s_HUSTR_E4M1 = HUSTR_E4M1; +const char *s_HUSTR_E4M2 = HUSTR_E4M2; +const char *s_HUSTR_E4M3 = HUSTR_E4M3; +const char *s_HUSTR_E4M4 = HUSTR_E4M4; +const char *s_HUSTR_E4M5 = HUSTR_E4M5; +const char *s_HUSTR_E4M6 = HUSTR_E4M6; +const char *s_HUSTR_E4M7 = HUSTR_E4M7; +const char *s_HUSTR_E4M8 = HUSTR_E4M8; +const char *s_HUSTR_E4M9 = HUSTR_E4M9; +const char *s_HUSTR_1 = HUSTR_1; +const char *s_HUSTR_2 = HUSTR_2; +const char *s_HUSTR_3 = HUSTR_3; +const char *s_HUSTR_4 = HUSTR_4; +const char *s_HUSTR_5 = HUSTR_5; +const char *s_HUSTR_6 = HUSTR_6; +const char *s_HUSTR_7 = HUSTR_7; +const char *s_HUSTR_8 = HUSTR_8; +const char *s_HUSTR_9 = HUSTR_9; +const char *s_HUSTR_10 = HUSTR_10; +const char *s_HUSTR_11 = HUSTR_11; +const char *s_HUSTR_12 = HUSTR_12; +const char *s_HUSTR_13 = HUSTR_13; +const char *s_HUSTR_14 = HUSTR_14; +const char *s_HUSTR_15 = HUSTR_15; +const char *s_HUSTR_16 = HUSTR_16; +const char *s_HUSTR_17 = HUSTR_17; +const char *s_HUSTR_18 = HUSTR_18; +const char *s_HUSTR_19 = HUSTR_19; +const char *s_HUSTR_20 = HUSTR_20; +const char *s_HUSTR_21 = HUSTR_21; +const char *s_HUSTR_22 = HUSTR_22; +const char *s_HUSTR_23 = HUSTR_23; +const char *s_HUSTR_24 = HUSTR_24; +const char *s_HUSTR_25 = HUSTR_25; +const char *s_HUSTR_26 = HUSTR_26; +const char *s_HUSTR_27 = HUSTR_27; +const char *s_HUSTR_28 = HUSTR_28; +const char *s_HUSTR_29 = HUSTR_29; +const char *s_HUSTR_30 = HUSTR_30; +const char *s_HUSTR_31 = HUSTR_31; +const char *s_HUSTR_32 = HUSTR_32; +const char *s_PHUSTR_1 = PHUSTR_1; +const char *s_PHUSTR_2 = PHUSTR_2; +const char *s_PHUSTR_3 = PHUSTR_3; +const char *s_PHUSTR_4 = PHUSTR_4; +const char *s_PHUSTR_5 = PHUSTR_5; +const char *s_PHUSTR_6 = PHUSTR_6; +const char *s_PHUSTR_7 = PHUSTR_7; +const char *s_PHUSTR_8 = PHUSTR_8; +const char *s_PHUSTR_9 = PHUSTR_9; +const char *s_PHUSTR_10 = PHUSTR_10; +const char *s_PHUSTR_11 = PHUSTR_11; +const char *s_PHUSTR_12 = PHUSTR_12; +const char *s_PHUSTR_13 = PHUSTR_13; +const char *s_PHUSTR_14 = PHUSTR_14; +const char *s_PHUSTR_15 = PHUSTR_15; +const char *s_PHUSTR_16 = PHUSTR_16; +const char *s_PHUSTR_17 = PHUSTR_17; +const char *s_PHUSTR_18 = PHUSTR_18; +const char *s_PHUSTR_19 = PHUSTR_19; +const char *s_PHUSTR_20 = PHUSTR_20; +const char *s_PHUSTR_21 = PHUSTR_21; +const char *s_PHUSTR_22 = PHUSTR_22; +const char *s_PHUSTR_23 = PHUSTR_23; +const char *s_PHUSTR_24 = PHUSTR_24; +const char *s_PHUSTR_25 = PHUSTR_25; +const char *s_PHUSTR_26 = PHUSTR_26; +const char *s_PHUSTR_27 = PHUSTR_27; +const char *s_PHUSTR_28 = PHUSTR_28; +const char *s_PHUSTR_29 = PHUSTR_29; +const char *s_PHUSTR_30 = PHUSTR_30; +const char *s_PHUSTR_31 = PHUSTR_31; +const char *s_PHUSTR_32 = PHUSTR_32; +const char *s_THUSTR_1 = THUSTR_1; +const char *s_THUSTR_2 = THUSTR_2; +const char *s_THUSTR_3 = THUSTR_3; +const char *s_THUSTR_4 = THUSTR_4; +const char *s_THUSTR_5 = THUSTR_5; +const char *s_THUSTR_6 = THUSTR_6; +const char *s_THUSTR_7 = THUSTR_7; +const char *s_THUSTR_8 = THUSTR_8; +const char *s_THUSTR_9 = THUSTR_9; +const char *s_THUSTR_10 = THUSTR_10; +const char *s_THUSTR_11 = THUSTR_11; +const char *s_THUSTR_12 = THUSTR_12; +const char *s_THUSTR_13 = THUSTR_13; +const char *s_THUSTR_14 = THUSTR_14; +const char *s_THUSTR_15 = THUSTR_15; +const char *s_THUSTR_16 = THUSTR_16; +const char *s_THUSTR_17 = THUSTR_17; +const char *s_THUSTR_18 = THUSTR_18; +const char *s_THUSTR_19 = THUSTR_19; +const char *s_THUSTR_20 = THUSTR_20; +const char *s_THUSTR_21 = THUSTR_21; +const char *s_THUSTR_22 = THUSTR_22; +const char *s_THUSTR_23 = THUSTR_23; +const char *s_THUSTR_24 = THUSTR_24; +const char *s_THUSTR_25 = THUSTR_25; +const char *s_THUSTR_26 = THUSTR_26; +const char *s_THUSTR_27 = THUSTR_27; +const char *s_THUSTR_28 = THUSTR_28; +const char *s_THUSTR_29 = THUSTR_29; +const char *s_THUSTR_30 = THUSTR_30; +const char *s_THUSTR_31 = THUSTR_31; +const char *s_THUSTR_32 = THUSTR_32; +const char *s_HUSTR_CHATMACRO1 = HUSTR_CHATMACRO1; +const char *s_HUSTR_CHATMACRO2 = HUSTR_CHATMACRO2; +const char *s_HUSTR_CHATMACRO3 = HUSTR_CHATMACRO3; +const char *s_HUSTR_CHATMACRO4 = HUSTR_CHATMACRO4; +const char *s_HUSTR_CHATMACRO5 = HUSTR_CHATMACRO5; +const char *s_HUSTR_CHATMACRO6 = HUSTR_CHATMACRO6; +const char *s_HUSTR_CHATMACRO7 = HUSTR_CHATMACRO7; +const char *s_HUSTR_CHATMACRO8 = HUSTR_CHATMACRO8; +const char *s_HUSTR_CHATMACRO9 = HUSTR_CHATMACRO9; +const char *s_HUSTR_CHATMACRO0 = HUSTR_CHATMACRO0; +const char *s_HUSTR_TALKTOSELF1 = HUSTR_TALKTOSELF1; +const char *s_HUSTR_TALKTOSELF2 = HUSTR_TALKTOSELF2; +const char *s_HUSTR_TALKTOSELF3 = HUSTR_TALKTOSELF3; +const char *s_HUSTR_TALKTOSELF4 = HUSTR_TALKTOSELF4; +const char *s_HUSTR_TALKTOSELF5 = HUSTR_TALKTOSELF5; +const char *s_HUSTR_MESSAGESENT = HUSTR_MESSAGESENT; +const char *s_HUSTR_PLRGREEN = HUSTR_PLRGREEN; +const char *s_HUSTR_PLRINDIGO = HUSTR_PLRINDIGO; +const char *s_HUSTR_PLRBROWN = HUSTR_PLRBROWN; +const char *s_HUSTR_PLRRED = HUSTR_PLRRED; +const char *s_AMSTR_FOLLOWON = AMSTR_FOLLOWON; +const char *s_AMSTR_FOLLOWOFF = AMSTR_FOLLOWOFF; +const char *s_AMSTR_GRIDON = AMSTR_GRIDON; +const char *s_AMSTR_GRIDOFF = AMSTR_GRIDOFF; +const char *s_AMSTR_MARKEDSPOT = AMSTR_MARKEDSPOT; +const char *s_AMSTR_MARKSCLEARED = AMSTR_MARKSCLEARED; +// CPhipps - automap rotate & overlay +const char* s_AMSTR_ROTATEON = AMSTR_ROTATEON; +const char* s_AMSTR_ROTATEOFF = AMSTR_ROTATEOFF; +const char* s_AMSTR_OVERLAYON = AMSTR_OVERLAYON; +const char* s_AMSTR_OVERLAYOFF = AMSTR_OVERLAYOFF; +const char *s_STSTR_MUS = STSTR_MUS; +const char *s_STSTR_NOMUS = STSTR_NOMUS; +const char *s_STSTR_DQDON = STSTR_DQDON; +const char *s_STSTR_DQDOFF = STSTR_DQDOFF; +const char *s_STSTR_KFAADDED = STSTR_KFAADDED; +const char *s_STSTR_FAADDED = STSTR_FAADDED; +const char *s_STSTR_NCON = STSTR_NCON; +const char *s_STSTR_NCOFF = STSTR_NCOFF; +const char *s_STSTR_BEHOLD = STSTR_BEHOLD; +const char *s_STSTR_BEHOLDX = STSTR_BEHOLDX; +const char *s_STSTR_CHOPPERS = STSTR_CHOPPERS; +const char *s_STSTR_CLEV = STSTR_CLEV; +const char *s_STSTR_COMPON = STSTR_COMPON; +const char *s_STSTR_COMPOFF = STSTR_COMPOFF; +const char *s_E1TEXT = E1TEXT; +const char *s_E2TEXT = E2TEXT; +const char *s_E3TEXT = E3TEXT; +const char *s_E4TEXT = E4TEXT; +const char *s_C1TEXT = C1TEXT; +const char *s_C2TEXT = C2TEXT; +const char *s_C3TEXT = C3TEXT; +const char *s_C4TEXT = C4TEXT; +const char *s_C5TEXT = C5TEXT; +const char *s_C6TEXT = C6TEXT; +const char *s_P1TEXT = P1TEXT; +const char *s_P2TEXT = P2TEXT; +const char *s_P3TEXT = P3TEXT; +const char *s_P4TEXT = P4TEXT; +const char *s_P5TEXT = P5TEXT; +const char *s_P6TEXT = P6TEXT; +const char *s_T1TEXT = T1TEXT; +const char *s_T2TEXT = T2TEXT; +const char *s_T3TEXT = T3TEXT; +const char *s_T4TEXT = T4TEXT; +const char *s_T5TEXT = T5TEXT; +const char *s_T6TEXT = T6TEXT; +const char *s_CC_ZOMBIE = CC_ZOMBIE; +const char *s_CC_SHOTGUN = CC_SHOTGUN; +const char *s_CC_HEAVY = CC_HEAVY; +const char *s_CC_IMP = CC_IMP; +const char *s_CC_DEMON = CC_DEMON; +const char *s_CC_LOST = CC_LOST; +const char *s_CC_CACO = CC_CACO; +const char *s_CC_HELL = CC_HELL; +const char *s_CC_BARON = CC_BARON; +const char *s_CC_ARACH = CC_ARACH; +const char *s_CC_PAIN = CC_PAIN; +const char *s_CC_REVEN = CC_REVEN; +const char *s_CC_MANCU = CC_MANCU; +const char *s_CC_ARCH = CC_ARCH; +const char *s_CC_SPIDER = CC_SPIDER; +const char *s_CC_CYBER = CC_CYBER; +const char *s_CC_HERO = CC_HERO; +// Ty 03/30/98 - new substitutions for background textures +// during int screens +const char *bgflatE1 = "FLOOR4_8"; // end of DOOM Episode 1 +const char *bgflatE2 = "SFLR6_1"; // end of DOOM Episode 2 +const char *bgflatE3 = "MFLR8_4"; // end of DOOM Episode 3 +const char *bgflatE4 = "MFLR8_3"; // end of DOOM Episode 4 +const char *bgflat06 = "SLIME16"; // DOOM2 after MAP06 +const char *bgflat11 = "RROCK14"; // DOOM2 after MAP11 +const char *bgflat20 = "RROCK07"; // DOOM2 after MAP20 +const char *bgflat30 = "RROCK17"; // DOOM2 after MAP30 +const char *bgflat15 = "RROCK13"; // DOOM2 going MAP15 to MAP31 +const char *bgflat31 = "RROCK19"; // DOOM2 going MAP31 to MAP32 +const char *bgcastcall = "BOSSBACK"; // Panel behind cast call + +const char *startup1 = ""; // blank lines are default and are not printed +const char *startup2 = ""; +const char *startup3 = ""; +const char *startup4 = ""; +const char *startup5 = ""; + +// end d_deh.h variable declarations +// ==================================================================== + +const char *deh_newlevel = "NEWLEVEL"; // CPhipps - const + +// DOOM shareware/registered/retail (Ultimate) names. +// CPhipps - const**const +const char **const mapnames[] = +{ + &s_HUSTR_E1M1, + &s_HUSTR_E1M2, + &s_HUSTR_E1M3, + &s_HUSTR_E1M4, + &s_HUSTR_E1M5, + &s_HUSTR_E1M6, + &s_HUSTR_E1M7, + &s_HUSTR_E1M8, + &s_HUSTR_E1M9, + + &s_HUSTR_E2M1, + &s_HUSTR_E2M2, + &s_HUSTR_E2M3, + &s_HUSTR_E2M4, + &s_HUSTR_E2M5, + &s_HUSTR_E2M6, + &s_HUSTR_E2M7, + &s_HUSTR_E2M8, + &s_HUSTR_E2M9, + + &s_HUSTR_E3M1, + &s_HUSTR_E3M2, + &s_HUSTR_E3M3, + &s_HUSTR_E3M4, + &s_HUSTR_E3M5, + &s_HUSTR_E3M6, + &s_HUSTR_E3M7, + &s_HUSTR_E3M8, + &s_HUSTR_E3M9, + + &s_HUSTR_E4M1, + &s_HUSTR_E4M2, + &s_HUSTR_E4M3, + &s_HUSTR_E4M4, + &s_HUSTR_E4M5, + &s_HUSTR_E4M6, + &s_HUSTR_E4M7, + &s_HUSTR_E4M8, + &s_HUSTR_E4M9, + + &deh_newlevel, // spares? Unused. + &deh_newlevel, + &deh_newlevel, + &deh_newlevel, + &deh_newlevel, + &deh_newlevel, + &deh_newlevel, + &deh_newlevel, + &deh_newlevel +}; + +// CPhipps - const**const +const char **const mapnames2[] = // DOOM 2 map names. +{ + &s_HUSTR_1, + &s_HUSTR_2, + &s_HUSTR_3, + &s_HUSTR_4, + &s_HUSTR_5, + &s_HUSTR_6, + &s_HUSTR_7, + &s_HUSTR_8, + &s_HUSTR_9, + &s_HUSTR_10, + &s_HUSTR_11, + + &s_HUSTR_12, + &s_HUSTR_13, + &s_HUSTR_14, + &s_HUSTR_15, + &s_HUSTR_16, + &s_HUSTR_17, + &s_HUSTR_18, + &s_HUSTR_19, + &s_HUSTR_20, + + &s_HUSTR_21, + &s_HUSTR_22, + &s_HUSTR_23, + &s_HUSTR_24, + &s_HUSTR_25, + &s_HUSTR_26, + &s_HUSTR_27, + &s_HUSTR_28, + &s_HUSTR_29, + &s_HUSTR_30, + &s_HUSTR_31, + &s_HUSTR_32, +}; + +// CPhipps - const**const +const char **const mapnamesp[] = // Plutonia WAD map names. +{ + &s_PHUSTR_1, + &s_PHUSTR_2, + &s_PHUSTR_3, + &s_PHUSTR_4, + &s_PHUSTR_5, + &s_PHUSTR_6, + &s_PHUSTR_7, + &s_PHUSTR_8, + &s_PHUSTR_9, + &s_PHUSTR_10, + &s_PHUSTR_11, + + &s_PHUSTR_12, + &s_PHUSTR_13, + &s_PHUSTR_14, + &s_PHUSTR_15, + &s_PHUSTR_16, + &s_PHUSTR_17, + &s_PHUSTR_18, + &s_PHUSTR_19, + &s_PHUSTR_20, + + &s_PHUSTR_21, + &s_PHUSTR_22, + &s_PHUSTR_23, + &s_PHUSTR_24, + &s_PHUSTR_25, + &s_PHUSTR_26, + &s_PHUSTR_27, + &s_PHUSTR_28, + &s_PHUSTR_29, + &s_PHUSTR_30, + &s_PHUSTR_31, + &s_PHUSTR_32, +}; + +// CPhipps - const**const +const char **const mapnamest[] = // TNT WAD map names. +{ + &s_THUSTR_1, + &s_THUSTR_2, + &s_THUSTR_3, + &s_THUSTR_4, + &s_THUSTR_5, + &s_THUSTR_6, + &s_THUSTR_7, + &s_THUSTR_8, + &s_THUSTR_9, + &s_THUSTR_10, + &s_THUSTR_11, + + &s_THUSTR_12, + &s_THUSTR_13, + &s_THUSTR_14, + &s_THUSTR_15, + &s_THUSTR_16, + &s_THUSTR_17, + &s_THUSTR_18, + &s_THUSTR_19, + &s_THUSTR_20, + + &s_THUSTR_21, + &s_THUSTR_22, + &s_THUSTR_23, + &s_THUSTR_24, + &s_THUSTR_25, + &s_THUSTR_26, + &s_THUSTR_27, + &s_THUSTR_28, + &s_THUSTR_29, + &s_THUSTR_30, + &s_THUSTR_31, + &s_THUSTR_32, +}; + + +#ifndef NODEHSUPPORT + +#define TRUE 1 +#define FALSE 0 + +// killough 10/98: new functions, to allow processing DEH files in-memory +// (e.g. from wads) + +typedef struct { + /* cph 2006/08/06 - + * if lump != NULL, lump is the start of the lump, + * inp is the current read pos. */ + const byte *inp, *lump; + long size; + /* else, !lump, and f is the file being read */ + FILE* f; +} DEHFILE; + +// killough 10/98: emulate IO whether input really comes from a file or not + +static char *dehfgets(char *buf, size_t n, DEHFILE *fp) +{ + if (!fp->lump) // If this is a real file, + return (fgets)(buf, n, fp->f); // return regular fgets + if (!n || !*fp->inp || fp->size<=0) // If no more characters + return NULL; + if (n==1) + fp->size--, *buf = *fp->inp++; + else + { // copy buffer + char *p = buf; + while (n>1 && *fp->inp && fp->size && + (n--, fp->size--, *p++ = *fp->inp++) != '\n') + ; + *p = 0; + } + return buf; // Return buffer pointer +} + +static int dehfeof(DEHFILE *fp) +{ + return !fp->lump ? feof(fp->f) : !*fp->inp || fp->size<=0; +} + +static int dehfgetc(DEHFILE *fp) +{ + return !fp->lump ? fgetc(fp->f) : fp->size > 0 ? + fp->size--, *fp->inp++ : EOF; +} + +// Do this for a lookup--the pointer (loaded above) is cross-referenced +// to a string key that is the same as the define above. We will use +// strdups to set these new values that we read from the file, orphaning +// the original value set above. + +// CPhipps - make strings pointed to const +typedef struct { + const char **ppstr; // doubly indirect pointer to string + const char *lookup; // pointer to lookup string name +} deh_strs; + +/* CPhipps - const, static + * - removed redundant "Can't XXX in a netgame" strings + */ +static const deh_strs deh_strlookup[] = { + {&s_D_DEVSTR,"D_DEVSTR"}, + {&s_D_CDROM,"D_CDROM"}, + {&s_PRESSKEY,"PRESSKEY"}, + {&s_PRESSYN,"PRESSYN"}, + {&s_QUITMSG,"QUITMSG"}, + {&s_QSAVESPOT,"QSAVESPOT"}, + {&s_SAVEDEAD,"SAVEDEAD"}, + /* cph - disabled to prevent format string attacks in WAD files + {&s_QSPROMPT,"QSPROMPT"}, + {&s_QLPROMPT,"QLPROMPT"},*/ + {&s_NEWGAME,"NEWGAME"}, + {&s_RESTARTLEVEL,"RESTARTLEVEL"}, + {&s_NIGHTMARE,"NIGHTMARE"}, + {&s_SWSTRING,"SWSTRING"}, + {&s_MSGOFF,"MSGOFF"}, + {&s_MSGON,"MSGON"}, + {&s_NETEND,"NETEND"}, + {&s_ENDGAME,"ENDGAME"}, + {&s_DOSY,"DOSY"}, + {&s_DETAILHI,"DETAILHI"}, + {&s_DETAILLO,"DETAILLO"}, + {&s_GAMMALVL0,"GAMMALVL0"}, + {&s_GAMMALVL1,"GAMMALVL1"}, + {&s_GAMMALVL2,"GAMMALVL2"}, + {&s_GAMMALVL3,"GAMMALVL3"}, + {&s_GAMMALVL4,"GAMMALVL4"}, + {&s_EMPTYSTRING,"EMPTYSTRING"}, + {&s_GOTARMOR,"GOTARMOR"}, + {&s_GOTMEGA,"GOTMEGA"}, + {&s_GOTHTHBONUS,"GOTHTHBONUS"}, + {&s_GOTARMBONUS,"GOTARMBONUS"}, + {&s_GOTSTIM,"GOTSTIM"}, + {&s_GOTMEDINEED,"GOTMEDINEED"}, + {&s_GOTMEDIKIT,"GOTMEDIKIT"}, + {&s_GOTSUPER,"GOTSUPER"}, + {&s_GOTBLUECARD,"GOTBLUECARD"}, + {&s_GOTYELWCARD,"GOTYELWCARD"}, + {&s_GOTREDCARD,"GOTREDCARD"}, + {&s_GOTBLUESKUL,"GOTBLUESKUL"}, + {&s_GOTYELWSKUL,"GOTYELWSKUL"}, + {&s_GOTREDSKULL,"GOTREDSKULL"}, + {&s_GOTINVUL,"GOTINVUL"}, + {&s_GOTBERSERK,"GOTBERSERK"}, + {&s_GOTINVIS,"GOTINVIS"}, + {&s_GOTSUIT,"GOTSUIT"}, + {&s_GOTMAP,"GOTMAP"}, + {&s_GOTVISOR,"GOTVISOR"}, + {&s_GOTMSPHERE,"GOTMSPHERE"}, + {&s_GOTCLIP,"GOTCLIP"}, + {&s_GOTCLIPBOX,"GOTCLIPBOX"}, + {&s_GOTROCKET,"GOTROCKET"}, + {&s_GOTROCKBOX,"GOTROCKBOX"}, + {&s_GOTCELL,"GOTCELL"}, + {&s_GOTCELLBOX,"GOTCELLBOX"}, + {&s_GOTSHELLS,"GOTSHELLS"}, + {&s_GOTSHELLBOX,"GOTSHELLBOX"}, + {&s_GOTBACKPACK,"GOTBACKPACK"}, + {&s_GOTBFG9000,"GOTBFG9000"}, + {&s_GOTCHAINGUN,"GOTCHAINGUN"}, + {&s_GOTCHAINSAW,"GOTCHAINSAW"}, + {&s_GOTLAUNCHER,"GOTLAUNCHER"}, + {&s_GOTPLASMA,"GOTPLASMA"}, + {&s_GOTSHOTGUN,"GOTSHOTGUN"}, + {&s_GOTSHOTGUN2,"GOTSHOTGUN2"}, + {&s_PD_BLUEO,"PD_BLUEO"}, + {&s_PD_REDO,"PD_REDO"}, + {&s_PD_YELLOWO,"PD_YELLOWO"}, + {&s_PD_BLUEK,"PD_BLUEK"}, + {&s_PD_REDK,"PD_REDK"}, + {&s_PD_YELLOWK,"PD_YELLOWK"}, + {&s_PD_BLUEC,"PD_BLUEC"}, + {&s_PD_REDC,"PD_REDC"}, + {&s_PD_YELLOWC,"PD_YELLOWC"}, + {&s_PD_BLUES,"PD_BLUES"}, + {&s_PD_REDS,"PD_REDS"}, + {&s_PD_YELLOWS,"PD_YELLOWS"}, + {&s_PD_ANY,"PD_ANY"}, + {&s_PD_ALL3,"PD_ALL3"}, + {&s_PD_ALL6,"PD_ALL6"}, + {&s_GGSAVED,"GGSAVED"}, + {&s_HUSTR_MSGU,"HUSTR_MSGU"}, + {&s_HUSTR_E1M1,"HUSTR_E1M1"}, + {&s_HUSTR_E1M2,"HUSTR_E1M2"}, + {&s_HUSTR_E1M3,"HUSTR_E1M3"}, + {&s_HUSTR_E1M4,"HUSTR_E1M4"}, + {&s_HUSTR_E1M5,"HUSTR_E1M5"}, + {&s_HUSTR_E1M6,"HUSTR_E1M6"}, + {&s_HUSTR_E1M7,"HUSTR_E1M7"}, + {&s_HUSTR_E1M8,"HUSTR_E1M8"}, + {&s_HUSTR_E1M9,"HUSTR_E1M9"}, + {&s_HUSTR_E2M1,"HUSTR_E2M1"}, + {&s_HUSTR_E2M2,"HUSTR_E2M2"}, + {&s_HUSTR_E2M3,"HUSTR_E2M3"}, + {&s_HUSTR_E2M4,"HUSTR_E2M4"}, + {&s_HUSTR_E2M5,"HUSTR_E2M5"}, + {&s_HUSTR_E2M6,"HUSTR_E2M6"}, + {&s_HUSTR_E2M7,"HUSTR_E2M7"}, + {&s_HUSTR_E2M8,"HUSTR_E2M8"}, + {&s_HUSTR_E2M9,"HUSTR_E2M9"}, + {&s_HUSTR_E3M1,"HUSTR_E3M1"}, + {&s_HUSTR_E3M2,"HUSTR_E3M2"}, + {&s_HUSTR_E3M3,"HUSTR_E3M3"}, + {&s_HUSTR_E3M4,"HUSTR_E3M4"}, + {&s_HUSTR_E3M5,"HUSTR_E3M5"}, + {&s_HUSTR_E3M6,"HUSTR_E3M6"}, + {&s_HUSTR_E3M7,"HUSTR_E3M7"}, + {&s_HUSTR_E3M8,"HUSTR_E3M8"}, + {&s_HUSTR_E3M9,"HUSTR_E3M9"}, + {&s_HUSTR_E4M1,"HUSTR_E4M1"}, + {&s_HUSTR_E4M2,"HUSTR_E4M2"}, + {&s_HUSTR_E4M3,"HUSTR_E4M3"}, + {&s_HUSTR_E4M4,"HUSTR_E4M4"}, + {&s_HUSTR_E4M5,"HUSTR_E4M5"}, + {&s_HUSTR_E4M6,"HUSTR_E4M6"}, + {&s_HUSTR_E4M7,"HUSTR_E4M7"}, + {&s_HUSTR_E4M8,"HUSTR_E4M8"}, + {&s_HUSTR_E4M9,"HUSTR_E4M9"}, + {&s_HUSTR_1,"HUSTR_1"}, + {&s_HUSTR_2,"HUSTR_2"}, + {&s_HUSTR_3,"HUSTR_3"}, + {&s_HUSTR_4,"HUSTR_4"}, + {&s_HUSTR_5,"HUSTR_5"}, + {&s_HUSTR_6,"HUSTR_6"}, + {&s_HUSTR_7,"HUSTR_7"}, + {&s_HUSTR_8,"HUSTR_8"}, + {&s_HUSTR_9,"HUSTR_9"}, + {&s_HUSTR_10,"HUSTR_10"}, + {&s_HUSTR_11,"HUSTR_11"}, + {&s_HUSTR_12,"HUSTR_12"}, + {&s_HUSTR_13,"HUSTR_13"}, + {&s_HUSTR_14,"HUSTR_14"}, + {&s_HUSTR_15,"HUSTR_15"}, + {&s_HUSTR_16,"HUSTR_16"}, + {&s_HUSTR_17,"HUSTR_17"}, + {&s_HUSTR_18,"HUSTR_18"}, + {&s_HUSTR_19,"HUSTR_19"}, + {&s_HUSTR_20,"HUSTR_20"}, + {&s_HUSTR_21,"HUSTR_21"}, + {&s_HUSTR_22,"HUSTR_22"}, + {&s_HUSTR_23,"HUSTR_23"}, + {&s_HUSTR_24,"HUSTR_24"}, + {&s_HUSTR_25,"HUSTR_25"}, + {&s_HUSTR_26,"HUSTR_26"}, + {&s_HUSTR_27,"HUSTR_27"}, + {&s_HUSTR_28,"HUSTR_28"}, + {&s_HUSTR_29,"HUSTR_29"}, + {&s_HUSTR_30,"HUSTR_30"}, + {&s_HUSTR_31,"HUSTR_31"}, + {&s_HUSTR_32,"HUSTR_32"}, + {&s_PHUSTR_1,"PHUSTR_1"}, + {&s_PHUSTR_2,"PHUSTR_2"}, + {&s_PHUSTR_3,"PHUSTR_3"}, + {&s_PHUSTR_4,"PHUSTR_4"}, + {&s_PHUSTR_5,"PHUSTR_5"}, + {&s_PHUSTR_6,"PHUSTR_6"}, + {&s_PHUSTR_7,"PHUSTR_7"}, + {&s_PHUSTR_8,"PHUSTR_8"}, + {&s_PHUSTR_9,"PHUSTR_9"}, + {&s_PHUSTR_10,"PHUSTR_10"}, + {&s_PHUSTR_11,"PHUSTR_11"}, + {&s_PHUSTR_12,"PHUSTR_12"}, + {&s_PHUSTR_13,"PHUSTR_13"}, + {&s_PHUSTR_14,"PHUSTR_14"}, + {&s_PHUSTR_15,"PHUSTR_15"}, + {&s_PHUSTR_16,"PHUSTR_16"}, + {&s_PHUSTR_17,"PHUSTR_17"}, + {&s_PHUSTR_18,"PHUSTR_18"}, + {&s_PHUSTR_19,"PHUSTR_19"}, + {&s_PHUSTR_20,"PHUSTR_20"}, + {&s_PHUSTR_21,"PHUSTR_21"}, + {&s_PHUSTR_22,"PHUSTR_22"}, + {&s_PHUSTR_23,"PHUSTR_23"}, + {&s_PHUSTR_24,"PHUSTR_24"}, + {&s_PHUSTR_25,"PHUSTR_25"}, + {&s_PHUSTR_26,"PHUSTR_26"}, + {&s_PHUSTR_27,"PHUSTR_27"}, + {&s_PHUSTR_28,"PHUSTR_28"}, + {&s_PHUSTR_29,"PHUSTR_29"}, + {&s_PHUSTR_30,"PHUSTR_30"}, + {&s_PHUSTR_31,"PHUSTR_31"}, + {&s_PHUSTR_32,"PHUSTR_32"}, + {&s_THUSTR_1,"THUSTR_1"}, + {&s_THUSTR_2,"THUSTR_2"}, + {&s_THUSTR_3,"THUSTR_3"}, + {&s_THUSTR_4,"THUSTR_4"}, + {&s_THUSTR_5,"THUSTR_5"}, + {&s_THUSTR_6,"THUSTR_6"}, + {&s_THUSTR_7,"THUSTR_7"}, + {&s_THUSTR_8,"THUSTR_8"}, + {&s_THUSTR_9,"THUSTR_9"}, + {&s_THUSTR_10,"THUSTR_10"}, + {&s_THUSTR_11,"THUSTR_11"}, + {&s_THUSTR_12,"THUSTR_12"}, + {&s_THUSTR_13,"THUSTR_13"}, + {&s_THUSTR_14,"THUSTR_14"}, + {&s_THUSTR_15,"THUSTR_15"}, + {&s_THUSTR_16,"THUSTR_16"}, + {&s_THUSTR_17,"THUSTR_17"}, + {&s_THUSTR_18,"THUSTR_18"}, + {&s_THUSTR_19,"THUSTR_19"}, + {&s_THUSTR_20,"THUSTR_20"}, + {&s_THUSTR_21,"THUSTR_21"}, + {&s_THUSTR_22,"THUSTR_22"}, + {&s_THUSTR_23,"THUSTR_23"}, + {&s_THUSTR_24,"THUSTR_24"}, + {&s_THUSTR_25,"THUSTR_25"}, + {&s_THUSTR_26,"THUSTR_26"}, + {&s_THUSTR_27,"THUSTR_27"}, + {&s_THUSTR_28,"THUSTR_28"}, + {&s_THUSTR_29,"THUSTR_29"}, + {&s_THUSTR_30,"THUSTR_30"}, + {&s_THUSTR_31,"THUSTR_31"}, + {&s_THUSTR_32,"THUSTR_32"}, + {&s_HUSTR_CHATMACRO1,"HUSTR_CHATMACRO1"}, + {&s_HUSTR_CHATMACRO2,"HUSTR_CHATMACRO2"}, + {&s_HUSTR_CHATMACRO3,"HUSTR_CHATMACRO3"}, + {&s_HUSTR_CHATMACRO4,"HUSTR_CHATMACRO4"}, + {&s_HUSTR_CHATMACRO5,"HUSTR_CHATMACRO5"}, + {&s_HUSTR_CHATMACRO6,"HUSTR_CHATMACRO6"}, + {&s_HUSTR_CHATMACRO7,"HUSTR_CHATMACRO7"}, + {&s_HUSTR_CHATMACRO8,"HUSTR_CHATMACRO8"}, + {&s_HUSTR_CHATMACRO9,"HUSTR_CHATMACRO9"}, + {&s_HUSTR_CHATMACRO0,"HUSTR_CHATMACRO0"}, + {&s_HUSTR_TALKTOSELF1,"HUSTR_TALKTOSELF1"}, + {&s_HUSTR_TALKTOSELF2,"HUSTR_TALKTOSELF2"}, + {&s_HUSTR_TALKTOSELF3,"HUSTR_TALKTOSELF3"}, + {&s_HUSTR_TALKTOSELF4,"HUSTR_TALKTOSELF4"}, + {&s_HUSTR_TALKTOSELF5,"HUSTR_TALKTOSELF5"}, + {&s_HUSTR_MESSAGESENT,"HUSTR_MESSAGESENT"}, + {&s_HUSTR_PLRGREEN,"HUSTR_PLRGREEN"}, + {&s_HUSTR_PLRINDIGO,"HUSTR_PLRINDIGO"}, + {&s_HUSTR_PLRBROWN,"HUSTR_PLRBROWN"}, + {&s_HUSTR_PLRRED,"HUSTR_PLRRED"}, + //{c_HUSTR_KEYGREEN,"HUSTR_KEYGREEN"}, + //{c_HUSTR_KEYINDIGO,"HUSTR_KEYINDIGO"}, + //{c_HUSTR_KEYBROWN,"HUSTR_KEYBROWN"}, + //{c_HUSTR_KEYRED,"HUSTR_KEYRED"}, + {&s_AMSTR_FOLLOWON,"AMSTR_FOLLOWON"}, + {&s_AMSTR_FOLLOWOFF,"AMSTR_FOLLOWOFF"}, + {&s_AMSTR_GRIDON,"AMSTR_GRIDON"}, + {&s_AMSTR_GRIDOFF,"AMSTR_GRIDOFF"}, + {&s_AMSTR_MARKEDSPOT,"AMSTR_MARKEDSPOT"}, + {&s_AMSTR_MARKSCLEARED,"AMSTR_MARKSCLEARED"}, + {&s_STSTR_MUS,"STSTR_MUS"}, + {&s_STSTR_NOMUS,"STSTR_NOMUS"}, + {&s_STSTR_DQDON,"STSTR_DQDON"}, + {&s_STSTR_DQDOFF,"STSTR_DQDOFF"}, + {&s_STSTR_KFAADDED,"STSTR_KFAADDED"}, + {&s_STSTR_FAADDED,"STSTR_FAADDED"}, + {&s_STSTR_NCON,"STSTR_NCON"}, + {&s_STSTR_NCOFF,"STSTR_NCOFF"}, + {&s_STSTR_BEHOLD,"STSTR_BEHOLD"}, + {&s_STSTR_BEHOLDX,"STSTR_BEHOLDX"}, + {&s_STSTR_CHOPPERS,"STSTR_CHOPPERS"}, + {&s_STSTR_CLEV,"STSTR_CLEV"}, + {&s_STSTR_COMPON,"STSTR_COMPON"}, + {&s_STSTR_COMPOFF,"STSTR_COMPOFF"}, + {&s_E1TEXT,"E1TEXT"}, + {&s_E2TEXT,"E2TEXT"}, + {&s_E3TEXT,"E3TEXT"}, + {&s_E4TEXT,"E4TEXT"}, + {&s_C1TEXT,"C1TEXT"}, + {&s_C2TEXT,"C2TEXT"}, + {&s_C3TEXT,"C3TEXT"}, + {&s_C4TEXT,"C4TEXT"}, + {&s_C5TEXT,"C5TEXT"}, + {&s_C6TEXT,"C6TEXT"}, + {&s_P1TEXT,"P1TEXT"}, + {&s_P2TEXT,"P2TEXT"}, + {&s_P3TEXT,"P3TEXT"}, + {&s_P4TEXT,"P4TEXT"}, + {&s_P5TEXT,"P5TEXT"}, + {&s_P6TEXT,"P6TEXT"}, + {&s_T1TEXT,"T1TEXT"}, + {&s_T2TEXT,"T2TEXT"}, + {&s_T3TEXT,"T3TEXT"}, + {&s_T4TEXT,"T4TEXT"}, + {&s_T5TEXT,"T5TEXT"}, + {&s_T6TEXT,"T6TEXT"}, + {&s_CC_ZOMBIE,"CC_ZOMBIE"}, + {&s_CC_SHOTGUN,"CC_SHOTGUN"}, + {&s_CC_HEAVY,"CC_HEAVY"}, + {&s_CC_IMP,"CC_IMP"}, + {&s_CC_DEMON,"CC_DEMON"}, + {&s_CC_LOST,"CC_LOST"}, + {&s_CC_CACO,"CC_CACO"}, + {&s_CC_HELL,"CC_HELL"}, + {&s_CC_BARON,"CC_BARON"}, + {&s_CC_ARACH,"CC_ARACH"}, + {&s_CC_PAIN,"CC_PAIN"}, + {&s_CC_REVEN,"CC_REVEN"}, + {&s_CC_MANCU,"CC_MANCU"}, + {&s_CC_ARCH,"CC_ARCH"}, + {&s_CC_SPIDER,"CC_SPIDER"}, + {&s_CC_CYBER,"CC_CYBER"}, + {&s_CC_HERO,"CC_HERO"}, + {&bgflatE1,"BGFLATE1"}, + {&bgflatE2,"BGFLATE2"}, + {&bgflatE3,"BGFLATE3"}, + {&bgflatE4,"BGFLATE4"}, + {&bgflat06,"BGFLAT06"}, + {&bgflat11,"BGFLAT11"}, + {&bgflat20,"BGFLAT20"}, + {&bgflat30,"BGFLAT30"}, + {&bgflat15,"BGFLAT15"}, + {&bgflat31,"BGFLAT31"}, + {&bgcastcall,"BGCASTCALL"}, + // Ty 04/08/98 - added 5 general purpose startup announcement + // strings for hacker use. See m_menu.c + {&startup1,"STARTUP1"}, + {&startup2,"STARTUP2"}, + {&startup3,"STARTUP3"}, + {&startup4,"STARTUP4"}, + {&startup5,"STARTUP5"}, +}; + +static int deh_numstrlookup = sizeof(deh_strlookup)/sizeof(deh_strlookup[0]); + +// Function prototypes +static void lfstrip(char *); // strip the \r and/or \n off of a line +static void rstrip(char *); // strip trailing whitespace +static char * ptr_lstrip(char *); // point past leading whitespace +static boolean deh_GetData(char *, char *, uint_64_t *, char **, FILE *); +static boolean deh_procStringSub(char *, char *, char *, FILE *); +static char * dehReformatStr(char *); + +// Prototypes for block processing functions +// Pointers to these functions are used as the blocks are encountered. + +static void deh_procThing(DEHFILE *fpin, FILE* fpout, char *line); +static void deh_procFrame(DEHFILE *, FILE*, char *); +static void deh_procPointer(DEHFILE *, FILE*, char *); +static void deh_procSounds(DEHFILE *, FILE*, char *); +static void deh_procAmmo(DEHFILE *, FILE*, char *); +static void deh_procWeapon(DEHFILE *, FILE*, char *); +static void deh_procSprite(DEHFILE *, FILE*, char *); +static void deh_procCheat(DEHFILE *, FILE*, char *); +static void deh_procMisc(DEHFILE *, FILE*, char *); +static void deh_procText(DEHFILE *, FILE*, char *); +static void deh_procPars(DEHFILE *, FILE*, char *); +static void deh_procStrings(DEHFILE *, FILE*, char *); +static void deh_procError(DEHFILE *, FILE*, char *); +static void deh_procBexCodePointers(DEHFILE *, FILE*, char *); +static void deh_procHelperThing(DEHFILE *, FILE *, char *); // haleyjd 9/22/99 +// haleyjd: handlers to fully deprecate the DeHackEd text section +static void deh_procBexSounds(DEHFILE *, FILE *, char *); +static void deh_procBexMusic(DEHFILE *, FILE *, char *); +static void deh_procBexSprites(DEHFILE *, FILE *, char *); + +// Structure deh_block is used to hold the block names that can +// be encountered, and the routines to use to decipher them + +typedef struct +{ + const char *key; // a mnemonic block code name // CPhipps - const* + void (*const fptr)(DEHFILE *, FILE*, char *); // handler +} deh_block; + +#define DEH_BUFFERMAX 1024 // input buffer area size, hardcodedfor now +// killough 8/9/98: make DEH_BLOCKMAX self-adjusting +#define DEH_BLOCKMAX (sizeof deh_blocks/sizeof*deh_blocks) // size of array +#define DEH_MAXKEYLEN 32 // as much of any key as we'll look at +#define DEH_MOBJINFOMAX 24 // number of ints in the mobjinfo_t structure (!) + +// Put all the block header values, and the function to be called when that +// one is encountered, in this array: +static const deh_block deh_blocks[] = { // CPhipps - static const + /* 0 */ {"Thing",deh_procThing}, + /* 1 */ {"Frame",deh_procFrame}, + /* 2 */ {"Pointer",deh_procPointer}, + /* 3 */ {"Sound",deh_procSounds}, // Ty 03/16/98 corrected from "Sounds" + /* 4 */ {"Ammo",deh_procAmmo}, + /* 5 */ {"Weapon",deh_procWeapon}, + /* 6 */ {"Sprite",deh_procSprite}, + /* 7 */ {"Cheat",deh_procCheat}, + /* 8 */ {"Misc",deh_procMisc}, + /* 9 */ {"Text",deh_procText}, // -- end of standard "deh" entries, + + // begin BOOM Extensions (BEX) + + /* 10 */ {"[STRINGS]",deh_procStrings}, // new string changes + /* 11 */ {"[PARS]",deh_procPars}, // alternative block marker + /* 12 */ {"[CODEPTR]",deh_procBexCodePointers}, // bex codepointers by mnemonic + /* 13 */ {"[HELPER]", deh_procHelperThing}, // helper thing substitution haleyjd 9/22/99 + /* 14 */ {"[SPRITES]", deh_procBexSprites}, // bex style sprites + /* 15 */ {"[SOUNDS]", deh_procBexSounds}, // bex style sounds + /* 16 */ {"[MUSIC]", deh_procBexMusic}, // bex style music + /* 17 */ {"", deh_procError} // dummy to handle anything else +}; + +// flag to skip included deh-style text, used with INCLUDE NOTEXT directive +static boolean includenotext = false; + +static boolean deh_initialized = false; + +// MOBJINFO - Dehacked block name = "Thing" +// Usage: Thing nn (name) +// These are for mobjinfo_t types. Each is an integer +// within the structure, so we can use index of the string in this +// array to offset by sizeof(int) into the mobjinfo_t array at [nn] +// * things are base zero but dehacked considers them to start at #1. *** +// CPhipps - static const + +static const char *deh_mobjinfo[DEH_MOBJINFOMAX] = +{ + "ID #", // .doomednum + "Initial frame", // .spawnstate + "Hit points", // .spawnhealth + "First moving frame", // .seestate + "Alert sound", // .seesound + "Reaction time", // .reactiontime + "Attack sound", // .attacksound + "Injury frame", // .painstate + "Pain chance", // .painchance + "Pain sound", // .painsound + "Close attack frame", // .meleestate + "Far attack frame", // .missilestate + "Death frame", // .deathstate + "Exploding frame", // .xdeathstate + "Death sound", // .deathsound + "Speed", // .speed + "Width", // .radius + "Height", // .height + "Mass", // .mass + "Missile damage", // .damage + "Action sound", // .activesound + "Bits", // .flags + "Bits2", // .flags + "Respawn frame" // .raisestate +}; + +// Strings that are used to indicate flags ("Bits" in mobjinfo) +// This is an array of bit masks that are related to p_mobj.h +// values, using the smae names without the MF_ in front. +// Ty 08/27/98 new code +// +// killough 10/98: +// +// Convert array to struct to allow multiple values, make array size variable + +#define DEH_MOBJFLAGMAX (sizeof deh_mobjflags/sizeof*deh_mobjflags) + +struct deh_mobjflags_s { + const char *name; // CPhipps - const* + uint_64_t value; +}; + +// CPhipps - static const +static const struct deh_mobjflags_s deh_mobjflags[] = { + {"SPECIAL", MF_SPECIAL}, // call P_Specialthing when touched + {"SOLID", MF_SOLID}, // block movement + {"SHOOTABLE", MF_SHOOTABLE}, // can be hit + {"NOSECTOR", MF_NOSECTOR}, // invisible but touchable + {"NOBLOCKMAP", MF_NOBLOCKMAP}, // inert but displayable + {"AMBUSH", MF_AMBUSH}, // deaf monster + {"JUSTHIT", MF_JUSTHIT}, // will try to attack right back + {"JUSTATTACKED", MF_JUSTATTACKED}, // take at least 1 step before attacking + {"SPAWNCEILING", MF_SPAWNCEILING}, // initially hang from ceiling + {"NOGRAVITY", MF_NOGRAVITY}, // don't apply gravity during play + {"DROPOFF", MF_DROPOFF}, // can jump from high places + {"PICKUP", MF_PICKUP}, // will pick up items + {"NOCLIP", MF_NOCLIP}, // goes through walls + {"SLIDE", MF_SLIDE}, // keep info about sliding along walls + {"FLOAT", MF_FLOAT}, // allow movement to any height + {"TELEPORT", MF_TELEPORT}, // don't cross lines or look at heights + {"MISSILE", MF_MISSILE}, // don't hit same species, explode on block + {"DROPPED", MF_DROPPED}, // dropped, not spawned (like ammo clip) + {"SHADOW", MF_SHADOW}, // use fuzzy draw like spectres + {"NOBLOOD", MF_NOBLOOD}, // puffs instead of blood when shot + {"CORPSE", MF_CORPSE}, // so it will slide down steps when dead + {"INFLOAT", MF_INFLOAT}, // float but not to target height + {"COUNTKILL", MF_COUNTKILL}, // count toward the kills total + {"COUNTITEM", MF_COUNTITEM}, // count toward the items total + {"SKULLFLY", MF_SKULLFLY}, // special handling for flying skulls + {"NOTDMATCH", MF_NOTDMATCH}, // do not spawn in deathmatch + + // killough 10/98: TRANSLATION consists of 2 bits, not 1: + + {"TRANSLATION", MF_TRANSLATION1}, // for Boom bug-compatibility + {"TRANSLATION1", MF_TRANSLATION1}, // use translation table for color (players) + {"TRANSLATION2", MF_TRANSLATION2}, // use translation table for color (players) + {"UNUSED1", MF_TRANSLATION2}, // unused bit # 1 -- For Boom bug-compatibility + {"UNUSED2", MF_UNUSED2}, // unused bit # 2 -- For Boom compatibility + {"UNUSED3", MF_UNUSED3}, // unused bit # 3 -- For Boom compatibility + {"UNUSED4", MF_TRANSLUCENT}, // unused bit # 4 -- For Boom compatibility + {"TRANSLUCENT", MF_TRANSLUCENT}, // apply translucency to sprite (BOOM) + {"TOUCHY", MF_TOUCHY}, // dies on contact with solid objects (MBF) + {"BOUNCES", MF_BOUNCES}, // bounces off floors, ceilings and maybe walls (MBF) + {"FRIEND", MF_FRIEND}, // a friend of the player(s) (MBF) +}; + +// STATE - Dehacked block name = "Frame" and "Pointer" +// Usage: Frame nn +// Usage: Pointer nn (Frame nn) +// These are indexed separately, for lookup to the actual +// function pointers. Here we'll take whatever Dehacked gives +// us and go from there. The (Frame nn) after the pointer is the +// real place to put this value. The "Pointer" value is an xref +// that Dehacked uses and is useless to us. +// * states are base zero and have a dummy #0 (TROO) + +static const char *deh_state[] = // CPhipps - static const* +{ + "Sprite number", // .sprite (spritenum_t) // an enum + "Sprite subnumber", // .frame (long) + "Duration", // .tics (long) + "Next frame", // .nextstate (statenum_t) + // This is set in a separate "Pointer" block from Dehacked + "Codep Frame", // pointer to first use of action (actionf_t) + "Unknown 1", // .misc1 (long) + "Unknown 2" // .misc2 (long) +}; + +// SFXINFO_STRUCT - Dehacked block name = "Sounds" +// Sound effects, typically not changed (redirected, and new sfx put +// into the pwad, but not changed here. Can you tell that Gregdidn't +// know what they were for, mostly? Can you tell that I don't either? +// Mostly I just put these into the same slots as they are in the struct. +// This may not be supported in our -deh option if it doesn't make sense by then. + +// * sounds are base zero but have a dummy #0 + +static const char *deh_sfxinfo[] = // CPhipps - static const* +{ + "Offset", // pointer to a name string, changed in text + "Zero/One", // .singularity (int, one at a time flag) + "Value", // .priority + "Zero 1", // .link (sfxinfo_t*) referenced sound if linked + "Zero 2", // .pitch + "Zero 3", // .volume + "Zero 4", // .data (SAMPLE*) sound data + "Neg. One 1", // .usefulness + "Neg. One 2" // .lumpnum +}; + +// MUSICINFO is not supported in Dehacked. Ignored here. +// * music entries are base zero but have a dummy #0 + +// SPRITE - Dehacked block name = "Sprite" +// Usage = Sprite nn +// Sprite redirection by offset into the text area - unsupported by BOOM +// * sprites are base zero and dehacked uses it that way. + +// static const char *deh_sprite[] = // CPhipps - static const* +// { +// "Offset" // supposed to be the offset into the text section +// }; + +// AMMO - Dehacked block name = "Ammo" +// usage = Ammo n (name) +// Ammo information for the few types of ammo + +static const char *deh_ammo[] = // CPhipps - static const* +{ + "Max ammo", // maxammo[] + "Per ammo" // clipammo[] +}; + +// WEAPONS - Dehacked block name = "Weapon" +// Usage: Weapon nn (name) +// Basically a list of frames and what kind of ammo (see above)it uses. + +static const char *deh_weapon[] = // CPhipps - static const* +{ + "Ammo type", // .ammo + "Deselect frame", // .upstate + "Select frame", // .downstate + "Bobbing frame", // .readystate + "Shooting frame", // .atkstate + "Firing frame" // .flashstate +}; + +// CHEATS - Dehacked block name = "Cheat" +// Usage: Cheat 0 +// Always uses a zero in the dehacked file, for consistency. No meaning. +// These are just plain funky terms compared with id's +// +// killough 4/18/98: integrated into main cheat table now (see st_stuff.c) + +// MISC - Dehacked block name = "Misc" +// Usage: Misc 0 +// Always uses a zero in the dehacked file, for consistency. No meaning. + +static const char *deh_misc[] = // CPhipps - static const* +{ + "Initial Health", // initial_health + "Initial Bullets", // initial_bullets + "Max Health", // maxhealth + "Max Armor", // max_armor + "Green Armor Class", // green_armor_class + "Blue Armor Class", // blue_armor_class + "Max Soulsphere", // max_soul + "Soulsphere Health", // soul_health + "Megasphere Health", // mega_health + "God Mode Health", // god_health + "IDFA Armor", // idfa_armor + "IDFA Armor Class", // idfa_armor_class + "IDKFA Armor", // idkfa_armor + "IDKFA Armor Class", // idkfa_armor_class + "BFG Cells/Shot", // BFGCELLS + "Monsters Infight" // Unknown--not a specific number it seems, but + // the logic has to be here somewhere or + // it'd happen always +}; + +// TEXT - Dehacked block name = "Text" +// Usage: Text fromlen tolen +// Dehacked allows a bit of adjustment to the length (why?) + +// BEX extension [CODEPTR] +// Usage: Start block, then each line is: +// FRAME nnn = PointerMnemonic + +typedef struct { + actionf_t cptr; // actual pointer to the subroutine + const char *lookup; // mnemonic lookup string to be specified in BEX + // CPhipps - const* +} deh_bexptr; + +static const deh_bexptr deh_bexptrs[] = // CPhipps - static const +{ + {A_Light0, "A_Light0"}, + {A_WeaponReady, "A_WeaponReady"}, + {A_Lower, "A_Lower"}, + {A_Raise, "A_Raise"}, + {A_Punch, "A_Punch"}, + {A_ReFire, "A_ReFire"}, + {A_FirePistol, "A_FirePistol"}, + {A_Light1, "A_Light1"}, + {A_FireShotgun, "A_FireShotgun"}, + {A_Light2, "A_Light2"}, + {A_FireShotgun2, "A_FireShotgun2"}, + {A_CheckReload, "A_CheckReload"}, + {A_OpenShotgun2, "A_OpenShotgun2"}, + {A_LoadShotgun2, "A_LoadShotgun2"}, + {A_CloseShotgun2, "A_CloseShotgun2"}, + {A_FireCGun, "A_FireCGun"}, + {A_GunFlash, "A_GunFlash"}, + {A_FireMissile, "A_FireMissile"}, + {A_Saw, "A_Saw"}, + {A_FirePlasma, "A_FirePlasma"}, + {A_BFGsound, "A_BFGsound"}, + {A_FireBFG, "A_FireBFG"}, + {A_BFGSpray, "A_BFGSpray"}, + {A_Explode, "A_Explode"}, + {A_Pain, "A_Pain"}, + {A_PlayerScream, "A_PlayerScream"}, + {A_Fall, "A_Fall"}, + {A_XScream, "A_XScream"}, + {A_Look, "A_Look"}, + {A_Chase, "A_Chase"}, + {A_FaceTarget, "A_FaceTarget"}, + {A_PosAttack, "A_PosAttack"}, + {A_Scream, "A_Scream"}, + {A_SPosAttack, "A_SPosAttack"}, + {A_VileChase, "A_VileChase"}, + {A_VileStart, "A_VileStart"}, + {A_VileTarget, "A_VileTarget"}, + {A_VileAttack, "A_VileAttack"}, + {A_StartFire, "A_StartFire"}, + {A_Fire, "A_Fire"}, + {A_FireCrackle, "A_FireCrackle"}, + {A_Tracer, "A_Tracer"}, + {A_SkelWhoosh, "A_SkelWhoosh"}, + {A_SkelFist, "A_SkelFist"}, + {A_SkelMissile, "A_SkelMissile"}, + {A_FatRaise, "A_FatRaise"}, + {A_FatAttack1, "A_FatAttack1"}, + {A_FatAttack2, "A_FatAttack2"}, + {A_FatAttack3, "A_FatAttack3"}, + {A_BossDeath, "A_BossDeath"}, + {A_CPosAttack, "A_CPosAttack"}, + {A_CPosRefire, "A_CPosRefire"}, + {A_TroopAttack, "A_TroopAttack"}, + {A_SargAttack, "A_SargAttack"}, + {A_HeadAttack, "A_HeadAttack"}, + {A_BruisAttack, "A_BruisAttack"}, + {A_SkullAttack, "A_SkullAttack"}, + {A_Metal, "A_Metal"}, + {A_SpidRefire, "A_SpidRefire"}, + {A_BabyMetal, "A_BabyMetal"}, + {A_BspiAttack, "A_BspiAttack"}, + {A_Hoof, "A_Hoof"}, + {A_CyberAttack, "A_CyberAttack"}, + {A_PainAttack, "A_PainAttack"}, + {A_PainDie, "A_PainDie"}, + {A_KeenDie, "A_KeenDie"}, + {A_BrainPain, "A_BrainPain"}, + {A_BrainScream, "A_BrainScream"}, + {A_BrainDie, "A_BrainDie"}, + {A_BrainAwake, "A_BrainAwake"}, + {A_BrainSpit, "A_BrainSpit"}, + {A_SpawnSound, "A_SpawnSound"}, + {A_SpawnFly, "A_SpawnFly"}, + {A_BrainExplode, "A_BrainExplode"}, + {A_Detonate, "A_Detonate"}, // killough 8/9/98 + {A_Mushroom, "A_Mushroom"}, // killough 10/98 + {A_Die, "A_Die"}, // killough 11/98 + {A_Spawn, "A_Spawn"}, // killough 11/98 + {A_Turn, "A_Turn"}, // killough 11/98 + {A_Face, "A_Face"}, // killough 11/98 + {A_Scratch, "A_Scratch"}, // killough 11/98 + {A_PlaySound, "A_PlaySound"}, // killough 11/98 + {A_RandomJump, "A_RandomJump"}, // killough 11/98 + {A_LineEffect, "A_LineEffect"}, // killough 11/98 + + // This NULL entry must be the last in the list + {NULL, "A_NULL"}, // Ty 05/16/98 +}; + +// to hold startup code pointers from INFO.C +// CPhipps - static +static actionf_t *deh_codeptr; +static char **deh_spritenames; +static char **deh_musicnames; +static char **deh_soundnames; + +// ==================================================================== +// ProcessDehFile +// Purpose: Read and process a DEH or BEX file +// Args: filename -- name of the DEH/BEX file +// outfilename -- output file (DEHOUT.TXT), appended to here +// Returns: void +// +// killough 10/98: +// substantially modified to allow input from wad lumps instead of .deh files. + +void D_ProcessDehFile(const char *filename, const char *outfilename, int lumpnum) +{ + static FILE *fileout; // In case -dehout was used + DEHFILE infile, *filein = &infile; // killough 10/98 + char inbuffer[DEH_BUFFERMAX]; // Place to put the primary infostring + + // Initialize structures only if needed + if (!deh_initialized) + { + lprintf(LO_WARN, "D_ProcessDehFile: Initializing DEH engine...\n"); + + deh_codeptr = calloc(NUMSTATES + 1, sizeof(actionf_t)); + deh_spritenames = calloc(NUMSPRITES + 1, sizeof(char *)); + deh_musicnames = calloc(NUMMUSIC + 1, sizeof(char *)); + deh_soundnames = calloc(NUMSFX + 1, sizeof(char *)); + + // Keep a copy of the original values + for (int i = 0; i < NUMSTATES; i++) + deh_codeptr[i] = states[i].action; + for (int i = 0; i < NUMSPRITES; i++) + deh_spritenames[i] = sprnames[i]; + for(int i = 1; i < NUMMUSIC; i++) + deh_musicnames[i] = S_music[i].name; + for(int i = 1; i < NUMSFX; i++) + deh_soundnames[i] = S_sfx[i].name; + } + + // Open output file if we're writing output + if (outfilename && *outfilename && !fileout) + { + static boolean firstfile = true; // to allow append to output log + if (!strcmp(outfilename, "-")) + fileout = stdout; + else + if (!(fileout=fopen(outfilename, firstfile ? "wt" : "at"))) + { + lprintf(LO_WARN, "Could not open -dehout file %s\n... using stdout.\n", + outfilename); + fileout = stdout; + } + firstfile = false; + } + + // killough 10/98: allow DEH files to come from wad lumps + + if (filename) + { + if (!(infile.f = fopen(filename,"rt"))) + { + lprintf(LO_WARN, "-deh file %s not found\n",filename); + return; // should be checked up front anyway + } + infile.lump = NULL; + } + else // DEH file comes from lump indicated by third argument + { + infile.size = W_LumpLength(lumpnum); + infile.inp = infile.lump = W_CacheLumpNum(lumpnum); + filename = "(WAD)"; + } + + lprintf(LO_INFO, "Loading DEH file %s\n",filename); + lprintf(LO_INFO, "Lump number %d, address: %p\n",lumpnum, infile.lump); + if (fileout) fprintf(fileout,"\nLoading DEH file %s\n\n",filename); + + // loop until end of file + + while (dehfgets(inbuffer,sizeof(inbuffer),filein)) + { + unsigned i; + + lfstrip(inbuffer); + if (fileout) fprintf(fileout,"Line='%s'\n",inbuffer); + if (!*inbuffer || *inbuffer == '#' || *inbuffer == ' ') + continue; /* Blank line or comment line */ + + // -- If DEH_BLOCKMAX is set right, the processing is independently + // -- handled based on data in the deh_blocks[] structure array + + // killough 10/98: INCLUDE code rewritten to allow arbitrary nesting, + // and to greatly simplify code, fix memory leaks, other bugs + + if (!strncasecmp(inbuffer,"INCLUDE",7)) // include a file + { + // preserve state while including a file + // killough 10/98: moved to here + + char *nextfile; + boolean oldnotext = includenotext; // killough 10/98 + + // killough 10/98: exclude if inside wads (only to discourage + // the practice, since the code could otherwise handle it) + + if (infile.lump) + { + if (fileout) + fprintf(fileout, + "No files may be included from wads: %s\n",inbuffer); + continue; + } + + // check for no-text directive, used when including a DEH + // file but using the BEX format to handle strings + + if (!strncasecmp(nextfile = ptr_lstrip(inbuffer+7),"NOTEXT",6)) + includenotext = true, nextfile = ptr_lstrip(nextfile+6); + + if (fileout) + fprintf(fileout,"Branching to include file %s...\n", nextfile); + + // killough 10/98: + // Second argument must be NULL to prevent closing fileout too soon + + D_ProcessDehFile(nextfile,NULL,0); // do the included file + + includenotext = oldnotext; + if (fileout) fprintf(fileout,"...continuing with %s\n",filename); + continue; + } + + for (i=0; i= NUMSTATES) + { + if (fpout) fprintf(fpout,"Bad pointer number %d of %d\n", + indexnum, NUMSTATES); + return; // killough 10/98: fix SegViol + } + strcpy(key,"A_"); // reusing the key area to prefix the mnemonic + strcat(key,ptr_lstrip(mnemonic)); + + found = FALSE; + i= -1; // incremented to start at zero at the top of the loop + do // Ty 05/16/98 - fix loop logic to look for null ending entry + { + ++i; + if (!strcasecmp(key,deh_bexptrs[i].lookup)) + { // Ty 06/01/98 - add to states[].action for new djgcc version + states[indexnum].action = deh_bexptrs[i].cptr; // assign + if (fpout) fprintf(fpout, + " - applied %s from codeptr[%d] to states[%d]\n", + deh_bexptrs[i].lookup,i,indexnum); + found = TRUE; + } + } while (!found && (deh_bexptrs[i].cptr != NULL)); + + if (!found) + if (fpout) fprintf(fpout, + "Invalid frame pointer mnemonic '%s' at %d\n", + mnemonic, indexnum); + } + return; +} + +//--------------------------------------------------------------------------- +// To be on the safe, compatible side, we manually convert DEH bitflags +// to prboom types - POPE +//--------------------------------------------------------------------------- +static uint_64_t getConvertedDEHBits(uint_64_t bits) { + const uint_64_t bitMap[32] = { + /* cf linuxdoom-1.10 p_mobj.h */ + MF_SPECIAL, // 0 Can be picked up - When touched the thing can be picked up. + MF_SOLID, // 1 Obstacle - The thing is solid and will not let you (or others) pass through it + MF_SHOOTABLE, // 2 Shootable - Can be shot. + MF_NOSECTOR, // 3 Total Invisibility - Invisible, but can be touched + MF_NOBLOCKMAP, // 4 Don't use the blocklinks (inert but displayable) + MF_AMBUSH, // 5 Semi deaf - The thing is a deaf monster + MF_JUSTHIT, // 6 In pain - Will try to attack right back after being hit + MF_JUSTATTACKED, // 7 Steps before attack - Will take at least one step before attacking + MF_SPAWNCEILING, // 8 Hangs from ceiling - When the level starts, this thing will be at ceiling height. + MF_NOGRAVITY, // 9 No gravity - Gravity does not affect this thing + MF_DROPOFF, // 10 Travels over cliffs - Monsters normally do not walk off ledges/steps they could not walk up. With this set they can walk off any height of cliff. Usually only used for flying monsters. + MF_PICKUP, // 11 Pick up items - The thing can pick up gettable items. + MF_NOCLIP, // 12 No clipping - Thing can walk through walls. + MF_SLIDE, // 13 Slides along walls - Keep info about sliding along walls (don't really know much about this one). + MF_FLOAT, // 14 Floating - Thing can move to any height + MF_TELEPORT, // 15 Semi no clipping - Don't cross lines or look at teleport heights. (don't really know much about this one either). + MF_MISSILE, // 16 Projectiles - Behaves like a projectile, explodes when hitting something that blocks movement + MF_DROPPED, // 17 Disappearing weapon - Dropped, not spawned (like an ammo clip) I have not had much success in using this one. + MF_SHADOW, // 18 Partial invisibility - Drawn like a spectre. + MF_NOBLOOD, // 19 Puffs (vs. bleeds) - If hit will spawn bullet puffs instead of blood splats. + MF_CORPSE, // 20 Sliding helpless - Will slide down steps when dead. + MF_INFLOAT, // 21 No auto levelling - float but not to target height (?) + MF_COUNTKILL, // 22 Affects kill % - counted as a killable enemy and affects percentage kills on level summary. + MF_COUNTITEM, // 23 Affects item % - affects percentage items gathered on level summary. + MF_SKULLFLY, // 24 Running - special handling for flying skulls. + MF_NOTDMATCH, // 25 Not in deathmatch - do not spawn in deathmatch (like keys) + MF_TRANSLATION1, // 26 Color 1 (grey / red) + MF_TRANSLATION2, // 27 Color 2 (brown / red) + // Convert bit 28 to MF_TOUCHY, not (MF_TRANSLATION1|MF_TRANSLATION2) + // fixes bug #1576151 (part 1) + MF_TOUCHY, // 28 - explodes on contact (MBF) + MF_BOUNCES, // 29 - bounces off walls and floors (MBF) + MF_FRIEND, // 30 - friendly monster helps players (MBF) + MF_TRANSLUCENT // e6y: Translucency via dehacked/bex doesn't work without it + }; + int i; + uint_64_t shiftBits = bits; + uint_64_t convertedBits = 0; + for (i=0; i<32; i++) { + if (shiftBits & 0x1) convertedBits |= bitMap[i]; + shiftBits >>= 1; + } + return convertedBits; +} + +//--------------------------------------------------------------------------- +// See usage below for an explanation of this function's existence - POPE +//--------------------------------------------------------------------------- +static void setMobjInfoValue(int mobjInfoIndex, int keyIndex, uint_64_t value) { + mobjinfo_t *mi; + if (mobjInfoIndex >= NUMMOBJTYPES || mobjInfoIndex < 0) return; + mi = &mobjinfo[mobjInfoIndex]; + switch (keyIndex) { + case 0: mi->doomednum = (int)value; return; + case 1: mi->spawnstate = (int)value; return; + case 2: mi->spawnhealth = (int)value; return; + case 3: mi->seestate = (int)value; return; + case 4: mi->seesound = (int)value; return; + case 5: mi->reactiontime = (int)value; return; + case 6: mi->attacksound = (int)value; return; + case 7: mi->painstate = (int)value; return; + case 8: mi->painchance = (int)value; return; + case 9: mi->painsound = (int)value; return; + case 10: mi->meleestate = (int)value; return; + case 11: mi->missilestate = (int)value; return; + case 12: mi->deathstate = (int)value; return; + case 13: mi->xdeathstate = (int)value; return; + case 14: mi->deathsound = (int)value; return; + case 15: mi->speed = (int)value; return; + case 16: mi->radius = (int)value; return; + case 17: mi->height = (int)value; return; + case 18: mi->mass = (int)value; return; + case 19: mi->damage = (int)value; return; + case 20: mi->activesound = (int)value; return; + case 21: mi->flags = value; return; + case 22: return; // "Bits2", unused + case 23: mi->raisestate = (int)value; return; + default: return; + } +} + +// ==================================================================== +// deh_procThing +// Purpose: Handle DEH Thing block +// Args: fpin -- input file stream +// fpout -- output file stream (DEHOUT.TXT) +// line -- current line in file to process +// Returns: void +// +// Ty 8/27/98 - revised to also allow mnemonics for +// bit masks for monster attributes +// + +static void deh_procThing(DEHFILE *fpin, FILE* fpout, char *line) +{ + char key[DEH_MAXKEYLEN]; + char inbuffer[DEH_BUFFERMAX]; + uint_64_t value; // All deh values are ints or longs + int indexnum; + int ix; + char *strval; + + strncpy(inbuffer,line,DEH_BUFFERMAX - 1); + if (fpout) fprintf(fpout,"Thing line: '%s'\n",inbuffer); + + // killough 8/98: allow hex numbers in input: + ix = sscanf(inbuffer,"%s %i",key, &indexnum); + if (fpout) fprintf(fpout,"count=%d, Thing %d\n",ix, indexnum); + + // Note that the mobjinfo[] array is base zero, but object numbers + // in the dehacked file start with one. Grumble. + --indexnum; + + // now process the stuff + // Note that for Things we can look up the key and use its offset + // in the array of key strings as an int offset in the structure + + // get a line until a blank or end of file--it's not + // blank now because it has our incoming key in it + while (!dehfeof(fpin) && *inbuffer && (*inbuffer != ' ')) + { + // e6y: Correction of wrong processing of Bits parameter if its value is equal to zero + // No more desync on HACX demos. + int bGetData; + + if (!dehfgets(inbuffer, sizeof(inbuffer), fpin)) break; + lfstrip(inbuffer); // toss the end of line + + // killough 11/98: really bail out on blank lines (break != continue) + if (!*inbuffer) break; // bail out with blank line between sections + + // e6y: Correction of wrong processing of Bits parameter if its value is equal to zero + // No more desync on HACX demos. + bGetData = deh_GetData(inbuffer,key,&value,&strval,fpout); + if (!bGetData) + // Old code: if (!deh_GetData(inbuffer,key,&value,&strval,fpout)) // returns TRUE if ok + { + if (fpout) fprintf(fpout,"Bad data pair in '%s'\n",inbuffer); + continue; + } + for (ix=0; ix>32) & 0xffffffff, + (unsigned long)deh_mobjflags[iy].value & 0xffffffff, strval + ); + } + value |= deh_mobjflags[iy].value; + break; + } + if (iy >= DEH_MOBJFLAGMAX && fpout) { + fprintf(fpout, "Could not find bit mnemonic %s\n", strval); + } + } + + // Don't worry about conversion -- simply print values + if (fpout) { + fprintf(fpout, + "Bits = 0x%08lX%08lX\n", + (unsigned long)(value>>32) & 0xffffffff, + (unsigned long)value & 0xffffffff + ); + } + mobjinfo[indexnum].flags = value; // e6y + } + } + if (fpout) { + fprintf(fpout, + "Assigned 0x%08lx%08lx to %s(%d) at index %d\n", + (unsigned long)(value>>32) & 0xffffffff, + (unsigned long)value & 0xffffffff, key, indexnum, ix + ); + } + } + } + return; +} + +// ==================================================================== +// deh_procFrame +// Purpose: Handle DEH Frame block +// Args: fpin -- input file stream +// fpout -- output file stream (DEHOUT.TXT) +// line -- current line in file to process +// Returns: void +// +static void deh_procFrame(DEHFILE *fpin, FILE* fpout, char *line) +{ + char key[DEH_MAXKEYLEN]; + char inbuffer[DEH_BUFFERMAX]; + uint_64_t value; // All deh values are ints or longs + int indexnum; + + strncpy(inbuffer,line,DEH_BUFFERMAX - 1); + + // killough 8/98: allow hex numbers in input: + sscanf(inbuffer,"%s %i",key, &indexnum); + if (fpout) fprintf(fpout,"Processing Frame at index %d: %s\n",indexnum,key); + if (indexnum < 0 || indexnum >= NUMSTATES) + if (fpout) fprintf(fpout,"Bad frame number %d of %d\n",indexnum, NUMSTATES); + + while (!dehfeof(fpin) && *inbuffer && (*inbuffer != ' ')) + { + if (!dehfgets(inbuffer, sizeof(inbuffer), fpin)) break; + lfstrip(inbuffer); + if (!*inbuffer) break; // killough 11/98 + if (!deh_GetData(inbuffer,key,&value,NULL,fpout)) // returns TRUE if ok + { + if (fpout) fprintf(fpout,"Bad data pair in '%s'\n",inbuffer); + continue; + } + if (!strcasecmp(key,deh_state[0])) // Sprite number + { + if (fpout) fprintf(fpout," - sprite = %lld\n",value); + states[indexnum].sprite = (spritenum_t)value; + } + else + if (!strcasecmp(key,deh_state[1])) // Sprite subnumber + { + if (fpout) fprintf(fpout," - frame = %lld\n",value); + states[indexnum].frame = (long)value; // long + } + else + if (!strcasecmp(key,deh_state[2])) // Duration + { + if (fpout) fprintf(fpout," - tics = %lld\n",value); + states[indexnum].tics = (long)value; // long + } + else + if (!strcasecmp(key,deh_state[3])) // Next frame + { + if (fpout) fprintf(fpout," - nextstate = %lld\n",value); + states[indexnum].nextstate = (statenum_t)value; + } + else + if (!strcasecmp(key,deh_state[4])) // Codep frame (not set in Frame deh block) + { + if (fpout) fprintf(fpout," - codep, should not be set in Frame section!\n"); + /* nop */ ; + } + else + if (!strcasecmp(key,deh_state[5])) // Unknown 1 + { + if (fpout) fprintf(fpout," - misc1 = %lld\n",value); + states[indexnum].misc1 = (long)value; // long + } + else + if (!strcasecmp(key,deh_state[6])) // Unknown 2 + { + if (fpout) fprintf(fpout," - misc2 = %lld\n",value); + states[indexnum].misc2 = (long)value; // long + } + else + if (fpout) fprintf(fpout,"Invalid frame string index for '%s'\n",key); + } + return; +} + +// ==================================================================== +// deh_procPointer +// Purpose: Handle DEH Code pointer block, can use BEX [CODEPTR] instead +// Args: fpin -- input file stream +// fpout -- output file stream (DEHOUT.TXT) +// line -- current line in file to process +// Returns: void +// +static void deh_procPointer(DEHFILE *fpin, FILE* fpout, char *line) // done +{ + char key[DEH_MAXKEYLEN]; + char inbuffer[DEH_BUFFERMAX]; + uint_64_t value; // All deh values are ints or longs + int indexnum; + int i; // looper + + strncpy(inbuffer,line,DEH_BUFFERMAX - 1); + // NOTE: different format from normal + + // killough 8/98: allow hex numbers in input, fix error case: + if (sscanf(inbuffer,"%*s %*i (%s %i)",key, &indexnum) != 2) + { + if (fpout) fprintf(fpout,"Bad data pair in '%s'\n",inbuffer); + return; + } + + if (fpout) fprintf(fpout,"Processing Pointer at index %d: %s\n",indexnum, key); + if (indexnum < 0 || indexnum >= NUMSTATES) + { + if (fpout) + fprintf(fpout,"Bad pointer number %d of %d\n",indexnum, NUMSTATES); + return; + } + + while (!dehfeof(fpin) && *inbuffer && (*inbuffer != ' ')) + { + if (!dehfgets(inbuffer, sizeof(inbuffer), fpin)) break; + lfstrip(inbuffer); + if (!*inbuffer) break; // killough 11/98 + if (!deh_GetData(inbuffer,key,&value,NULL,fpout)) // returns TRUE if ok + { + if (fpout) fprintf(fpout,"Bad data pair in '%s'\n",inbuffer); + continue; + } + + if (value < 0 || value >= NUMSTATES) + { + if (fpout) + fprintf(fpout,"Bad pointer number %lld of %d\n",value, NUMSTATES); + return; + } + + if (!strcasecmp(key,deh_state[4])) // Codep frame (not set in Frame deh block) + { + states[indexnum].action = deh_codeptr[value]; + if (fpout) fprintf(fpout," - applied from codeptr[%lld] to states[%d]\n", + value,indexnum); + // Write BEX-oriented line to match: + // for (i=0;i FRAME %d = %s\n", + indexnum, &deh_bexptrs[i].lookup[2]); + break; + } + if (deh_bexptrs[i].cptr == NULL) // stop at null entry + break; + } + } + else + if (fpout) fprintf(fpout,"Invalid frame pointer index for '%s' at %lld\n", + key, value); + } + return; +} + +// ==================================================================== +// deh_procSounds +// Purpose: Handle DEH Sounds block +// Args: fpin -- input file stream +// fpout -- output file stream (DEHOUT.TXT) +// line -- current line in file to process +// Returns: void +// +static void deh_procSounds(DEHFILE *fpin, FILE* fpout, char *line) +{ + char key[DEH_MAXKEYLEN]; + char inbuffer[DEH_BUFFERMAX]; + uint_64_t value; // All deh values are ints or longs + int indexnum; + + strncpy(inbuffer,line,DEH_BUFFERMAX - 1); + + // killough 8/98: allow hex numbers in input: + sscanf(inbuffer,"%s %i",key, &indexnum); + if (fpout) fprintf(fpout,"Processing Sounds at index %d: %s\n", + indexnum, key); + if (indexnum < 0 || indexnum >= NUMSFX) + if (fpout) fprintf(fpout,"Bad sound number %d of %d\n", + indexnum, NUMSFX); + + while (!dehfeof(fpin) && *inbuffer && (*inbuffer != ' ')) + { + if (!dehfgets(inbuffer, sizeof(inbuffer), fpin)) break; + lfstrip(inbuffer); + if (!*inbuffer) break; // killough 11/98 + if (!deh_GetData(inbuffer,key,&value,NULL,fpout)) // returns TRUE if ok + { + if (fpout) fprintf(fpout,"Bad data pair in '%s'\n",inbuffer); + continue; + } + if (!strcasecmp(key,deh_sfxinfo[0])) // Offset + /* nop */ ; // we don't know what this is, I don't think + else + if (!strcasecmp(key,deh_sfxinfo[1])) // Zero/One + S_sfx[indexnum].singularity = (int)value; + else + if (!strcasecmp(key,deh_sfxinfo[2])) // Value + S_sfx[indexnum].priority = (int)value; + else + if (!strcasecmp(key,deh_sfxinfo[3])) // Zero 1 + S_sfx[indexnum].link = (sfxinfo_t *)value; + else + if (!strcasecmp(key,deh_sfxinfo[4])) // Zero 2 + S_sfx[indexnum].pitch = (int)value; + else + if (!strcasecmp(key,deh_sfxinfo[5])) // Zero 3 + S_sfx[indexnum].volume = (int)value; + else + if (!strcasecmp(key,deh_sfxinfo[6])) // Zero 4 + (void *) value;// S_sfx[indexnum].data = (void *) value; // killough 5/3/98: changed cast + else + if (!strcasecmp(key,deh_sfxinfo[7])) // Neg. One 1 + S_sfx[indexnum].usefulness = (int)value; + else + if (!strcasecmp(key,deh_sfxinfo[8])) // Neg. One 2 + S_sfx[indexnum].lumpnum = (int)value; + else + if (fpout) fprintf(fpout, + "Invalid sound string index for '%s'\n",key); + } + return; +} + +// ==================================================================== +// deh_procAmmo +// Purpose: Handle DEH Ammo block +// Args: fpin -- input file stream +// fpout -- output file stream (DEHOUT.TXT) +// line -- current line in file to process +// Returns: void +// +static void deh_procAmmo(DEHFILE *fpin, FILE* fpout, char *line) +{ + char key[DEH_MAXKEYLEN]; + char inbuffer[DEH_BUFFERMAX]; + uint_64_t value; // All deh values are ints or longs + int indexnum; + + strncpy(inbuffer,line,DEH_BUFFERMAX - 1); + + // killough 8/98: allow hex numbers in input: + sscanf(inbuffer,"%s %i",key, &indexnum); + if (fpout) fprintf(fpout,"Processing Ammo at index %d: %s\n", + indexnum, key); + if (indexnum < 0 || indexnum >= NUMAMMO) + if (fpout) fprintf(fpout,"Bad ammo number %d of %d\n", + indexnum,NUMAMMO); + + while (!dehfeof(fpin) && *inbuffer && (*inbuffer != ' ')) + { + if (!dehfgets(inbuffer, sizeof(inbuffer), fpin)) break; + lfstrip(inbuffer); + if (!*inbuffer) break; // killough 11/98 + if (!deh_GetData(inbuffer,key,&value,NULL,fpout)) // returns TRUE if ok + { + if (fpout) fprintf(fpout,"Bad data pair in '%s'\n",inbuffer); + continue; + } + if (!strcasecmp(key,deh_ammo[0])) // Max ammo + maxammo[indexnum] = (int)value; + else + if (!strcasecmp(key,deh_ammo[1])) // Per ammo + clipammo[indexnum] = (int)value; + else + if (fpout) fprintf(fpout,"Invalid ammo string index for '%s'\n",key); + } + return; +} + +// ==================================================================== +// deh_procWeapon +// Purpose: Handle DEH Weapon block +// Args: fpin -- input file stream +// fpout -- output file stream (DEHOUT.TXT) +// line -- current line in file to process +// Returns: void +// +static void deh_procWeapon(DEHFILE *fpin, FILE* fpout, char *line) +{ + char key[DEH_MAXKEYLEN]; + char inbuffer[DEH_BUFFERMAX]; + uint_64_t value; // All deh values are ints or longs + int indexnum; + + strncpy(inbuffer,line,DEH_BUFFERMAX - 1); + + // killough 8/98: allow hex numbers in input: + sscanf(inbuffer,"%s %i",key, &indexnum); + if (fpout) fprintf(fpout,"Processing Weapon at index %d: %s\n", + indexnum, key); + if (indexnum < 0 || indexnum >= NUMWEAPONS) + if (fpout) fprintf(fpout,"Bad weapon number %d of %d\n", + indexnum, NUMAMMO); + + while (!dehfeof(fpin) && *inbuffer && (*inbuffer != ' ')) + { + if (!dehfgets(inbuffer, sizeof(inbuffer), fpin)) break; + lfstrip(inbuffer); + if (!*inbuffer) break; // killough 11/98 + if (!deh_GetData(inbuffer,key,&value,NULL,fpout)) // returns TRUE if ok + { + if (fpout) fprintf(fpout,"Bad data pair in '%s'\n",inbuffer); + continue; + } + if (!strcasecmp(key,deh_weapon[0])) // Ammo type + weaponinfo[indexnum].ammo = (ammotype_t)value; + else + if (!strcasecmp(key,deh_weapon[1])) // Deselect frame + weaponinfo[indexnum].upstate = (int)value; + else + if (!strcasecmp(key,deh_weapon[2])) // Select frame + weaponinfo[indexnum].downstate = (int)value; + else + if (!strcasecmp(key,deh_weapon[3])) // Bobbing frame + weaponinfo[indexnum].readystate = (int)value; + else + if (!strcasecmp(key,deh_weapon[4])) // Shooting frame + weaponinfo[indexnum].atkstate = (int)value; + else + if (!strcasecmp(key,deh_weapon[5])) // Firing frame + weaponinfo[indexnum].flashstate = (int)value; + else + if (fpout) fprintf(fpout,"Invalid weapon string index for '%s'\n",key); + } + return; +} + +// ==================================================================== +// deh_procSprite +// Purpose: Dummy - we do not support the DEH Sprite block +// Args: fpin -- input file stream +// fpout -- output file stream (DEHOUT.TXT) +// line -- current line in file to process +// Returns: void +// +static void deh_procSprite(DEHFILE *fpin, FILE* fpout, char *line) // Not supported +{ + char key[DEH_MAXKEYLEN]; + char inbuffer[DEH_BUFFERMAX]; + int indexnum; + + // Too little is known about what this is supposed to do, and + // there are better ways of handling sprite renaming. Not supported. + + strncpy(inbuffer,line,DEH_BUFFERMAX - 1); + + // killough 8/98: allow hex numbers in input: + sscanf(inbuffer,"%s %i",key, &indexnum); + if (fpout) fprintf(fpout, + "Ignoring Sprite offset change at index %d: %s\n",indexnum, key); + while (!dehfeof(fpin) && *inbuffer && (*inbuffer != ' ')) + { + if (!dehfgets(inbuffer, sizeof(inbuffer), fpin)) break; + lfstrip(inbuffer); + if (!*inbuffer) break; // killough 11/98 + // ignore line + if (fpout) fprintf(fpout,"- %s\n",inbuffer); + } + return; +} + +// ==================================================================== +// deh_procPars +// Purpose: Handle BEX extension for PAR times +// Args: fpin -- input file stream +// fpout -- output file stream (DEHOUT.TXT) +// line -- current line in file to process +// Returns: void +// +static void deh_procPars(DEHFILE *fpin, FILE* fpout, char *line) // extension +{ + char key[DEH_MAXKEYLEN]; + char inbuffer[DEH_BUFFERMAX]; + int indexnum; + int episode, level, partime, oldpar; + + // new item, par times + // usage: After [PARS] Par 0 section identifier, use one or more of these + // lines: + // par 3 5 120 + // par 14 230 + // The first would make the par for E3M5 be 120 seconds, and the + // second one makes the par for MAP14 be 230 seconds. The number + // of parameters on the line determines which group of par values + // is being changed. Error checking is done based on current fixed + // array sizes of[4][10] and [32] + + strncpy(inbuffer,line,DEH_BUFFERMAX - 1); + + // killough 8/98: allow hex numbers in input: + sscanf(inbuffer,"%s %i",key, &indexnum); + if (fpout) fprintf(fpout, + "Processing Par value at index %d: %s\n",indexnum, key); + // indexnum is a dummy entry + while (!dehfeof(fpin) && *inbuffer && (*inbuffer != ' ')) + { + if (!dehfgets(inbuffer, sizeof(inbuffer), fpin)) break; + lfstrip(strlwr(inbuffer)); // lowercase it + if (!*inbuffer) break; // killough 11/98 + if (3 != sscanf(inbuffer,"par %i %i %i",&episode, &level, &partime)) + { // not 3 + if (2 != sscanf(inbuffer,"par %i %i",&level, &partime)) + { // not 2 + if (fpout) fprintf(fpout,"Invalid par time setting string: %s\n",inbuffer); + } + else + { // is 2 + // Ty 07/11/98 - wrong range check, not zero-based + if (level < 1 || level > 32) // base 0 array (but 1-based parm) + { + if (fpout) fprintf(fpout,"Invalid MAPnn value MAP%d\n",level); + } + else + { + oldpar = cpars[level-1]; + if (fpout) fprintf(fpout,"Changed par time for MAP%02d from %d to %d\n",level,oldpar,partime); + cpars[level-1] = partime; + deh_pars = TRUE; + } + } + } + else + { // is 3 + // note that though it's a [4][10] array, the "left" and "top" aren't used, + // effectively making it a base 1 array. + // Ty 07/11/98 - level was being checked against max 3 - dumb error + // Note that episode 4 does not have par times per original design + // in Ultimate DOOM so that is not supported here. + if (episode < 1 || episode > 3 || level < 1 || level > 9) + { + if (fpout) fprintf(fpout, + "Invalid ExMx values E%dM%d\n",episode, level); + } + else + { + oldpar = pars[episode][level]; + pars[episode][level] = partime; + if (fpout) fprintf(fpout, + "Changed par time for E%dM%d from %d to %d\n", + episode,level,oldpar,partime); + deh_pars = TRUE; + } + } + } + return; +} + +// ==================================================================== +// deh_procCheat +// Purpose: Handle DEH Cheat block +// Args: fpin -- input file stream +// fpout -- output file stream (DEHOUT.TXT) +// line -- current line in file to process +// Returns: void +// +static void deh_procCheat(DEHFILE *fpin, FILE* fpout, char *line) // done +{ + char key[DEH_MAXKEYLEN]; + char inbuffer[DEH_BUFFERMAX]; + uint_64_t value; // All deh values are ints or longs + char ch = 0; // CPhipps - `writable' null string to initialise... + char *strval = &ch; // pointer to the value area + int ix, iy; // array indices + char *p; // utility pointer + + if (fpout) fprintf(fpout,"Processing Cheat: %s\n",line); + + strncpy(inbuffer,line,DEH_BUFFERMAX - 1); + while (!dehfeof(fpin) && *inbuffer && (*inbuffer != ' ')) + { + if (!dehfgets(inbuffer, sizeof(inbuffer), fpin)) break; + lfstrip(inbuffer); + if (!*inbuffer) break; // killough 11/98 + if (!deh_GetData(inbuffer,key,&value,&strval,fpout)) // returns TRUE if ok + { + if (fpout) fprintf(fpout,"Bad data pair in '%s'\n",inbuffer); + continue; + } + // Otherwise we got a (perhaps valid) cheat name, + // so look up the key in the array + + // killough 4/18/98: use main cheat code table in st_stuff.c now + for (ix=0; cheat[ix].cheat; ix++) + if (cheat[ix].deh_cheat) // killough 4/18/98: skip non-deh + { + if (!strcasecmp(key,cheat[ix].deh_cheat)) // found the cheat, ignored case + { + // replace it but don't overflow it. Use current length as limit. + // Ty 03/13/98 - add 0xff code + // Deal with the fact that the cheats in deh files are extended + // with character 0xFF to the original cheat length, which we don't do. + for (iy=0; strval[iy]; iy++) + strval[iy] = (strval[iy]==(char)0xff) ? '\0' : strval[iy]; + + iy = ix; // killough 4/18/98 + + // Ty 03/14/98 - skip leading spaces + p = strval; + while (*p == ' ') ++p; + // Ty 03/16/98 - change to use a strdup and orphan the original + // Also has the advantage of allowing length changes. + // strncpy(cheat[iy].cheat,p,strlen(cheat[iy].cheat)); +#if 0 + { // killough 9/12/98: disable cheats which are prefixes of this one + int i; + for (i=0; cheat[i].cheat; i++) + if (cheat[i].when & not_deh && + !strncasecmp(cheat[i].cheat, + cheat[iy].cheat, + strlen(cheat[i].cheat)) && i != iy) + cheat[i].deh_modified = true; + } +#endif + cheat[iy].cheat = strdup(p); + if (fpout) fprintf(fpout, + "Assigned new cheat '%s' to cheat '%s'at index %d\n", + p, cheat[ix].deh_cheat, iy); // killough 4/18/98 + } + } + if (fpout) fprintf(fpout,"- %s\n",inbuffer); + } + return; +} + +// ==================================================================== +// deh_procMisc +// Purpose: Handle DEH Misc block +// Args: fpin -- input file stream +// fpout -- output file stream (DEHOUT.TXT) +// line -- current line in file to process +// Returns: void +// +static void deh_procMisc(DEHFILE *fpin, FILE* fpout, char *line) // done +{ + char key[DEH_MAXKEYLEN]; + char inbuffer[DEH_BUFFERMAX]; + uint_64_t value; // All deh values are ints or longs + + strncpy(inbuffer,line,DEH_BUFFERMAX - 1); + while (!dehfeof(fpin) && *inbuffer && (*inbuffer != ' ')) + { + if (!dehfgets(inbuffer, sizeof(inbuffer), fpin)) break; + lfstrip(inbuffer); + if (!*inbuffer) break; // killough 11/98 + if (!deh_GetData(inbuffer,key,&value,NULL,fpout)) // returns TRUE if ok + { + if (fpout) fprintf(fpout,"Bad data pair in '%s'\n",inbuffer); + continue; + } + // Otherwise it's ok + if (fpout) fprintf(fpout,"Processing Misc item '%s'\n", key); + + if (!strcasecmp(key,deh_misc[0])) // Initial Health + initial_health = (int)value; + else + if (!strcasecmp(key,deh_misc[1])) // Initial Bullets + initial_bullets = (int)value; + else + if (!strcasecmp(key,deh_misc[2])) // Max Health + maxhealth = (int)value; + else + if (!strcasecmp(key,deh_misc[3])) // Max Armor + max_armor = (int)value; + else + if (!strcasecmp(key,deh_misc[4])) // Green Armor Class + green_armor_class = (int)value; + else + if (!strcasecmp(key,deh_misc[5])) // Blue Armor Class + blue_armor_class = (int)value; + else + if (!strcasecmp(key,deh_misc[6])) // Max Soulsphere + max_soul = (int)value; + else + if (!strcasecmp(key,deh_misc[7])) // Soulsphere Health + soul_health = (int)value; + else + if (!strcasecmp(key,deh_misc[8])) // Megasphere Health + mega_health = (int)value; + else + if (!strcasecmp(key,deh_misc[9])) // God Mode Health + god_health = (int)value; + else + if (!strcasecmp(key,deh_misc[10])) // IDFA Armor + idfa_armor = (int)value; + else + if (!strcasecmp(key,deh_misc[11])) // IDFA Armor Class + idfa_armor_class = (int)value; + else + if (!strcasecmp(key,deh_misc[12])) // IDKFA Armor + idkfa_armor = (int)value; + else + if (!strcasecmp(key,deh_misc[13])) // IDKFA Armor Class + idkfa_armor_class = (int)value; + else + if (!strcasecmp(key,deh_misc[14])) // BFG Cells/Shot + bfgcells = (int)value; + else + if (!strcasecmp(key,deh_misc[15])) { // Monsters Infight + // e6y: Dehacked support - monsters infight + if (value == 202) monsters_infight = 0; + else if (value == 221) monsters_infight = 1; + else if (fpout) fprintf(fpout, + "Invalid value for 'Monsters Infight': %i", (int)value); + + /* No such switch in DOOM - nop */ //e6y ; + } else + if (fpout) fprintf(fpout, + "Invalid misc item string index for '%s'\n",key); + } + return; +} + +// ==================================================================== +// deh_procText +// Purpose: Handle DEH Text block +// Notes: We look things up in the current information and if found +// we replace it. At the same time we write the new and +// improved BEX syntax to the log file for future use. +// Args: fpin -- input file stream +// fpout -- output file stream (DEHOUT.TXT) +// line -- current line in file to process +// Returns: void +// +static void deh_procText(DEHFILE *fpin, FILE* fpout, char *line) +{ + char key[DEH_MAXKEYLEN]; + char inbuffer[DEH_BUFFERMAX*2]; // can't use line -- double size buffer too. + int i; // loop variable + int fromlen, tolen; // as specified on the text block line + int usedlen; // shorter of fromlen and tolen if not matched + boolean found = FALSE; // to allow early exit once found + char* line2 = NULL; // duplicate line for rerouting + + // Ty 04/11/98 - Included file may have NOTEXT skip flag set + if (includenotext) // flag to skip included deh-style text + { + if (fpout) fprintf(fpout, + "Skipped text block because of notext directive\n"); + strcpy(inbuffer,line); + while (!dehfeof(fpin) && *inbuffer && (*inbuffer != ' ')) + dehfgets(inbuffer, sizeof(inbuffer), fpin); // skip block + // Ty 05/17/98 - don't care if this fails + return; // ************** Early return + } + + // killough 8/98: allow hex numbers in input: + sscanf(line,"%s %i %i",key,&fromlen,&tolen); + if (fpout) fprintf(fpout, + "Processing Text (key=%s, from=%d, to=%d)\n", + key, fromlen, tolen); + + // killough 10/98: fix incorrect usage of feof + { + int c, totlen = 0; + while (totlen < fromlen + tolen && (c = dehfgetc(fpin)) != EOF) + if (c != '\r') + inbuffer[totlen++] = c; + inbuffer[totlen]='\0'; + } + + // if the from and to are 4, this may be a sprite rename. Check it + // against the array and process it as such if it matches. Remember + // that the original names are (and should remain) uppercase. + // Future: this will be from a separate [SPRITES] block. + if (fromlen==4 && tolen==4) + { + i=0; + while (sprnames[i]) // null terminated list in info.c //jff 3/19/98 + { //check pointer + if (!strncasecmp(sprnames[i],inbuffer,fromlen)) //not first char + { + if (fpout) fprintf(fpout, + "Changing name of sprite at index %d from %s to %*s\n", + i,sprnames[i],tolen,&inbuffer[fromlen]); + // Ty 03/18/98 - not using strdup because length is fixed + + // killough 10/98: but it's an array of pointers, so we must + // use strdup unless we redeclare sprnames and change all else + { + // CPhipps - fix constness problem + char *s; + sprnames[i] = s = strdup(sprnames[i]); + + strncpy(s,&inbuffer[fromlen],tolen); + } + found = TRUE; + break; // only one will match--quit early + } + ++i; // next array element + } + } + else + if (fromlen < 7 && tolen < 7) // lengths of music and sfx are 6 or shorter + { + usedlen = (fromlen < tolen) ? fromlen : tolen; + if (fromlen != tolen) + if (fpout) fprintf(fpout, + "Warning: Mismatched lengths from=%d, to=%d, used %d\n", + fromlen, tolen, usedlen); + // Try sound effects entries - see sounds.c + for (i=1; i 12) ? "..." : "",fromlen,tolen); + if ((size_t)fromlen <= strlen(inbuffer)) + { + line2 = strdup(&inbuffer[fromlen]); + inbuffer[fromlen] = '\0'; + } + + deh_procStringSub(NULL, inbuffer, line2, fpout); + } + free(line2); // may be NULL, ignored by free() + return; +} + +static void deh_procError(DEHFILE *fpin, FILE* fpout, char *line) +{ + char inbuffer[DEH_BUFFERMAX]; + + strncpy(inbuffer,line,DEH_BUFFERMAX - 1); + if (fpout) fprintf(fpout,"Unmatched Block: '%s'\n",inbuffer); + return; +} + +// ==================================================================== +// deh_procStrings +// Purpose: Handle BEX [STRINGS] extension +// Args: fpin -- input file stream +// fpout -- output file stream (DEHOUT.TXT) +// line -- current line in file to process +// Returns: void +// +static void deh_procStrings(DEHFILE *fpin, FILE* fpout, char *line) +{ + char key[DEH_MAXKEYLEN]; + char inbuffer[DEH_BUFFERMAX]; + uint_64_t value; // All deh values are ints or longs + char *strval; // holds the string value of the line + static int maxstrlen = 128; // maximum string length, bumped 128 at + // a time as needed + // holds the final result of the string after concatenation + static char *holdstring = NULL; + boolean found = false; // looking for string continuation + + if (fpout) fprintf(fpout,"Processing extended string substitution\n"); + + if (!holdstring) holdstring = malloc(maxstrlen*sizeof(*holdstring)); + + *holdstring = '\0'; // empty string to start with + strncpy(inbuffer,line,DEH_BUFFERMAX - 1); + // Ty 04/24/98 - have to allow inbuffer to start with a blank for + // the continuations of C1TEXT etc. + while (!dehfeof(fpin) && *inbuffer) /* && (*inbuffer != ' ') */ + { + if (!dehfgets(inbuffer, sizeof(inbuffer), fpin)) break; + if (*inbuffer == '#') continue; // skip comment lines + lfstrip(inbuffer); + if (!*inbuffer) break; // killough 11/98 + if (!*holdstring) // first one--get the key + { + if (!deh_GetData(inbuffer,key,&value,&strval,fpout)) // returns TRUE if ok + { + if (fpout) fprintf(fpout,"Bad data pair in '%s'\n",inbuffer); + continue; + } + } + while (strlen(holdstring) + strlen(inbuffer) > (size_t)maxstrlen) // Ty03/29/98 - fix stupid error + { + // killough 11/98: allocate enough the first time + maxstrlen += strlen(holdstring) + strlen(inbuffer) - maxstrlen; + if (fpout) fprintf(fpout, + "* increased buffer from to %d for buffer size %d\n", + maxstrlen,(int)strlen(inbuffer)); + holdstring = realloc(holdstring,maxstrlen*sizeof(*holdstring)); + } + // concatenate the whole buffer if continuation or the value iffirst + strcat(holdstring,ptr_lstrip(((*holdstring) ? inbuffer : strval))); + rstrip(holdstring); + // delete any trailing blanks past the backslash + // note that blanks before the backslash will be concatenated + // but ones at the beginning of the next line will not, allowing + // indentation in the file to read well without affecting the + // string itself. + if (holdstring[strlen(holdstring)-1] == '\\') + { + holdstring[strlen(holdstring)-1] = '\0'; + continue; // ready to concatenate + } + if (*holdstring) // didn't have a backslash, trap above would catch that + { + // go process the current string + found = deh_procStringSub(key, NULL, holdstring, fpout); // supply keyand not search string + + if (!found) + if (fpout) fprintf(fpout, + "Invalid string key '%s', substitution skipped.\n",key); + + *holdstring = '\0'; // empty string for the next one + } + } + return; +} + +// ==================================================================== +// deh_procStringSub +// Purpose: Common string parsing and handling routine for DEH and BEX +// Args: key -- place to put the mnemonic for the string if found +// lookfor -- original value string to look for +// newstring -- string to put in its place if found +// fpout -- file stream pointer for log file (DEHOUT.TXT) +// Returns: boolean: True if string found, false if not +// +boolean deh_procStringSub(char *key, char *lookfor, char *newstring, FILE *fpout) +{ + boolean found; // loop exit flag + int i; // looper + + found = false; + for (i=0;i '%s'\n",key,newstring); + + if (!key) + if (fpout) fprintf(fpout, + "Assigned '%.12s%s' to'%.12s%s' at key %s\n", + lookfor, (strlen(lookfor) > 12) ? "..." : "", + newstring, (strlen(newstring) > 12) ? "..." :"", + deh_strlookup[i].lookup); + + if (!key) // must have passed an old style string so showBEX + if (fpout) fprintf(fpout, + "*BEX FORMAT:\n%s = %s\n*END BEX\n", + deh_strlookup[i].lookup, + dehReformatStr(newstring)); + + break; + } + } + if (!found) + if (fpout) fprintf(fpout, + "Could not find '%.12s'\n",key ? key: lookfor); + + return found; +} + +//======================================================================== +// haleyjd 9/22/99 +// +// deh_procHelperThing +// +// Allows handy substitution of any thing for helper dogs. DEH patches +// are being made frequently for this purpose and it requires a complete +// rewiring of the DOG thing. I feel this is a waste of effort, and so +// have added this new [HELPER] BEX block + +static void deh_procHelperThing(DEHFILE *fpin, FILE *fpout, char *line) +{ + char key[DEH_MAXKEYLEN]; + char inbuffer[DEH_BUFFERMAX]; + uint_64_t value; // All deh values are ints or longs + + strncpy(inbuffer,line,DEH_BUFFERMAX - 1); + while (!dehfeof(fpin) && *inbuffer && (*inbuffer != ' ')) + { + if (!dehfgets(inbuffer, sizeof(inbuffer), fpin)) break; + lfstrip(inbuffer); + if (!*inbuffer) break; + if (!deh_GetData(inbuffer,key,&value,NULL,fpout)) // returns TRUE if ok + { + if (fpout) fprintf(fpout,"Bad data pair in '%s'\n",inbuffer); + continue; + } + // Otherwise it's ok + if (fpout) + { + fprintf(fpout,"Processing Helper Thing item '%s'\n", key); + fprintf(fpout,"value is %i", (int)value); + } + if (!strncasecmp(key, "type", 4)) + HelperThing = (int)value; + } + return; +} + +// +// deh_procBexSprites +// +// Supports sprite name substitutions without requiring use +// of the DeHackEd Text block +// +static void deh_procBexSprites(DEHFILE *fpin, FILE *fpout, char *line) +{ + char key[DEH_MAXKEYLEN]; + char inbuffer[DEH_BUFFERMAX]; + uint_64_t value; // All deh values are ints or longs + char *strval; // holds the string value of the line + char candidate[5]; + int rover; + + if(fpout) + fprintf(fpout,"Processing sprite name substitution\n"); + + strncpy(inbuffer,line,DEH_BUFFERMAX - 1); + + while(!dehfeof(fpin) && *inbuffer && (*inbuffer != ' ')) + { + if(!dehfgets(inbuffer, sizeof(inbuffer), fpin)) + break; + if(*inbuffer == '#') + continue; // skip comment lines + lfstrip(inbuffer); + if(!*inbuffer) + break; // killough 11/98 + if(!deh_GetData(inbuffer,key,&value,&strval,fpout)) // returns TRUE if ok + { + if(fpout) + fprintf(fpout,"Bad data pair in '%s'\n",inbuffer); + continue; + } + // do it + memset(candidate, 0, sizeof(candidate)); + strncpy(candidate, ptr_lstrip(strval), 4); + if(strlen(candidate) != 4) + { + if(fpout) + fprintf(fpout, "Bad length for sprite name '%s'\n", + candidate); + continue; + } + + rover = 0; + while(deh_spritenames[rover]) + { + if(!strncasecmp(deh_spritenames[rover], key, 4)) + { + if(fpout) + fprintf(fpout, "Substituting '%s' for sprite '%s'\n", + candidate, deh_spritenames[rover]); + + sprnames[rover] = strdup(candidate); + break; + } + rover++; + } + } +} + +// ditto for sound names +static void deh_procBexSounds(DEHFILE *fpin, FILE *fpout, char *line) +{ + char key[DEH_MAXKEYLEN]; + char inbuffer[DEH_BUFFERMAX]; + uint_64_t value; // All deh values are ints or longs + char *strval; // holds the string value of the line + char candidate[7]; + int rover, len; + + if(fpout) + fprintf(fpout,"Processing sound name substitution\n"); + + strncpy(inbuffer,line,DEH_BUFFERMAX - 1); + + while(!dehfeof(fpin) && *inbuffer && (*inbuffer != ' ')) + { + if(!dehfgets(inbuffer, sizeof(inbuffer), fpin)) + break; + if(*inbuffer == '#') + continue; // skip comment lines + lfstrip(inbuffer); + if(!*inbuffer) + break; // killough 11/98 + if(!deh_GetData(inbuffer,key,&value,&strval,fpout)) // returns TRUE if ok + { + if(fpout) + fprintf(fpout,"Bad data pair in '%s'\n",inbuffer); + continue; + } + // do it + memset(candidate, 0, 7); + strncpy(candidate, ptr_lstrip(strval), 6); + len = strlen(candidate); + if(len < 1 || len > 6) + { + if(fpout) + fprintf(fpout, "Bad length for sound name '%s'\n", + candidate); + continue; + } + + rover = 1; + while(deh_soundnames[rover]) + { + if(!strncasecmp(deh_soundnames[rover], key, 6)) + { + if(fpout) + fprintf(fpout, "Substituting '%s' for sound '%s'\n", + candidate, deh_soundnames[rover]); + + S_sfx[rover].name = strdup(candidate); + break; + } + rover++; + } + } +} + +// ditto for music names +static void deh_procBexMusic(DEHFILE *fpin, FILE *fpout, char *line) +{ + char key[DEH_MAXKEYLEN]; + char inbuffer[DEH_BUFFERMAX]; + uint_64_t value; // All deh values are ints or longs + char *strval; // holds the string value of the line + char candidate[7]; + int rover, len; + + if(fpout) + fprintf(fpout,"Processing music name substitution\n"); + + strncpy(inbuffer,line,DEH_BUFFERMAX - 1); + + while(!dehfeof(fpin) && *inbuffer && (*inbuffer != ' ')) + { + if(!dehfgets(inbuffer, sizeof(inbuffer), fpin)) + break; + if(*inbuffer == '#') + continue; // skip comment lines + lfstrip(inbuffer); + if(!*inbuffer) + break; // killough 11/98 + if(!deh_GetData(inbuffer,key,&value,&strval,fpout)) // returns TRUE if ok + { + if(fpout) + fprintf(fpout,"Bad data pair in '%s'\n",inbuffer); + continue; + } + // do it + memset(candidate, 0, 7); + strncpy(candidate, ptr_lstrip(strval), 6); + len = strlen(candidate); + if(len < 1 || len > 6) + { + if(fpout) + fprintf(fpout, "Bad length for music name '%s'\n", + candidate); + continue; + } + + rover = 1; + while(deh_musicnames[rover]) + { + if(!strncasecmp(deh_musicnames[rover], key, 6)) + { + if(fpout) + fprintf(fpout, "Substituting '%s' for music '%s'\n", + candidate, deh_musicnames[rover]); + + S_music[rover].name = strdup(candidate); + break; + } + rover++; + } + } +} + +// ==================================================================== +// General utility function(s) +// ==================================================================== + +// ==================================================================== +// dehReformatStr +// Purpose: Convert a string into a continuous string with embedded +// linefeeds for "\n" sequences in the source string +// Args: string -- the string to convert +// Returns: the converted string (converted in a static buffer) +// +static char *dehReformatStr(char *string) +{ + static char *buff = NULL; // only processing the changed string, + char *s, *t; + + if (!buff) + buff = malloc(DEH_BUFFERMAX); + + s = string; // source + t = buff; // target + // let's play... + + while (*s) + { + if (*s == '\n') + ++s, *t++ = '\\', *t++ = 'n', *t++ = '\\', *t++='\n'; + else + *t++ = *s++; + } + *t = '\0'; + return buff; +} + +// ==================================================================== +// lfstrip +// Purpose: Strips CR/LF off the end of a string +// Args: s -- the string to work on +// Returns: void -- the string is modified in place +// +// killough 10/98: only strip at end of line, not entire string + +static void lfstrip(char *s) // strip the \r and/or \n off of a line +{ + char *p = s+strlen(s); + while (p > s && (*--p=='\r' || *p=='\n')) + *p = 0; +} + +// ==================================================================== +// rstrip +// Purpose: Strips trailing blanks off a string +// Args: s -- the string to work on +// Returns: void -- the string is modified in place +// +static void rstrip(char *s) // strip trailing whitespace +{ + char *p = s+strlen(s); // killough 4/4/98: same here + while (p > s && isspace(*--p)) // break on first non-whitespace + *p='\0'; +} + +// ==================================================================== +// ptr_lstrip +// Purpose: Points past leading whitespace in a string +// Args: s -- the string to work on +// Returns: char * pointing to the first nonblank character in the +// string. The original string is not changed. +// +static char *ptr_lstrip(char *p) // point past leading whitespace +{ + while (isspace(*p)) + p++; + return p; +} + +// e6y: Correction of wrong processing of Bits parameter if its value is equal to zero +// No more desync on HACX demos. +// FIXME!!! (lame) +static boolean StrToInt(char *s, long *l) +{ + return ( + (sscanf(s, " 0x%lx", l) == 1) || + (sscanf(s, " 0X%lx", l) == 1) || + (sscanf(s, " 0%lo", l) == 1) || + (sscanf(s, " %ld", l) == 1) + ); +} + +// ==================================================================== +// deh_GetData +// Purpose: Get a key and data pair from a passed string +// Args: s -- the string to be examined +// k -- a place to put the key +// l -- pointer to a long integer to store the number +// strval -- a pointer to the place in s where the number +// value comes from. Pass NULL to not use this. +// fpout -- stream pointer to output log (DEHOUT.TXT) +// Notes: Expects a key phrase, optional space, equal sign, +// optional space and a value, mostly an int but treated +// as a long just in case. The passed pointer to hold +// the key must be DEH_MAXKEYLEN in size. + +static boolean deh_GetData(char *s, char *k, uint_64_t *l, char **strval, FILE *fpout) +{ + char *t; // current char + long val; // to hold value of pair + char buffer[DEH_MAXKEYLEN]; // to hold key in progress + // e6y: Correction of wrong processing of Bits parameter if its value is equal to zero + // No more desync on HACX demos. + boolean okrc = 1; // assume good unless we have problems + int i; // iterator + + *buffer = '\0'; + val = 0; // defaults in case not otherwise set + for (i=0, t=s; *t && i < DEH_MAXKEYLEN; t++, i++) + { + if (*t == '=') break; + buffer[i] = *t; // copy it + } + buffer[--i] = '\0'; // terminate the key before the '=' + if (!*t) // end of string with no equal sign + { + okrc = FALSE; + } + else + { + if (!*++t) + { + val = 0; // in case "thiskey =" with no value + okrc = FALSE; + } + // we've incremented t + // e6y: Correction of wrong processing of Bits parameter if its value is equal to zero + // No more desync on HACX demos. + // Old code: e6y val = strtol(t,NULL,0); // killough 8/9/98: allow hex or octal input + if (!StrToInt(t,&val)) + { + val = 0; + okrc = 2; + } + } + + // go put the results in the passed pointers + *l = val; // may be a faked zero + + // if spaces between key and equal sign, strip them + strcpy(k,ptr_lstrip(buffer)); // could be a zero-length string + + if (strval != NULL) // pass NULL if you don't want this back + *strval = t; // pointer, has to be somewhere in s, + // even if pointing at the zero byte. + + return(okrc); +} +#else +void D_ProcessDehFile(const char *filename, const char *outfilename, int lumpnum) +{ + lprintf(LO_WARN, "D_ProcessDehFile: deh support has been disabled at build time!\n"); +} +#endif \ No newline at end of file diff --git a/components/doom/prboom/d_deh.h b/components/doom/prboom/d_deh.h new file mode 100644 index 0000000..8ee2072 --- /dev/null +++ b/components/doom/prboom/d_deh.h @@ -0,0 +1,1113 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2006 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Dehacked file support + * New for the TeamTNT "Boom" engine + * + * Author: Ty Halderman, TeamTNT + * + * Description: This file translates the #defined string constants + * to named variables to externalize them for deh/bex changes. + * Should be able to compile with D_FRENCH (for example) and still + * work (untested). + * + */ + +#ifndef __D_DEH__ +#define __D_DEH__ + +void D_ProcessDehFile(const char *filename, const char *outfilename, int lumpnum); + +// +// Ty 03/22/98 - note that we are keeping the english versions and +// comments in this file +// New string names all start with an extra s_ to avoid conflicts, +// but are otherwise identical to the original including uppercase. +// This is partly to keep the changes simple and partly for easier +// identification of the locations in which they're used. +// +// Printed strings for translation +// + +// +// D_Main.C +// +//#define D_DEVSTR "Development mode ON.\n" +extern const char *s_D_DEVSTR; // = D_DEVSTR; +//#define D_CDROM "CD-ROM Version: default.cfg from c:\\doomdata\n" +extern const char *s_D_CDROM; // = D_CDROM; + +// +// M_Menu.C +// +//#define PRESSKEY "press a key." +extern const char *s_PRESSKEY; // = PRESSKEY; +//#define PRESSYN "press y or n." +extern const char *s_PRESSYN; // = PRESSYN; +//#define QUITMSG "are you sure you want to\nquit this great game?" +extern const char *s_QUITMSG; // = QUITMSG; +//#define LOADNET "you can't do load while in a net game!\n\n"PRESSKEY +extern const char *s_LOADNET; // = LOADNET; +//#define QLOADNET "you can't quickload during a netgame!\n\n"PRESSKEY +extern const char *s_QLOADNET; // = QLOADNET; +//#define QSAVESPOT "you haven't picked a quicksave slot yet!\n\n"PRESSKEY +extern const char *s_QSAVESPOT; // = QSAVESPOT; +//#define SAVEDEAD "you can't save if you aren't playing!\n\n"PRESSKEY +extern const char *s_SAVEDEAD; // = SAVEDEAD; +//#define QSPROMPT "quicksave over your game named\n\n'%s'?\n\n"PRESSYN +extern const char *s_QSPROMPT; // = QSPROMPT; +//#define QLPROMPT "do you want to quickload the game named\n\n'%s'?\n\n"PRESSYN +extern const char *s_QLPROMPT; // = QLPROMPT; + +/* +#define NEWGAME \ +"you can't start a new game\n"\ +"while in a network game.\n\n"PRESSKEY +*/ +extern const char *s_NEWGAME; // = NEWGAME; + +// CPhipps - message given when asked if to restart the level +extern const char *s_RESTARTLEVEL; + +/* +#define NIGHTMARE \ +"are you sure? this skill level\n"\ +"isn't even remotely fair.\n\n"PRESSYN +*/ +extern const char *s_NIGHTMARE; // = NIGHTMARE; + +/* +#define SWSTRING \ +"this is the shareware version of doom.\n\n"\ +"you need to order the entire trilogy.\n\n"PRESSKEY +*/ +extern const char *s_SWSTRING; // = SWSTRING; + +//#define MSGOFF "Messages OFF" +extern const char *s_MSGOFF; // = MSGOFF; +//#define MSGON "Messages ON" +extern const char *s_MSGON; // = MSGON; +//#define NETEND "you can't end a netgame!\n\n"PRESSKEY +extern const char *s_NETEND; // = NETEND; +//#define ENDGAME "are you sure you want to end the game?\n\n"PRESSYN +extern const char *s_ENDGAME; // = ENDGAME; + +//#define DOSY "(press y to quit)" +extern const char *s_DOSY; // = DOSY; + +//#define DETAILHI "High detail" +extern const char *s_DETAILHI; // = DETAILHI; +//#define DETAILLO "Low detail" +extern const char *s_DETAILLO; // = DETAILLO; +//#define GAMMALVL0 "Gamma correction OFF" +extern const char *s_GAMMALVL0; // = GAMMALVL0; +//#define GAMMALVL1 "Gamma correction level 1" +extern const char *s_GAMMALVL1; // = GAMMALVL1; +//#define GAMMALVL2 "Gamma correction level 2" +extern const char *s_GAMMALVL2; // = GAMMALVL2; +//#define GAMMALVL3 "Gamma correction level 3" +extern const char *s_GAMMALVL3; // = GAMMALVL3; +//#define GAMMALVL4 "Gamma correction level 4" +extern const char *s_GAMMALVL4; // = GAMMALVL4; +//#define EMPTYSTRING "empty slot" +extern const char *s_EMPTYSTRING; // = EMPTYSTRING; + +// +// P_inter.C +// +//#define GOTARMOR "Picked up the armor." +extern const char *s_GOTARMOR; // = GOTARMOR; +//#define GOTMEGA "Picked up the MegaArmor!" +extern const char *s_GOTMEGA; // = GOTMEGA; +//#define GOTHTHBONUS "Picked up a health bonus." +extern const char *s_GOTHTHBONUS; // = GOTHTHBONUS; +//#define GOTARMBONUS "Picked up an armor bonus." +extern const char *s_GOTARMBONUS; // = GOTARMBONUS; +//#define GOTSTIM "Picked up a stimpack." +extern const char *s_GOTSTIM; // = GOTSTIM; +//#define GOTMEDINEED "Picked up a medikit that you REALLY need!" +extern const char *s_GOTMEDINEED; // = GOTMEDINEED; +//#define GOTMEDIKIT "Picked up a medikit." +extern const char *s_GOTMEDIKIT; // = GOTMEDIKIT; +//#define GOTSUPER "Supercharge!" +extern const char *s_GOTSUPER; // = GOTSUPER; + +//#define GOTBLUECARD "Picked up a blue keycard." +extern const char *s_GOTBLUECARD; // = GOTBLUECARD; +//#define GOTYELWCARD "Picked up a yellow keycard." +extern const char *s_GOTYELWCARD; // = GOTYELWCARD; +//#define GOTREDCARD "Picked up a red keycard." +extern const char *s_GOTREDCARD; // = GOTREDCARD; +//#define GOTBLUESKUL "Picked up a blue skull key." +extern const char *s_GOTBLUESKUL; // = GOTBLUESKUL; +//#define GOTYELWSKUL "Picked up a yellow skull key." +extern const char *s_GOTYELWSKUL; // = GOTYELWSKUL; +//#define GOTREDSKULL "Picked up a red skull key." +extern const char *s_GOTREDSKULL; // = GOTREDSKULL; + +//#define GOTINVUL "Invulnerability!" +extern const char *s_GOTINVUL; // = GOTINVUL; +//#define GOTBERSERK "Berserk!" +extern const char *s_GOTBERSERK; // = GOTBERSERK; +//#define GOTINVIS "Partial Invisibility" +extern const char *s_GOTINVIS; // = GOTINVIS; +//#define GOTSUIT "Radiation Shielding Suit" +extern const char *s_GOTSUIT; // = GOTSUIT; +//#define GOTMAP "Computer Area Map" +extern const char *s_GOTMAP; // = GOTMAP; +//#define GOTVISOR "Light Amplification Visor" +extern const char *s_GOTVISOR; // = GOTVISOR; +//#define GOTMSPHERE "MegaSphere!" +extern const char *s_GOTMSPHERE; // = GOTMSPHERE; + +//#define GOTCLIP "Picked up a clip." +extern const char *s_GOTCLIP; // = GOTCLIP; +//#define GOTCLIPBOX "Picked up a box of bullets." +extern const char *s_GOTCLIPBOX; // = GOTCLIPBOX; +//#define GOTROCKET "Picked up a rocket." +extern const char *s_GOTROCKET; // = GOTROCKET; +//#define GOTROCKBOX "Picked up a box of rockets." +extern const char *s_GOTROCKBOX; // = GOTROCKBOX; +//#define GOTCELL "Picked up an energy cell." +extern const char *s_GOTCELL; // = GOTCELL; +//#define GOTCELLBOX "Picked up an energy cell pack." +extern const char *s_GOTCELLBOX; // = GOTCELLBOX; +//#define GOTSHELLS "Picked up 4 shotgun shells." +extern const char *s_GOTSHELLS; // = GOTSHELLS; +//#define GOTSHELLBOX "Picked up a box of shotgun shells." +extern const char *s_GOTSHELLBOX; // = GOTSHELLBOX; +//#define GOTBACKPACK "Picked up a backpack full of ammo!" +extern const char *s_GOTBACKPACK; // = GOTBACKPACK; + +//#define GOTBFG9000 "You got the BFG9000! Oh, yes." +extern const char *s_GOTBFG9000; // = GOTBFG9000; +//#define GOTCHAINGUN "You got the chaingun!" +extern const char *s_GOTCHAINGUN; // = GOTCHAINGUN; +//#define GOTCHAINSAW "A chainsaw! Find some meat!" +extern const char *s_GOTCHAINSAW; // = GOTCHAINSAW; +//#define GOTLAUNCHER "You got the rocket launcher!" +extern const char *s_GOTLAUNCHER; // = GOTLAUNCHER; +//#define GOTPLASMA "You got the plasma gun!" +extern const char *s_GOTPLASMA; // = GOTPLASMA; +//#define GOTSHOTGUN "You got the shotgun!" +extern const char *s_GOTSHOTGUN; // = GOTSHOTGUN; +//#define GOTSHOTGUN2 "You got the super shotgun!" +extern const char *s_GOTSHOTGUN2; // = GOTSHOTGUN2; + +// +// P_Doors.C +// +//#define PD_BLUEO "You need a blue key to activate this object" +extern const char *s_PD_BLUEO; // = PD_BLUEO; +//#define PD_REDO "You need a red key to activate this object" +extern const char *s_PD_REDO; // = PD_REDO; +//#define PD_YELLOWO "You need a yellow key to activate this object" +extern const char *s_PD_YELLOWO; // = PD_YELLOWO; +//#define PD_BLUEK "You need a blue key to open this door" +extern const char *s_PD_BLUEK; // = PD_BLUEK; +//#define PD_REDK "You need a red key to open this door" +extern const char *s_PD_REDK; // = PD_REDK; +//#define PD_YELLOWK "You need a yellow key to open this door" +extern const char *s_PD_YELLOWK; // = PD_YELLOWK; +//jff 02/05/98 Create messages specific to card and skull keys +//#define PD_BLUEC "You need a blue card to open this door" +extern const char *s_PD_BLUEC; // = PD_BLUEC; +//#define PD_REDC "You need a red card to open this door" +extern const char *s_PD_REDC; // = PD_REDC; +//#define PD_YELLOWC "You need a yellow card to open this door" +extern const char *s_PD_YELLOWC; // = PD_YELLOWC; +//#define PD_BLUES "You need a blue skull to open this door" +extern const char *s_PD_BLUES; // = PD_BLUES; +//#define PD_REDS "You need a red skull to open this door" +extern const char *s_PD_REDS; // = PD_REDS; +//#define PD_YELLOWS "You need a yellow skull to open this door" +extern const char *s_PD_YELLOWS; // = PD_YELLOWS; +//#define PD_ANY "Any key will open this door" +extern const char *s_PD_ANY; // = PD_ANY; +//#define PD_ALL3 "You need all three keys to open this door" +extern const char *s_PD_ALL3; // = PD_ALL3; +//#define PD_ALL6 "You need all six keys to open this door" +extern const char *s_PD_ALL6; // = PD_ALL6; + +// +// G_game.C +// +//#define GGSAVED "game saved." +extern const char *s_GGSAVED; // = GGSAVED; + +// +// HU_stuff.C +// +//#define HUSTR_MSGU "[Message unsent]" +extern const char *s_HUSTR_MSGU; // = HUSTR_MSGU; + +//#define HUSTR_E1M1 "E1M1: Hangar" +extern const char *s_HUSTR_E1M1; // = HUSTR_E1M1; +//#define HUSTR_E1M2 "E1M2: Nuclear Plant" +extern const char *s_HUSTR_E1M2; // = HUSTR_E1M2; +//#define HUSTR_E1M3 "E1M3: Toxin Refinery" +extern const char *s_HUSTR_E1M3; // = HUSTR_E1M3; +//#define HUSTR_E1M4 "E1M4: Command Control" +extern const char *s_HUSTR_E1M4; // = HUSTR_E1M4; +//#define HUSTR_E1M5 "E1M5: Phobos Lab" +extern const char *s_HUSTR_E1M5; // = HUSTR_E1M5; +//#define HUSTR_E1M6 "E1M6: Central Processing" +extern const char *s_HUSTR_E1M6; // = HUSTR_E1M6; +//#define HUSTR_E1M7 "E1M7: Computer Station" +extern const char *s_HUSTR_E1M7; // = HUSTR_E1M7; +//#define HUSTR_E1M8 "E1M8: Phobos Anomaly" +extern const char *s_HUSTR_E1M8; // = HUSTR_E1M8; +//#define HUSTR_E1M9 "E1M9: Military Base" +extern const char *s_HUSTR_E1M9; // = HUSTR_E1M9; + +//#define HUSTR_E2M1 "E2M1: Deimos Anomaly" +extern const char *s_HUSTR_E2M1; // = HUSTR_E2M1; +//#define HUSTR_E2M2 "E2M2: Containment Area" +extern const char *s_HUSTR_E2M2; // = HUSTR_E2M2; +//#define HUSTR_E2M3 "E2M3: Refinery" +extern const char *s_HUSTR_E2M3; // = HUSTR_E2M3; +//#define HUSTR_E2M4 "E2M4: Deimos Lab" +extern const char *s_HUSTR_E2M4; // = HUSTR_E2M4; +//#define HUSTR_E2M5 "E2M5: Command Center" +extern const char *s_HUSTR_E2M5; // = HUSTR_E2M5; +//#define HUSTR_E2M6 "E2M6: Halls of the Damned" +extern const char *s_HUSTR_E2M6; // = HUSTR_E2M6; +//#define HUSTR_E2M7 "E2M7: Spawning Vats" +extern const char *s_HUSTR_E2M7; // = HUSTR_E2M7; +//#define HUSTR_E2M8 "E2M8: Tower of Babel" +extern const char *s_HUSTR_E2M8; // = HUSTR_E2M8; +//#define HUSTR_E2M9 "E2M9: Fortress of Mystery" +extern const char *s_HUSTR_E2M9; // = HUSTR_E2M9; + +//#define HUSTR_E3M1 "E3M1: Hell Keep" +extern const char *s_HUSTR_E3M1; // = HUSTR_E3M1; +//#define HUSTR_E3M2 "E3M2: Slough of Despair" +extern const char *s_HUSTR_E3M2; // = HUSTR_E3M2; +//#define HUSTR_E3M3 "E3M3: Pandemonium" +extern const char *s_HUSTR_E3M3; // = HUSTR_E3M3; +//#define HUSTR_E3M4 "E3M4: House of Pain" +extern const char *s_HUSTR_E3M4; // = HUSTR_E3M4; +//#define HUSTR_E3M5 "E3M5: Unholy Cathedral" +extern const char *s_HUSTR_E3M5; // = HUSTR_E3M5; +//#define HUSTR_E3M6 "E3M6: Mt. Erebus" +extern const char *s_HUSTR_E3M6; // = HUSTR_E3M6; +//#define HUSTR_E3M7 "E3M7: Limbo" +extern const char *s_HUSTR_E3M7; // = HUSTR_E3M7; +//#define HUSTR_E3M8 "E3M8: Dis" +extern const char *s_HUSTR_E3M8; // = HUSTR_E3M8; +//#define HUSTR_E3M9 "E3M9: Warrens" +extern const char *s_HUSTR_E3M9; // = HUSTR_E3M9; + +//#define HUSTR_E4M1 "E4M1: Hell Beneath" +extern const char *s_HUSTR_E4M1; // = HUSTR_E4M1; +//#define HUSTR_E4M2 "E4M2: Perfect Hatred" +extern const char *s_HUSTR_E4M2; // = HUSTR_E4M2; +//#define HUSTR_E4M3 "E4M3: Sever The Wicked" +extern const char *s_HUSTR_E4M3; // = HUSTR_E4M3; +//#define HUSTR_E4M4 "E4M4: Unruly Evil" +extern const char *s_HUSTR_E4M4; // = HUSTR_E4M4; +//#define HUSTR_E4M5 "E4M5: They Will Repent" +extern const char *s_HUSTR_E4M5; // = HUSTR_E4M5; +//#define HUSTR_E4M6 "E4M6: Against Thee Wickedly" +extern const char *s_HUSTR_E4M6; // = HUSTR_E4M6; +//#define HUSTR_E4M7 "E4M7: And Hell Followed" +extern const char *s_HUSTR_E4M7; // = HUSTR_E4M7; +//#define HUSTR_E4M8 "E4M8: Unto The Cruel" +extern const char *s_HUSTR_E4M8; // = HUSTR_E4M8; +//#define HUSTR_E4M9 "E4M9: Fear" +extern const char *s_HUSTR_E4M9; // = HUSTR_E4M9; + +//#define HUSTR_1 "level 1: entryway" +extern const char *s_HUSTR_1; // = HUSTR_1; +//#define HUSTR_2 "level 2: underhalls" +extern const char *s_HUSTR_2; // = HUSTR_2; +//#define HUSTR_3 "level 3: the gantlet" +extern const char *s_HUSTR_3; // = HUSTR_3; +//#define HUSTR_4 "level 4: the focus" +extern const char *s_HUSTR_4; // = HUSTR_4; +//#define HUSTR_5 "level 5: the waste tunnels" +extern const char *s_HUSTR_5; // = HUSTR_5; +//#define HUSTR_6 "level 6: the crusher" +extern const char *s_HUSTR_6; // = HUSTR_6; +//#define HUSTR_7 "level 7: dead simple" +extern const char *s_HUSTR_7; // = HUSTR_7; +//#define HUSTR_8 "level 8: tricks and traps" +extern const char *s_HUSTR_8; // = HUSTR_8; +//#define HUSTR_9 "level 9: the pit" +extern const char *s_HUSTR_9; // = HUSTR_9; +//#define HUSTR_10 "level 10: refueling base" +extern const char *s_HUSTR_10; // = HUSTR_10; +//#define HUSTR_11 "level 11: 'o' of destruction!" +extern const char *s_HUSTR_11; // = HUSTR_11; + +//#define HUSTR_12 "level 12: the factory" +extern const char *s_HUSTR_12; // = HUSTR_12; +//#define HUSTR_13 "level 13: downtown" +extern const char *s_HUSTR_13; // = HUSTR_13; +//#define HUSTR_14 "level 14: the inmost dens" +extern const char *s_HUSTR_14; // = HUSTR_14; +//#define HUSTR_15 "level 15: industrial zone" +extern const char *s_HUSTR_15; // = HUSTR_15; +//#define HUSTR_16 "level 16: suburbs" +extern const char *s_HUSTR_16; // = HUSTR_16; +//#define HUSTR_17 "level 17: tenements" +extern const char *s_HUSTR_17; // = HUSTR_17; +//#define HUSTR_18 "level 18: the courtyard" +extern const char *s_HUSTR_18; // = HUSTR_18; +//#define HUSTR_19 "level 19: the citadel" +extern const char *s_HUSTR_19; // = HUSTR_19; +//#define HUSTR_20 "level 20: gotcha!" +extern const char *s_HUSTR_20; // = HUSTR_20; + +//#define HUSTR_21 "level 21: nirvana" +extern const char *s_HUSTR_21; // = HUSTR_21; +//#define HUSTR_22 "level 22: the catacombs" +extern const char *s_HUSTR_22; // = HUSTR_22; +//#define HUSTR_23 "level 23: barrels o' fun" +extern const char *s_HUSTR_23; // = HUSTR_23; +//#define HUSTR_24 "level 24: the chasm" +extern const char *s_HUSTR_24; // = HUSTR_24; +//#define HUSTR_25 "level 25: bloodfalls" +extern const char *s_HUSTR_25; // = HUSTR_25; +//#define HUSTR_26 "level 26: the abandoned mines" +extern const char *s_HUSTR_26; // = HUSTR_26; +//#define HUSTR_27 "level 27: monster condo" +extern const char *s_HUSTR_27; // = HUSTR_27; +//#define HUSTR_28 "level 28: the spirit world" +extern const char *s_HUSTR_28; // = HUSTR_28; +//#define HUSTR_29 "level 29: the living end" +extern const char *s_HUSTR_29; // = HUSTR_29; +//#define HUSTR_30 "level 30: icon of sin" +extern const char *s_HUSTR_30; // = HUSTR_30; + +//#define HUSTR_31 "level 31: wolfenstein" +extern const char *s_HUSTR_31; // = HUSTR_31; +//#define HUSTR_32 "level 32: grosse" +extern const char *s_HUSTR_32; // = HUSTR_32; + +//#define PHUSTR_1 "level 1: congo" +extern const char *s_PHUSTR_1; // = PHUSTR_1; +//#define PHUSTR_2 "level 2: well of souls" +extern const char *s_PHUSTR_2; // = PHUSTR_2; +//#define PHUSTR_3 "level 3: aztec" +extern const char *s_PHUSTR_3; // = PHUSTR_3; +//#define PHUSTR_4 "level 4: caged" +extern const char *s_PHUSTR_4; // = PHUSTR_4; +//#define PHUSTR_5 "level 5: ghost town" +extern const char *s_PHUSTR_5; // = PHUSTR_5; +//#define PHUSTR_6 "level 6: baron's lair" +extern const char *s_PHUSTR_6; // = PHUSTR_6; +//#define PHUSTR_7 "level 7: caughtyard" +extern const char *s_PHUSTR_7; // = PHUSTR_7; +//#define PHUSTR_8 "level 8: realm" +extern const char *s_PHUSTR_8; // = PHUSTR_8; +//#define PHUSTR_9 "level 9: abattoire" +extern const char *s_PHUSTR_9; // = PHUSTR_9; +//#define PHUSTR_10 "level 10: onslaught" +extern const char *s_PHUSTR_10; // = PHUSTR_10; +//#define PHUSTR_11 "level 11: hunted" +extern const char *s_PHUSTR_11; // = PHUSTR_11; + +//#define PHUSTR_12 "level 12: speed" +extern const char *s_PHUSTR_12; // = PHUSTR_12; +//#define PHUSTR_13 "level 13: the crypt" +extern const char *s_PHUSTR_13; // = PHUSTR_13; +//#define PHUSTR_14 "level 14: genesis" +extern const char *s_PHUSTR_14; // = PHUSTR_14; +//#define PHUSTR_15 "level 15: the twilight" +extern const char *s_PHUSTR_15; // = PHUSTR_15; +//#define PHUSTR_16 "level 16: the omen" +extern const char *s_PHUSTR_16; // = PHUSTR_16; +//#define PHUSTR_17 "level 17: compound" +extern const char *s_PHUSTR_17; // = PHUSTR_17; +//#define PHUSTR_18 "level 18: neurosphere" +extern const char *s_PHUSTR_18; // = PHUSTR_18; +//#define PHUSTR_19 "level 19: nme" +extern const char *s_PHUSTR_19; // = PHUSTR_19; +//#define PHUSTR_20 "level 20: the death domain" +extern const char *s_PHUSTR_20; // = PHUSTR_20; + +//#define PHUSTR_21 "level 21: slayer" +extern const char *s_PHUSTR_21; // = PHUSTR_21; +//#define PHUSTR_22 "level 22: impossible mission" +extern const char *s_PHUSTR_22; // = PHUSTR_22; +//#define PHUSTR_23 "level 23: tombstone" +extern const char *s_PHUSTR_23; // = PHUSTR_23; +//#define PHUSTR_24 "level 24: the final frontier" +extern const char *s_PHUSTR_24; // = PHUSTR_24; +//#define PHUSTR_25 "level 25: the temple of darkness" +extern const char *s_PHUSTR_25; // = PHUSTR_25; +//#define PHUSTR_26 "level 26: bunker" +extern const char *s_PHUSTR_26; // = PHUSTR_26; +//#define PHUSTR_27 "level 27: anti-christ" +extern const char *s_PHUSTR_27; // = PHUSTR_27; +//#define PHUSTR_28 "level 28: the sewers" +extern const char *s_PHUSTR_28; // = PHUSTR_28; +//#define PHUSTR_29 "level 29: odyssey of noises" +extern const char *s_PHUSTR_29; // = PHUSTR_29; +//#define PHUSTR_30 "level 30: the gateway of hell" +extern const char *s_PHUSTR_30; // = PHUSTR_30; + +//#define PHUSTR_31 "level 31: cyberden" +extern const char *s_PHUSTR_31; // = PHUSTR_31; +//#define PHUSTR_32 "level 32: go 2 it" +extern const char *s_PHUSTR_32; // = PHUSTR_32; + +//#define THUSTR_1 "level 1: system control" +extern const char *s_THUSTR_1; // = THUSTR_1; +//#define THUSTR_2 "level 2: human bbq" +extern const char *s_THUSTR_2; // = THUSTR_2; +//#define THUSTR_3 "level 3: power control" +extern const char *s_THUSTR_3; // = THUSTR_3; +//#define THUSTR_4 "level 4: wormhole" +extern const char *s_THUSTR_4; // = THUSTR_4; +//#define THUSTR_5 "level 5: hanger" +extern const char *s_THUSTR_5; // = THUSTR_5; +//#define THUSTR_6 "level 6: open season" +extern const char *s_THUSTR_6; // = THUSTR_6; +//#define THUSTR_7 "level 7: prison" +extern const char *s_THUSTR_7; // = THUSTR_7; +//#define THUSTR_8 "level 8: metal" +extern const char *s_THUSTR_8; // = THUSTR_8; +//#define THUSTR_9 "level 9: stronghold" +extern const char *s_THUSTR_9; // = THUSTR_9; +//#define THUSTR_10 "level 10: redemption" +extern const char *s_THUSTR_10; // = THUSTR_10; +//#define THUSTR_11 "level 11: storage facility" +extern const char *s_THUSTR_11; // = THUSTR_11; + +//#define THUSTR_12 "level 12: crater" +extern const char *s_THUSTR_12; // = THUSTR_12; +//#define THUSTR_13 "level 13: nukage processing" +extern const char *s_THUSTR_13; // = THUSTR_13; +//#define THUSTR_14 "level 14: steel works" +extern const char *s_THUSTR_14; // = THUSTR_14; +//#define THUSTR_15 "level 15: dead zone" +extern const char *s_THUSTR_15; // = THUSTR_15; +//#define THUSTR_16 "level 16: deepest reaches" +extern const char *s_THUSTR_16; // = THUSTR_16; +//#define THUSTR_17 "level 17: processing area" +extern const char *s_THUSTR_17; // = THUSTR_17; +//#define THUSTR_18 "level 18: mill" +extern const char *s_THUSTR_18; // = THUSTR_18; +//#define THUSTR_19 "level 19: shipping/respawning" +extern const char *s_THUSTR_19; // = THUSTR_19; +//#define THUSTR_20 "level 20: central processing" +extern const char *s_THUSTR_20; // = THUSTR_20; + +//#define THUSTR_21 "level 21: administration center" +extern const char *s_THUSTR_21; // = THUSTR_21; +//#define THUSTR_22 "level 22: habitat" +extern const char *s_THUSTR_22; // = THUSTR_22; +//#define THUSTR_23 "level 23: lunar mining project" +extern const char *s_THUSTR_23; // = THUSTR_23; +//#define THUSTR_24 "level 24: quarry" +extern const char *s_THUSTR_24; // = THUSTR_24; +//#define THUSTR_25 "level 25: baron's den" +extern const char *s_THUSTR_25; // = THUSTR_25; +//#define THUSTR_26 "level 26: ballistyx" +extern const char *s_THUSTR_26; // = THUSTR_26; +//#define THUSTR_27 "level 27: mount pain" +extern const char *s_THUSTR_27; // = THUSTR_27; +//#define THUSTR_28 "level 28: heck" +extern const char *s_THUSTR_28; // = THUSTR_28; +//#define THUSTR_29 "level 29: river styx" +extern const char *s_THUSTR_29; // = THUSTR_29; +//#define THUSTR_30 "level 30: last call" +extern const char *s_THUSTR_30; // = THUSTR_30; + +//#define THUSTR_31 "level 31: pharaoh" +extern const char *s_THUSTR_31; // = THUSTR_31; +//#define THUSTR_32 "level 32: caribbean" +extern const char *s_THUSTR_32; // = THUSTR_32; + +//#define HUSTR_CHATMACRO1 "I'm ready to kick butt!" +extern const char *s_HUSTR_CHATMACRO1; // = HUSTR_CHATMACRO1; +//#define HUSTR_CHATMACRO2 "I'm OK." +extern const char *s_HUSTR_CHATMACRO2; // = HUSTR_CHATMACRO2; +//#define HUSTR_CHATMACRO3 "I'm not looking too good!" +extern const char *s_HUSTR_CHATMACRO3; // = HUSTR_CHATMACRO3; +//#define HUSTR_CHATMACRO4 "Help!" +extern const char *s_HUSTR_CHATMACRO4; // = HUSTR_CHATMACRO4; +//#define HUSTR_CHATMACRO5 "You suck!" +extern const char *s_HUSTR_CHATMACRO5; // = HUSTR_CHATMACRO5; +//#define HUSTR_CHATMACRO6 "Next time, scumbag..." +extern const char *s_HUSTR_CHATMACRO6; // = HUSTR_CHATMACRO6; +//#define HUSTR_CHATMACRO7 "Come here!" +extern const char *s_HUSTR_CHATMACRO7; // = HUSTR_CHATMACRO7; +//#define HUSTR_CHATMACRO8 "I'll take care of it." +extern const char *s_HUSTR_CHATMACRO8; // = HUSTR_CHATMACRO8; +//#define HUSTR_CHATMACRO9 "Yes" +extern const char *s_HUSTR_CHATMACRO9; // = HUSTR_CHATMACRO9; +//#define HUSTR_CHATMACRO0 "No" +extern const char *s_HUSTR_CHATMACRO0; // = HUSTR_CHATMACRO0; + +//#define HUSTR_TALKTOSELF1 "You mumble to yourself" +extern const char *s_HUSTR_TALKTOSELF1; // = HUSTR_TALKTOSELF1; +//#define HUSTR_TALKTOSELF2 "Who's there?" +extern const char *s_HUSTR_TALKTOSELF2; // = HUSTR_TALKTOSELF2; +//#define HUSTR_TALKTOSELF3 "You scare yourself" +extern const char *s_HUSTR_TALKTOSELF3; // = HUSTR_TALKTOSELF3; +//#define HUSTR_TALKTOSELF4 "You start to rave" +extern const char *s_HUSTR_TALKTOSELF4; // = HUSTR_TALKTOSELF4; +//#define HUSTR_TALKTOSELF5 "You've lost it..." +extern const char *s_HUSTR_TALKTOSELF5; // = HUSTR_TALKTOSELF5; + +//#define HUSTR_MESSAGESENT "[Message Sent]" +extern const char *s_HUSTR_MESSAGESENT; // = HUSTR_MESSAGESENT; + +// The following should NOT be changed unless it seems +// just AWFULLY necessary + +//#define HUSTR_PLRGREEN "Green: " +extern const char *s_HUSTR_PLRGREEN; // = HUSTR_PLRGREEN; +//#define HUSTR_PLRINDIGO "Indigo: " +extern const char *s_HUSTR_PLRINDIGO; // = HUSTR_PLRINDIGO; +//#define HUSTR_PLRBROWN "Brown: " +extern const char *s_HUSTR_PLRBROWN; // = HUSTR_PLRBROWN; +//#define HUSTR_PLRRED "Red: " +extern const char *s_HUSTR_PLRRED; // = HUSTR_PLRRED; + +// +// AM_map.C +// + +//#define AMSTR_FOLLOWON "Follow Mode ON" +extern const char* s_AMSTR_FOLLOWON; // = AMSTR_FOLLOWON; +//#define AMSTR_FOLLOWOFF "Follow Mode OFF" +extern const char* s_AMSTR_FOLLOWOFF; // = AMSTR_FOLLOWOFF; + +//#define AMSTR_GRIDON "Grid ON" +extern const char* s_AMSTR_GRIDON; // = AMSTR_GRIDON; +//#define AMSTR_GRIDOFF "Grid OFF" +extern const char* s_AMSTR_GRIDOFF; // = AMSTR_GRIDOFF; + +//#define AMSTR_MARKEDSPOT "Marked Spot" +extern const char* s_AMSTR_MARKEDSPOT; // = AMSTR_MARKEDSPOT; +//#define AMSTR_MARKSCLEARED "All Marks Cleared" +extern const char* s_AMSTR_MARKSCLEARED; // = AMSTR_MARKSCLEARED; + +// CPhipps - automap rotate & overlay +extern const char* s_AMSTR_ROTATEON; +extern const char* s_AMSTR_ROTATEOFF; +extern const char* s_AMSTR_OVERLAYON; +extern const char* s_AMSTR_OVERLAYOFF; + +// +// ST_stuff.C +// + +//#define STSTR_MUS "Music Change" +extern const char* s_STSTR_MUS; // = STSTR_MUS; +//#define STSTR_NOMUS "IMPOSSIBLE SELECTION" +extern const char* s_STSTR_NOMUS; // = STSTR_NOMUS; +//#define STSTR_DQDON "Degreelessness Mode On" +extern const char* s_STSTR_DQDON; // = STSTR_DQDON; +//#define STSTR_DQDOFF "Degreelessness Mode Off" +extern const char* s_STSTR_DQDOFF; // = STSTR_DQDOFF; + +//#define STSTR_KFAADDED "Very Happy Ammo Added" +extern const char* s_STSTR_KFAADDED; // = STSTR_KFAADDED; +//#define STSTR_FAADDED "Ammo (no keys) Added" +extern const char* s_STSTR_FAADDED; // = STSTR_FAADDED; + +//#define STSTR_NCON "No Clipping Mode ON" +extern const char* s_STSTR_NCON; // = STSTR_NCON; +//#define STSTR_NCOFF "No Clipping Mode OFF" +extern const char* s_STSTR_NCOFF; // = STSTR_NCOFF; + +//#define STSTR_BEHOLD "inVuln, Str, Inviso, Rad, Allmap, or Lite-amp" +extern const char* s_STSTR_BEHOLD; // = STSTR_BEHOLD; +//#define STSTR_BEHOLDX "Power-up Toggled" +extern const char* s_STSTR_BEHOLDX; // = STSTR_BEHOLDX; + +//#define STSTR_CHOPPERS "... doesn't suck - GM" +extern const char* s_STSTR_CHOPPERS; // = STSTR_CHOPPERS; +//#define STSTR_CLEV "Changing Level..." +extern const char* s_STSTR_CLEV; // = STSTR_CLEV; + +// +// F_Finale.C +// +/* +#define E1TEXT \ +"Once you beat the big badasses and\n"\ +"clean out the moon base you're supposed\n"\ +"to win, aren't you? Aren't you? Where's\n"\ +"your fat reward and ticket home? What\n"\ +"the hell is this? It's not supposed to\n"\ +"end this way!\n"\ +"\n" \ +"It stinks like rotten meat, but looks\n"\ +"like the lost Deimos base. Looks like\n"\ +"you're stuck on The Shores of Hell.\n"\ +"The only way out is through.\n"\ +"\n"\ +"To continue the DOOM experience, play\n"\ +"The Shores of Hell and its amazing\n"\ +"sequel, Inferno!\n" +*/ +extern const char* s_E1TEXT; // = E1TEXT; + + +/* +#define E2TEXT \ +"You've done it! The hideous cyber-\n"\ +"demon lord that ruled the lost Deimos\n"\ +"moon base has been slain and you\n"\ +"are triumphant! But ... where are\n"\ +"you? You clamber to the edge of the\n"\ +"moon and look down to see the awful\n"\ +"truth.\n" \ +"\n"\ +"Deimos floats above Hell itself!\n"\ +"You've never heard of anyone escaping\n"\ +"from Hell, but you'll make the bastards\n"\ +"sorry they ever heard of you! Quickly,\n"\ +"you rappel down to the surface of\n"\ +"Hell.\n"\ +"\n" \ +"Now, it's on to the final chapter of\n"\ +"DOOM! -- Inferno." +*/ +extern const char* s_E2TEXT; // = E2TEXT; + + +/* +#define E3TEXT \ +"The loathsome spiderdemon that\n"\ +"masterminded the invasion of the moon\n"\ +"bases and caused so much death has had\n"\ +"its ass kicked for all time.\n"\ +"\n"\ +"A hidden doorway opens and you enter.\n"\ +"You've proven too tough for Hell to\n"\ +"contain, and now Hell at last plays\n"\ +"fair -- for you emerge from the door\n"\ +"to see the green fields of Earth!\n"\ +"Home at last.\n" \ +"\n"\ +"You wonder what's been happening on\n"\ +"Earth while you were battling evil\n"\ +"unleashed. It's good that no Hell-\n"\ +"spawn could have come through that\n"\ +"door with you ..." +*/ +extern const char* s_E3TEXT; // = E3TEXT; + + +/* +#define E4TEXT \ +"the spider mastermind must have sent forth\n"\ +"its legions of hellspawn before your\n"\ +"final confrontation with that terrible\n"\ +"beast from hell. but you stepped forward\n"\ +"and brought forth eternal damnation and\n"\ +"suffering upon the horde as a true hero\n"\ +"would in the face of something so evil.\n"\ +"\n"\ +"besides, someone was gonna pay for what\n"\ +"happened to daisy, your pet rabbit.\n"\ +"\n"\ +"but now, you see spread before you more\n"\ +"potential pain and gibbitude as a nation\n"\ +"of demons run amok among our cities.\n"\ +"\n"\ +"next stop, hell on earth!" +*/ +extern const char* s_E4TEXT; // = E4TEXT; + + +// after level 6, put this: + +/* +#define C1TEXT \ +"YOU HAVE ENTERED DEEPLY INTO THE INFESTED\n" \ +"STARPORT. BUT SOMETHING IS WRONG. THE\n" \ +"MONSTERS HAVE BROUGHT THEIR OWN REALITY\n" \ +"WITH THEM, AND THE STARPORT'S TECHNOLOGY\n" \ +"IS BEING SUBVERTED BY THEIR PRESENCE.\n" \ +"\n"\ +"AHEAD, YOU SEE AN OUTPOST OF HELL, A\n" \ +"FORTIFIED ZONE. IF YOU CAN GET PAST IT,\n" \ +"YOU CAN PENETRATE INTO THE HAUNTED HEART\n" \ +"OF THE STARBASE AND FIND THE CONTROLLING\n" \ +"SWITCH WHICH HOLDS EARTH'S POPULATION\n" \ +"HOSTAGE." +*/ +extern const char* s_C1TEXT; // = C1TEXT; + +// After level 11, put this: + +/* +#define C2TEXT \ +"YOU HAVE WON! YOUR VICTORY HAS ENABLED\n" \ +"HUMANKIND TO EVACUATE EARTH AND ESCAPE\n"\ +"THE NIGHTMARE. NOW YOU ARE THE ONLY\n"\ +"HUMAN LEFT ON THE FACE OF THE PLANET.\n"\ +"CANNIBAL MUTATIONS, CARNIVOROUS ALIENS,\n"\ +"AND EVIL SPIRITS ARE YOUR ONLY NEIGHBORS.\n"\ +"YOU SIT BACK AND WAIT FOR DEATH, CONTENT\n"\ +"THAT YOU HAVE SAVED YOUR SPECIES.\n"\ +"\n"\ +"BUT THEN, EARTH CONTROL BEAMS DOWN A\n"\ +"MESSAGE FROM SPACE: \"SENSORS HAVE LOCATED\n"\ +"THE SOURCE OF THE ALIEN INVASION. IF YOU\n"\ +"GO THERE, YOU MAY BE ABLE TO BLOCK THEIR\n"\ +"ENTRY. THE ALIEN BASE IS IN THE HEART OF\n"\ +"YOUR OWN HOME CITY, NOT FAR FROM THE\n"\ +"STARPORT.\" SLOWLY AND PAINFULLY YOU GET\n"\ +"UP AND RETURN TO THE FRAY." +*/ +extern const char* s_C2TEXT; // = C2TEXT; + + +// After level 20, put this: + +/* +#define C3TEXT \ +"YOU ARE AT THE CORRUPT HEART OF THE CITY,\n"\ +"SURROUNDED BY THE CORPSES OF YOUR ENEMIES.\n"\ +"YOU SEE NO WAY TO DESTROY THE CREATURES'\n"\ +"ENTRYWAY ON THIS SIDE, SO YOU CLENCH YOUR\n"\ +"TEETH AND PLUNGE THROUGH IT.\n"\ +"\n"\ +"THERE MUST BE A WAY TO CLOSE IT ON THE\n"\ +"OTHER SIDE. WHAT DO YOU CARE IF YOU'VE\n"\ +"GOT TO GO THROUGH HELL TO GET TO IT?" +*/ +extern const char* s_C3TEXT; // = C3TEXT; + + +// After level 29, put this: + +/* +#define C4TEXT \ +"THE HORRENDOUS VISAGE OF THE BIGGEST\n"\ +"DEMON YOU'VE EVER SEEN CRUMBLES BEFORE\n"\ +"YOU, AFTER YOU PUMP YOUR ROCKETS INTO\n"\ +"HIS EXPOSED BRAIN. THE MONSTER SHRIVELS\n"\ +"UP AND DIES, ITS THRASHING LIMBS\n"\ +"DEVASTATING UNTOLD MILES OF HELL'S\n"\ +"SURFACE.\n"\ +"\n"\ +"YOU'VE DONE IT. THE INVASION IS OVER.\n"\ +"EARTH IS SAVED. HELL IS A WRECK. YOU\n"\ +"WONDER WHERE BAD FOLKS WILL GO WHEN THEY\n"\ +"DIE, NOW. WIPING THE SWEAT FROM YOUR\n"\ +"FOREHEAD YOU BEGIN THE LONG TREK BACK\n"\ +"HOME. REBUILDING EARTH OUGHT TO BE A\n"\ +"LOT MORE FUN THAN RUINING IT WAS.\n" +*/ +extern const char* s_C4TEXT; // = C4TEXT; + + + +// Before level 31, put this: + +/* +#define C5TEXT \ +"CONGRATULATIONS, YOU'VE FOUND THE SECRET\n"\ +"LEVEL! LOOKS LIKE IT'S BEEN BUILT BY\n"\ +"HUMANS, RATHER THAN DEMONS. YOU WONDER\n"\ +"WHO THE INMATES OF THIS CORNER OF HELL\n"\ +"WILL BE." +*/ +extern const char* s_C5TEXT; // = C5TEXT; + + +// Before level 32, put this: + +/* +#define C6TEXT \ +"CONGRATULATIONS, YOU'VE FOUND THE\n"\ +"SUPER SECRET LEVEL! YOU'D BETTER\n"\ +"BLAZE THROUGH THIS ONE!\n" +*/ +extern const char* s_C6TEXT; // = C6TEXT; + + +// after map 06 + +/* +#define P1TEXT \ +"You gloat over the steaming carcass of the\n"\ +"Guardian. With its death, you've wrested\n"\ +"the Accelerator from the stinking claws\n"\ +"of Hell. You relax and glance around the\n"\ +"room. Damn! There was supposed to be at\n"\ +"least one working prototype, but you can't\n"\ +"see it. The demons must have taken it.\n"\ +"\n"\ +"You must find the prototype, or all your\n"\ +"struggles will have been wasted. Keep\n"\ +"moving, keep fighting, keep killing.\n"\ +"Oh yes, keep living, too." +*/ +extern const char* s_P1TEXT; // = P1TEXT; + + +// after map 11 + +/* +#define P2TEXT \ +"Even the deadly Arch-Vile labyrinth could\n"\ +"not stop you, and you've gotten to the\n"\ +"prototype Accelerator which is soon\n"\ +"efficiently and permanently deactivated.\n"\ +"\n"\ +"You're good at that kind of thing." +*/ +extern const char* s_P2TEXT; // = P2TEXT; + + +// after map 20 + +/* +#define P3TEXT \ +"You've bashed and battered your way into\n"\ +"the heart of the devil-hive. Time for a\n"\ +"Search-and-Destroy mission, aimed at the\n"\ +"Gatekeeper, whose foul offspring is\n"\ +"cascading to Earth. Yeah, he's bad. But\n"\ +"you know who's worse!\n"\ +"\n"\ +"Grinning evilly, you check your gear, and\n"\ +"get ready to give the bastard a little Hell\n"\ +"of your own making!" +*/ +extern const char* s_P3TEXT; // = P3TEXT; + +// after map 30 + +/* +#define P4TEXT \ +"The Gatekeeper's evil face is splattered\n"\ +"all over the place. As its tattered corpse\n"\ +"collapses, an inverted Gate forms and\n"\ +"sucks down the shards of the last\n"\ +"prototype Accelerator, not to mention the\n"\ +"few remaining demons. You're done. Hell\n"\ +"has gone back to pounding bad dead folks \n"\ +"instead of good live ones. Remember to\n"\ +"tell your grandkids to put a rocket\n"\ +"launcher in your coffin. If you go to Hell\n"\ +"when you die, you'll need it for some\n"\ +"final cleaning-up ..." +*/ +extern const char* s_P4TEXT; // = P4TEXT; + +// before map 31 + +/* +#define P5TEXT \ +"You've found the second-hardest level we\n"\ +"got. Hope you have a saved game a level or\n"\ +"two previous. If not, be prepared to die\n"\ +"aplenty. For master marines only." +*/ +extern const char* s_P5TEXT; // = P5TEXT; + +// before map 32 + +/* +#define P6TEXT \ +"Betcha wondered just what WAS the hardest\n"\ +"level we had ready for ya? Now you know.\n"\ +"No one gets out alive." +*/ +extern const char* s_P6TEXT; // = P6TEXT; + + +/* +#define T1TEXT \ +"You've fought your way out of the infested\n"\ +"experimental labs. It seems that UAC has\n"\ +"once again gulped it down. With their\n"\ +"high turnover, it must be hard for poor\n"\ +"old UAC to buy corporate health insurance\n"\ +"nowadays..\n"\ +"\n"\ +"Ahead lies the military complex, now\n"\ +"swarming with diseased horrors hot to get\n"\ +"their teeth into you. With luck, the\n"\ +"complex still has some warlike ordnance\n"\ +"laying around." +*/ +extern const char* s_T1TEXT; // = T1TEXT; + + +/* +#define T2TEXT \ +"You hear the grinding of heavy machinery\n"\ +"ahead. You sure hope they're not stamping\n"\ +"out new hellspawn, but you're ready to\n"\ +"ream out a whole herd if you have to.\n"\ +"They might be planning a blood feast, but\n"\ +"you feel about as mean as two thousand\n"\ +"maniacs packed into one mad killer.\n"\ +"\n"\ +"You don't plan to go down easy." +*/ +extern const char* s_T2TEXT; // = T2TEXT; + + +/* +#define T3TEXT \ +"The vista opening ahead looks real damn\n"\ +"familiar. Smells familiar, too -- like\n"\ +"fried excrement. You didn't like this\n"\ +"place before, and you sure as hell ain't\n"\ +"planning to like it now. The more you\n"\ +"brood on it, the madder you get.\n"\ +"Hefting your gun, an evil grin trickles\n"\ +"onto your face. Time to take some names." +*/ +extern const char* s_T3TEXT; // = T3TEXT; + +/* +#define T4TEXT \ +"Suddenly, all is silent, from one horizon\n"\ +"to the other. The agonizing echo of Hell\n"\ +"fades away, the nightmare sky turns to\n"\ +"blue, the heaps of monster corpses start \n"\ +"to evaporate along with the evil stench \n"\ +"that filled the air. Jeeze, maybe you've\n"\ +"done it. Have you really won?\n"\ +"\n"\ +"Something rumbles in the distance.\n"\ +"A blue light begins to glow inside the\n"\ +"ruined skull of the demon-spitter." +*/ +extern const char* s_T4TEXT; // = T4TEXT; + + +/* +#define T5TEXT \ +"What now? Looks totally different. Kind\n"\ +"of like King Tut's condo. Well,\n"\ +"whatever's here can't be any worse\n"\ +"than usual. Can it? Or maybe it's best\n"\ +"to let sleeping gods lie.." +*/ +extern const char* s_T5TEXT; // = T5TEXT; + + +/* +#define T6TEXT \ +"Time for a vacation. You've burst the\n"\ +"bowels of hell and by golly you're ready\n"\ +"for a break. You mutter to yourself,\n"\ +"Maybe someone else can kick Hell's ass\n"\ +"next time around. Ahead lies a quiet town,\n"\ +"with peaceful flowing water, quaint\n"\ +"buildings, and presumably no Hellspawn.\n"\ +"\n"\ +"As you step off the transport, you hear\n"\ +"the stomp of a cyberdemon's iron shoe." +*/ +extern const char* s_T6TEXT; // = T6TEXT; + +// +// Character cast strings F_FINALE.C +// +//#define CC_ZOMBIE "ZOMBIEMAN" +extern const char* s_CC_ZOMBIE; // = CC_ZOMBIE; +//#define CC_SHOTGUN "SHOTGUN GUY" +extern const char* s_CC_SHOTGUN; // = CC_SHOTGUN; +//#define CC_HEAVY "HEAVY WEAPON DUDE" +extern const char* s_CC_HEAVY; // = CC_HEAVY; +//#define CC_IMP "IMP" +extern const char* s_CC_IMP; // = CC_IMP; +//#define CC_DEMON "DEMON" +extern const char* s_CC_DEMON; // = CC_DEMON; +//#define CC_LOST "LOST SOUL" +extern const char* s_CC_LOST; // = CC_LOST; +//#define CC_CACO "CACODEMON" +extern const char* s_CC_CACO; // = CC_CACO; +//#define CC_HELL "HELL KNIGHT" +extern const char* s_CC_HELL; // = CC_HELL; +//#define CC_BARON "BARON OF HELL" +extern const char* s_CC_BARON; // = CC_BARON; +//#define CC_ARACH "ARACHNOTRON" +extern const char* s_CC_ARACH; // = CC_ARACH; +//#define CC_PAIN "PAIN ELEMENTAL" +extern const char* s_CC_PAIN; // = CC_PAIN; +//#define CC_REVEN "REVENANT" +extern const char* s_CC_REVEN; // = CC_REVEN; +//#define CC_MANCU "MANCUBUS" +extern const char* s_CC_MANCU; // = CC_MANCU; +//#define CC_ARCH "ARCH-VILE" +extern const char* s_CC_ARCH; // = CC_ARCH; +//#define CC_SPIDER "THE SPIDER MASTERMIND" +extern const char* s_CC_SPIDER; // = CC_SPIDER; +//#define CC_CYBER "THE CYBERDEMON" +extern const char* s_CC_CYBER; // = CC_CYBER; +//#define CC_HERO "OUR HERO" +extern const char* s_CC_HERO; // = CC_HERO; + +// Ty 03/30/98 - new substitutions for background textures during int screens +// char* bgflatE1 = "FLOOR4_8"; +extern const char* bgflatE1; +// char* bgflatE2 = "SFLR6_1"; +extern const char* bgflatE2; +// char* bgflatE3 = "MFLR8_4"; +extern const char* bgflatE3; +// char* bgflatE4 = "MFLR8_3"; +extern const char* bgflatE4; + +// char* bgflat06 = "SLIME16"; +extern const char* bgflat06; +// char* bgflat11 = "RROCK14"; +extern const char* bgflat11; +// char* bgflat20 = "RROCK07"; +extern const char* bgflat20; +// char* bgflat30 = "RROCK17"; +extern const char* bgflat30; +// char* bgflat15 = "RROCK13"; +extern const char* bgflat15; +// char* bgflat31 = "RROCK19"; +extern const char* bgflat31; + +// char* bgcastcall = "BOSSBACK"; // panel behind cast call +extern const char* bgcastcall; + +// ignored if blank, general purpose startup announcements +// char* startup1 = ""; +extern const char* startup1; +// char* startup2 = ""; +extern const char* startup2; +// char* startup3 = ""; +extern const char* startup3; +// char* startup4 = ""; +extern const char* startup4; +// char* startup5 = ""; +extern const char* startup5; + +#endif diff --git a/components/doom/prboom/d_englsh.h b/components/doom/prboom/d_englsh.h new file mode 100644 index 0000000..86e7416 --- /dev/null +++ b/components/doom/prboom/d_englsh.h @@ -0,0 +1,707 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Printed strings for translation. + * English language support (default). + * See dstrings.h for suggestions about foreign language BEX support + * + *-----------------------------------------------------------------------------*/ + +#ifndef __D_ENGLSH__ +#define __D_ENGLSH__ + +/* d_main.c */ +#define D_DEVSTR "Development mode ON.\n" +#define D_CDROM "CD-ROM Version: default.cfg from c:\\doomdata\n" + +/* m_menu.c */ +#define PRESSKEY "press a key." +#define PRESSYN "press y or n." +#define QUITMSG "are you sure you want to\nquit this great game?" +#define LOADNET "you can't do load while in a net game!\n\n"PRESSKEY +#define QLOADNET "you can't quickload during a netgame!\n\n"PRESSKEY +#define QSAVESPOT "you haven't picked a quicksave slot yet!\n\n"PRESSKEY +#define SAVEDEAD "you can't save if you aren't playing!\n\n"PRESSKEY +#define QSPROMPT "quicksave over your game named\n\n'%s'?\n\n"PRESSYN +#define QLPROMPT "do you want to quickload the game named\n\n'%s'?\n\n"PRESSYN + +#define NEWGAME \ + "you can't start a new game\n"\ + "while in a network game.\n\n"PRESSKEY + +#define NIGHTMARE \ + "are you sure? this skill level\n"\ + "isn't even remotely fair.\n\n"PRESSYN + +#define SWSTRING \ + "this is the shareware version of doom.\n\n"\ + "you need to order the entire trilogy.\n\n"PRESSKEY + +#define MSGOFF "Messages OFF" +#define MSGON "Messages ON" +#define NETEND "you can't end a netgame!\n\n"PRESSKEY +#define ENDGAME "are you sure you want to end the game?\n\n"PRESSYN +#define RESTARTLEVEL "restart the level?\n\n"PRESSYN + +#define DOSY "(press y to quit)" + +#define DETAILHI "High detail" +#define DETAILLO "Low detail" +#define GAMMALVL0 "Gamma correction OFF" +#define GAMMALVL1 "Gamma correction level 1" +#define GAMMALVL2 "Gamma correction level 2" +#define GAMMALVL3 "Gamma correction level 3" +#define GAMMALVL4 "Gamma correction level 4" +#define EMPTYSTRING "empty slot" + +/* p_inter.c */ +#define GOTARMOR "Picked up the armor." +#define GOTMEGA "Picked up the MegaArmor!" +#define GOTHTHBONUS "Picked up a health bonus." +#define GOTARMBONUS "Picked up an armor bonus." +#define GOTSTIM "Picked up a stimpack." +#define GOTMEDINEED "Picked up a medikit that you REALLY need!" +#define GOTMEDIKIT "Picked up a medikit." +#define GOTSUPER "Supercharge!" + +#define GOTBLUECARD "Picked up a blue keycard." +#define GOTYELWCARD "Picked up a yellow keycard." +#define GOTREDCARD "Picked up a red keycard." +#define GOTBLUESKUL "Picked up a blue skull key." +#define GOTYELWSKUL "Picked up a yellow skull key." +#define GOTREDSKULL "Picked up a red skull key." + +#define GOTINVUL "Invulnerability!" +#define GOTBERSERK "Berserk!" +#define GOTINVIS "Partial Invisibility" +#define GOTSUIT "Radiation Shielding Suit" +#define GOTMAP "Computer Area Map" +#define GOTVISOR "Light Amplification Visor" +#define GOTMSPHERE "MegaSphere!" + +#define GOTCLIP "Picked up a clip." +#define GOTCLIPBOX "Picked up a box of bullets." +#define GOTROCKET "Picked up a rocket." +#define GOTROCKBOX "Picked up a box of rockets." +#define GOTCELL "Picked up an energy cell." +#define GOTCELLBOX "Picked up an energy cell pack." +#define GOTSHELLS "Picked up 4 shotgun shells." +#define GOTSHELLBOX "Picked up a box of shotgun shells." +#define GOTBACKPACK "Picked up a backpack full of ammo!" + +#define GOTBFG9000 "You got the BFG9000! Oh, yes." +#define GOTCHAINGUN "You got the chaingun!" +#define GOTCHAINSAW "A chainsaw! Find some meat!" +#define GOTLAUNCHER "You got the rocket launcher!" +#define GOTPLASMA "You got the plasma gun!" +#define GOTSHOTGUN "You got the shotgun!" +#define GOTSHOTGUN2 "You got the super shotgun!" + +/* p_doors.c */ +#define PD_BLUEO "You need a blue key to activate this object" +#define PD_REDO "You need a red key to activate this object" +#define PD_YELLOWO "You need a yellow key to activate this object" +#define PD_BLUEK "You need a blue key to open this door" +#define PD_REDK "You need a red key to open this door" +#define PD_YELLOWK "You need a yellow key to open this door" +/* jff 02/05/98 Create messages specific to card and skull keys */ +#define PD_BLUEC "You need a blue card to open this door" +#define PD_REDC "You need a red card to open this door" +#define PD_YELLOWC "You need a yellow card to open this door" +#define PD_BLUES "You need a blue skull to open this door" +#define PD_REDS "You need a red skull to open this door" +#define PD_YELLOWS "You need a yellow skull to open this door" +#define PD_ANY "Any key will open this door" +#define PD_ALL3 "You need all three keys to open this door" +#define PD_ALL6 "You need all six keys to open this door" + +/* g_game.c */ +#define GGSAVED "game saved." + +/* hu_stuff.c */ +#define HUSTR_MSGU "[Message unsent]" + +#define HUSTR_E1M1 "E1M1: Hangar" +#define HUSTR_E1M2 "E1M2: Nuclear Plant" +#define HUSTR_E1M3 "E1M3: Toxin Refinery" +#define HUSTR_E1M4 "E1M4: Command Control" +#define HUSTR_E1M5 "E1M5: Phobos Lab" +#define HUSTR_E1M6 "E1M6: Central Processing" +#define HUSTR_E1M7 "E1M7: Computer Station" +#define HUSTR_E1M8 "E1M8: Phobos Anomaly" +#define HUSTR_E1M9 "E1M9: Military Base" + +#define HUSTR_E2M1 "E2M1: Deimos Anomaly" +#define HUSTR_E2M2 "E2M2: Containment Area" +#define HUSTR_E2M3 "E2M3: Refinery" +#define HUSTR_E2M4 "E2M4: Deimos Lab" +#define HUSTR_E2M5 "E2M5: Command Center" +#define HUSTR_E2M6 "E2M6: Halls of the Damned" +#define HUSTR_E2M7 "E2M7: Spawning Vats" +#define HUSTR_E2M8 "E2M8: Tower of Babel" +#define HUSTR_E2M9 "E2M9: Fortress of Mystery" + +#define HUSTR_E3M1 "E3M1: Hell Keep" +#define HUSTR_E3M2 "E3M2: Slough of Despair" +#define HUSTR_E3M3 "E3M3: Pandemonium" +#define HUSTR_E3M4 "E3M4: House of Pain" +#define HUSTR_E3M5 "E3M5: Unholy Cathedral" +#define HUSTR_E3M6 "E3M6: Mt. Erebus" +#define HUSTR_E3M7 "E3M7: Limbo" +#define HUSTR_E3M8 "E3M8: Dis" +#define HUSTR_E3M9 "E3M9: Warrens" + +#define HUSTR_E4M1 "E4M1: Hell Beneath" +#define HUSTR_E4M2 "E4M2: Perfect Hatred" +#define HUSTR_E4M3 "E4M3: Sever The Wicked" +#define HUSTR_E4M4 "E4M4: Unruly Evil" +#define HUSTR_E4M5 "E4M5: They Will Repent" +#define HUSTR_E4M6 "E4M6: Against Thee Wickedly" +#define HUSTR_E4M7 "E4M7: And Hell Followed" +#define HUSTR_E4M8 "E4M8: Unto The Cruel" +#define HUSTR_E4M9 "E4M9: Fear" + +#define HUSTR_1 "level 1: entryway" +#define HUSTR_2 "level 2: underhalls" +#define HUSTR_3 "level 3: the gantlet" +#define HUSTR_4 "level 4: the focus" +#define HUSTR_5 "level 5: the waste tunnels" +#define HUSTR_6 "level 6: the crusher" +#define HUSTR_7 "level 7: dead simple" +#define HUSTR_8 "level 8: tricks and traps" +#define HUSTR_9 "level 9: the pit" +#define HUSTR_10 "level 10: refueling base" +#define HUSTR_11 "level 11: 'o' of destruction!" + +#define HUSTR_12 "level 12: the factory" +#define HUSTR_13 "level 13: downtown" +#define HUSTR_14 "level 14: the inmost dens" +#define HUSTR_15 "level 15: industrial zone" +#define HUSTR_16 "level 16: suburbs" +#define HUSTR_17 "level 17: tenements" +#define HUSTR_18 "level 18: the courtyard" +#define HUSTR_19 "level 19: the citadel" +#define HUSTR_20 "level 20: gotcha!" + +#define HUSTR_21 "level 21: nirvana" +#define HUSTR_22 "level 22: the catacombs" +#define HUSTR_23 "level 23: barrels o' fun" +#define HUSTR_24 "level 24: the chasm" +#define HUSTR_25 "level 25: bloodfalls" +#define HUSTR_26 "level 26: the abandoned mines" +#define HUSTR_27 "level 27: monster condo" +#define HUSTR_28 "level 28: the spirit world" +#define HUSTR_29 "level 29: the living end" +#define HUSTR_30 "level 30: icon of sin" + +#define HUSTR_31 "level 31: wolfenstein" +#define HUSTR_32 "level 32: grosse" + +#define PHUSTR_1 "level 1: congo" +#define PHUSTR_2 "level 2: well of souls" +#define PHUSTR_3 "level 3: aztec" +#define PHUSTR_4 "level 4: caged" +#define PHUSTR_5 "level 5: ghost town" +#define PHUSTR_6 "level 6: baron's lair" +#define PHUSTR_7 "level 7: caughtyard" +#define PHUSTR_8 "level 8: realm" +#define PHUSTR_9 "level 9: abattoire" +#define PHUSTR_10 "level 10: onslaught" +#define PHUSTR_11 "level 11: hunted" + +#define PHUSTR_12 "level 12: speed" +#define PHUSTR_13 "level 13: the crypt" +#define PHUSTR_14 "level 14: genesis" +#define PHUSTR_15 "level 15: the twilight" +#define PHUSTR_16 "level 16: the omen" +#define PHUSTR_17 "level 17: compound" +#define PHUSTR_18 "level 18: neurosphere" +#define PHUSTR_19 "level 19: nme" +#define PHUSTR_20 "level 20: the death domain" + +#define PHUSTR_21 "level 21: slayer" +#define PHUSTR_22 "level 22: impossible mission" +#define PHUSTR_23 "level 23: tombstone" +#define PHUSTR_24 "level 24: the final frontier" +#define PHUSTR_25 "level 25: the temple of darkness" +#define PHUSTR_26 "level 26: bunker" +#define PHUSTR_27 "level 27: anti-christ" +#define PHUSTR_28 "level 28: the sewers" +#define PHUSTR_29 "level 29: odyssey of noises" +#define PHUSTR_30 "level 30: the gateway of hell" + +#define PHUSTR_31 "level 31: cyberden" +#define PHUSTR_32 "level 32: go 2 it" + +#define THUSTR_1 "level 1: system control" +#define THUSTR_2 "level 2: human bbq" +#define THUSTR_3 "level 3: power control" +#define THUSTR_4 "level 4: wormhole" +#define THUSTR_5 "level 5: hanger" +#define THUSTR_6 "level 6: open season" +#define THUSTR_7 "level 7: prison" +#define THUSTR_8 "level 8: metal" +#define THUSTR_9 "level 9: stronghold" +#define THUSTR_10 "level 10: redemption" +#define THUSTR_11 "level 11: storage facility" + +#define THUSTR_12 "level 12: crater" +#define THUSTR_13 "level 13: nukage processing" +#define THUSTR_14 "level 14: steel works" +#define THUSTR_15 "level 15: dead zone" +#define THUSTR_16 "level 16: deepest reaches" +#define THUSTR_17 "level 17: processing area" +#define THUSTR_18 "level 18: mill" +#define THUSTR_19 "level 19: shipping/respawning" +#define THUSTR_20 "level 20: central processing" + +#define THUSTR_21 "level 21: administration center" +#define THUSTR_22 "level 22: habitat" +#define THUSTR_23 "level 23: lunar mining project" +#define THUSTR_24 "level 24: quarry" +#define THUSTR_25 "level 25: baron's den" +#define THUSTR_26 "level 26: ballistyx" +#define THUSTR_27 "level 27: mount pain" +#define THUSTR_28 "level 28: heck" +#define THUSTR_29 "level 29: river styx" +#define THUSTR_30 "level 30: last call" + +#define THUSTR_31 "level 31: pharaoh" +#define THUSTR_32 "level 32: caribbean" + +#define HUSTR_CHATMACRO1 "I'm ready to kick butt!" +#define HUSTR_CHATMACRO2 "I'm OK." +#define HUSTR_CHATMACRO3 "I'm not looking too good!" +#define HUSTR_CHATMACRO4 "Help!" +#define HUSTR_CHATMACRO5 "You suck!" +#define HUSTR_CHATMACRO6 "Next time, scumbag..." +#define HUSTR_CHATMACRO7 "Come here!" +#define HUSTR_CHATMACRO8 "I'll take care of it." +#define HUSTR_CHATMACRO9 "Yes" +#define HUSTR_CHATMACRO0 "No" + +#define HUSTR_TALKTOSELF1 "You mumble to yourself" +#define HUSTR_TALKTOSELF2 "Who's there?" +#define HUSTR_TALKTOSELF3 "You scare yourself" +#define HUSTR_TALKTOSELF4 "You start to rave" +#define HUSTR_TALKTOSELF5 "You've lost it..." + +#define HUSTR_MESSAGESENT "[Message Sent]" + +/* The following should NOT be changed unless it seems + * just AWFULLY necessary */ + +#define HUSTR_PLRGREEN "Player 1: " +#define HUSTR_PLRINDIGO "Player 2: " +#define HUSTR_PLRBROWN "Player 3: " +#define HUSTR_PLRRED "Player 4: " + +#define HUSTR_KEYGREEN 'g' +#define HUSTR_KEYINDIGO 'i' +#define HUSTR_KEYBROWN 'b' +#define HUSTR_KEYRED 'r' + +/* am_map.c */ + +#define AMSTR_FOLLOWON "Follow Mode ON" +#define AMSTR_FOLLOWOFF "Follow Mode OFF" + +#define AMSTR_GRIDON "Grid ON" +#define AMSTR_GRIDOFF "Grid OFF" + +#define AMSTR_MARKEDSPOT "Marked Spot" +#define AMSTR_MARKSCLEARED "All Marks Cleared" + +#define AMSTR_ROTATEON "Rotate Mode ON" +#define AMSTR_ROTATEOFF "Rotate Mode OFF" + +#define AMSTR_OVERLAYON "Overlay Mode ON" +#define AMSTR_OVERLAYOFF "Overlay Mode OFF" + +/* st_stuff.c */ + +#define STSTR_MUS "Music Change" +#define STSTR_NOMUS "IMPOSSIBLE SELECTION" +#define STSTR_DQDON "Degreelessness Mode On" +#define STSTR_DQDOFF "Degreelessness Mode Off" + +#define STSTR_KFAADDED "Very Happy Ammo Added" +#define STSTR_FAADDED "Ammo (no keys) Added" + +#define STSTR_NCON "No Clipping Mode ON" +#define STSTR_NCOFF "No Clipping Mode OFF" + +#define STSTR_BEHOLD "inVuln, Str, Inviso, Rad, Allmap, or Lite-amp" +#define STSTR_BEHOLDX "Power-up Toggled" + +#define STSTR_CHOPPERS "... doesn't suck - GM" +#define STSTR_CLEV "Changing Level..." + +#define STSTR_COMPON "Compatibility Mode On" /* phares */ +#define STSTR_COMPOFF "Compatibility Mode Off" /* phares */ + +/* f_finale.c */ + +#define E1TEXT \ + "Once you beat the big badasses and\n"\ + "clean out the moon base you're supposed\n"\ + "to win, aren't you? Aren't you? Where's\n"\ + "your fat reward and ticket home? What\n"\ + "the hell is this? It's not supposed to\n"\ + "end this way!\n"\ + "\n" \ + "It stinks like rotten meat, but looks\n"\ + "like the lost Deimos base. Looks like\n"\ + "you're stuck on The Shores of Hell.\n"\ + "The only way out is through.\n"\ + "\n"\ + "To continue the DOOM experience, play\n"\ + "The Shores of Hell and its amazing\n"\ + "sequel, Inferno!\n" + + +#define E2TEXT \ + "You've done it! The hideous cyber-\n"\ + "demon lord that ruled the lost Deimos\n"\ + "moon base has been slain and you\n"\ + "are triumphant! But ... where are\n"\ + "you? You clamber to the edge of the\n"\ + "moon and look down to see the awful\n"\ + "truth.\n" \ + "\n"\ + "Deimos floats above Hell itself!\n"\ + "You've never heard of anyone escaping\n"\ + "from Hell, but you'll make the bastards\n"\ + "sorry they ever heard of you! Quickly,\n"\ + "you rappel down to the surface of\n"\ + "Hell.\n"\ + "\n" \ + "Now, it's on to the final chapter of\n"\ + "DOOM! -- Inferno." + + +#define E3TEXT \ + "The loathsome spiderdemon that\n"\ + "masterminded the invasion of the moon\n"\ + "bases and caused so much death has had\n"\ + "its ass kicked for all time.\n"\ + "\n"\ + "A hidden doorway opens and you enter.\n"\ + "You've proven too tough for Hell to\n"\ + "contain, and now Hell at last plays\n"\ + "fair -- for you emerge from the door\n"\ + "to see the green fields of Earth!\n"\ + "Home at last.\n" \ + "\n"\ + "You wonder what's been happening on\n"\ + "Earth while you were battling evil\n"\ + "unleashed. It's good that no Hell-\n"\ + "spawn could have come through that\n"\ + "door with you ..." + + +#define E4TEXT \ + "the spider mastermind must have sent forth\n"\ + "its legions of hellspawn before your\n"\ + "final confrontation with that terrible\n"\ + "beast from hell. but you stepped forward\n"\ + "and brought forth eternal damnation and\n"\ + "suffering upon the horde as a true hero\n"\ + "would in the face of something so evil.\n"\ + "\n"\ + "besides, someone was gonna pay for what\n"\ + "happened to daisy, your pet rabbit.\n"\ + "\n"\ + "but now, you see spread before you more\n"\ + "potential pain and gibbitude as a nation\n"\ + "of demons run amok among our cities.\n"\ + "\n"\ + "next stop, hell on earth!" + + +/* after level 6, put this: */ + +#define C1TEXT \ + "YOU HAVE ENTERED DEEPLY INTO THE INFESTED\n" \ + "STARPORT. BUT SOMETHING IS WRONG. THE\n" \ + "MONSTERS HAVE BROUGHT THEIR OWN REALITY\n" \ + "WITH THEM, AND THE STARPORT'S TECHNOLOGY\n" \ + "IS BEING SUBVERTED BY THEIR PRESENCE.\n" \ + "\n"\ + "AHEAD, YOU SEE AN OUTPOST OF HELL, A\n" \ + "FORTIFIED ZONE. IF YOU CAN GET PAST IT,\n" \ + "YOU CAN PENETRATE INTO THE HAUNTED HEART\n" \ + "OF THE STARBASE AND FIND THE CONTROLLING\n" \ + "SWITCH WHICH HOLDS EARTH'S POPULATION\n" \ + "HOSTAGE." + +/* After level 11, put this: */ + +#define C2TEXT \ + "YOU HAVE WON! YOUR VICTORY HAS ENABLED\n" \ + "HUMANKIND TO EVACUATE EARTH AND ESCAPE\n"\ + "THE NIGHTMARE. NOW YOU ARE THE ONLY\n"\ + "HUMAN LEFT ON THE FACE OF THE PLANET.\n"\ + "CANNIBAL MUTATIONS, CARNIVOROUS ALIENS,\n"\ + "AND EVIL SPIRITS ARE YOUR ONLY NEIGHBORS.\n"\ + "YOU SIT BACK AND WAIT FOR DEATH, CONTENT\n"\ + "THAT YOU HAVE SAVED YOUR SPECIES.\n"\ + "\n"\ + "BUT THEN, EARTH CONTROL BEAMS DOWN A\n"\ + "MESSAGE FROM SPACE: \"SENSORS HAVE LOCATED\n"\ + "THE SOURCE OF THE ALIEN INVASION. IF YOU\n"\ + "GO THERE, YOU MAY BE ABLE TO BLOCK THEIR\n"\ + "ENTRY. THE ALIEN BASE IS IN THE HEART OF\n"\ + "YOUR OWN HOME CITY, NOT FAR FROM THE\n"\ + "STARPORT.\" SLOWLY AND PAINFULLY YOU GET\n"\ + "UP AND RETURN TO THE FRAY." + + +/* After level 20, put this: */ + +#define C3TEXT \ + "YOU ARE AT THE CORRUPT HEART OF THE CITY,\n"\ + "SURROUNDED BY THE CORPSES OF YOUR ENEMIES.\n"\ + "YOU SEE NO WAY TO DESTROY THE CREATURES'\n"\ + "ENTRYWAY ON THIS SIDE, SO YOU CLENCH YOUR\n"\ + "TEETH AND PLUNGE THROUGH IT.\n"\ + "\n"\ + "THERE MUST BE A WAY TO CLOSE IT ON THE\n"\ + "OTHER SIDE. WHAT DO YOU CARE IF YOU'VE\n"\ + "GOT TO GO THROUGH HELL TO GET TO IT?" + + +/* After level 29, put this: */ + +#define C4TEXT \ + "THE HORRENDOUS VISAGE OF THE BIGGEST\n"\ + "DEMON YOU'VE EVER SEEN CRUMBLES BEFORE\n"\ + "YOU, AFTER YOU PUMP YOUR ROCKETS INTO\n"\ + "HIS EXPOSED BRAIN. THE MONSTER SHRIVELS\n"\ + "UP AND DIES, ITS THRASHING LIMBS\n"\ + "DEVASTATING UNTOLD MILES OF HELL'S\n"\ + "SURFACE.\n"\ + "\n"\ + "YOU'VE DONE IT. THE INVASION IS OVER.\n"\ + "EARTH IS SAVED. HELL IS A WRECK. YOU\n"\ + "WONDER WHERE BAD FOLKS WILL GO WHEN THEY\n"\ + "DIE, NOW. WIPING THE SWEAT FROM YOUR\n"\ + "FOREHEAD YOU BEGIN THE LONG TREK BACK\n"\ + "HOME. REBUILDING EARTH OUGHT TO BE A\n"\ + "LOT MORE FUN THAN RUINING IT WAS.\n" + +/* Before level 31, put this: */ + +#define C5TEXT \ + "CONGRATULATIONS, YOU'VE FOUND THE SECRET\n"\ + "LEVEL! LOOKS LIKE IT'S BEEN BUILT BY\n"\ + "HUMANS, RATHER THAN DEMONS. YOU WONDER\n"\ + "WHO THE INMATES OF THIS CORNER OF HELL\n"\ + "WILL BE." + + +/* Before level 32, put this: */ + +#define C6TEXT \ + "CONGRATULATIONS, YOU'VE FOUND THE\n"\ + "SUPER SECRET LEVEL! YOU'D BETTER\n"\ + "BLAZE THROUGH THIS ONE!\n" + +/*** Plutonia ***/ +/* after map 06 */ + +#define P1TEXT \ + "You gloat over the steaming carcass of the\n"\ + "Guardian. With its death, you've wrested\n"\ + "the Accelerator from the stinking claws\n"\ + "of Hell. You relax and glance around the\n"\ + "room. Damn! There was supposed to be at\n"\ + "least one working prototype, but you can't\n"\ + "see it. The demons must have taken it.\n"\ + "\n"\ + "You must find the prototype, or all your\n"\ + "struggles will have been wasted. Keep\n"\ + "moving, keep fighting, keep killing.\n"\ + "Oh yes, keep living, too." + + +/* after map 11 */ + +#define P2TEXT \ + "Even the deadly Arch-Vile labyrinth could\n"\ + "not stop you, and you've gotten to the\n"\ + "prototype Accelerator which is soon\n"\ + "efficiently and permanently deactivated.\n"\ + "\n"\ + "You're good at that kind of thing." + + +/* after map 20 */ + +#define P3TEXT \ + "You've bashed and battered your way into\n"\ + "the heart of the devil-hive. Time for a\n"\ + "Search-and-Destroy mission, aimed at the\n"\ + "Gatekeeper, whose foul offspring is\n"\ + "cascading to Earth. Yeah, he's bad. But\n"\ + "you know who's worse!\n"\ + "\n"\ + "Grinning evilly, you check your gear, and\n"\ + "get ready to give the bastard a little Hell\n"\ + "of your own making!" + +/* after map 30 */ + +#define P4TEXT \ + "The Gatekeeper's evil face is splattered\n"\ + "all over the place. As its tattered corpse\n"\ + "collapses, an inverted Gate forms and\n"\ + "sucks down the shards of the last\n"\ + "prototype Accelerator, not to mention the\n"\ + "few remaining demons. You're done. Hell\n"\ + "has gone back to pounding bad dead folks \n"\ + "instead of good live ones. Remember to\n"\ + "tell your grandkids to put a rocket\n"\ + "launcher in your coffin. If you go to Hell\n"\ + "when you die, you'll need it for some\n"\ + "final cleaning-up ..." + +/* before map 31 */ + +#define P5TEXT \ + "You've found the second-hardest level we\n"\ + "got. Hope you have a saved game a level or\n"\ + "two previous. If not, be prepared to die\n"\ + "aplenty. For master marines only." + +/* before map 32 */ + +#define P6TEXT \ + "Betcha wondered just what WAS the hardest\n"\ + "level we had ready for ya? Now you know.\n"\ + "No one gets out alive." + +/*** TNT: Evilution ***/ + +#define T1TEXT \ + "You've fought your way out of the infested\n"\ + "experimental labs. It seems that UAC has\n"\ + "once again gulped it down. With their\n"\ + "high turnover, it must be hard for poor\n"\ + "old UAC to buy corporate health insurance\n"\ + "nowadays..\n"\ + "\n"\ + "Ahead lies the military complex, now\n"\ + "swarming with diseased horrors hot to get\n"\ + "their teeth into you. With luck, the\n"\ + "complex still has some warlike ordnance\n"\ + "laying around." + + +#define T2TEXT \ + "You hear the grinding of heavy machinery\n"\ + "ahead. You sure hope they're not stamping\n"\ + "out new hellspawn, but you're ready to\n"\ + "ream out a whole herd if you have to.\n"\ + "They might be planning a blood feast, but\n"\ + "you feel about as mean as two thousand\n"\ + "maniacs packed into one mad killer.\n"\ + "\n"\ + "You don't plan to go down easy." + + +#define T3TEXT \ + "The vista opening ahead looks real damn\n"\ + "familiar. Smells familiar, too -- like\n"\ + "fried excrement. You didn't like this\n"\ + "place before, and you sure as hell ain't\n"\ + "planning to like it now. The more you\n"\ + "brood on it, the madder you get.\n"\ + "Hefting your gun, an evil grin trickles\n"\ + "onto your face. Time to take some names." + +#define T4TEXT \ + "Suddenly, all is silent, from one horizon\n"\ + "to the other. The agonizing echo of Hell\n"\ + "fades away, the nightmare sky turns to\n"\ + "blue, the heaps of monster corpses start \n"\ + "to evaporate along with the evil stench \n"\ + "that filled the air. Jeeze, maybe you've\n"\ + "done it. Have you really won?\n"\ + "\n"\ + "Something rumbles in the distance.\n"\ + "A blue light begins to glow inside the\n"\ + "ruined skull of the demon-spitter." + + +#define T5TEXT \ + "What now? Looks totally different. Kind\n"\ + "of like King Tut's condo. Well,\n"\ + "whatever's here can't be any worse\n"\ + "than usual. Can it? Or maybe it's best\n"\ + "to let sleeping gods lie.." + + +#define T6TEXT \ + "Time for a vacation. You've burst the\n"\ + "bowels of hell and by golly you're ready\n"\ + "for a break. You mutter to yourself,\n"\ + "Maybe someone else can kick Hell's ass\n"\ + "next time around. Ahead lies a quiet town,\n"\ + "with peaceful flowing water, quaint\n"\ + "buildings, and presumably no Hellspawn.\n"\ + "\n"\ + "As you step off the transport, you hear\n"\ + "the stomp of a cyberdemon's iron shoe." + + + +/* + * Character cast strings F_FINALE.C + */ +#define CC_ZOMBIE "ZOMBIEMAN" +#define CC_SHOTGUN "SHOTGUN GUY" +#define CC_HEAVY "HEAVY WEAPON DUDE" +#define CC_IMP "IMP" +#define CC_DEMON "DEMON" +#define CC_LOST "LOST SOUL" +#define CC_CACO "CACODEMON" +#define CC_HELL "HELL KNIGHT" +#define CC_BARON "BARON OF HELL" +#define CC_ARACH "ARACHNOTRON" +#define CC_PAIN "PAIN ELEMENTAL" +#define CC_REVEN "REVENANT" +#define CC_MANCU "MANCUBUS" +#define CC_ARCH "ARCH-VILE" +#define CC_SPIDER "THE SPIDER MASTERMIND" +#define CC_CYBER "THE CYBERDEMON" +#define CC_HERO "OUR HERO" + + +#endif diff --git a/components/doom/prboom/d_event.h b/components/doom/prboom/d_event.h new file mode 100644 index 0000000..da5e702 --- /dev/null +++ b/components/doom/prboom/d_event.h @@ -0,0 +1,125 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Event information structures. + * + *-----------------------------------------------------------------------------*/ + + +#ifndef __D_EVENT__ +#define __D_EVENT__ + + +#include "doomtype.h" + + +// +// Event handling. +// + +// Input event types. +typedef enum +{ + ev_keydown, + ev_keyup, + ev_mouse, + ev_joystick +} evtype_t; + +// Event structure. +typedef struct +{ + evtype_t type; + int data1; // keys / mouse/joystick buttons + int data2; // mouse/joystick x move + int data3; // mouse/joystick y move +} event_t; + + +typedef enum +{ + ga_nothing, + ga_loadlevel, + ga_newgame, + ga_loadgame, + ga_savegame, + ga_playdemo, + ga_completed, + ga_victory, + ga_worlddone, +} gameaction_t; + + + +// +// Button/action code definitions. +// +typedef enum +{ + // Press "Fire". + BT_ATTACK = 1, + + // Use button, to open doors, activate switches. + BT_USE = 2, + + // Flag: game events, not really buttons. + BT_SPECIAL = 128, + BT_SPECIALMASK = 3, + + // Flag, weapon change pending. + // If true, the next 4 bits hold weapon num. + BT_CHANGE = 4, + + // The 4bit weapon mask and shift, convenience. +//BT_WEAPONMASK = (8+16+32), + BT_WEAPONMASK = (8+16+32+64), // extended to pick up SSG // phares + BT_WEAPONSHIFT = 3, + + // Special events + BTS_LOADGAME = 0, // Loads a game + // Pause the game. + BTS_PAUSE = 1, + // Save the game at each console. + BTS_SAVEGAME = 2, + BTS_RESTARTLEVEL= 3, // Restarts the current level + + // Savegame slot numbers occupy the second byte of buttons. + BTS_SAVEMASK = (4+8+16), + BTS_SAVESHIFT = 2, + +} buttoncode_t; + + +// +// GLOBAL VARIABLES +// + +extern gameaction_t gameaction; + +#endif diff --git a/components/doom/prboom/d_items.c b/components/doom/prboom/d_items.c new file mode 100644 index 0000000..5adc28d --- /dev/null +++ b/components/doom/prboom/d_items.c @@ -0,0 +1,140 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Something to do with weapon sprite frames. Don't ask me. + * + *----------------------------------------------------------------------------- + */ + +// We are referring to sprite numbers. +#include "doomtype.h" +#include "info.h" + +#ifdef __GNUG__ +#pragma implementation "d_items.h" +#endif +#include "d_items.h" + + +// +// PSPRITE ACTIONS for waepons. +// This struct controls the weapon animations. +// +// Each entry is: +// ammo/amunition type +// upstate +// downstate +// readystate +// atkstate, i.e. attack/fire/hit frame +// flashstate, muzzle flash +// +weaponinfo_t weaponinfo[NUMWEAPONS] = +{ + { + // fist + am_noammo, + S_PUNCHUP, + S_PUNCHDOWN, + S_PUNCH, + S_PUNCH1, + S_NULL + }, + { + // pistol + am_clip, + S_PISTOLUP, + S_PISTOLDOWN, + S_PISTOL, + S_PISTOL1, + S_PISTOLFLASH + }, + { + // shotgun + am_shell, + S_SGUNUP, + S_SGUNDOWN, + S_SGUN, + S_SGUN1, + S_SGUNFLASH1 + }, + { + // chaingun + am_clip, + S_CHAINUP, + S_CHAINDOWN, + S_CHAIN, + S_CHAIN1, + S_CHAINFLASH1 + }, + { + // missile launcher + am_misl, + S_MISSILEUP, + S_MISSILEDOWN, + S_MISSILE, + S_MISSILE1, + S_MISSILEFLASH1 + }, + { + // plasma rifle + am_cell, + S_PLASMAUP, + S_PLASMADOWN, + S_PLASMA, + S_PLASMA1, + S_PLASMAFLASH1 + }, + { + // bfg 9000 + am_cell, + S_BFGUP, + S_BFGDOWN, + S_BFG, + S_BFG1, + S_BFGFLASH1 + }, + { + // chainsaw + am_noammo, + S_SAWUP, + S_SAWDOWN, + S_SAW, + S_SAW1, + S_NULL + }, + { + // super shotgun + am_shell, + S_DSGUNUP, + S_DSGUNDOWN, + S_DSGUN, + S_DSGUN1, + S_DSGUNFLASH1 + }, +}; diff --git a/components/doom/prboom/d_items.h b/components/doom/prboom/d_items.h new file mode 100644 index 0000000..8da4df2 --- /dev/null +++ b/components/doom/prboom/d_items.h @@ -0,0 +1,59 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Items: key cards, artifacts, weapon, ammunition. + * + *-----------------------------------------------------------------------------*/ + + +#ifndef __D_ITEMS__ +#define __D_ITEMS__ + +#include "doomdef.h" + +#ifdef __GNUG__ +#pragma interface +#endif + + +/* Weapon info: sprite frames, ammunition use. */ +typedef struct +{ + ammotype_t ammo; + int upstate; + int downstate; + int readystate; + int atkstate; + int flashstate; + +} weaponinfo_t; + +extern weaponinfo_t weaponinfo[NUMWEAPONS]; + +#endif diff --git a/components/doom/prboom/d_main.c b/components/doom/prboom/d_main.c new file mode 100644 index 0000000..ad38e81 --- /dev/null +++ b/components/doom/prboom/d_main.c @@ -0,0 +1,1057 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2004 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * DOOM main program (D_DoomMain) and game loop (D_DoomLoop), + * plus functions to determine game mode (shareware, registered), + * parse command line parameters, configure game parameters (turbo), + * and call the startup functions. + * + *----------------------------------------------------------------------------- + */ + + +#include +#include +#include +#include + +#include "doomdef.h" +#include "doomtype.h" +#include "doomstat.h" +#include "d_net.h" +#include "dstrings.h" +#include "sounds.h" +#include "z_zone.h" +#include "w_wad.h" +#include "s_sound.h" +#include "v_video.h" +#include "f_finale.h" +#include "f_wipe.h" +#include "m_argv.h" +#include "m_misc.h" +#include "m_menu.h" +#include "i_main.h" +#include "i_system.h" +#include "i_sound.h" +#include "i_video.h" +#include "g_game.h" +#include "hu_stuff.h" +#include "wi_stuff.h" +#include "st_stuff.h" +#include "am_map.h" +#include "p_setup.h" +#include "r_draw.h" +#include "r_main.h" +#include "r_fps.h" +#include "d_main.h" +#include "d_deh.h" // Ty 04/08/98 - Externalizations +#include "lprintf.h" // jff 08/03/98 - declaration of lprintf +#include "am_map.h" + +boolean devparm; // started game with -devparm + +// jff 1/24/98 add new versions of these variables to remember command line +boolean clnomonsters; // checkparm of -nomonsters +boolean clrespawnparm; // checkparm of -respawn +boolean clfastparm; // checkparm of -fast +// jff 1/24/98 end definition of command line version of play mode switches + +boolean nomonsters; // working -nomonsters +boolean respawnparm; // working -respawn +boolean fastparm; // working -fast + +boolean singletics = false; // debug flag to cancel adaptiveness + +//jff 1/22/98 parms for disabling music and sound +boolean nosfxparm; +boolean nomusicparm; + +//jff 4/18/98 +extern boolean inhelpscreens; + +skill_t startskill; +int startepisode; +int startmap; +boolean autostart; +int ffmap; + +boolean advancedemo; + +const char *basesavegame; + +static int demosequence; // killough 5/2/98: made static +static int pagetic; +static const char *pagename; // CPhipps - const + +// wipegamestate can be set to -1 to force a wipe on the next draw +gamestate_t wipegamestate = GS_DEMOSCREEN; +extern boolean setsizeneeded; +extern int showMessages; + +//jff 4/19/98 list of standard IWAD names +const char *standard_iwads[]= +{ + "doom.wad", // Ultimate DOOM + "plutonia.wad", // Final DOOM - The Plutonia Experiment + "tnt.wad", // Final Doom - TNT: Evilution + "doom2.wad", // DOOM2 + "doom2f.wad", // DOOM2 French + "doom1.wad", // DOOM Shareware + "freedoom.wad", /* wart@kobold.org: added freedoom for Fedora Extras */ + NULL, +}; + +/* + * D_PostEvent - Event handling + * + * Called by I/O functions when an event is received. + * Try event handlers for each code area in turn. + * cph - in the true spirit of the Boom source, let the + * short ciruit operator madness begin! + */ + +void D_PostEvent(event_t *ev) +{ + /* cph - suppress all input events at game start + * FIXME: This is a lousy kludge */ + if (gametic < 3) return; + + if (M_Responder(ev)) + return; + + if (gamestate == GS_LEVEL) { + if (HU_Responder(ev)) + return; + if (ST_Responder(ev)) + return; + if (AM_Responder(ev)) + return; + } + + G_Responder(ev); +} + +// +// D_Wipe +// +// CPhipps - moved the screen wipe code from D_Display to here +// The screens to wipe between are already stored, this just does the timing +// and screen updating + +static void D_Wipe(void) +{ + boolean done; + int wipestart = I_GetTime () - 1; + + do + { + int nowtime, tics; + do + { + I_uSleep(5000); // CPhipps - don't thrash cpu in this loop + nowtime = I_GetTime(); + tics = nowtime - wipestart; + } + while (!tics); + wipestart = nowtime; + done = wipe_ScreenWipe(tics); + I_UpdateNoBlit(); + M_Drawer(); // menu is drawn even on top of wipes + I_FinishUpdate(); // page flip or blit buffer + } + while (!done); +} + +// +// D_PageDrawer +// +static void D_PageDrawer(void) +{ + // proff/nicolas 09/14/98 -- now stretchs bitmaps to fullscreen! + // CPhipps - updated for new patch drawing + // proff - added M_DrawCredits + if (pagename) + V_DrawNamePatch(0, 0, 0, pagename, CR_DEFAULT, VPT_STRETCH); + else + M_DrawCredits(); +} + +// +// D_Display +// draw current display, possibly wiping it from the previous +// + +void D_Display (void) +{ + static boolean isborderstate = false; + static boolean borderwillneedredraw = false; + static gamestate_t oldgamestate = -1; + boolean wipe = gamestate != wipegamestate; + boolean viewactive = false, isborder = false; + + if (nodrawers) // for comparative timing / profiling + return; + + if (!I_StartDisplay()) + return; + + // save the current screen if about to wipe + if (wipe) + wipe_StartScreen(); + + if (gamestate != GS_LEVEL) { // Not a level + switch (oldgamestate) { + case -1: + case GS_LEVEL: + V_SetPalette(0); // cph - use default (basic) palette + default: + break; + } + + switch (gamestate) { + case GS_INTERMISSION: + WI_Drawer(); + break; + case GS_FINALE: + F_Drawer(); + break; + case GS_DEMOSCREEN: + D_PageDrawer(); + break; + default: + break; + } + } else if (gametic != basetic) { // In a level + boolean redrawborderstuff; + + HU_Erase(); + + if (setsizeneeded) { // change the view size if needed + R_ExecuteSetViewSize(); + oldgamestate = -1; // force background redraw + } + + // Work out if the player view is visible, and if there is a border + viewactive = (!(automapmode & am_active) || (automapmode & am_overlay)) && !inhelpscreens; + isborder = viewactive ? (viewheight != SCREENHEIGHT) : (!inhelpscreens && (automapmode & am_active)); + + if (oldgamestate != GS_LEVEL) { + R_FillBackScreen (); // draw the pattern into the back screen + redrawborderstuff = isborder; + } else { + // CPhipps - + // If there is a border, and either there was no border last time, + // or the border might need refreshing, then redraw it. + redrawborderstuff = isborder && (!isborderstate || borderwillneedredraw); + // The border may need redrawing next time if the border surrounds the screen, + // and there is a menu being displayed + borderwillneedredraw = menuactive && isborder && viewactive && (viewwidth != SCREENWIDTH); + } + if (redrawborderstuff) + R_DrawViewBorder(); + + // Now do the drawing + if (viewactive) + R_RenderPlayerView (&players[displayplayer]); + if (automapmode & am_active) + AM_Drawer(); + ST_Drawer((viewheight != SCREENHEIGHT) || ((automapmode & am_active) && !(automapmode & am_overlay)), redrawborderstuff); + R_DrawViewBorder(); + HU_Drawer(); + } + + isborderstate = isborder; + oldgamestate = wipegamestate = gamestate; + + // draw pause pic + if (paused) { + // Simplified the "logic" here and no need for x-coord caching - POPE + V_DrawNamePatch((320 - V_NamePatchWidth("M_PAUSE"))/2, 4, + 0, "M_PAUSE", CR_DEFAULT, VPT_STRETCH); + } + + // menus go directly to the screen + M_Drawer(); // menu is drawn even on top of everything +#ifdef HAVE_NET + NetUpdate(); // send out any new accumulation +#else + D_BuildNewTiccmds(); +#endif + + // normal update + if (!wipe) + I_FinishUpdate (); // page flip or blit buffer + else { + // wipe update + wipe_EndScreen(); + D_Wipe(); + } + + I_EndDisplay(); + + //e6y: don't thrash cpu during pausing + if (paused) { + I_uSleep(1000); + } +} + +// +// D_DoomLoop() +// +// Not a globally visible function, +// just included for source reference, +// called by D_DoomMain, never exits. +// Manages timing and IO, +// calls all ?_Responder, ?_Ticker, and ?_Drawer, +// calls I_GetTime, I_StartFrame, and I_StartTic +// + +static void D_DoomLoop(void) +{ + for (;;) + { + WasRenderedInTryRunTics = false; + // frame syncronous IO operations + I_StartFrame (); + + if (ffmap == gamemap) ffmap = 0; + + // process one or more tics + if (singletics) + { + I_StartTic (); + G_BuildTiccmd (&netcmds[consoleplayer][maketic%BACKUPTICS]); + if (advancedemo) + D_DoAdvanceDemo (); + M_Ticker (); + G_Ticker (); + gametic++; + maketic++; + } + else + TryRunTics (); // will run at least one tic + + // killough 3/16/98: change consoleplayer to displayplayer + if (players[displayplayer].mo) // cph 2002/08/10 + S_UpdateSounds(players[displayplayer].mo);// move positional sounds + + // Update display, next frame, with current state. + if (!movement_smooth || !WasRenderedInTryRunTics || gamestate != wipegamestate) + D_Display(); + } +} + +// +// DEMO LOOP +// + +// +// D_PageTicker +// Handles timing for warped projection +// +void D_PageTicker(void) +{ + if (--pagetic < 0) + D_AdvanceDemo(); +} + +// +// D_AdvanceDemo +// Called after each demo or intro demosequence finishes +// +void D_AdvanceDemo (void) +{ + advancedemo = true; +} + +/* killough 11/98: functions to perform demo sequences + * cphipps 10/99: constness fixes + */ + +static void D_SetPageName(const char *name) +{ + pagename = name; +} + +static void D_DrawTitle1(const char *name) +{ + S_StartMusic(mus_intro); + pagetic = (TICRATE*170)/35; + D_SetPageName(name); +} + +static void D_DrawTitle2(const char *name) +{ + S_StartMusic(mus_dm2ttl); + D_SetPageName(name); +} + +/* killough 11/98: tabulate demo sequences + */ + +static struct +{ + void (*func)(const char *); + const char *name; +} const demostates[][4] = + { + { + {D_DrawTitle1, "TITLEPIC"}, + {D_DrawTitle1, "TITLEPIC"}, + {D_DrawTitle2, "TITLEPIC"}, + {D_DrawTitle1, "TITLEPIC"}, + }, + + { + {G_DeferedPlayDemo, "demo1"}, + {G_DeferedPlayDemo, "demo1"}, + {G_DeferedPlayDemo, "demo1"}, + {G_DeferedPlayDemo, "demo1"}, + }, + { + {D_SetPageName, NULL}, + {D_SetPageName, NULL}, + {D_SetPageName, NULL}, + {D_SetPageName, NULL}, + }, + + { + {G_DeferedPlayDemo, "demo2"}, + {G_DeferedPlayDemo, "demo2"}, + {G_DeferedPlayDemo, "demo2"}, + {G_DeferedPlayDemo, "demo2"}, + }, + + { +/* + {D_SetPageName, "HELP2"}, + {D_SetPageName, "HELP2"}, +*/ + {D_SetPageName, NULL}, + {D_SetPageName, NULL}, + {D_SetPageName, "CREDIT"}, + {D_DrawTitle1, "TITLEPIC"}, + }, + + { + {G_DeferedPlayDemo, "demo3"}, + {G_DeferedPlayDemo, "demo3"}, + {G_DeferedPlayDemo, "demo3"}, + {G_DeferedPlayDemo, "demo3"}, + }, + + { + {NULL}, + {NULL}, + {NULL}, + {D_SetPageName, "CREDIT"}, + }, + + { + {NULL}, + {NULL}, + {NULL}, + {G_DeferedPlayDemo, "demo4"}, + }, + + { + {NULL}, + {NULL}, + {NULL}, + {NULL}, + } + }; + +/* + * This cycles through the demo sequences. + * killough 11/98: made table-driven + */ + +void D_DoAdvanceDemo(void) +{ + players[consoleplayer].playerstate = PST_LIVE; /* not reborn */ + advancedemo = usergame = paused = false; + gameaction = ga_nothing; + + pagetic = TICRATE * 11; /* killough 11/98: default behavior */ + gamestate = GS_DEMOSCREEN; + + if (netgame && !demoplayback) + demosequence = 0; + else if (!demostates[++demosequence][gamemode].func) + demosequence = 0; + demostates[demosequence][gamemode].func + (demostates[demosequence][gamemode].name); +} + +// +// D_StartTitle +// +void D_StartTitle (void) +{ + gameaction = ga_nothing; + demosequence = -1; + D_AdvanceDemo(); +} + +// +// D_AddFile +// +// Add files to be loaded later by W_Init() +// +bool D_AddFile(const char *file) +{ + char relpath[PATH_MAX + 1]; + + if (numwadfiles == MAX_WAD_FILES) + I_Error("D_AddFile: Can't load more than %d WADs\n", MAX_WAD_FILES); + + snprintf(relpath, PATH_MAX, "%s/%s", I_DoomExeDir(), file); + + if (access(relpath, R_OK) == 0) + file = relpath; + else if (access(file, R_OK) != 0) { + lprintf(LO_WARN, "D_AddFile: %s not found\n", file); + return false; + } + + wadfiles[numwadfiles++] = (wadfile_info_t){ + .name = strdup(file), + .handle = NULL, + .data = NULL, + .size = 0, + }; + + return true; +} + +// +// CheckIWAD +// +// Verify a file is indeed tagged as an IWAD +// Scan its lumps for levelnames and return gamemode as indicated +// Detect missing wolf levels in DOOM II +// +// The filename to check is passed in iwadname, the gamemode detected is +// returned in gmode, hassec returns the presence of secret levels +// +// jff 4/19/98 Add routine to test IWAD for validity and determine +// the gamemode from it. Also note if DOOM II, whether secret levels exist +// CPhipps - const char* for iwadname, made static +static void CheckIWAD(const char *iwadname,GameMode_t *gmode,boolean *hassec) +{ + int ud=0,rg=0,sw=0,cm=0,sc=0; + wadinfo_t header; + FILE *fp; + + if (!(fp = fopen(iwadname, "rb"))) + I_Error("CheckIWAD: Can't open IWAD %s", iwadname); + + fread(&header, sizeof(header), 1, fp); + // read IWAD header + if (!strncmp(header.identification, "IWAD", 4)) + { + size_t length; + filelump_t *fileinfo; + + // read IWAD directory + header.numlumps = LONG(header.numlumps); + header.infotableofs = LONG(header.infotableofs); + length = header.numlumps; + fileinfo = calloc(sizeof(filelump_t), length); + fseek(fp, header.infotableofs, SEEK_SET); + fread(fileinfo, sizeof(filelump_t), length, fp); + + + // scan directory for levelname lumps + while (length--) + if (fileinfo[length].name[0] == 'E' && + fileinfo[length].name[2] == 'M' && + fileinfo[length].name[4] == 0) + { + if (fileinfo[length].name[1] == '4') + ++ud; + else if (fileinfo[length].name[1] == '3') + ++rg; + else if (fileinfo[length].name[1] == '2') + ++rg; + else if (fileinfo[length].name[1] == '1') + ++sw; + } + else if (fileinfo[length].name[0] == 'M' && + fileinfo[length].name[1] == 'A' && + fileinfo[length].name[2] == 'P' && + fileinfo[length].name[5] == 0) + { + ++cm; + if (fileinfo[length].name[3] == '3') + if (fileinfo[length].name[4] == '1' || + fileinfo[length].name[4] == '2') + ++sc; + } + + free(fileinfo); + } + else // missing IWAD tag in header + I_Error("CheckIWAD: IWAD tag %s not present", iwadname); + + // Determine game mode from levels present + // Must be a full set for whichever mode is present + // Lack of wolf-3d levels also detected here + + *gmode = indetermined; + *hassec = false; + if (cm>=30) + { + *gmode = commercial; + *hassec = sc>=2; + } + else if (ud>=9) + *gmode = retail; + else if (rg>=18) + *gmode = registered; + else if (sw>=9) + *gmode = shareware; +} + + +static void L_SetupConsoleMasks(void) { + int p; + int i; + const char *cena="ICWEFDA",*pos; //jff 9/3/98 use this for parsing console masks // CPhipps - const char*'s + + //jff 9/3/98 get mask for console output filter + if ((p = M_CheckParm ("-cout"))) { + lprintf(LO_DEBUG, "mask for console output: "); + if (++p != myargc && *myargv[p] != '-') + for (i=0,cons_output_mask=0;(size_t)i=7 && !strncasecmp(iwad+p-7,"tnt.wad",7)) { + doomverstr = "DOOM 2: TNT - Evilution"; + gamemission = pack_tnt; + } else if (p>=12 && !strncasecmp(iwad+p-12,"plutonia.wad",12)) { + doomverstr = "DOOM 2: Plutonia Experiment"; + gamemission = pack_plut; + } else { + doomverstr = "DOOM 2: Hell on Earth"; + gamemission = doom2; + } + break; + default: + doomverstr = "Public DOOM"; + gamemission = none; + break; + } + + /* cphipps - the main display. This shows the build date, copyright, and game type */ + lprintf(LO_ALWAYS, "%s %s (built %s), playing: %s\n" + "PrBoom is released under the GNU General Public license v2.0.\n" + "You are welcome to redistribute it under certain conditions.\n" + "It comes with ABSOLUTELY NO WARRANTY. See the file COPYING for details.\n", + PACKAGE, VERSION, version_date, doomverstr); + + // Add prboom.wad at the very beginning so it can be overriden by mods +#ifdef PRBOOMWAD + #include "prboom_wad.h" + wadfiles[numwadfiles++] = (wadfile_info_t){ + .name = "prboom.wad", + .data = prboom_wad, + .size = prboom_wad_size, + .handle = NULL, + }; +#else + if (!D_AddFile("prboom.wad")) + I_Error("PRBOOM.WAD not found\n"); +#endif + + if ((devparm = M_CheckParm("-devparm"))) + lprintf(LO_CONFIRM, "%s", s_D_DEVSTR); + + // set save path to -save parm or current dir + basesavegame = I_DoomExeDir(); + if ((p=M_CheckParm("-save")) && p 400) + scale = 400; + //jff 9/3/98 use logical output routine + lprintf (LO_CONFIRM,"turbo scale: %i%%\n",scale); + forwardmove[0] = forwardmove[0]*scale/100; + forwardmove[1] = forwardmove[1]*scale/100; + sidemove[0] = sidemove[0]*scale/100; + sidemove[1] = sidemove[1]*scale/100; + } + + // get skill / episode / map from parms + + startskill = sk_none; // jff 3/24/98 was sk_medium, just note not picked + startepisode = 1; + startmap = 1; + autostart = false; + + if ((p = M_CheckParm ("-skill")) && p < myargc-1) + { + startskill = myargv[p+1][0]-'1'; + autostart = true; + } + + if ((p = M_CheckParm ("-episode")) && p < myargc-1) + { + startepisode = myargv[p+1][0]-'0'; + startmap = 1; + autostart = true; + } + + if ((p = M_CheckParm ("-timer")) && p < myargc-1 && deathmatch) + { + int time = atoi(myargv[p+1]); + //jff 9/3/98 use logical output routine + lprintf(LO_CONFIRM,"Levels will end after %d minute%s.\n", time, time>1 ? "s" : ""); + } + + if ((p = M_CheckParm ("-warp")) || // killough 5/2/98 + (p = M_CheckParm ("-wart"))) + // Ty 08/29/98 - moved this check later so we can have -warp alone: && p < myargc-1) + { + startmap = 0; // Ty 08/29/98 - allow "-warp x" to go to first map in wad(s) + autostart = true; // Ty 08/29/98 - move outside the decision tree + if (gamemode == commercial) + { + if (p < myargc-1) + startmap = atoi(myargv[p+1]); // Ty 08/29/98 - add test if last parm + } + else // 1/25/98 killough: fix -warp xxx from crashing Doom 1 / UD + { + if (p < myargc-2) + { + startepisode = atoi(myargv[++p]); + startmap = atoi(myargv[p+1]); + } + } + } + // Ty 08/29/98 - later we'll check for startmap=0 and autostart=true + // as a special case that -warp * was used. Actually -warp with any + // non-numeric will do that but we'll only document "*" + + nomusicparm = M_CheckParm("-nosound") || M_CheckParm("-nomusic"); + nosfxparm = M_CheckParm("-nosound") || M_CheckParm("-nosfx"); + nodrawers = M_CheckParm ("-nodraw"); + noblit = M_CheckParm ("-noblit"); + + //proff 11/22/98: Added setting of viewangleoffset + if ((p = M_CheckParm("-viewangle"))) + { + viewangleoffset = atoi(myargv[p+1]); + viewangleoffset = viewangleoffset<0 ? 0 : (viewangleoffset>7 ? 7 : viewangleoffset); + viewangleoffset = (8-viewangleoffset) * ANG45; + } + + // init subsystems + + G_ReloadDefaults(); // killough 3/4/98: set defaults just loaded. + // jff 3/24/98 this sets startskill if it was -1 + +#ifndef NODEHSUPPORT + // ty 03/09/98 do dehacked stuff + // Note: do this before any other since it is expected by + // the deh patch author that this is actually part of the EXE itself + // Using -deh in BOOM, others use -dehacked. + // Ty 03/18/98 also allow .bex extension. .bex overrides if both exist. + + if ((p = M_CheckParm ("-deh"))) + { + char file[PATH_MAX+1]; // cph - localised + // the parms after p are deh/bex file names, + // until end of parms or another - preceded parm + // Ty 04/11/98 - Allow multiple -deh files in a row + + while (++p != myargc && *myargv[p] != '-') + { + AddDefaultExtension(strcpy(file, myargv[p]), ".bex"); + if (access(file, F_OK)) // nope + { + AddDefaultExtension(strcpy(file, myargv[p]), ".deh"); + if (access(file, F_OK)) // still nope + I_Error("D_DoomMainSetup: Cannot find .deh or .bex file named %s",myargv[p]); + } + // during the beta we have debug output to dehout.txt + D_ProcessDehFile(file,D_dehout(),0); + } + } + // ty 03/09/98 end of do dehacked stuff +#endif + + // add any files specified on the command line with -file wadfile + // to the wad list + if ((p = M_CheckParm ("-file"))) + { + // the parms after p are wadfile/lump names, + // until end of parms or another - preceded parm + while (++p != myargc && *myargv[p] != '-') + if (D_AddFile(myargv[p])) + modifiedgame = true; + } + + if (!(p = M_CheckParm("-playdemo")) || p >= myargc-1) { /* killough */ + if ((p = M_CheckParm ("-fastdemo")) && p < myargc-1) /* killough */ + fastdemo = true; // run at fastest speed possible + else + p = M_CheckParm ("-timedemo"); + } + + if (p && p < myargc-1) + { + char file[PATH_MAX+1]; // cph - localised + strcpy(file,myargv[p+1]); + AddDefaultExtension(file,".lmp"); // killough + D_AddFile (file); + //jff 9/3/98 use logical output routine + lprintf(LO_CONFIRM,"Playing demo %s\n",file); + if ((p = M_CheckParm ("-ffmap")) && p < myargc-1) { + ffmap = atoi(myargv[p+1]); + } + } + + // internal translucency set to config file value // phares + general_translucency = default_translucency; // phares + + lprintf(LO_INFO, "I_Init: Setting up machine state.\n"); + I_Init(); + + // CPhipps - move up netgame init + lprintf(LO_INFO, "D_InitNetGame: Checking for network game.\n"); + D_InitNetGame(); + + lprintf(LO_INFO, "W_Init: Init WADfiles.\n"); + W_Init(); // CPhipps - handling of wadfiles init changed + + lprintf(LO_INFO, "V_Init: Setting up video.\n"); + V_Init(SCREENWIDTH, SCREENHEIGHT, default_videomode); + +#ifndef NODEHSUPPORT + // e6y: option to disable automatic loading of dehacked-in-wad lump + if (!M_CheckParm ("-nodeh")) + if ((p = W_CheckNumForName("DEHACKED")) != -1) // cph - add dehacked-in-a-wad support + D_ProcessDehFile(NULL, D_dehout(), p); +#endif + + lprintf(LO_INFO, "M_Init: Init miscellaneous info.\n"); + M_Init(); + +#ifdef HAVE_NET + // CPhipps - now wait for netgame start + D_CheckNetGame(); +#endif + + lprintf(LO_INFO, "R_Init: Init DOOM refresh daemon:\n"); + R_Init(); + + lprintf(LO_INFO, "P_Init: Init Playloop state.\n"); + P_Init(); + + lprintf(LO_INFO, "S_Init: Setting up sound.\n"); + S_Init(snd_SfxVolume, snd_MusicVolume); + + lprintf(LO_INFO, "HU_Init: Setting up heads up display.\n"); + HU_Init(); + + lprintf(LO_INFO, "ST_Init: Init status bar.\n"); + ST_Init(); + + // Show hacked startup messages, if any + if (*startup1 || *startup2 || *startup3 || *startup4 || *startup5) + { + if (*startup1) lprintf(LO_INFO, "%s", startup1); + if (*startup2) lprintf(LO_INFO, "%s", startup2); + if (*startup3) lprintf(LO_INFO, "%s", startup3); + if (*startup4) lprintf(LO_INFO, "%s", startup4); + if (*startup5) lprintf(LO_INFO, "%s", startup5); + } + + lprintf(LO_INFO, "\n"); + + idmusnum = -1; //jff 3/17/98 insure idmus number is blank + + // start the apropriate game based on parms + + // killough 12/98: + // Support -loadgame with -record and reimplement -recordfrom. + + if ((slot = M_CheckParm("-recordfrom")) && (p = slot+2) < myargc) + G_RecordDemo(myargv[p]); + else + { + slot = M_CheckParm("-loadgame"); + if ((p = M_CheckParm("-record")) && ++p < myargc) + { + autostart = true; + G_RecordDemo(myargv[p]); + } + } + + if ((p = M_CheckParm ("-fastdemo")) && ++p < myargc) + { // killough + fastdemo = true; // run at fastest speed possible + timingdemo = true; // show stats after quit + G_DeferedPlayDemo(myargv[p]); + singledemo = true; // quit after one demo + } + else if ((p = M_CheckParm("-timedemo")) && ++p < myargc) + { + singletics = true; + timingdemo = true; // show stats after quit + G_DeferedPlayDemo(myargv[p]); + singledemo = true; // quit after one demo + } + else if ((p = M_CheckParm("-playdemo")) && ++p < myargc) + { + G_DeferedPlayDemo(myargv[p]); + singledemo = true; // quit after one demo + } + + if (slot && ++slot < myargc) + { + slot = atoi(myargv[slot]); // killough 3/16/98: add slot info + G_LoadGame(slot, true); // killough 5/15/98: add command flag // cph - no filename + } + else if (!singledemo) + { + if (autostart || netgame) + { + G_InitNew(startskill, startepisode, startmap); + if (demorecording) + G_BeginRecording(); + } + else + D_StartTitle(); // start up intro loop + } +} + +// +// D_DoomMain +// + +void D_DoomMain(void) +{ + D_DoomMainSetup(); // CPhipps - setup out of main execution stack + D_DoomLoop(); // never returns +} diff --git a/components/doom/prboom/d_main.h b/components/doom/prboom/d_main.h new file mode 100644 index 0000000..40b1454 --- /dev/null +++ b/components/doom/prboom/d_main.h @@ -0,0 +1,74 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Main startup and splash screenstuff. + * + *-----------------------------------------------------------------------------*/ + +#ifndef __D_MAIN__ +#define __D_MAIN__ + +#include "d_event.h" +#include "w_wad.h" + +#ifdef __GNUG__ +#pragma interface +#endif + +extern const char *basesavegame; // killough 2/16/98: savegame path + +//jff 1/24/98 make command line copies of play modes available +extern boolean clnomonsters; // checkparm of -nomonsters +extern boolean clrespawnparm; // checkparm of -respawn +extern boolean clfastparm; // checkparm of -fast +//jff end of external declaration of command line playmode + +extern boolean nosfxparm; +extern boolean nomusicparm; +extern int ffmap; + +// Called by IO functions when input is detected. +void D_PostEvent(event_t* ev); + +// Demo stuff +extern boolean advancedemo; +void D_AdvanceDemo(void); +void D_DoAdvanceDemo (void); + +// +// BASE LEVEL +// + +void D_Display(void); +void D_PageTicker(void); +void D_StartTitle(void); +void D_DoomMain(void); +bool D_AddFile(const char *file); + +#endif diff --git a/components/doom/prboom/d_net.h b/components/doom/prboom/d_net.h new file mode 100644 index 0000000..fcdeb6c --- /dev/null +++ b/components/doom/prboom/d_net.h @@ -0,0 +1,214 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Networking stuff. + * + *-----------------------------------------------------------------------------*/ + + +#ifndef __D_NET__ +#define __D_NET__ + +#include "d_player.h" + + +#ifdef __GNUG__ +#pragma interface +#endif + + +// +// Network play related stuff. +// There is a data struct that stores network +// communication related stuff, and another +// one that defines the actual packets to +// be transmitted. +// + +#define DOOMCOM_ID 0x12345678l + +// Max computers/players in a game. +#define MAXNETNODES 8 + + +typedef enum +{ + CMD_SEND = 1, + CMD_GET = 2 + +} command_t; + + +// +// Network packet data. +// +typedef struct +{ + // High bit is retransmit request. + unsigned checksum; + // Only valid if NCMD_RETRANSMIT. + byte retransmitfrom; + + byte starttic; + byte player; + byte numtics; + ticcmd_t cmds[BACKUPTICS]; + +} doomdata_t; + +// +// Startup packet difference +// SG: 4/12/98 +// Added so we can send more startup data to synch things like +// bobbing, recoil, etc. +// this is just mapped over the ticcmd_t array when setup packet is sent +// +// Note: the original code takes care of startskill, deathmatch, nomonsters +// respawn, startepisode, startmap +// Note: for phase 1 we need to add monsters_remember, variable_friction, +// weapon_recoil, allow_pushers, over_under, player_bobbing, +// fastparm, demo_insurance, and the rngseed +//Stick all options into bytes so we don't need to mess with bitfields +//WARNING: make sure this doesn't exceed the size of the ticcmds area! +//sizeof(ticcmd_t)*BACKUPTICS +//This is the current length of our extra stuff +// +//killough 5/2/98: this should all be replaced by calls to G_WriteOptions() +//and G_ReadOptions(), which were specifically designed to set up packets. +//By creating a separate struct and functions to read/write the options, +//you now have two functions and data to maintain instead of just one. +//If the array in g_game.c which G_WriteOptions()/G_ReadOptions() operates +//on, is too large (more than sizeof(ticcmd_t)*BACKUPTICS), it can +//either be shortened, or the net code needs to divide it up +//automatically into packets. The STARTUPLEN below is non-portable. +//There's a portable way to do it without having to know the sizes. + +#define STARTUPLEN 12 +typedef struct +{ + byte monsters_remember; + byte variable_friction; + byte weapon_recoil; + byte allow_pushers; + byte over_under; + byte player_bobbing; + byte fastparm; + byte demo_insurance; + unsigned long rngseed; + char filler[sizeof(ticcmd_t)*BACKUPTICS-STARTUPLEN]; +} startup_t; + +typedef enum { + // Leave space, so low values corresponding to normal netgame setup packets can be ignored + nm_plcolour = 3, + nm_savegamename = 4, +} netmisctype_t; + +typedef struct +{ + netmisctype_t type; + size_t len; + byte value[sizeof(ticcmd_t)*BACKUPTICS - sizeof(netmisctype_t) - sizeof(size_t)]; +} netmisc_t; + +typedef struct +{ + // Supposed to be DOOMCOM_ID? + long id; + + // DOOM executes an int to execute commands. + short intnum; + // Communication between DOOM and the driver. + // Is CMD_SEND or CMD_GET. + short command; + // Is dest for send, set by get (-1 = no packet). + short remotenode; + + // Number of bytes in doomdata to be sent + short datalength; + + // Info common to all nodes. + // Console is allways node 0. + short numnodes; + // Flag: 1 = no duplication, 2-5 = dup for slow nets. + short ticdup; + // Flag: 1 = send a backup tic in every packet. + short extratics; + // Flag: 1 = deathmatch. + short deathmatch; + // Flag: -1 = new game, 0-5 = load savegame + short savegame; + short episode; // 1-3 + short map; // 1-9 + short skill; // 1-5 + + // Info specific to this node. + short consoleplayer; + short numplayers; + + // These are related to the 3-display mode, + // in which two drones looking left and right + // were used to render two additional views + // on two additional computers. + // Probably not operational anymore. + // 1 = left, 0 = center, -1 = right + short angleoffset; + // 1 = drone + short drone; + + // The packet data to be sent. + doomdata_t data; + +} doomcom_t; + +// Create any new ticcmds and broadcast to other players. +#ifdef HAVE_NET +void NetUpdate (void); +#else +void D_BuildNewTiccmds(void); +#endif + +//? how many ticks to run? +void TryRunTics (void); + +// CPhipps - move to header file +void D_InitNetGame (void); // This does the setup +void D_CheckNetGame(void); // This waits for game start + +// CPhipps - misc info broadcast +void D_NetSendMisc(netmisctype_t type, size_t len, void* data); + +// CPhipps - ask server for a wad file we need +boolean D_NetGetWad(const char* name); + +// Netgame stuff (buffers and pointers, i.e. indices). +extern doomcom_t *doomcom; +extern doomdata_t *netbuffer; // This points inside doomcom. + +#endif diff --git a/components/doom/prboom/d_player.h b/components/doom/prboom/d_player.h new file mode 100644 index 0000000..a45abe8 --- /dev/null +++ b/components/doom/prboom/d_player.h @@ -0,0 +1,234 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Player state structure. + * + *-----------------------------------------------------------------------------*/ + + +#ifndef __D_PLAYER__ +#define __D_PLAYER__ + + +// The player data structure depends on a number +// of other structs: items (internal inventory), +// animation states (closely tied to the sprites +// used to represent them, unfortunately). +#include "d_items.h" +#include "p_pspr.h" + +// In addition, the player is just a special +// case of the generic moving object/actor. +#include "p_mobj.h" + +// Finally, for odd reasons, the player input +// is buffered within the player data struct, +// as commands per game tick. +#include "d_ticcmd.h" + +#ifdef __GNUG__ +#pragma interface +#endif + + +// +// Player states. +// +typedef enum +{ + // Playing or camping. + PST_LIVE, + // Dead on the ground, view follows killer. + PST_DEAD, + // Ready to restart/respawn??? + PST_REBORN + +} playerstate_t; + + +// +// Player internal flags, for cheats and debug. +// +typedef enum +{ + // No clipping, walk through barriers. + CF_NOCLIP = 1, + // No damage, no health loss. + CF_GODMODE = 2, + // Not really a cheat, just a debug aid. + CF_NOMOMENTUM = 4 + +} cheat_t; + + +// +// Extended player object info: player_t +// +typedef struct player_s +{ + mobj_t* mo; + playerstate_t playerstate; + ticcmd_t cmd; + + // Determine POV, + // including viewpoint bobbing during movement. + // Focal origin above r.z + fixed_t viewz; + // Base height above floor for viewz. + fixed_t viewheight; + // Bob/squat speed. + fixed_t deltaviewheight; + // bounded/scaled total momentum. + fixed_t bob; + + /* killough 10/98: used for realistic bobbing (i.e. not simply overall speed) + * mo->momx and mo->momy represent true momenta experienced by player. + * This only represents the thrust that the player applies himself. + * This avoids anomolies with such things as Boom ice and conveyors. + */ + fixed_t momx, momy; // killough 10/98 + + // This is only used between levels, + // mo->health is used during levels. + int health; + int armorpoints; + // Armor type is 0-2. + int armortype; + + // Power ups. invinc and invis are tic counters. + int powers[NUMPOWERS]; + boolean cards[NUMCARDS]; + boolean backpack; + + // Frags, kills of other players. + int frags[MAXPLAYERS]; + weapontype_t readyweapon; + + // Is wp_nochange if not changing. + weapontype_t pendingweapon; + + boolean weaponowned[NUMWEAPONS]; + int ammo[NUMAMMO]; + int maxammo[NUMAMMO]; + + // True if button down last tic. + int attackdown; + int usedown; + + // Bit flags, for cheats and debug. + // See cheat_t, above. + int cheats; + + // Refired shots are less accurate. + int refire; + + // For intermission stats. + int killcount; + int itemcount; + int secretcount; + + // Hint messages. // CPhipps - const + const char* message; + + // For screen flashing (red or bright). + int damagecount; + int bonuscount; + + // Who did damage (NULL for floors/ceilings). + mobj_t* attacker; + + // So gun flashes light up areas. + int extralight; + + // Current PLAYPAL, ??? + // can be set to REDCOLORMAP for pain, etc. + int fixedcolormap; + + // Player skin colorshift, + // 0-3 for which color to draw player. + int colormap; + + // Overlay view sprites (gun, etc). + pspdef_t psprites[NUMPSPRITES]; + + // True if secret level has been done. + boolean didsecret; + +} player_t; + + +// +// INTERMISSION +// Structure passed e.g. to WI_Start(wb) +// +typedef struct +{ + boolean in; // whether the player is in game + + // Player stats, kills, collected items etc. + int skills; + int sitems; + int ssecret; + int stime; + int frags[4]; + int score; // current score on entry, modified on return + +} wbplayerstruct_t; + +typedef struct +{ + int epsd; // episode # (0-2) + + // if true, splash the secret level + boolean didsecret; + + // previous and next levels, origin 0 + int last; + int next; + + int maxkills; + int maxitems; + int maxsecret; + int maxfrags; + + // the par time + int partime; + + // index of this player in game + int pnum; + + wbplayerstruct_t plyr[MAXPLAYERS]; + + // CPhipps - total game time for completed levels so far + int totaltimes; + +} wbstartstruct_t; + + +#endif diff --git a/components/doom/prboom/d_server.c b/components/doom/prboom/d_server.c new file mode 100644 index 0000000..dd16483 --- /dev/null +++ b/components/doom/prboom/d_server.c @@ -0,0 +1,754 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2004 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Network game server code + * New for LxDoom, but drawing ideas and code fragments from the + * earlier net code + *----------------------------------------------------------------------------- + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#include +#include +#include +#include + +#ifdef USE_SDL_NET + #include "SDL.h" +#endif + +#include "doomtype.h" +#include "protocol.h" +#include "i_network.h" +#ifndef PRBOOM_SERVER +#include "m_fixed.h" +#endif +#include "i_system.h" +#include "m_swap.h" + +#ifndef HAVE_NET + +int main(void) +{ + fprintf(stderr, + PACKAGE "-server: You must compile with networking enabled!\n"); + exit(1); + return 1; +} + +#else + +#ifndef HAVE_GETOPT +/* The following code for getopt is from the libc-source of FreeBSD, + * it might be changed a little bit. + * Florian Schulze (florian.schulze@gmx.net) + */ + +/* + * Copyright (c) 1987, 1993, 1994 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University 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 REGENTS 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. + */ + +#if defined(LIBC_SCCS) && !defined(lint) +#if 0 +static char sccsid[] = "@(#)getopt.c 8.3 (Berkeley) 4/27/95"; +#endif +static const char rcsid[] = "$FreeBSD$"; +#endif /* LIBC_SCCS and not lint */ + +int opterr = 1, /* if error message should be printed */ + optind = 1, /* index into parent argv vector */ + optopt, /* character checked for validity */ + optreset; /* reset getopt */ +char *optarg; /* argument associated with option */ + +#define BADCH (int)'?' +#define BADARG (int)':' +#define EMSG "" + +char *__progname="prboom_server"; + +/* + * getopt -- + * Parse argc/argv argument vector. + */ +int +getopt(nargc, nargv, ostr) + int nargc; + char * const *nargv; + const char *ostr; +{ + extern char *__progname; + static char *place = EMSG; /* option letter processing */ + char *oli; /* option letter list index */ + int ret; + + if (optreset || !*place) { /* update scanning pointer */ + optreset = 0; + if (optind >= nargc || *(place = nargv[optind]) != '-') { + place = EMSG; + return (-1); + } + if (place[1] && *++place == '-') { /* found "--" */ + ++optind; + place = EMSG; + return (-1); + } + } /* option letter okay? */ + if ((optopt = (int)*place++) == (int)':' || + !(oli = strchr(ostr, optopt))) { + /* + * if the user didn't specify '-' as an option, + * assume it means -1. + */ + if (optopt == (int)'-') + return (-1); + if (!*place) + ++optind; + if (opterr && *ostr != ':') + (void)fprintf(stderr, + "%s: illegal option -- %c\n", __progname, optopt); + return (BADCH); + } + if (*++oli != ':') { /* don't need argument */ + optarg = NULL; + if (!*place) + ++optind; + } + else { /* need an argument */ + if (*place) /* no white space */ + optarg = place; + else if (nargc <= ++optind) { /* no arg */ + place = EMSG; + if (*ostr == ':') + ret = BADARG; + else + ret = BADCH; + if (opterr) + (void)fprintf(stderr, + "%s: option requires an argument -- %c\n", + __progname, optopt); + return (ret); + } + else /* white space */ + optarg = nargv[optind]; + place = EMSG; + ++optind; + } + return (optopt); /* dump back option letter */ +} +#else +#include +#endif + +#define MAXPLAYERS 4 +#define BACKUPTICS 12 + +// Dummies to forfill l_udp.c unused client stuff +int M_CheckParm(const char* p) { p = NULL; return 1; } +int myargc; +char** myargv; + +void NORETURN I_Error(const char *error, ...) // killough 3/20/98: add const +{ + va_list argptr; + va_start(argptr,error); + vfprintf(stderr,error,argptr); + va_end(argptr); + exit(-1); +} + +int playerjoingame[MAXPLAYERS], playerleftgame[MAXPLAYERS]; +UDP_CHANNEL remoteaddr[MAXPLAYERS]; +enum { pc_unused, pc_connected, pc_ready, pc_confirmedready, pc_playing, pc_quit } playerstate[MAXPLAYERS]; +int displaycounter; + +boolean n_players_in_state(int n, int ps) { + int i,j; + for (i=j=0;itic); +} + + + +void read_config_file(FILE* fp, struct setup_packet_s* sp) +{ + byte* gameopt = sp->game_options; + + while (!feof(fp)) { + char def[80]; + char strparm[100]; + if (fscanf (fp, "%79s %99[^\n]\n", def, strparm) == 2) { + int v = atoi(strparm); + if (!strcmp(def,"default_skill")) { + if (verbose) printf("config file sets default_skill to %d\n",v); + sp->skill = v-1; + } else if (!strcmp(def,"default_compatibility_level")) { + if (verbose) printf("config file sets compatibility_level to %d\n",v); + if (v == -1) v = MAX_COMPATIBILITY_LEVEL-1; //e6y: -1 => maxcompat + sp->complevel = v; + } else { + int i; + for (i=0; i= MAXPLAYERS); } + +int main(int argc, char** argv) +{ +#ifndef USE_SDL_NET + int localport = 5030; +#else + Uint16 localport = 5030; +#endif + int numplayers = 2, xtratics = 0, ticdup = 1; + int exectics = 0; // gametics completed + struct setup_packet_s setupinfo = { 2, 0, 1, 1, 1, 0, best_compatibility, 0, 0}; + char**wadname = NULL; + char**wadget = NULL; + int numwads = 0; + { + int opt; + byte *gameopt = setupinfo.game_options; + + memcpy(gameopt, &def_game_options, sizeof (setupinfo.game_options)); + while ((opt = getopt(argc, argv, "c:t:x:p:e:l:adrfns:N:vw:")) != EOF) + switch (opt) { + case 'c': + { + FILE *cf = fopen(optarg,"r"); + if (!cf) { perror("fopen"); return -1; } + read_config_file(cf,&setupinfo); + fclose(cf); + } + break; + case 't': + if (optarg) ticdup = atoi(optarg); + break; + case 'x': + if (optarg) xtratics = atoi(optarg); + break; + case 'p': + if (optarg) localport = atoi(optarg); + break; + case 'e': + if (optarg) setupinfo.episode = atoi(optarg); + break; + case 'l': + if (optarg) setupinfo.level = atoi(optarg); + break; + case 'a': + setupinfo.deathmatch = 2; + break; + case 'd': + setupinfo.deathmatch = 1; + break; + case 'r': + setupinfo.game_options[6] = 1; + break; + case 'f': + setupinfo.game_options[7] = 1; + break; + case 'n': + setupinfo.game_options[8] = 1; + break; + case 's': + if (optarg) setupinfo.skill = atoi(optarg)-1; + break; + case 'N': + if (optarg) setupinfo.players = numplayers = atoi(optarg); + break; + case 'v': + verbose++; + break; + case 'w': + if (optarg) { + char *p; + wadname = realloc(wadname, ++numwads * sizeof *wadname); + wadget = realloc(wadget , numwads * sizeof *wadget ); + wadname[numwads-1] = strdup(optarg); + if ((p = strchr(wadname[numwads-1], ','))) { + *p++ = 0; wadget[numwads-1] = p; + } else wadget[numwads-1] = NULL; + } + break; + } + } + + setupinfo.ticdup = ticdup; setupinfo.extratic = xtratics; + { /* Random number seed + * Mirrors the corresponding code in G_ReadOptions */ + int rngseed = (int)time(NULL); + setupinfo.game_options[13] = rngseed & 0xff; + rngseed >>= 8; + setupinfo.game_options[12] = rngseed & 0xff; + rngseed >>= 8; + setupinfo.game_options[11] = rngseed & 0xff; + rngseed >>= 8; + setupinfo.game_options[10] = rngseed & 0xff; + } + I_InitSockets(localport); + + printf("Listening on port %d, waiting for %d players\n", localport, numplayers); + + { // no players initially + int i; + for (i=0; i2) printf("Received packet:"); + switch (packet->type) { + case PKT_INIT: + if (!ingame) { + { + int n; + struct setup_packet_s *sinfo = (void*)(packet+1); + + /* Find player number and add to the game */ + n = *(short*)(packet+1); + + if (badplayer(n) || playerstate[n] != pc_unused) + for (n=0; nyourplayer = n; + sinfo->numwads = numwads; + for (i=0; iwadnames + extrabytes, wadname[i]); + extrabytes += strlen(wadname[i]) + 1; + } + I_SendPacketTo(packet, sizeof *packet + sizeof setupinfo + extrabytes, + remoteaddr+n); + I_uSleep(10000); + I_SendPacketTo(packet, sizeof *packet + sizeof setupinfo + extrabytes, + remoteaddr+n); + } + } + } + break; + case PKT_GO: + if (!ingame) { + int from = *(byte*)(packet+1); + + if (badplayer(from) || playerstate[from] == pc_unused) break; + if (confirming) { + if (playerstate[from] != pc_confirmedready) curplayers++; + playerstate[from] = pc_confirmedready; + } else + playerstate[from] = pc_ready; + } + break; + case PKT_TICC: + { + byte tics = *(byte*)(packet+1); + int from = *(((byte*)(packet+1))+1); + + if (badplayer(from)) break; + + if (verbose>2) + printf("tics %ld - %ld from %d\n", ptic(packet), ptic(packet) + tics - 1, from); + if (ptic(packet) > remoteticfrom[from]) { + // Missed tics, so request a resend + packet_set(packet, PKT_RETRANS, remoteticfrom[from]); + I_SendPacketTo(packet, sizeof *packet, remoteaddr+from); + } else { + ticcmd_t *newtic = (void*)(((byte*)(packet+1))+2); + if (ptic(packet) + tics < remoteticfrom[from]) break; // Won't help + remoteticfrom[from] = ptic(packet); + while (tics--) + netcmds[from][remoteticfrom[from]++%BACKUPTICS] = *newtic++; + } + } + break; + case PKT_RETRANS: + { + int from = *(byte*)(packet+1); + if (badplayer(from)) break; + + if (verbose>2) printf("%d requests resend from %d\n", from, ptic(packet)); + remoteticto[from] = ptic(packet); + } + break; + case PKT_QUIT: + { + int from = *(byte*)(packet+1); + if (badplayer(from)) break; + + if (!ingame && playerstate[from] != pc_unused) { + // If we already got a PKT_GO, we have to remove this player frmo the count of ready players. And we then flag this player slot as vacant. + printf("player %d pulls out\n", from); + if (playerstate[from] == pc_confirmedready) curplayers--; + playerstate[from] = pc_unused; + } else + if (playerleftgame[from] == INT_MAX) { // In the game + playerleftgame[from] = ptic(packet); + --curplayers; + if (verbose) printf("%d quits at %d (%d left)\n", from, ptic(packet),curplayers); + if (ingame && !curplayers) exit(0); // All players have exited + } + } + // Fall through and broadcast it + case PKT_EXTRA: + BroadcastPacket(packet, len); + if (packet->type == PKT_EXTRA) { + if (verbose>2) printf("misc from %d\n", *(((byte*)(packet+1))+1)); + } + break; + case PKT_WAD: + { + int i; + int from = *(byte*)(packet+1); + char *name = 1 + (char*)(packet+1); + size_t size = sizeof(packet_header_t); + packet_header_t *reply; + + if (badplayer(from) || playerstate[from] != pc_unused) break; + + if (verbose) printf("Request for %s ", name); + for (i=0; itype); + break; + } + } + free(packet); + if (!ingame && n_players_in_state(numplayers,pc_confirmedready)) { + int i; + packet_header_t gopacket; + packet = &gopacket; + ingame=true; + printf("All players joined, beginning game.\n"); + for (i=0; i1) printf("%d new tics can be run\n", lowtic - exectics); + + if (lowtic > exectics) + exectics = lowtic; // count exec'ed tics + // Now send all tics up to lowtic + for (i=0; i1) printf("sending %d tics to %d\n", tics, i); + while (tics--) { + int j, playersthistic = 0; + byte *q = p++; + for (j=0; j remoteticto[i])) { + *p++ = j; + memcpy(p, &netcmds[j][remoteticto[i]%BACKUPTICS], sizeof(ticcmd_t)); + p += sizeof(ticcmd_t); + playersthistic++; + } + *q = playersthistic; + remoteticto[i]++; + } + I_SendPacketTo(packet, p - ((byte*)packet), remoteaddr+i); + free(packet); + } + { + if (remoteticfrom[i] == remoteticto[i]) { + backoffcounter[i] = 0; + } else if (remoteticfrom[i] > remoteticto[i]+1) { + if ((backoffcounter[i] += remoteticfrom[i] - remoteticto[i] - 1) > 35) { + packet_header_t *packet = malloc(sizeof(packet_header_t)); + packet_set(packet, PKT_BACKOFF, remoteticto[i]); + I_SendPacketTo(packet,sizeof *packet,remoteaddr+i); + backoffcounter[i] = 0; + if (verbose) printf("telling client %d to back off\n",i); + free(packet); + } + } + } + } + } + if (!((ingame ? 0xff : 0xf) & displaycounter++)) { + int i; + fprintf(stderr,"Player states: ["); + for (i=0;iOVlvs%v zqec_2CDFt}jInEoQ3DZU2`X67h~<21?K1~3H@Uh0_kEu4eV^z1&di#<&#vpY+TQyN zj$!eGhO`R^IdCwDz-2Afl^O^mA|e=uv9Pe{)vK4TuC7ohboaHkb2X4!3k{?sD!^6Q z&o0Q-f;o8b<*r@Nwr*`*x9(n5RnwwHH)hPZQd)X8KffV8{a9k+k@)!iQBix8%DSMS ztpNcw{ratQcdv4FU211nZf#v=VKGH2E$!7S-@qVSS2sl{OcV-Zgu*C7l!Sy3!n8Iq zEmxQu4a}7z%!U0-LmhLhhB>l|*e!5k{iVuX z#UWesgKE+Ps#1Ix#rG?Vai0?9ny++939*X_vX1bz2y&P9bM577XVBKxcJJQ3rlzJF zH*Q?Ha^>vVvkeUm$BrF4c<|u<{rh+A+ErIqS6f@VZr!?7t5z*ty0pB!ysWHj%9JU^ z#l`vg`RVEDiHV8v@$penQA(vUBqSstAi&qx*WKOS$;rvi&Ta}*T-=tO-IS7YAwKa~ zRLmY_L~T&WD&L@Tci&Q1_jEg_7z^tVskEO#FFRdbsqk1`)xp|Dd)AfJRZXc~R9sV* zziLMM($d88{P-E^QBzVPisM7FV}ep5eB(p<#RR$6mZw)ui7C&In358d9n&vS=^7Pa z7t+sSMp=4sX?%8mRARa^CO$wJ)h|ft>Ko+5Fr}?G;v0{IoTzc%GsC(jvDcyyVW}$t zT{AasFh`CsH8sqP8B9tF6BNW)TQh{T5z<0PBOzxAIY!8SLh1;qA!I2bWrUOxl1)e= zA)qqQ*S&j8Lj$vG7gJTml$J6vF^sP-SP={ZZx{x~fB~R)IU)Ik#NfQGH<-pFOhXN` ze+IKPk*Nw`$}FChN?VH!nz9WVQ*_V93r|FmgG#a|g!0KWGR%I4sbZLXhEXz%9m9~i zAX4i~R=JZ!c3_-NA?_BwcD>v!bYTi=N&$qp6Jke*ln^K+Ol=5rFM^o?U6~8yLM^E& zCi!*w`7%O$B|08rVM<5{)6(K?X4cop$WcefRwx|mDGP8Cd&q=+BqYtpDN!MhbuweN zZhg6a{qvP8A1zw+V9uP|Q>Qi+6*XpOUrbFsmymFJ#E5TIsv}C}!QkM%etx@se0C@l zTU=afoSfFleN;9*C63ILxqZwlH6dj%MLSdm$m?adZQIW<2pO+e#?~gJk_Ay86 zn16lD>|4XsFJbD+nU5#ETwm0_GW)@j)Z66=H)f8wIw}0(1m)?XkR#c_2hsy~r~2(k z@TrOOT&+@6hPy0OI?V{S8y_go@{^@_n#H2u01$^{&qt{(}@#}M~`0o z;)`?p_MNV;Kel!2k&iz;mNSg)Ql2*OI0*#Et)#s<2*}^-*xj za=-X;&)7*Wk=af|6XZeRX1;+E4~4j|T*px&JiTVlvE@?_E}F1+PTtO`={qK*))pnK z%O0^JRkb)lxiBuIOcgjK+;4n{XKtV(%g<%!q=cHh@D-^c3*-EzgewYzozi^d@d~rW z6B5d@RZ~)xg$cn~DxXB9A~x75($9`*$$oS~b)zou%o3M_MY0_uj8+E<=Q$D3HFM$w zQ&-0!H>pC2QWfz`GXa+i=Bgj^)#G$BU_*-OX{Le>#dNyt1xrVvs{2&fG7 z_27KVxqU4M*0+(=?PZUA|vqrUPiuwi8$cS7QU8V~@U94V0~4GacpYY)`YN_I7mvDFJV*BW9> zCM#@*#ojHAY${Y<&l>b&`oMFk z0Vl@zeHHI>FxGQlq@pg|b@LGCnn4b02HGz5v!3T8o91a=>MF@~Fiy2K7$ehrdie0e z0|)MY_F2oWT{pLH|8di%D>XIe)~so$syeZ3*;fk|9G*Atz|5JSO`g1~v~*ix;ijyt zn)LKF$;nmm@k?W47eq#uDU~ya44FJ|V6mTHfsap?LXqz3n(W{ZZ*3hTldWlpuR1)U z;PJqEQj9M;~Be#uFZi*eUK62oi@PMizJ{5yJ=LNXV^l_f%>2M$`vMzbhrr3Zr z;hq(PoXh-dCo5zH&XV=%kyT@cRKyM}i}af|L{U7@IoHoN-P4+B7}K_ENK>`X#c2-5 zQ_c4&4L18|RofDE)UK{(rcGl~Q6Cpnma*mJ_gd8ShA0gXl z9Iqy%f-VH0GSJt<0}WSd8opZ4P&dAzdQ8K#K@I7yU_}jn1m64n$RnKC6aUcsbGI>s2c#p~T2q1P0y{o@d=ivzL$aUaTO!zWC` zGNxfX(-6xv_%RJKrhy#xBnMo{E(fw%2F7V!;2=qt86-=zVG2Lu=SLKN#KDiq{D`q1 zfkMK}^kEJJFsTg;X}C@{A0X4JNbKR**f>IR4MiC`nv1-=nELu`W8-o9`bi?uXid$D z4w3>(oeYU)iXmC-Y&qZ7tjyAwnLhnhNy*E?!Y7%TZKD~*|&@Tz3w^TNosoM8{r z2H!~@(3IeJGtTGgNUt9vJsQIMelyJF=wRmq!47-++wSy}Z}YMI$fNh_zGll@B#Ru3 z%jAYrEcGXt={*1V;D=TkSR9s)M;Od+?7p71DVd~U|l9H3-#~;hf zJCvDuFfDCga`LAM2|MHBwnazRhKGMNY}mTNgI5k1P}RTxVjrLR9v*Z1_MPeMJk7yj zqFi3wyLW+^*|z%d+K)pwtO;Jdr2on}KFcO~EXs44o90lKAfFa#IdQOAv7d2nU&9Pr zopENOBty-s<5Mr>jX9GUcQQ5l*qHF6al;Od9K0`bz^B9d*A4dB7VK5qzwZV=m(^Yl zRef!jxyX+t3_cL;_vtXNZNV-Z{A^cxST1%pn`>)a7dN;zvj2u*J}U=%EbH$)-^aGh z!*ZHSZ>B!-Np=4_v-&pX$j^+F937y)r?2K_O9HxP!1!m)Vsdhrkt3PlV8+FTkx0P) zpMzBsa)*$cgj^-$2SQE~a+JEjPC_;lvVoA5gn-IGUu_@OUtdt)P*Q&&wSIGC{W8D$ zX%1jT^>GB=>*Gj89GMzNa^grr92piz{BYil)y#@n%z_+d>PV(=0F&y>#2LSgG<*`S z^B`2`PO#`^f6Yc8a>0X~=}Y;nU%}K*W$IIz`e97H2UBmx)RU7gJP0Ndm!AYvcK5+Ov%X)AY$k8?*J6CacX1n5?YMl$1Xb z6Q9M#K8cQg6cN!H8hST4_;z4mldtcMe*La{dR}#NyX@?I-p=lI(;SPadt3XgI5Nsr5Jt1p>&+?f}*<@yVF*7-bDa~Mt zlbQT@CTAp*5!RU!`XVv-Nqpd=k-qm;{qBUh-&VTa2z9v{?0j*c~}N!)Y){0qe-ouagDXXY76~JGu_1|+AkI?crthHqnR^Xr%%5-dGhTE6Pk*P zZ{+7UW@TN?$her2ay~iv%;?dlVq;H?9Qn0MbvP{Spi;R%BxKLPfu9Bje&Xx9wO_x@ zo}L@s+}1lguXS{+wy~+Qwq9ysvB=bPzKO~HkmRupmcGz&K6US{PKB=q@!7!W0vT^8{iufmlo+CKHJM1OkPG8STi-bzwr6Gi3Q4 zQhJ8O?;(Nb0|Q}4SEH-BPAJ%8Ys-|BY|ztNtF2wFskuTR*kUf;Xd+xE7Od7Kdo4_M zOAU9L=s~P_J$(49u&@_HhCB}rZVwD>^Yv}@_P*!gao5f5cAq}YPENP%?Qh8CjWXGf z78aMK(u)$wITMq!hK3Dd@o7E1Z*_H#YioZc6duvkJSY%+DG+=v5Wo&|HzB)#&)f_q zb1aiKni(6*BtnjhBLvC(g_UUuL$!V{>{cgE@mz7nWg~bkY^DPodt+DY&L&I-NypH87j%2tVOmg}% z&i-?ie2-GLYq0sw0Lcz-lPzwBwGMhUR=Vq?!nKB))w+V)5y4H$z#BvS8-snW26|og z_qgEecGkO3gNM^eH~Vj0ZI3xw9dVEyv^76qCH-6`xfrg^elXt9%bP;aGah9zNCi&(AV?q zlDnfzt`9Fc7hH1OyX13+k{#w?MJ1I4-kFsov64hrlF&*LP)R&0i384?o5rNZGNVJ8 zXkR9*4-;&``0Ks$)_vh6Y*z>$xoX~X65O#TO>%O>it<^K%9KPiCBaOI2U8+vN(`A2 z(kLTW&B+A`Ib#UMX}n9Kx5H3-i=HM-QAy;L#G;Z&Dv4nw(XAv7Y3U9bT#&f$Vn4} zZ;bSg8E7*D2E6h2f9>o0N56hAJv^TG?fa}xpLQpwNA~s)ZEPM`Ti>^|{LRARj+xo7 z5=pa($t@$Jn}&wh4GezL)4QgtdsSQel1Ow>C_JaB`GY`kMnmH}4UJP88nD8CLuJcE zMKHsaOjrn`3}Qk9nGioF*qaIRWCGpZ`1g6`>-5sw{<){k6L;%2H`yasiwAwoe{(Wx zaga9KOK#biT$lH1v^2UZGrVMBaL!Esj8yNGME685?PG?bBL>2M>1n=-j(!;#`8*=x zSy))RQu%1ekcS~54}yd54H)oSU|@^C|F3?2O+G$1`}Mow>G_kp`!zSWtFEq>oSiQ? zIGnS$hZXHRYin54PFh%eV`g?-D*ejDg#`@r*|pN;X<_C4-xV+p_bnT zTbv3oJK-Za?%C^@o8eI>gF`lY2W8p^q@sOBntSyGyG0rg{5V-q(-MChD~lZ*PUh8?9DI9B|pfFzB4m8 zX`*-BNc)Pb%>^gRAM7o@voSkmY4VMQ(J?cFqY`~4&gqXZ%O^q7R&T>QeROYG3mc^x z7Yzs=c*DZ*nUA+O)29z3m*eI~R~PL66(JoE*a-m_fP=tqg#1bfc)?F}I|PSf*b#k4 zH$~tJFC*g~hQzh_$6fb`yXX{mN)~st7g$kTJ%RV|dNQP*1lAMpdg4}3?CXgP=Zy+u zh6OPp-b`R0#@CwhFkxJ^UptBZaL{~ir};!Kcx0*3YC-Oqkvme#XWTF*E|7`yVB+kV zI5Q?rkBK9{N=Q>La>I}`>Va|UA2-xKswX_8Er2QNiCH}{sV9c@M6aHR>IoDQ#z)FT znlpXk7!ub;LYs*91!DiJy*+sJIW3K|0)C^B5##UwgO=9!nwnsf4SfDZec^c>!C4{y zj23AW>-?xEx~iiEvU=<2_{PDZ)7JKtT>jF^>ZMH9(YyCEGqb0rrtK0*n~BL|W8+7L zhOJ`p?_%+NJ-vInx_5PSeiMmWgu>feTFqKoO`4j&2n4q@G;Z+uKlAxN@%fGPv~>;n z^kVwCGoF1JcNa$C%=C3+T!qh>hr9bTh2m-7zU{8AZGHMYc6NT~=-BG$_`u%&o~`XY8=K#(ty`?DZd+P5TUa!i zoBv{FcGJ}KXNlyxiAkfe@sEav*9;7T$Rz2#+kLt*l> ztMN}xhK=^(Yc~2VwX)!bT)zrAz)TqhC;8rj34I};Q26{hgm&MwQfA3CDlNT-qPwaFb$%OYMns*HN zO*#a0jR#)X^uo3WBEP9A27jRt?Ef_(f6!gfGx{v(F(Ivlz;*~60d_=9)E9oHivsBD zmAC)XzWxs#{qM^Cn|k~I)XV>}K3I|eX#($lr-|Y;aXwA#P7|xs#OyTbh4cD&G9E5W zUpvNG#yChAxtOukded90(_HXUDtKY4@yvw(#F(@hl1JdD(B9vJ@poqY<&3`><8R3L zix_{>Dkcx~$vs_iM+C;HeN9*EvPkoymIh35ni!rY;?qR;G!dO9TBivV62{(u@it;) z{tWSdP81J_T@x{DH8TT5cQyFG@p-M<+6;tl4UIb*8ZCT&3y*hCD7dT1|4qQVqd{7Q zn!jra9%yPnlz7*x*V|sb-WVCZF*JN_VDMTj?$p*&1D)_x%pbqIye zg~DfATJV0VsrghOcp?zAYiP95_hUXE-j8^^hdf>@yb1Z8z8MR1rnebmE@jLljMRjY z_F_zp8Ho{NV(_k)_-!x!H^zFejdVK=bzd3iyfV;!Db{|WFY3@2J=YUH(-l6|6+Y3? zYS+1f;)Y5bwM6-ZQc8Q+?ehdOGd8+HLUG5k1xsKGGIG6lt{z zwVoU3J{9Xc(Ss`CV;!xBB257JyOu_~fo_|=&SO38hq|Ix9pUfVS`S2;_l25_rT!ap zolc494`ZztV!<Hd_r6V}w~5JZVtktz z+$MUri4M*SDn{iRGbUoDmo8%{WDGRk>TA5w=fBqDck1$A>G1y0CND+gg^2QLX~tNZ zFqVdlr5k(R+KkweA(pR*^f@tZBYGWrdcCEh4_uAi?Zrt65uGpZdnx3uPUiMxBk*{8Mb+t)v+sr+sA!e1)OZp@o>Wk%5t6SL10rhc0> z`s?(#gGs6bamwAQpq=4?TS9zlgFV*=DpvbAReISiQOL_(Wo1t0Q|%>_n#Ysh-zx~kp%eS442RkqB?mV}n^K?z;v6Y=imUQl)`Rvn454RWnwki9U zb*YUjMqgY!@`r`0Z|6lEoT1!1HDu?+pe==g>+}3pru!^O@hneLOpS9X8sU_#vP)9R zM+VE3f#$(Jl7|m|{_XaaUvB(xqw&m@i{Jim=E#}T2fsbG_sGGW2lwyT`)Td&oi#hQ ztgfx8tXa2Y^@{S!#WR;IoLXKsVdm7lsS~p&6sG27jm}PwOHERZj#I{s2vLOxMkxJ; z1bYtfck%aeDu0S5G*OjTs7y}}9G&DdGENbp za_M|o^q?^gzW+M4$@9QGyDeGfD@TaS0!5(f&c-vHM|O8^TG=^oQfFRLrz)t^%dS%@ zdMFj$mWmpsq93H9Z>6GxQqgXyXp2;|S}Iy16_rUvlcb_NsR&dC`ugqm{WGWU@BQ@t z`qlT#X53FtxgVhfE4trX3h#@(rAK;8cl4I7>@A(yTbkWlIuhso?M&y@-JPdbcJ80l zxqWo!>cGy0^7a|B2U8`#Opr9@8UK(jK9wXo5+^z^g7W$DROibboi7)5zRd1?sqB2| z)cI1hTP50|6x9TaR{DT(y2J&`BYez-cn_6X<%=uXK$%fZ>g-e6beP1TS7W- zM|94+-zmL+QTp``>B^bX?A;TyeH2EKLFP(-)1s{Kj>nh62RjT2v>y0@c|bqY(ecjF zDw#6WbWo7dgfX7^v96gahmM0aZJ$*?{AAhP+VYkSvu>@L^7E3StMhZt&rUl#HR)8z zsBep7j^;)lN>}br4&FOvKz*!l-3af^D$h;BT-S#>uNmx66=b_C(0ZZ2to#G>S^Z3> z_cNW?&vb&qC|_ZeqcG}dI@ED}Z^xCoj&qwjzF*&QvZ~|jg&jxcbR3x2_F2(`PjXte zq}}=`sd4S7ODm$!S4N&%5`J{P^2@m)duIpNPaUv%QvaG_-!%o^Rk@xE(-pH)T_+|x z7sWedj<8KqS&tefdvNuSrleKcp&+Ue_8Ok7hrp=we7;<=d%XQ$1Xnl!y+)Rf|w3AvH^>B^kckhC!a zQsVoM9^oAmp@<&lTJ<<{@$HoIA4kvnK4$vYkrVeRi?#>neAGX4g?Gw)&(Tv|V+tH1 zQ*D*8vLVCF2L_p*+BNIg_9=&IC+y#lzk5|?eP!CVB}tp+k6J%Frg~~*)uiyn#UbSd z!LzdZPf7KinC!iKMbhR)(d%c2S4|2oFYuk7?m1zMYfh{~b!F1x`7!0QBd1SQPAndf zpX-~M?wOLT=y;rS_eu=d|94xw4=r)7FR`vkHC?7M0$q1p`Lg54rj9KOJC+o6Od8#h z9NZD=+@UafpfGAy7&R)4&MS;gDU6OPjP@&x>J>(t6h>3 zb(~z-aiFNoe) z9;bCYR(3pg?RadoKiOz^ywSE1Mm590I2Ab~98!i^j~;9eQ}`&9K8gW83U42UtB=Cg zM*)RK9os`XZiaU(xzwS!bV;#$w_@R9McV$^Y0;tP8L{$|D66uGVeNMhj~nHZG{PZ% zxI8Z0swk&#R;pdfXsa=?=JWErXJxuiO?7GiS7qzo1rK)3xwCEBueB3zepvi-b@tWD zvr@xk4F9e=?0BW}$kLE6D+cW=A6P#(aQjUEkEi+8 zOz~b-;UeSTrzvK*JG>CWR*9r6?H?%v${YvZn)mv{VpVe8fJH(fZj;oOOJ-+f(u z;$M}=zgTi)?}9_0l^@tSd(XCMpKhL9_tAtc>k2+zlUK7MbM4a9RTat0%M%vQj#)Hw z#JnlPXO$?Y7l%yB8(5kXSd{LYJJu^J(Y@ww>e`!$D=&{)_T7lZUk{(ZUs<+u(DcoL zQ`h;HR(cneyXQ`G$tZSC$+SyKl*h+fefQbK6FZB)-j;W$HuJ!Tsr%L>e_EYTR~fUV zV#LPs;Wcx^*3JxBIc?CgiGhoX{pT0@9$1%9ze2U8BCKZapq1177ngX?%X6Qe>9TQ6 z!rICaD=UUCE?3T`(4 zC5I`ZLzU5?1EWKIqeI=JL!F~Tq0qd2XGnWvSbO#1_RzzZLq9qYI%92U@}Y|4{AAl1 zInGlu99Pa8)_QBpv^btyK1^$)nxCbB_6H+ntku{ zslR5hQNp)P6Y+IFVTbXRzdZoJc!m`%0 z3tJoJw4R#T`px9lug13?DQNvNO7*e}%aLv4d>t+Y8nc4ryrr7=K zhwrW)R<~?$?ZUtfbNp6K_pY4mvGb$Yt!q`a)!`eK4_#9cTs1#%=^VdBGe2m(mGtXb zRpXH%=j!{P_|WUn61P3G9k-X*g05T7u4p|nr?q~3>xZeW%SN`&9Nb#q)tYSEl5Be` z*|ss+_ENI#*<{;O$+pLmZ4V{e?n}1am2A5`*|s*>c0;l)s0{SgbZN_lZ?=5%`Ii0L zwrpR!WzE7Zi>87VZOKoD_v-xQiu~l6`N`w+lQZ&@6Y`UX7T zi*DT(-1?EnZ)+95u6DVx!liMU^Q8*MbMtK*=GdN?P5HdFy!F=1)?0b4w-Q=!4Q;*U z-FnOR*i73aQ*FPPXuGEfjPrxai5`oJ+{*KuVT%0Zq4~+d`N{qBlfCnk75T|fXxsYf zkk(7XT0h*7yfb6uLyq ztV6|;0HN5M42^LN8gA_uYSw&w^Yt&*Ui+--{I&&WH_kq}cFOUk1&8Kmem-mLp2_i_ z6i06>h}@Vt^uw`1tK$8tV!SJc_gxU?GCS09`atW_0NHq7vs`aUriankzT(6_IUQ%(Hc4 zPktQ#)rROVtHVC88v4o7!5ilXt(_ZCHOsGJviIy#&nX3c$LF}@W;%`?YZp7lIxJo` zINHoFOwu>h$Z??f@{`MFe?NP&<>c|E3GGtYrWF1|W21(634xi^u!5Va^)IX3m;jHfQd<^7#uEE~;3(Wa+ZX zFBRU7zm$Y|q|(pYK2L#g_;Fb?ESs zqhIxPKmN_PCr+L^-SFL+@6Y~l?)(M8rOQ{YUi-1}r|Uo8xOwZBCc&?_TkiaJ_ul;n zzqdYo^tkQ9lc&#~cf25fyy|@Y=IuM?&-f{PiPX%@+yd}hTibNuccu8%@O?S>!Gl8p zzp@MepWvsA8<&=mk(r&X@i+Kc_zNp4mLUEr{lCX=$l?e1{}I2Z_XqxfAK(N2ru+W| z{@iFz{}06mfM4==>UUGPy90h7P`^KmKlnZMuLJ$F+K)%=CncwJt6w88uK@MmrGB;k z|D=BXh1E-zR<038g8D)KwY7KD`j7T9GC}?KRR2-1$B}CNgZiodqrJR+`(OLkl0|jGF&CRa8{B@vE&rEh95CD~C1z!s2fHVE$fEvNaDWel&k= zgpc+=BG%Z%6!25)?=pXdd(5{dsQpv(KX?Agh*%&0fWRNo`fvWybpOE!FYlJkn-PC& z9pZoTl(qk!_(%4@56&-}B& z{M0nH_iNKIA>R00j_;n-Wj3rWYHGc4Z*8LUk zvEcsb|7!PtGBVc4KVU!*wSL4uGWN=5#1HBR{851a8TJ2xTRPvoefzG0@cDT$J@K>f zyMmvsJ*$53epJ8vs8R8A=FBmH*f(Gx7(WeutoqlY`SZF$AB}x%@XN~9(8$ZrF9h?a z_#yhK!yn-93Vs;<^u-lRmSXrbfav!g{+Lm{Bxb!o+fRcZ8~rf+xyL1d`cIuc!{Lt^ zHD^xXK)}zc|M!?Uz`te7J%C>)eoXN{$M_e7_}@|d`LS9M|8;bA^}s;pp!37O1CYtA zAo$w?d<_21ebn&X;}QOxxq%S-g9ov(AA>)tpW=^aBR^`Nb$%NB+31J(yVTEy|1t_+ z9sHN;i^X96l~rpWso3bRP3<4`9~(c%)ZD@nV;@>Sr+)YN(P;jszlZ3L;r|J=n=>FN z7~%hNAA)}Ds5t7mG{821^Jv{@1$8+aN@lVt_>!<2h!$4n}RQ=+`5C$L& ztJLPNy=5z1{^~}Jo+CAvS+TJn7C*ZB0Y?dAk~sY55dWxzIdcaDZM%tUAHe?|%@y!( z1@+f~`*-0F-XcN$BmRPTP(SD&@IQ`%cueub(%(bS;`0{lLRpN2os|DdfD{}RNX z&;!33zAV&wsFJmQ2!4G4z8h-a-F*xye_nZcxAv*^1O7*#{wN-+d{+DExbs2yxfFj9 zi@!_#EPjlAbnAoO5BNb4;QlH$`e{@A!vKH6oOz6er8O8o3m-Q>Xpm!)#-^S+4gZXV zn*W8Tp#JjULECO_Z@Pbf$M3(_0sOfDpT!>q_%Zwe{%u>6QU6N`Usy1@2Y#x3Mix4B zsFLExwa>X*{qBhr{rnXx(D%XkS?34%u=#r&#pAKc2iHgAS8JbBKjNP>8TWpme%Sq? z{sBJj`~Wp9eq#8$aBzPyETkW8#OSYG4CWs?tgg;&bW%AZvy`LrtF52KpO~C7E}i11 z=Kpkb(!6qDZTt57J9g~&y{>LFY%l>n;&%b}Wbwa1{0xMDioY3p=$UL{MMrS5kCYz&h=UNRQY< zw?WpG#gF0t1qosCF9ZD-CLw-JT|E(tA6WwJhrvbRqxL!Y?qdP{`~@o(u7q7LZ2Qsp zDg5D&fN8+b#(h}#(qY?+#*fy|!bkOMQR}DC56pjdnW#(qEPNHH{~?$^=pWUuqqAaV z=&-Pe;ciJ|7ciFAHvi(_tIgjX)t~tTT%djkf6tP}&R-ESWczl|{tj3+>cAXU0DQpj z>IV4vVEz>UkZla8zmVcj=J10888#d*T}pwW_Nn?&)Ohhz06oO)l`GZoap?+WBGYTU5;A$F(2Tuf|V}A7ejyze=T6f7HfJEdG^%KYVy(TXM>R z3M;uSg%7cxQ$Ifi)X(9+aN+4QXt$8V5Af@fK^`l&vG_qhh#%bl1qo&GR}#LcXe{EN zty?C71{D61rAtx!;Sa^)NAFobpPvfoal=-P+D8`&$Jjso5#UGl^8vkD`KW!)_|f{Q z`nAydsrR$)FH-wH3*SKX81{f@{(!%>R=Y??b7i%X;vbv3sKVOD&H+|_3ZM0UcYZ1? zu~}6AsQ#zV#-=V@R2@20t^K;Xu_-H7Qv6`W$RDa7@eif=inm-TWYZn9lRcQW?+fvdXDA@x3_u#t&KXAG{hZl=KW!$0)&k@eqjBGAGA;5Q}Ztq(a2BXgQ!98YV}k6MS#D0)iAKH$8F=%DwZg1 z?HvyvLF0$uM|Weu52!y!4IlLn?G}S(sP6-O*KzCDudEK;z8ynYPyE9|Gv2*>S6l`9 zFHQseM5|0Ff(D2l;R8$PkO2SjXoceoHfKRp8%ELgFZu0{{R$dB6R)DQI#_gM7c z`ZV-W_-OqAUkl-L>PP*vl4hp@_)#XX zMz{K(r=>4m0w#l@4=y*iwDlXnR5|>7zS{iBFl8p<*GK&6VEz<8#IG*p10&t=K>}?Q zK0hN9w=2*J;G^ra@IgqZeI6g`yUx;T)GUFW9OdQM~#5>=j5Kp>jJ9(d3pvMpu%9qWZ}D|Z`iPE)v#eZ z+}zsSkv|T9*sv@J|HWbgD_;hSUnGJC)E?ekyM}tGJhObt?P_2E8eyDyC8~9N%6x6An3Bk z_m$7V=VxV8@PNMRA)vdK9gAe8p_&EvDry@&j`;|`kb@6;qe=EgwyvqQ~KdSl^|21g}QV z!50F0R{Jb`5ynPngW&;Y(&AJ2h@Ul>GJvmw(8ABn1NeYnt$Vfh`67g0_yjIE*y7#> z+UbiQf$mxE+j8?ZZi)bVVBrh9@IM-!59Y5`jQI1q@e3*V?zs0JdVnuNt5%DMwu)js zpDLdZHbku+l}drBkx|=6?F#`v*ghCPMn6!$s0%#{pRZm<_-gn<7Cw)kmk;nCx4Cl{ zRR=Ic4^~g{qVPLF9@tQgzO5}Ue-r$eLu4cyz!CooxCn_{R{-k^;wM@KUHIXj<3l9k zgoof!tK0?bQhP0gn5PD>R(%(I5p{VMdlz_C`4qmW2YQS+1XPczrs%a`BFsP{qJTAF}gScv#x zEQ|rjbTMbqe+Cb2SZE+2P(0Wrd$H_b1X0)1Q4khf)bUy6LjzX#sC=q^Lcs%QXoawa zYWPAnS_p;IAD{;2MV%skHF)$!m=C;1^BG>x>Cz7ERPdM+FFI6Vp*Dz6rNU0gAZj1f zPuf(dejyL>7Xf_04>3?A;*`Pi@!nK89ihmI0Xt}gy|^|MJ}W;K)StoA259*#dXyF+ zT>_%~2?00DCk>X+Lx*agPuGL@c|vw5Kbo2VouUWhE-EVK0up5m?sf3O8=O%MpR`2* zd@Z3CAQ!^Fyl3%4J+;K1dZ)c`D!8B-f@0ge#|>C2+k~x$Pqo_BIJ)Z9;L-N!fNV2R z4ZUy)Vw*_)`Iw6Oj$3yr+J|fqo_^Av; zz>j(cjw8w_{lI1%EOjGDuw7T1u6o*z9inFgLJgnmK*#H9LJYw22t$a_28!sf$wg|4a4>0 zhI_vs3@aEBJ(`S&juynljEIgO6&QX;e)1+9cynwn6ZkJT_tde=A!Y<)pqPF6-*YD#kA z=y;qG2ceCUak7L2t_oTtjTs$3N?4eiIWBq3D56!AmzAEHgzQj$Vq;<`KTw=Dc1%35 z2i!$R6QO2NL2h;?J7!WMK!l*Gsfql-gd?Ge056T=+?2$GxN%(q`TuA}ZqWT|3jV+2 z)y>hLa#8ZAAyIfmM)g<8qaq@TA~NCCH)04)$4AH`a-mEfF)<YP^*9$ z)vq2hdym5?x$5Nq;g=k_{CobQVpNkT8aKe10SJp!PJmGkxe~a~gipDOlQAF$Ddf`n zG>}5NDj!Ow&=Qp2H0Xt+$w7L#AXls%2P0-cnhtfvP?8H{ma62zTsf8C-}4t-0PT^V ziBwy17{3U{m`phowT8@Jevteu&a~8Bf z)P=M!@X6}<@A-@3aFnXXL%(zw2Wv+~VQ^OfFT^qk5Elb(lq81$c*7Uk;D6w6B5+dzuUxR*Y4BMDXjyF(K}iYa zVxfTCOCLHDh=ut`$mO^e4Nb`N%^5B2w4>`)B5?h;6g zDRMPRMEbw}0%_9MpGWvF_yY{s>i^8^pZN=p0v)37qBo)hF`DIrJlP0W2<1g88@P+1 zwmx26juM{&d5n9k$AIR7Q5O?IlRZ5dTNFcSHub!2f9{gYKiD7ZzfROL(EHh#f%d{i z*lusbI*hoJV77_WgAp4SgE*_tq&((A4PxXX6M6;OI9g;j#_Xsf$W1}y|G?iM8q?W0 zHxBw2P-(JW>O}A5;MwRW81d4e1Xl#)0)253)Uk5wjy+h5@d;%)3Hsoe(23I2F2G=8O#qyK}b7#RlD-C@bi|Vq2?)Lxh<^I_}qGCZ3f4!Qa*I;}@{h<96(_CK~6*ECD za+POP-zdK*4|w&B3WJ@7GHMX)G(w|dqA(_hK}${>PE>wfz8B1T5tZOS*xz{2TM6)i zYX!TWb=!1z9LC)Ww!sw!S5?$5uCm3T^Gs?3Si<@W;$rJD=5rj%VI^hP%`Uw{9lZX5 zKeVff)GBav92v*tY$y)m${^}7<3W0vT^P{zFvcL4tSq=5-F(8n3b=X@_{)M`II~>k990}u5|t5^37?9nEch&p>H|A4oQ0D@&)p2J^lTi#$ccQh zUiv5bK;OT8{TKH4f4hHh)&^GdKiWT|=b&6M+Q>nRsBv6LFdm^?abJKDnT_WdU(jcU z&>FDdU}|?z@(=bG%tq1-svq24uUL*;bVzqYfU{r(F}0|cBM0Z-hT|6l0WIchRk zToKqETAzZZ>Hn*ChqjI~`EOtUz~9Z_|2tmq?N5dB|Nr&BA%Q|Zk3OCxy#Mfk;?1Ax zyx{)diKi~(|3%$jwI{?J#^J~kIItmnVg;!!(dZ(%I&T4WHjsB90{G`98eN2aEYy9y zpd81u1hRoLD@c*>9#grRY}EG-bd%$r$8W50l^P#P7-> zzkza`ANYXj;1{tW{qu#);8Vk1YSM=Gx6yoS_-PR;mp}D~+wKeICZGobvY>o{+zEOI^2w!;r5DN=WsCAg*&@A!X&(W>513G5 z%LosCdWO!Ax`NI;`1v1741oH>9>(y3a+p{XCgkQsdy>=UXjkm~0=UN)%9WETm&bdK z59CWNf0{xSofp$T+fZ+H8Tbefe1>NMjpWcA{m>0&wg?yxTNo?d7$)J=YIYj2}pVI&2(5 zpF|$mF(5uYB|PC}Xai$w0||jlfy{vYZ(76&kT6s>>BZ-++aA6 zJsbd7c>GwY!V{w~M>Z@AdO`f+Q~urnPrxG&3VD2BSO_*Fe9HF4c&rEWLtLV97zbd0 z&sV_XYarwmZA%Ux=v$zNenH^pp#CR_cipxvHr6jvEClqIRnAZ z%~Sc{94IH0AMz&eL0FFWSPn}rr0g08wm|n<&Xe)3pVOXtc?bRQ{vDOA6y$*<0r{E$NkE?ZutMUP zV#o`Cgdk@I(x0H-`F}7k^5_OV-KcIceG7Qr0=9P`b6mS|4QKU_>pAM*76|o(Hem~d zIzoHswi)F8EsVhKzaIc!=OL~)LtMc<+j)pJ=OGS0f_|@H{&x^y-@%3o|MviBNMH>i zLLkv)Sf8Pe55>5T)1~rw3wt*Rv@m|p{Xx$>#tS?@VA?Z|bn5`m6zD@5P|u@;?XjL~ zk9#E~EXOkRDR!TPzQqUJ8XyBax1b;LXuTPvM$oo!xRa5Ez0W6>^(5?v{GeTPb4wuqKf%eh z#r`#ydU`5AtX!d|1;N zq7BQQE?p0KupZ*M?|*WkE#bb92PyixArQtE^mm*IuP2b+19|{?cHgK$nt|s>z(EHP zo*U5CUjgAd{~8GQZqWR12`X?u42S^%@QmkC0i=AmhdpvvN1Puo;)0@|4z$OeehV;`87)gv2&9pD~ih3hf4#XhKS)IZu3 zm-e(T&VF$%b^>B;0-p!4zQ@(0JkucX=hzqab4&y;5LFz_E-4xllcEjQMwK(gcwSoC-M{s_FZ%&NPr7A=9mHx&TxnE#{h`K0Owl7LS+bX zfd_U%&$VL63&H02kb(t)&iRyBJ-}el4)dV5E<(FNT_Pb8kqYDa9+6W;sbdBv@k!rx5aujKa@|bN5UD5VGfL` z5}I-&LwZzaA%X^$~|8_nc3+)${L0B&d z{^~6yj4d~T@Z7+~7j9k{`ftX=8M&u7=r3qLos=^GjOh>`xryo2Is&%Chj${-5bdF+ylKo zXV3Y$yp?)AfQ+D@6jBEm1NT4f6hG$K zJsrjzD>}~me4#8*PB;hdkJx=1qn@w3ZBJe}{<#$ExEP1|Key%Xxs+>*DVA~f$e&zI z7$3QNj(5CALcL*`90=Rtx{hUBJ&woKiy=6GPk@UM{yPj5kl_fje|upY=u7<_*H0Xq z)dM>=j*q-!ip253@xtwk@Vw>$BnPrlx9vV7;od+*$qBS*3mUb8mD`3A?(f)jhn<(* z%W-=+SGvDo_ZoPv>jQo9xidZ+!+H9EJ)nJ=fj?+Kgk|98jPK$v+(U|caC5L6JlC*i zA>99V>zdOmrmU~L1{-+^{osTRV?2eYP1k|WL+(8M-$Cp%X^ia*jnmvSFihEKkDs`o zW_=gq7>v!w@f8#Y?vwDWs0*YAq(yPy8P);t;C>1BsBGG;2kejKh#S{lcKy|$>m9D+ za$5h_xN!f+#R0T`^nGLCQ5R6K@+f7RNu9apQ1h*q-Z)^;~@5>i;Q4 zALs+};?BVKkjK3zmZP5_Z*m|Uo8yfu!*)n`ro;B^bC`EL4_MpaY{!#>e#D>?JhVH*dI}3D^9M`#a9bPBVg|5g8^S_^( z-vtTavGY8n>>eJ|?tS53<<&>j_u5_W?gQsqJl}Q^Js;e8Ovt@vLT>&HzgG{HFM;5h zEu9F@x&n|fo^|m@$Aym}g(_3{!2PYE8Z+xZ??C?VXgRJ=+%q;drFwy~ze=&~UzHPx zt=;9QX9W=282T2gJ z?gFoVO>|&qOFsJcqC;=21=< zqftKW*%W2O_Qe$KAIsTi7_2<8jPna@gKI468&ghaI4{Ou)FY0~*#hc=BOC+s+<5Hw z1`NpmE!aNNyDtBL{|Zc=rPzmgmE6GNVsD`*)n|i07d=z5<>w`O(J zA96N;DasP%$l6R#S-&4+(9Zvxbq~ixyqw*m51?#ue(t<2hrBKjcOjl-m zJx1)=rYnCP>RW*@2D}8~E))-9SFdkfDQh!-uRn~3?0yuVSK;$0O~4IL03g+*sTTEg zd~$>@cy15hTjFy^mf$;az~B80QVw~}M>#uC`(4-fgK&@ef3q9Z^E*oH(*WF0B4Ih= z#pfGMK$n3o0R04X2?#VTT3 z5I>%g8?ZWE2fpBWJrJ9s?ff?v@XlwkuyVpZs10<)eIv>h<4Ly+-@^U@d3vKR!;~dA zNUeY)1@MaU5dp#9q=0SE?-ans@H_5z)E>{nz82OS>i6jTNKb*#zTkUr(g94tcf#b2 zn(&Jnb0GL$m?a%Zp%Xq|#5aR;)IhEU=eG-ac|AeuU zeR2fP=Aa#(RoR$==_?={17(i+$3V~3_c$Jwzk#o8-hoUQkOv49|6YJ6_?bfIfwS^J z@{pi!)|NA*R z=S;6>&YYP$qaLtUX|sz&EKQ%TUPx*?Ejp9-$Q|fl`Z&3DySJO#sUqGqzRhk^I<%kW zP1Bz#&m;Oq1s~xj@DlPR8AEmI=OmO=k$H!8p22tt{3I(I<`+Ig9Pm!+p5~9f0`Cl5 zJW%qfpCh_eSQwk`GEIvUMB2u+p4%tmI;uLT?N>audyILP-xC!c$v0P ze3G$B+~j>&ePylj?Azss{A!M{d03SpIm&!@~K=F9G zDrZII9GL^i3u{{BOdqf0#pTXXxqj_Z=Ab zYZQ{bC|j>f2gN=xYZu~iV4WU1S#+Yvf^O$}vKTtG29 zZ&@WXc+XhbLDu%s=897?mhW*=?f|vTNV-+olP2lYXF{H8&KvI3Pxw`Nl)vGuGFv_w zYmwhS%WkG<%Aoj0z_Z2z^#QFsO(^YUd8^7!?P35AC9j@0(kCyG zkI0MjF3(rkg)ABE>bjTNst(Q}Ow+j5ye)3S8J&v2`=shdW0Uh3?9H&>xmxY+do8s4 zma@~6r`E4HM~Q4SDD#g3&R77Ni;bUCHbn>6C)z&RQFDuO;AUsq=I1(YSDH5oZc`fCXH{Ek-x)QH=66NqP;jN0b+*IKEO)3AO}u;5 zk34Ela^3x?jN|+7YL_yGgy;)ipyP(NAAg6smez-wud>a*ng?v|V!p+GsZ>TQ6#2^O zB|V*gR0qnE3v;(%dqGupz4F^7nPm%&6`e0oy>_V2Ob}1>6XH5&r?j1hW3Id>RaTXb z-zk$l&)&al9ivXg7~WbCeHEP^e0O)XEBj|^U-kL5xvDf{Owj+-2TX2Ta zNjoqf#hTUEtE^c$zt6cC&b>stkPbY57v*qP0nQT5QCY=D#P`-{o#b-<9_q`p1k52* zB{5Q??1$W}T-<8r3eo?x{;gt+q`}yT^f0#+Y$Kqan+{pCPC!pHtNOe^cH@_ia{do$!$ULPoWDqC#H9BP=aUU=IQNSd1(9J0||b zPgEa1Hb$tPS0(m6Nz+HZNoY{vgh3RJ_IfuhJO7i3TOz3M}=P_AfhK1{l zs#2+_CTVH(vM#4FhSv&oc0LVj@w;d zm4@s%4@7#-cnAsWu@5B6#^mi0+v3>Dz|ZOetZ5kkjCZYLVv;dkakmN~`P+c}f-~Nx z7ZY0JGAq7}Nge=MkC@;9esI%R&Q-xo!3;t4-7t4iDfN2|{jOoHMlUr%EspXC)?|z1 zuCp-ewZlBlZMrY`AnWFv1$PMU62PzT5!@ymUJ2i1zEH8oox#8kASKpkstJ`E^Vo)miJi`_n;*=;WABCV__2hvI2#tf9#+BVV=I)WyHvg*!D97R z*M+!jC2yK*{5J|hTYm5&2j>GSdJB5gO>H?&)JQ>6&QCO7i-$NL z*-Lgljx)Q*~;76ZclxD~6*>Q2UL1W9oK{UA8u(5A-NrWLI$b zF6E(YQD)ZOoMoD>KFVI(=%4dR=AIz|bI~8w27>~4pLo21cz>&Q8D|I4t(d!&20etB zw^Qw)=j99py5fB#O}T!Pb0feS*|Y!c<7IvA6y*pLo`USi8Ts86ekaAfgMf2ZTT14c zu99po6Zr=nuj_jK>^`gb8OmM673Q|Zj&Xo2g-puYlJonlFVVs5B6GHd4;^ywH}>9q z4uB6a<|E$qnaGEfAO7KM8tQ?(`ELuHr?`AZ`}yw>$djKXp-iJ|Vb`4#W^B8!FYU4R z&Xb*YR+Vpf)h+_+h;bA!HeMe$-p^<=#tHtxXDAQIiUC#O=srR(LVw^l6!6N>kp%B# zEr&aGPT$$yV2%F6TQ^*%jH$bit+uq=ZpDYNz?y<>23}fvS0S(+McX@<Ae@EWR`K@=7elG&H=7+2q$WzIG~yoq zO1h)TjxQVj$&+|f0Z&JLU~HSN7jLc`@e4)ipsZQkVug~!d~a#y7`><3)Z$fJuQ&ei zGiv5686tkWyH5X*zma}4Lpc43{>;3^T+G~y49htu<|{w45n zJ%X(SoRi#2ex}JUhxOZG?aN7*x=LeWrIekk)qmG&oW$>ZwGPgm1^CT&$K6`f+~aaFva$M+&2h|g zbb|OuW3>SDekpy}FCP>P33P|S$lfXi%MvbF=l2SB)cm=b1~PiU%~a>p6?=!;#PvKK zDif!sIdeBbX9_x`3+6Z5>>p;%<(Y2wA1l*@n^mUJ2`K$^hv095m4X!l{Z>6CbU?kX zqoxmaE6pCoJ<&=;B)(@#Z(UqX*qFyI!Fg`~8XlG@b z?d^%GyHOn$S}j@;>14t>dKo#a^U?01^HucLH{C?%jGTqcjU47{2xL!}KYdS$H50$* z^*sjmTKS#nYUPS^x})<#jBCsp0?sqy?k0L)?|Uk>_99pVyIu)7E?`JFeUN$#Xs&lT zDSg&{tSf!pM_cgWm$0shtV@Q2BODS#&C+0XE#LS&Cb#^6hqaV)gsIfgue%0p$S?q(W3^*%1 zYKr%d(9&n+*#haX%&&NK)*O(r*L@{sz@_`AXo?pBMBIDFsmHuI8T>3wvL){>WtqFT7M8uI^KWAhr`|SAhS7+pmjdg zltjb5%BMPrn3Vzhayl24HxuaGR^CalJEr3Del@Z`EPm#?E7rik48a}(c{h5FaMt+f zNL_d8`!4ENsVaM90j7mr1lYxIVyfc1*dt@Gzk+Om41o#H8w==~_?;WPFV_C(IKa_k z@VhwH`KR8bkuA4ZL6It zx>F`_qv};>($e1qq4$#hk%!>jwnVSt`A?+CNyEZnrc%tvf|C zpNgL;DhG`XJ9o<-!yAtkX!bpY@y*`#u~eh>bpImY-sJXrQdGY2pq;3lu8 ztHq?x$|844>yc{3XGuN139JkoHyr`k4Bm`jej<-dpBuf%>J{;}3kM;!z*bxOF-1 z4w;-;HgcBsM%Bk%s*AfcW*N7`)RXE>yxa1mC=H)1k~6K-1v?A0-9o)t zImo-(QhY@D7f_$7SL?S`nVd~Pzk~*q_>c1VFrP`XM-nWa^8oR58 zs&Zq!%{Y&>1pR<`;4d>3|K3VV`pnAYw7Q}(QxR_#iyf}qE_WXzLiEMB0M~F^=gYD| zMh9pc^1FioepeMJUCoIO;%nBgd|vG|Tsl1Q#!12}S?9>i6wi{G6@G%;Dw%Z>=i=aL zQJ%4719x5oFXMN)&d=O_l;4prfVu#Pt17?_xzcsJ=y+XkTUA_++i!0(a~ty-YiI7) zQ$H1;|L4BFH8OpTt@V=THSSM}-`eCh&Q6*(2<8_sQeHE>-s79F@Hx?gpa&B_X zh?_i^pAOZ_HmVoS&8iPb{y;vNXrQxorc+V5t!}q1rphTj3-?xy>RU7y$WMptC#sDq z=7#%>0`LHE_W5)+Lhayrf?t!@u|Qd(T$BM?eZ|JM`i07|R`}Yi{-JR{ta#%*6m#OR z`UmlQ9}y2yetfO3b(6w^tJ-A`=%0bOwaE_}IaZHiHgF0kC?q|OvVF~Yb?7T<3 zPU$<(8#S56IVZqxb-OkHZKid^H1(-zsj6|djU;*2jgmQRd_^BqU60VXp{MrW`mz^A zTpb$M@q1mrlO_6Km>w77mic><`e>Kp;U1*Tw13bmb8`V^xA|eU73sG&DGR?h<~O!+ z2GsL`4xQh}Av;LM6@-ahjER(H2#3F^9mKO-oWD^^z%d|x;i9DGh4p^X2&#YO#^-I~ zC4PW9c$`4}&gP_EnYgo8&zg|=0RF-pA;V-z_!OV=lI|*I*kS*0KiWR(Z?^E!z7Y6m z-FQ7Z|7HJyGr5m59Z#qF#3bdhQ!O;f`iP(N@bev71IuNC%0a97Dw%yo^?U6tJ1?RR zssh=m9@um6bDUwvJ`_BPJuZN~8P>v_Nn&4(I}vsi$M)Z;u2f$54fv4iW{LLymkHy1 z66<6Ct<%^(8|BBup1t$QnxWzj1onG;Un}mp8s(+%Px6S#oVAx=w#o*~5>Os+`WiYi z>X>$>pW#*=F^eJT+~rImg0}jk6ujSt!4o($5z8Sf8SP!IAV0g{`H6dC{T!6mZ^|2I z(x?OOw)B0e$0!e+sphxv)Y-1WA160>2=SpOM7G~nZrtm`m}>QHBNzXT{bc#)EcPUE zu}<|6%`ytlQ1TJfD)fk5hW~O0p+F(L_l~%>L9zxh3Rc}~n06P~Z&>7?@kJkK{>IMj zQRjYs%YVa5om7?gEmQ_R^i7ljz9SugOv>ZtYB}5^Kvo84?a4Y|seDA4WiOkMYv41( zCM)~+XUxNsyuTth!6Qe{#XF51YcoHC#_#Ch_fs@>;8q>_->LSSV(rEG#py~z@*YiQ zpuCLW*pWBNbGyL#YW$uDlk>`G)h25kb*taO+x<5Iem0V{$;((EpMKt${Yu}{cauH& zImSEwsd2%b4~%hSoi$3I-&6flYo;~ncQS7@-m%QqE&l7P)#47USy=0#C3Nmj?XFVZ zsatFpY232*ryW@P3lu`IQZOWo8&&9A)Rr>Qllpp&n&Wq}e#Th7L;>&%Kbw!q?*ZT+ z{<|$dFR_E@=sTG3vglXvFV?BCFAtCNI`R5}cX8%oZ1`3<_cpJ28stH(K7m(doziVOLHdy_cpQta*bTl(d& z-HEII(sqs}jGxns{^7FDuCixd80Ek4v5M^2UEo|6XT7-vNg781Jb$h1(eMM*on%y* zuG3LHYJOy2WjNie{KBuI{uareHJN^Yl7B1E?*$EHEk8al;+J-5{@_u_rkKdG$TXol zA@A@Jw#hM{C2Xol9xZ{p^igk{bOCkeY@PdYkC~3E6xdXwR{4h0fbuCFw94mm8lk=IeV<&U z^$+>6%2fT^8drXd#(gY6@bwDNTS)JvwhTFe-|%_g_IjWn_?p7|1@pKAeTcrp`S`KF z!RIWK^Z=?`e$Rj#@*U?L@jFR#Bfrn{Gg4K>;rwWP8!&%tp*CYA(PH;%e&V-t+|}oI zv@)7F+r*wQd}Fvm8wJn9q~D^SAzfr#?C?`n-0**Zc^5sh&p%G1r@=1deDVSxayiTA zZIL5=Ci+f0b0_(C-og4Ma6h}}dxxx<{P!Ev)Y21FPUfts>NVK!qr(-%FP((ihjJie z_}tK(uD1(*X(!q*?y_R7jqKm4aXiWD2ALf>jrL&e;lG!3{XD;!r2hOIK!?V?|6UR~ zcSnW8+@%2PO@2dJRi0vAZO#`oV+}b69y?9Yt8%b6>T@`9lF!Lyys2HOFXUW!55W04 zexCuqqJ80I@L}%I@qS4@Si6un|2>EIKh`CCiC^!e@^ki z;>s$UuNSMLDKBRy)SvUjG&OSv`d<|P!}&PJ;Pc&T<;MFn`qd^VPqUZ7yp4uTVK^kw=ny7LXM^@)?YoW2i`2gU<@4`6(7uThK> z*6ZZa+tJ4kZAZGS7ieSL*Vmr7?WnecZ+aU#|DleElX?m>((y3ZyWV8HjP3et;&OiM zCj7aoxBz5n@=nF1qpr_;ZJ5S&DVcouydIRg@s&Hfj&bM>UoijzqEfvine-_Ri$K-Kr+~8qH zdAI{&to##x!_WHYun!aejBR9Y)?WTQ>X9|rNFM0tzOMGOd@cj<>lfFNAP0*25?UI*U# z@pOFOQ284(kFHzp$p6Nfj4$MrNgCt5D&ywr(_5&#)5Q0?1U;%VWSMo_8au`-W0HN9 z(Y+StDC9XWceLNA%7lCFIh;F>!OA}Vn+xE4x z=Tv7!e`pLkL`NwJFBstw;EHdAkEzbb;v?-$-qBCNtH=Q|A*)|>H+O4X56DE%A|0np z*W=)hU;lG?Q957!AvfX&S#z}iYP^n3`(fjZb0k-C20!Qg>OG|%sEf6tR|^!q@XUjoEO-L7vug+2TNe*k!ljj#(d{Es!mEyC`k@G}L> z%QFOww>{Jj$VPyVL-er7NSNqr{jP7Fl}N};gdx7M=~P7%H@qs+9P18$LYG3w=NG6#kdw!ifN#+iknIEIk$KLj2*-lX& zqYj%*>I5Bgm-4{6z~?DS%RI$Qvc`bledx@NVn%ns{Oxx)ut!Q9>VI~YPx?*Do;BXg zRGgW3fmm~>j+ENy*NO)*M=*!Q+VReU-y(BBz&TCUZ0M^b-MfxOI+rV4cioW3Oq%3zY~H93=4R$-zQ`*k^EovH9_~V$Kcaj1 zpoWNis2LqNm}kBfp{Ij0F1A(39eyaOl&~o2;)sHrAf9cs|`E z@2(>y-{@l5-|_Veaxi*f_>}91U6(mF?HG^PIZmE^@07V7T^;+W)2y8yGQF+8KjLdQ z*QGnpjJ+4yEaJtiDt+>_Zn~Zpd>a0Y4h7ziesQ({|HwyU!)+=~e(1C0G5Q#Bj?Hi2 z&Gz^YJN&TrWo`w~Hz2z)Z*D5EqZYD-__w7Q=BAdvIXv~dG5Mv92*>&g92pjq_|U)7 zN0BL+LpTS_9+00Q>{NZxPyP4t>=kkL2|y-gPl>VT;PY!$aZXpApaX8s|G%3iE!uX5 zfWGJubriIlv(2411;RegwQzpG`vfu+a?z|3AN|_#h;zJ&yUV#1@fg=xux^BfBd2nI zlH^9MpR>+LXRW1^o+nMh(S7>;M9fY13Kj{Nn(d&+~aAu2m zqFj_WfO#lzH#G-Uq)n)($tzl~RP-i8WkC4-8aqP**4=Uw&~HXRDB2R2Xk&16qrvl# ziJ6N-enu{3-QfCcSsJ3^EnkA6>=u? z1Z!6I`+U!aw`G0r23|5-Zp>wj3rze2;OP698}S#s0~5QdOxywX1KHbT4rflnE!;5) zgFSjB!mgX=4fkilQU*-=Dt(gno>9!IO!_u7=B@(V!I_%?+~^;e@V=N2|CK&A)-UnL zyhnO5K8P0{1syy++`K>1CtbGi{WF)3*n=AFm#hz5w}?sGjk<9MFMG1cDa;9e1_c^f zi}pewC`p#v4rzE_Kr?`TprXGC z1u90Pwd)jQqxhdhjef$hG6-3G)YUZ#kq6B9))s^?e8h=9kG0KYf%uN@`toxMj6L{J zj6q+s$DY9GTGn+!uDh)&td|vj4WIVDh1nuM;vdOimCQi_^9lPf!qb4@Zo!R$TLsJ& z*ei^IjFFGHN!Q!P@tMVr{tu2BeZ49?`ZsOl?wq^wK2Ls$4>$0jiNExPku|scpwk_p zqnw2GM)Ljg)v8PMRm%jdmpEJF*c$ocyb$2Jr%st2f{I}5$Lf5QKy$AB=9x9#kbvK` z-YvLYz;E<%SDo6Le09O`cdtP8DHxXidyVQd&Nr>r+`Lw2fL2+)hOCBtWrwB|@I5T% zWbQ)XoTArDRVHJYx}zT9rK|}Uhc5SfT~aTl?nc^)I`aO4+~#Yes#2rAS#QZ~u3OV@ z5Es0BJU<`b$M6$rl5V6G{Uq!#1IC8IpYsFwGV-CHUEfxvcN{yv@0b0^t(0FkE0Puc z3>-2e`hqZ<^Xz$Yen6eUw_=@0+TmCNc+amfU{ zpUR1@sg`uvYpKlp1p~4{r-MAkr}1cTx9sm%f8nDaFn`lm0r~;`Rk-bOC|#v9ES=AA z*4!ce4zSj6&BNpLL8=?m3t_LiF*od3uTyW+&Gh{});sVN%8xu)$|rxw=AP%3^3Q(u z?V{Dk^PPfQ1a}A+D{?P;9yyDvQYRC%X3bUoPD=B#e)r{jYt)tM-GDlyOhK#S6bHZe z=Wb^1PWC+yY7#vl_XATud z9tphx=QpaQuh5Ud0c08c0?cjDVHfcdci0oA%uCi!qOTBVfY9}P%wqHd`n~HmwlxKD`eR%0}?L0901n$bXM{!LybER}f%hay`-hEuDzQ!3rKM#7p(z{de z4*~q0vBgKdWW&b)!;Z4|3ZlP^_c5MAM|qp9V(uRA`k$rz_rHvCFUvl*f?GFD+Ozo^ z+vmZfFM&t9`%9h_%M6yfU1D;6M9NyX6CG3ncd1A zvLv^DvX+O|+*%<_)B|l2ZGqj`Hgdfh>#LA?$A`nO=gq@`V@EvY%kbflRqj;!H!4T* z4Jc1iK_k;>EMYg+At0TTr5tFJo_W4z1BKFSkgRr@9u?~qK*O}3}T zT%>YXUOYek+bjh$zhSDTGV?6I``k&rhWP<~z}|x01RI439#Zx`~ae2=Ri`M0}AI&?U!cNguo=uq4CyQx2G zA-Rw6eWtmrFVe;c^BsJ~&tSO80ENGDCWCxJ>$7y!mu)^oHjs``a}lyZmb?=91mP1T z?^HAwRa6h$qsIM2mCQLm`ul)P$=||9@2kB>_)P@{WZqxuiP?)&U98Kv!^98vGPCUL_w3-(X&EjaF_LDa-NrQj5^*zE(1ys$ z+#$yJ?hv12%?zFmpP=^j{Y2LN?9by%Ya@m6kDBBQ6P&!OyTpE7RzINQnW_Gfb@s-9 zF$qAkcZSJ%Abt34`=LAZ-##EGxva#Tx2JH%`Pgqv8=EzGWsV&^_cY3TRln9ARhjT# zX!?9J(1yDf_Xsmv^d17rkG>HcKWY;L^`8+u?8cgeqrIE$Vr~di{ma@Ce`Du~2!~w& zGQNlN{Rq-@rK)#dyU{0E{~}8e7jZ_}cTv97|7DM?&+ia9L&=`jYOP^76N#+h zYXbN=>p8+komGX?F7z4r7kWg_b=@m=^;^jr`dyM_jFlDrZbc^YDX`4WWeq7!yftSK1TjBy<+&>W7e;Cm6g2fR}0_~}|q z#((P%d&d5-I`b+G@`t9&R3mbq-ztSfFT?qUA(_+-x{*QE8}|`$zKA)DSySVEgCA)T z5BeUYxea~m%kzf9ZLE7q55u6jZ~srB8O!=DiTVJ)rDI-0jRIBfEyEd;#uLMFGi2 zTlnYl9z9=cAjxaP^0LO{-0;zCuCK0~C&QP0exdE)&FIn5-}7ECZMK=(r%Nr)ir+P; zl7z&U9?+SfA@P`7WZtdz(|c-KJ4}_YsTP9Y&r$=x`o759B-PVYYYW~o^s`&&zQY|e z+OsOWsyLYgSYN^?$@A!MbbO7=`+$D7gMFYlKjFV0M8=7-qUV99`d-E8yh56!#T*g+ z$oIkg_ij_g-It5Ati7xvND zBYtS|3mx%<8Sz0QV`9PsBCUv{mC5|+dlBf*C$6E^Y^@smD)ju{~D&{Y9xl7H;b zHM)tL%OQ-_h_g8#6@>xB@!1cr++6Mv(=gGT%w7h1N#Dy@Epx3PKISILlmf=3k0XxNk2ycaJ^EnA zf9NQbpLO&q#7i1g0ezl)kq5@Bk6GMYZXat#-|%v-Tb8KbW`EG68RZEYlk+RsN7#1e z`urj9MtSJ(z6a^!c=YX2-*Gh{AnA$!3S#>YXuQ?6+9sJrMZnCNnt7k1J(fnUJSkd@JO0qkiaU(@#-9$tNp z&1);1ykOsKh8^}}^BwJrJM|Ylv8p?4hc8#4em;$}R>JjwV* zx8iAy=F!I8K;3s{dYk_o>-&xbt#4bS0xtIifl24AatQP<`H!2<&H zY0|Zuxz=PtMdVowQ>1_JQUKk~-omt2R~@)s6rB(I6|6|63!njbxE0!?X#Q_$c)G}= ze%CX!WF~V%<|$Exo@1ncFi+7o$Y8W{RUW-Bx=DME?Yq!?zOv!0KId77ha+y*znEd?rgSg*9hxRyf%?C}-7-1fK)+|D81={) z*w9CN(MF2X(wZTYz62l9K31v#rhz=r!S;wAJ16 zMjL5QTkWw{{BezRIBT>g!r2Yi@hDB@#m|L+tDo80OZ_Pl#vOEYE#CueagSp&+W=S+YNx%1AW-fEx6Bh z{|^+aQC{tJK>VZ+l(dYec>3t~(e3+h%vl?9?p627EA2@ZqxOSTE`DdJ2ud1ZP-b*T z{-!;@NpqPW^X_rA5h1*e2uB-G!_vX2|FLi7?L!@STlqb&(kkG3IFYtE{cf zFaF6N01l86ytz5g=2ZUS2A}rNTabOEX!|hf2f{PpsP7$tlMkh9dPK!w^f13e`Gfqc z0lV%Q<#SnaYrY)G=PKczSMQJHfCS)k@FVil?!zzR9$h+o5t@&AZMrDj&?$C|xZvvf zp-j=g;X43)X{Q3<^kJvruP#3_m!pqCZss@fyt~1@aOkI9j&^tCFyu-6$5_B5Ue-xI zZ*XUauP0b5a8?oB0CFyUl5OfPCTdyXPn5MD#@5XBhhO$gkV;&Z5iy zqi=?|oWlCM#H}%rHK%e;DkY8sLbbefN^DR!|XbQRrA1-lhsiS8**$~Wt!~%yR$P* zt1KwknN!akdRO{Z_hzX&b)I28sjoXNJ2`z}%7WVW#c%5O5?#7~%Exv_4bBf)9DRYXynq0Nb*}0j*He~mEVGDZ#8<D_Ax4DFoQSaA4JmwGwuq zGK%$;unQ;j7fk*Xc8S8)JFo-mn?Mf0&YV(Hy^wBW%7TLR_mBhXbZ|;wRjakz@Yh`* zq(q9Pdx2`>zg6C9PhkC1Qn4H839Q~-mE98gJF}-=uxZ_Aj@S|QPja1R@qsOv(qHTr z_Bcj+^e=LMaus%${H31i17Ip!cVMZff5a}ZX+854f@3vjb_dqzp7Q{$Du&t9C+rU5 zn_N@bXv=z6pRn8|Y%*99R<*jnTd57K?OOu7Rm*f#)e2y>&i(qzm}Hj~qCT-cf+eMf-9T4;IsJJvVG9lG6*foMp2wR~xRD zbW;bdFokyOsH@#z%Z*H3aoDwA{@it7Vr_YG?V4AxT33CU`%9hu${!(WlLzDqHaKNo ziBIXO6?$Y>@9tAug7tSN)dv0=J$;KD8&F>>vGg{y_NV@;y^W#dJ-fH2JkuT*Pd!t+ zmtb?I&MDa7)OiJ~_6`<*^LqOWR_jHVKnR~0Wat~#N*ytqPol^$i)yDN;tjLu=#&=T zdgUf21_>ds4h)jPD!0R+^N=ZN(=7cDH zNmC1@<@xZ`#QRKqJ)(M3Ibt9`!^7eb#jRJ=G>IJUQ$I-_-dw_mQ#u?pJl&4E5R10Y zhPTi}?`}GrJG`Zd6S(Oo&BI%nfCQyWO^3JEbnQNM#CCWa2@g(fEoxg$^-f7V7~W2Y z@|@aM)b?P*R5v&s41LCMDbO&L)}=%O0Yt zrl^J5Q&g|o2;q_C>|+%FW`%mJmXlj6*Y5T>&A+?qeLIhHZ-v`U;*C@Lh}zvY>WSs? zqIOX_?zXR}J(P}9`-$4ij)dTIe^HOIMKshCMDf!QFZ%)MiE5c`OX^QbPgaZe6zVDI zslv7_)YH<_)l0T0R4pB-cHX8?2c>7IKR&jkey~!QZAxU)JH)8R7N5^dhe{>F4|)0K z%586ns7@UwY9E!$sb`6Lye;|hdAO*@rhSXs5u)~0Jnr*IQTwTsu39)M9j*BHS2_6R zncLolI!4s~ssRsotf(iX0}6GVC~Cvq=8K{>oH}0AQ__BgIziNv(^Cp{qNt~)r>UO! zPD;-f{`5kfoSq}RR;cHu=LtWsP|r^<5Pndh`qC-FpHZk&(+hNM{H?tWd8^uM+;OLYh)R4)m2MROh**z z9iomXv%V+(bGsN>T7LcLqm z@#%y@y+_pibYh_{6m?QMrcmz{_3VUv%=bP~$Ewwwx=7S>({Y7*zo-+{hVFK;sOP2U z7U~0{o|B$ms1J&IzWRdu{E(=V)!I&dSkwz7k2>`cQKzKi3w4R8Q`HmP?W3ZOR!w*< zU79|ozI9CDXP2dqEB=#<+b7Z|Rq_*x+o#f}72}D;tv_9^Iy$bneI|WYd45iDyCQu~ zJ?+$z-shEGUwToYt`tSj^SoRo>c#0Lg}Pc4{m|X65%tn^TA{8Lb(&&zw=al#k^1N- ztaiVcz9jtgLVYq-FIx z)4K{akp3+EfiukZ^Cb)OEcUYOonsK0Bu{@!$cq5fNo z`uC-aO6rT0`unxk^PD{>>f-c)LTO`p_=D*~g<34?!|5Z18WMF$`e>n+h+<@UEK5aQ zCcfp=GEpB(mlbNcsE=sWx!Vd+pAhBByOmO_eKLKjP+WlfY0>V+g}01Br=&JapOLFm z(tYI1)&HH+b7=Xq>57seKS(`6}hq^D;eep}bsG;@mQCm9G}( z@btD;de@|Di`zDN+k9>MLZPYM2sh1ylr_34|1+D+8g(zgn= zyC}GWr!Y$t+`*|mM14uT$w%s*d9VES^p!$ACOUeKPTTTj_R>IS3b`cNA>yWdHMPImh_v#UtW;=@^2(HyW1)GR8i*?w-@FY zsVCo3s2As#UZMxPMt35+fw5@^>R_Ss!ure z3Q^xpzc17oqJFQr%-voo>Jsq{ADgerXXX#3+lt$(<#wC+qWe5c)CaVY1y6zW}~m@zz-3q<`R{db|>EsFWW-QFW=QF^dY7m9jN`Vn_~uc$#S z>z#U^sC#U4lbX0l)R1N`cYD962hx&4T`X#ewshR>1ETKJMw(L}6t&cTZbU2}61CV4 zEkJ!()G}>{y3daowOm>OzDx2)^YXN!P?zS9>1RVjg}N+%T$^%B3iXNnN&R$G8;2I| zQ~A@{DB&10Uw^(lGbecppHT|TNltxM6x)(cT_K8X6Q@2W>aVKn9vfGm&sXXqx*p3HMJ-Zmy3a4=FYBpB4pH(g$Y0T>&gw#a zHGj>vbv)d43YYV6iRJ5}Dw-|b?Hi)>JKI8iQ`Cgqp`*Nf*Nf`N6N}roL`}+_h5ELr z&Ri)zzhhKKc0Tdl{5{23Db)A#4-`jN@!62i$$3(tekiIdPbt)oM0Mw$Lj712v+U+t z?Wgn;QByS^d(M6;iuu^7pNZ17`_fwR{XE~0rOzv+{e|2#_WosLeEUJN0W(o9id}UQ0KcTW=}RO?hEvj`z~uoNvj@@h&s`CjT}w$2;}Ae5>&3 zh5CKIP5!nl)b05X8L7o{eMi1CZ=JU(Zhy>wk}R-Yq3+59!nZEepYz@Fw{4;RlJChM zO&=`z{HyZ0eU_}Cb-NBS=6k^lbzi<;_>P78d;W*;oeK5e`2pdNF4Us@pzvy;2J>R! zGYU17mk8g!P)qZ&JTvcH>T|hL-#PD6s1>4i&ASz9rKsKWtU|34H7oB?sDFw=Ht@P$ zEehGdsfR>8HqS298c|3J?xtr-haZ=BFO&}W4DXU3Qz$)8Has)WDYcs`l?pP2*Y$)- zM`drN?$pG}q{?1-pAxQ9;gB~xg)UK#&-)f?vZ#IYu7#Q+YEQ``9!qznr?Q_)>(tar zZw1N3W7$kTFG>d#YMQ7g=J%Ht+g#KEdH>=zUDVsOw(wZCsBBqzqTHO?sFLF7 zhN!2jJw4YmMeUJmh1ywEP12RS?IP+4l9`;^Rn&ob&qD1c3JJ>Hb{F-Gd~l&=i9()o zw>?B1lAl?qJw+j1x!Yc%4$X55^%zle^I?U0tf<5CvkEm^)U)#8g?gN*!}Ae^nj`9n zd}N{a7IkDks!;ogIw~JssK<*sIv-T1eMKEApI-C(RrasURV+?Dp>jawFs0zs6Dv=u z%*)4=x_)xyDV1aLv4whSP1@VIQ2Y><;BJA`J!GddC}coAnFB@0-fp;^%AA$)G4BVAgR!) zQ$@WrpH`?BiaJdz0e5?msPCnh6}K0QdRacbP%ja6x>gD9^QEG`lwMxkP80R={FUPN zGErYouPAP(i+V*~P~2WF>V^4?;`RzrugtG1)ET1A%&#oeD@DCJpH-+=i8?F4rch^! zdQE<9pWqALaXU}c+4@76Nr{|T;h)~Styjy?Ls zqxMeP*Whcejd0y{gRUDJbNh66Z<{Wz^V;TlV{`SNEpPigufG*GTpR0#9pCGM3NzZf zbBaYT#!`0h2s4ydr)?vd{rxNrg`3Sk_Q1n8#+BM2AFb2|~M;sBg(K^rJx{KB1 z#)aiz@|bz>UrLt)#~T}#gTNabmWxL=Hte3`!#2%U?d!QI?7vi3n-X?Y%DXA`yeaLw zDgCOcKR30J#~gjX*=!%yOVk`D=%ze3rRy~rew)pvx@rpRE!Z3;=%zMm3hO;5{5G4T zeFNSWTr7NfZ3NY9?mRLUT7_*t7CdZojFEopu;X2W3Nzwr9X4EdHmy)lVIEiJqxQMl zkZXtPBVr75!!ffe_r0zN6DB2FziUY5kG58bFkwDC*O_g@ws)P;Hf(FxD3R-3BClco zzwa7-G0Z4g>-G)T(Q!m;M=gYF`>@_d5hlzC+q#~^wSCz3>3Xk=^ummo+o#(;Z2NS* zUqyOhKD>1Q{e3c4Pp*ZIT!i_5%avMa#ev(mg6H{>3LAA4X0&AM)(QOql7%dz3TGhgaT5Hf-cE%;;B@mb2Br&oyFdUX`~_H*)8z z@{J2S!Af+{VTUr+?-MbG>8?RFn@B1ttuL%Ot|Q4r9E3e!9oHxW>9%)WS4N6ex#ud< z33IG#>zEHcR+|LtO*dTEO*i=S<1BQf7v{rrZLL*{+W1%Wb&+1AKec79!gYMi|3561 z6?M~W{?DkZ$d$KM((giAWnc zqyL5(DYWi&;X1yzH@9!=J{e)hw|;Zj)_IPw?fcbu*9a5l_!2dz+dj|ZbJZO7UuoY> z2^%Ge_9fkF3M$O-)jn5Gegwmga*@bu^gb?wdL&%8YMbsBZCy7d?DV!V`&rPaqcEec zHYMydOE+Q)Gg4^X3gOD-B9c_gNsutZwRLTTYx}UR>p8-D%#mK0;o7=3!qsDrFkyyk z>v|4Xk2%7G8Ls1NGHk>2m?KP>;d-RiWKhlK_?Z8-u$;eLe;XatHr;2m4SQhQupV>d zHOwekt!-G3Il_b)VV~YMtj8Q-!i=!{v<>SqN0=}ptgmB&YBoLQ2oq-b8s7?G8)oa6 zBaTgRZC&1oxphs3tJh@YG0bpn-TL9$x?ep!*Y+{D&sF;pwXY5D?NQD!BhRf}Lw-KE zWxpEhI@kH+6Zao6BZcu2Mc9VvFYbb8RgHM_6Rw zGD~V?gl(kYu0b`sKFPv{YnahDTaSfJaSg8GYxc-Zn2~<_HuA8Mi!dW>>pX{RdtE{6 zbR&1qYFStR4%frl#@ycZKbNaVD(1OuYvX^D>rqmaAEA3r_@ak~d60(kVTT^u*7X^i z;MzXsP03aJuk^gOWAD~sM_o^9F+vYH>9G0C zXY*36tt%BBxd@YRoEJStH(#vl8Zpmr8}oc3ZWA-E5mTfaX6vxwdJI9=8+M+#hTmq> z!#3MSO&;4a?0?Yp#J!K3f9(9DHZ|R8@r#VTn@iR@=J3_Jo@2zcAA{{(TT2Deua0P0 z&+T0!SA`?_{_nm~k}zB6DqKC?vj4kI*w%R-AC?|_++l|v6}Dlv9--lSw3T;b!&Vjg zkqAqsqwhya!fan&AA{@5bNfDd9LcV?yc-HzeT2f2=ct=7qsJbq`xsLyr%Cn>Gkonx z&~?IwYxVz!J>rNFuJ%8*uGk@p77H_^uiUbI<5x7eu0QOgO$fW;nAe}~rsTPOx*K*) ziMpAu!)lnv%{y>}*LJq7ji_(W^CJ~DauH^WTBl!)jd^41%KO#E)m7^} zGf!~hsC63|CzP^%|CY588mfom8tFtmhuJ#aaHZo^{gl7*7`9=K4;y(6S8}D_G#_!` zQHRXmd!0BYn``)OHmCeQ8@9P5(MHtOy8Ss?Wy7xP_UExNw|D)&nXZkE!;Uy)eBX## z`S-Xok|M@1+t)^<+m-rSgbmln%Wd75!*$>PnCs))=87A+*Ui<#E3daglz_9Q?A%42 zwQi$uMfMu?+Z=YhYlI1Nd`&io9q$@p!t{DxAK&O6m#YX9W{YuEN++q*vem`AyHbDsUA zQ`m+XF>j1(Y7+!98>w?Bo(M$S-_nA2`)F-#TiH*gwTiU49m)0iKm)6Pimt9?Mb@{2wZ(U)OZ@s%!(<@wa1dUuFS}Z*$y}(o>xw%qQ~ZnTYZ{Bwn%YoW zQ(szNla|$m*M(oDIImJ%NoA-RDD4b1hC~Z+OG^eis>@HCIIyfSF)eRQtS?WKfV6y? zL4A2$W?goAgKY8jllvAox@wCXowddF&P$gzx-MNhII(}p1(ODroYpz8WM${|OXhVQ zuw+`-f}xd@E*R>Xbi+_%N_AOHaNA_XKSgnM_b;n;_b;t=H4Qot8Fw26QE_%HOT>_w)_cyK9T9 zJ=LLYr%oHXcIQv^v!Oa{EIw0i2jHh`fzn=}@Y9xEtooTdb-|K1POS|Mbk&yDC*QVY!IayU zGz9gYfd|vnfd}hTWOffcIIFwypyCw_JXn=mRd0NqB&h0zG|`JrGDz|V3@nmAL3(hm z!W{`BZ5^%ln>zA#Zv~u|k zoxt1`D<{oe(U{s8OjGNF^&X&aahlqa=TA%v(!ItQ=h#} z{dLx4`R}?wefomM^0&CJSMdn?d#j6+Uhb;)s=rRH4h>9g4At}sSYK~-NPdO}gkLpv z)>8RhT9>J`mafz|JW2g=q2gJn{M05sYkA+qS1(mvF1H({MoYE@|=RW0BJInAnx*0e%{2tSHz$beBEfo55@Tg2-FRbHiWh;3bx%H$nJ#hb7fNVfZ*X)T;*}L`Qgs#luoxibCYwbzrk?saZa^28qO`wsrDwrcheot zsp0pf^8U;z-~OP*!|OBqU-TivxtBPl51N1O3{LgS4CjvE)cAzq=jo2#RQtT}x#`*Y zeBoCWKXYY%$Z&2SRy`Pg6mix*VfUYMyKriJ((L!l@06c68-7rJm&}U{KQUiW;!la2 zic{m`W`99Guh`E@@6PX$-D?GN^M$%+In^%~-k;v9JAyqwvl2Hhr^W{??D_e<#l9=e z%_Q<(wvN6 z^5d^Zr25r{zc0VP_&FePM{#OgWA@x{ooeS8{_L#0*RQntIhptyR~h~R%95@Yena90 z>{O@ilj5OF*wa$aQ9RcOpPRTBJ2g~C`aVQj7UvD=q^$NdKPhorc1mh9eHUl7mHFvX z{IYMHV{tx(ys4kz>8Ye!JJ0YZ5r6%B!#_-4vbMWGnEGMuEf(k7XhW+{-Q23XxKmAS ztdE?6=@{%ApSHA)C2x8m0Z+$~ZtZfz=MjJXGloA_?=GbDDvRem^piR_A=mP` z=`z`UmTJ)JM(;|?UhD7koSXNQ4dc3@7x~UjPrLs!cu9New)oUI!{XuY_Edkp;rr

2c>ay}*lPKx zrQam+jQT?s4{s@^+D?Y^l47bo+Hl@OOf~U4eLJTa!gn?NeC6ldpImG4eBrobh{Mhw8@;^#Vry~S|eAWFIuo9}DHS@)M*c=hqZH~8-pc29kl;QiT-daj^zc-ur zno|8nv**2}RKLye-=vQ#Nq=wTQ}mzO8s(u+zRyX2{pzpH&pGK+YHRHE3W(l>O65J9 zuaIut->>1m^VIl0UW6$RjUO1!UFWIRFr1stQ|*U_e>(T8e;y*=4SRzz=`}(=USQ+} zNxoV-Q2+hZ6mPnv#>HlTd4^9sQ+QSX4^ql5w4z)OrHJmpTQ|%=4^GwohJiFNImq+!(4WEmj^1>i5Fs9mx=KoOQY@B3%p03iQ z`m+o_3_s6G1Xpb_z9vU&sdx%Ds+;(MMS*$q0CvFy!er-rx?zAAE|b#;k@sW>Mt_< z(R$G%^}pC~Uh_x;FExAz@Ooc{cocE=`#S)7HAMZ#@BQD2I0s&6ejZI(lHd7XCI0G* z&3*>)*ZfZZ?eh$k*YEJ>^+d^CRuYC7*yl?gl6=tLUuAxH70CS@l6l86HC}7> zy!EN}GMtw_Z$JGM!+Ga(x2;Y!oL4@R^~)q5M=Q^-wfyi_W~!fMet0Q!@#U{EoL4L* z4;%iu{K9mS^~tUZFG@;AGJD>WWTxZeJ3nU`V{<5u63 z(&g$$@EmN!tLlsm$ya(AHPsKZu+K8T#~XeaVH+nH&a11brhcZ6H&^dDR((PrFRrGl z`j9@}TTOjxGkv_ay2E2BGyWBS<2e@3;iCR}%X3SdN2Eu6@dbw4TgA00=AXBpQ)8Op zy{TJy+uiUUdwuQk#lQTNmx_6tS`WONAKshRQ{0C0LU5`*!SE@>gFk(|LY>l7!+C=` z)rgDNoi|Gly?d77w%1K%sjs`dewiPp!P z+Bdv-lHt69oa%cUo`|9DD6e-*yeocWG(_vG5P#a+(&BaOR43ouBTQblF`T!lQ$wJS zm#I@jppTcRQ)5TNd2c!C)nmTRlj^4ac*A*XIo0+pxay-$9r2E~?DdW|pS{N1*w^yF zYs{&(pV@Cg{WbP8dtQ`IwI>?RYuu?OfBJZDJ2kd8d|TqI?_+*=$JtLZ;Ya@K`?7hV#bswVh8foEN6GGBTX^rBj{pnS?zq&41(54d0&|erh$# zGcQZ0`hjM@pJLU%Pr+s1s2R=+)2Z6sNo`%1fdkATjcawRqIn_=!{|6z5 z)Q>d(&&0mGgUk!hsrGF1a|m%ZPBuSZ$OoiTzd~FG>o%}Y7x^mL%elOk%=d)!h3tNk zy`h_G7n%K8$X9iLnea7oNsWsv&ey7xDfwGcuco}Ui_QLvnf6gWQbR9qKP7$o#<>;` z@A;nEd{G1`HcUwHKqJA3hG5k!Mi!L<$4ETNRy@p?=_YKS1 z&0ad(|HjR1!1J=9My27rU6>kM8qWKN=ifKYaNdMX_3JEM-agdWH2b^sj%;ddVY0+! z#8ca{;AhMJYv!M~CsX~O1+S;6@Bg&nb;(~(KEL1aTl4~LD(~m<=47g^E%uVDZ7qhh z_QkZrk-swgFJ<{LdHZ+r{SKw&@A>i8YO4R2`T2PMlJba5-q355dT)5)-^`v@ER!}{ z_`aNfmv-HbEFY)$D+yPza{X5C^gZt*R&9DS`ODe;B(09Vmwxfr4)epyqYwS!uNKd* zNnxJ9*vPA+Cv@Ly_Pjaz*AL!jIPaFG#y!RUmudB3f3*a7i8Se@L_XdHm8#S5ujm~# z*U9wTD`=_lI!l+gzSP!+^U_ypTxj@L^?FyTNnewy={bxM(Z}mu;!B3}c9-;rhVyb)s!Io!G(grKV|rDt z=ps}PD!1t(7>OEl^)C>mu#3~}dtPf{c_BHeuekjIx&M^6nLTg0NwaGBb<|t!9m@08 z@_kYI!!_4h{(0do)z3CR`{(P5AIl#!+@sfxzmS%HRDD$67ep=F<`PPAMgkIBAn-n^qqHp7gX4{^EXcYk;QqHTjv3NeIvOND)*BgGhLLWW& zEyF*ZzMtK{imDVm{-m%U*Bt!~i<7seQysp5#^aiF&@X!|pS%e+aOXn9{~-T&J$Ip% z_geW$;v+a*qxV3)jgTllo=#o-b)pgWiS&hceZ&0lHh5|*F#GT34=1m~-7_zVNpoWH zzm4}m_y4Wo4ZVwY!r?y?etY6ov{d`K+4Cma4ZGf8_#5&M)&GBKI4_{3{$CmXBfWTb z{_lP*d~dyP_Tz%{#_n4*j&3wRynLot;0^zQ-Y=VA>7JH&JMHol|I6%uoPSipE=as; z_Sdie&g^;9EY)u{oR^|g<1bdOU%*#u_gHy(-#Mkfn>{Zvr}|>Ud1pE`?k@K7Q~Qhg z=LP7bcXj!A$5|cJa9*iSjXxKA`KjG){&^!h>E&HMUV%>a2MuqeAIkrL;XlSt&ENn1 zQEJHU0kh`~=~Q22_!W9TRr(*puS{Q8Ju~)`-g3TDVOJRb)4WjlD&bYd-Vi=udEgc4 zl$Mwu-jLQ&0mFG0IyF`r&TG=CzO2|QPHnyMU8xjOV}-?Y6Yf*Wjcy%zCvR9k^<`b=hZn3z?-@aza)KBe!gPy{7moIcUn9zmhA^+r+U=)!So^d`Lg-BSm{3MfiD^U z0mZ-kqYX=!H;pCXoBzKj_5J#OhV#mFs%>XDZ%k_)XZU@3@j2D~J=Ooi-gm%9Rdnso zoqM!7SlR>mV@%v>81spQjPv?9ZqLW3x#Jk{w7-|Td+PXfzBj%W zwVzJuK6hjE&EX%N!;P^6?O!QykJRNR5F78sejgpah~5D+JL$5bQ@p7Ml4Rd;-ZJs0 z;_AjdOm)`bbk;VFQc)Z_6P9_f0!dnf+sirs? zKF4CEsczO|$$!)N%?`PIVTNymS~c>sR8M`fJ30@sJW7YRXUW8*to$C(R+?`xfx z62uaj;X0g7c*ggd_BX?c&gfg#emcQ?duuH^&*z=tt82>3BaE8GMJ}-^)0kUif%#z&|>hRH$iMmQE%W>ILnmb4i7IQTyps zQbF$o_(x}wVgy9{=|ob2=QM>+$H)nfn;-;8`1AGk^$JoGnQyee(s@N3uD>0|;p!^I zJ+n;9zU$N>eh>Kjh`hivEz?tnBNX=RqWyIGw@|xkKb=mE-cjur4zj1lYX2&M=c?8t z#QSs&V)T=~d+GdY^u6miAK;8})?bP%@O^|)9Qta*`;OXI``>duFg8R5opz1BdL7<^ z^k6iTKr0GY`)U6MWRE{a`&*Kp%>LRh$+paHT9!^I7yj?lgUMf-t~p>aAvts{f$oO!3a1JbS62ze{~!>ksM=I+8=dhL(gFCpM%rLMP>;6 zZ3LY~E;4)Sa5{-xWQJ-#ojguoI+PZj;4Rbv+CLlTnzNp%xC75c_%Iz#CwYquo=^Cf zz}exfUx>Ll&z$3w2|D|mo`_xZI*cp(g{(glx z7eMAB{4RqnSHh(ej&H^ z@tX}i7y3WJ?^FCf!*3pbpX2uh?D-OLzQ^we#G@19e??lq0sny?rWN7NhpDGmD4Dz4j_XXm93HKZPatQwx z_5;sfotGjiQj7AI{YLq{;-rHf?o{31aJz!5{Whp+yZVZxNY&< z82(N1YmZ-N{I@@L`78w^C5-E2!ENtyhzxvoZ|SQutE+nr`m^|{?e0{mWM2-!XXtBf@0!vMd@WU zcM{}O*acBeb0GyTB)l}uifDwnkSZEeah1V*!3;?J#hgKf*^xANFcVFvq|%6VYB@q2 zCyINU!n{IC&#$5Rg@p9{!)QvCK&PllLrm0gd|z`as>fVtPN(K-G0)JanVpz}=to+q z4V54y{CuW{<|Gp0I4xC5P|OU{8(f3XFd>TLM_Q;7aL|D=!)#5=VbrrWHMarAM`->g z`akl-VGbk^$<2y1SEYhtcGGznjQNo)M{cQV4!PRp_zDxX%W2N!EX<}P`B{->Y6Ag# zmr)-4Wz&|C?I?NeZlX3t9t7$gC9_=5r3B(Q8)GbjVp1NWXiH=}$MGW@VT{9vPRc_R z@hK1FQk=GGL)bEH8QC%obwsu^H!IRcwFU=m$X^t7L-`|@;dGah(XwcJ(MeT>velDOo|em1 zXRE71lfoTDXGQbk7uMklG&(Dn&>UA4?I^k^nk&CBKM!*L;;N8}l3O0?9PT7GS2VAF z4D94E6`fYy2XpPqqMb!oH3@U?bI6|MPFkA7+KBOyE@BIn31zC&;4;;@C7DopC|9kp zo}xUorP@lBhZH^p%Ed`bDIH3WENn-?QX5MQ6ef96DJnubXa<^ zz&v9W-BxV}E~n*kMlNmQY>D@bTCB$ypHE}OLI&yin9-YATno3G>aKD?xqLQHVSa>A zM(gaQdP661uw`);oC2aaD%w+RD+K25lP#IWumU#thU=lWqjtTR>XyPNJs)vMZW|gK zi>9?)dU0CkfjBCItud~pwIDqzmkh$dRS~xZ#?h!ACgi)KEloo?s_02e(^cfAF|L-Q zwIQf?Rh^;wz>1JewU5v~YDeX-#rcNI3Lhh6J1L4u`O7R-)!BMZI6Gi0G7Gu109UP+ z5SLk+(Q&p{J0NE?*BLXmmeRTrLcVr)Q@blc>q;Q!SJQlXnjy{Hu4+fzjmxS_MHS7g z2S>B&$<5>ksDX-5RlW*;Nv?tGuXYyQ5K49`w4u^GA(q=i?ILKNz7T0Kp_=CFXX?3r zYFEf*kY1^v^x&`O`eM8h*O$p3;;f}JqcC#`bN#FGrN|%W!KSwp%DA#Fi}X}JTb;(7 zZ$fFTk@4#Wt0BtAx*2eS!u&d6;`nugR6pb$YiW>&nJ6>0hEP_^4^_h;m#xkq4?e<3 zZstL38EJ`T{IkAk|TL$Ih!}as~sC^a5O+bCv_+lAx89i@B!IrenpTC&G1ayLAdMDyIP8q&2s3oIR&}P{_#L@D5VLlE?WMH#crZDGU%OejNv5Oid;3DrC zspD%7c#T>!TI{c~Xtg=yfvz#M41JA~dw@DnskN>#3ZrX`+_7q3q~|Zmpe-RpyOdAD z2di zKZ@fcFDIxIkq3mL%o^k%4{kiZZx!hTrzk#bAbACwCa9Ch7SvH1Iw`#jRwq)Nta}XR zVr8&KaT2vCgk?0Ruy!%yo~%w$v#@rt7N!t~Fs!igv6e9tI$oTr?Ns&Y5yx?k!&tvU zdPoh={+uo|%N>QWf7r4_IN(r@tdrv$L3075fSql$oRB_NMC$dA@-%h2N@HE4fSn5W zYxwnZOgL%hEOoXbL}ljV86fJpjB}A^enga2bbIRSM0W zp-uzmqy92<55StlDtwLuL+)I4o)X}|pbaX7%`;q;a}MTIW(a9pNEgXboGRyZ%&`Qw zl(-D)hI9ex^pv_lAw6wN24R#QxfJJobr$k~FiOwpVy?r4#G-}46Yo3cQ8?#*6$ITTayX( z!aN9C_ty>eHxKElSYwFIAU8X9n+C<@)^$>!tAClf~MrZ1i$< z1vtc~vR>>Xj8I0qlhh@GjNmaQM_ZK%*b|d6vvNG!uIRjL zrEAJ5@A%%tn;xy~qcwf8>(n&@Xt}@`gpaUv%*VnEPn$LN8dnjuNOC~Ogz18GU^DaVeOh9$Lck> z^J0_L6wRR)G?zi1>*J^!1+BfMksli-YBN~NDB?GXTa~t2s5*pc8_*WD?i(09LXTiAu1egl?ohN|Hpc&s z6zd-+rtVeuDO&5B#k)ncdd!lClY}_VJy=smYk<3oX+~$;RJ6Jjan4KKj?sQv@3%7l zGvp{e(ivYeF*Pl9m$+Z~SYKR@{4qBTt0n!#KPCKRRy?3+y>d=0%(ub2o*&O*m7u`d zWk2ztnyP5M@|b*CzPuVG6DRa3%H`VRL+W8gYnLbES`kZW9rGNlZdTQU5}D*9>QO~& zo9ER{)Z8F&Q>&lBn&&ym`@~~PVC{2PM?oj8OS~3x%-xHA(k#|Om*>m#4{KX|Ac`|5 zc@M^3(pV2&iSfKB-miX2OiMj%xVtgZyAbO-%SA;#y>#-DOtK=CURqhbFgZB&xOzfW zpaki9x7_3W zZL)dlY4wa+nDFu3^z;5wwbV~6Oc1va+*9gNu`mHGP8QG9F-sOEDzNG_jX2Fyk6`{z zIo73O#1~%*&9Pp!94jwQ=1CtgIfKQmJX`1x4#v z=g~E`wCmF5DO#v^V48wbHvG&OvOqRYUK*$N!NqIBw}C3$(7uR`Eow)e7-2d z^}yGG zN|ocjTQ1^D6xJmBSS{->ZktM{URAGQG9SWl@3CAt=}wB&OX77UN(9nFYeG7Hija@B z$mJz(s5dp2#dFs9(+de7jU)?Z3> zltX$HCtLCy=77Lms-QHxv<sbIB%<&kV`M~ z(ay5VC~RRu(0v>C!?(nH`X161^NJu%^s{0$54hioI0R=n*I#he9mw{Sd*MizAI*{!C2>yD^tr2Mw=k{u8F~k z57kGC_6Fz!ow?s>{j%lC6LZ!3qN|p}yFPTOcvr}AoH!Sacm34DNnqIF&WxR z02=d@PC7|D4bXlAW0Ie$&tPXmdTE4loH5By)LcP(7Lc8!a}3%LrAKi-Rv+SimeV?k zQ*lDXiPRig@0BdCQpmfif{Qj=UR9>udFpd&^HmD@%T(q5P$-YGDqzIj|#MFMbmz;XF~>WC4%ZB`jz@x(OUA3_-?1LOl;FQ=`P20G+%wA-(Mi7 zIi=-bX-p;NVN6OT%Aqq2ootJCqbl(k#;O!@M0Rri=&Ayarjs9I42$+lz>8wO^mkfU zPAG~!6y_wpR|^#OO!z&AJY;?^1xJYD%t?HQwRg0?0^SF~(OPtYmFdiVtL8&z^!GH< zLkz^XoJi)>HzJ4q9dOkO@%zF>*#x0^+WkTOh%yroJgt`JI1AMRaBUV*{`^I>hTd}N zpQwTE;C|!kLxZd0s2?5j!Xp;T86carY(rKAJ@yuU?kk6 zLt1-u6Et%R|7M{FSu;C~>ppPYsG<9J$E{E^#Vp9xYqM4>EfdAKthTxrW?8TWy{!f7 z%2=knUfbW7sYHHou2SDY1A2;v{6t_~6wd*&tvAZpx@?P zEfXzh8~SUw7S<|jwgBHZ*v)uASr2G1*If5Jt`J%|REVLK`?mD0>uU=Nx87pcPdB!0 zohxf{z7SJd@b1#4AXAlJw?wnr>e_vBi8DGoH z$&YVb3)_z~*IYSzEVQ;JcYh}^9iNgZlFoS4oYkh?`gEoiEYWENnOOyyc?Fq;4U8@w z6q31HF3c~q_t75IcIX~lA!0f|>3XY8OWZ!Mnc)1y1m=hotc8WPtdVrXvm}Xhn%YKB zT7~fSWg6#)o~NvBVna^5H{^%YF)eYew!?R^h50^Q24M7+)zdzMgRHhP>snx$G4EMviKORFh^ouBD?iHfI&I{Ms%~PzRhV{n5tb;{sXLmNR*WwdufE>8vZtg( z_}_-D$n79}AFnvLHRir;HV^BiE)NT_OH%CEkz?tQ*t^ZeAv9QmnufE={ zk7*0o&K>k!QFQTg{TgBh`$`psm-iFfdYiSp5I5};+xW8wqrIYS#GGlR#QwE^N_gcE zY9S}IUt6FhsroJI&yKRvl$eZRQYwqej$-$<%hYMV0bXz~6|1S~|IhzTMD`sq=}@tA zhd<&f9aUwbJd@i$)S=`cQ6jdUw96xzH||dOj!HFOOS#-2CAXb8Mw~uS^uOo(IiaM; zWQ0QPcg-ClX0<(Y-$|%_wE<0Piqm5VN<|j)Eb))Zrq>pkx9*NpDPPwmgeH|i9bF0oi-p#2-Iw2^{a`3JHzxn%+rGFeIULSnho~Lf|V(tiZH9DnY(jL^-9B1~H zemZ;MzR|Q;uzzT$l7lKR=Tq#mmAFX7`!%YYwN04c3ONtuu!zl{u9dcG(I&XXt|hh0 zBTy>GE>@wn0@w0(tzBLFTPLhD&ba;D{_a3`u)C)_%pLBQxg*`t?!N9AcdUD$d$3#X z9_k+M9_fyEk8zK4PjDx=C%dP*r@Ir~bKQ&GN$wTyRqi!zg?qhwqkFSE*}c`h-Mtgz zQTMp_xevHg-G|*r-N)TZ_bK-o_c?c(`=UF;ecAQh*W5SUneHt29e1|-m78G_YU?`ChZcdK{1cc+*2?(y#P9`L4m z4||V#k9(EgQ{FS)bKW%XMQ?`pGDh%T^WN}gdb7NDy!X5hyt&?&-h6MN_lvj4`@>u8 zReQ_48gGTS%3I^*F}cLmP)S4Ydok4|NQ64s9OV zBD76t$IvdJL7}0c5uv?9qeADSp5}FdaJ#>HQ@la*xsn9c_=R(s$FNS7>Ud9Z& z*FtZEW`<^k-U+=I`XDqX^kL}Z(5In!p)W#Th31EHq3=QqLcfJ-LTfPlFN9fs8;8^3 zj^VE1ZNfdnJBD`&?-tI4`-S_52ZjfS_Y4mU4-c1xM}|j-_YIE;j}0FfJ~&(+J}i7x z_?YmC;fdjk!uh+ zyCe5T?vFeec`Wi|FLPerFiUqUa=Ytfm}S^xNq7(I28eMSqSi ziY|^Wi`GV0NApn`3&-NIRID_%L2RQ~r`UF}p0V9xLt-Ohqhn)Z2gVMM9Thtvc4q9{ zn2KE-n-se;c5Ups*p0EtvD;$z#O{wh9D6MGMC{qvwAhT;E3wyNZ^qt=y&Zcu_Cf5E z*ypitV&BJph%Jo$603?;$5zJbFft?KUOXI+#^dplc=LFRc&qrv@pkb}@h#%p#e2th zitifVJ-$bLaC~Tdczo~p==lEe1L6n8$Hfnc9}zz~etdjF{IvKvaTUKPerf!Q_%-qC z;y1-_iBE~&h7q#|;*Z9kh(8&BHa;yrBmQ#y)%ct7S@Cz{AH?UzKaJ0ee-ZyGJ|8{N z-^CZie~kYe|1JJ|ygI%jz9#M@LWyLeS)yg4ZK7SGL!xtH^TZa3trFWLwo7zR^i1?l z?2y6u1nmIxG8Zc_;Q#FE4+^zDR_kz_2HNT!m_lFgGXlC6@hlWmh5CpS&DOSVsT zOm7qL^W>Mwuan;-zfFFh{2}>M^5^8Q$wkRO zl8cko$z{o!82v7cq)}DO|?jEnA#|{8G6_|q&lU#q`IcIOl_UoHq|ZF zBh@RleX37tr_?T~-BOuUzf}L!z|`Q>o~dD};iWtKxsk2k(rp`}Ykh&;^cT&7y{yTrPihP(uDGtMaf3&9XV2uWw(0`{bh0+=X z8;5GEc5`;etbo2wKdeFTkG&abPszPBGZ3rf3(5aG!@D~>Xgj)_zdfmeVeT zw9DgI&2@8nXpXGwWVRgO&fivFoJG!++N5)}}?!x}&yE2kaQT6?TN}1AtSJd<*51)iv92UeT1DvXqOaPjYVnF$PwZBg4VcAcV_5NtO|th zCGE%hKE(Txdgir{*1^&m+=b{FU5w$&ytbW2Q@#_lF1AW670WQtKvK&@jaZ?5FYCXL zVSkEewU$SnC*Y?zk7E7W=gt?}|GM)AR;_)m{cq^M6ysm<>!!7I!+I^!X8*n~Fc}qi zE_P)32;*H}VC>4*>1MHFYc|FyJ~5$n;uRB4@$bS&375-VC<(07!kRz|=d$?;BQLZ9 znL@Z+Xl*R5WnFH{ZGp*!LRBE5Y8bKr|B=OLp;GQDj6U6_=Ljja*BzGkJ{~woi|o%UxVAtgm5_j z#hx{SR#0=fet@-Yt5Bk^YKz~+jx+PbN`%y5KM5|+m0IUr2&L2-+^4ZtmBU`r%u85J z_nP+2z`9lIqrDSI?s4qTLhfrQCvs<+GO{IgzK(SvR`U_dWwG{O3OxyP}Z2*fWRn{FV-R+j&R36q|F*`6W!dGm$$U?&;ch2J zE!NMp6YWuIU3CnKMf-=aOMkHsj7AUXzf*xJwCRt^@fnmGtpz6TRULz7l@KELP3_~q zw3|^<$D5^B+`i?^VuW&gSNr&H)3Q4pGf+;zZsKQYU5BF#PZPAW#G%+l;t1^YaFmv% z@;ns`?Ey@wkJEo?$H1YOwZ1RrQ;!h`m{8hVk@icZy&bQ?9$Q?(8PQkJ?qejq6Uw%) z_U)+uQkX4Q^3#uY+---hs7@Mj>G5A1gWLzP*UsA5`fZufUb+-E4LjPBYyWbYae0|i zbKWzh^uBhRmeUcKIeZ*;T(u>21XkG|hZVIGu`2X%loV+{R2->yA3Ift(>}@+dLY8d zr9C`HV|KYMtpjx^?Knw0TvBP#PRdv5(2VGZ)xLwZpY|c^r+t0UE_cCBaiooY&9TE> z3#^8*W!FQ8(w=#3u%?*N##n7kyWe#X9Z{B8i=^Y+XWHX^2HmgS`!Q3E^xD4`$Cebu2F9_Z%+c;F2a8`kkWx9*EV= zhhk+jqk%xg4Ma)N{?hE{aw2~p9YVh5D4CX6NlkwK+Y0NisazOsg0dj4(61SGF(8ir z+E`Cwep1Bbn0yreEb?r9&zammi*?d-oR2h5?#Czriu)ec__L4mPGOi~tgTSEgI}zD zh5nv`+0V>bd#t;q$vLg>qOh&7k0H7C?{(N;h%n`P8|+ZRh<0hD(8ho7(P8&s7bxQF z-)7o=3bDT@F-AO2hdzN)vHnVw$Lm<1PqCh@k2@PBKq0gB-}kXofYoC2eu0i#=J33RRb~^SzItzOoQOwif3v!RgUNUE4Z~v<`dzJosj&m+T zDE6aR;r)p5`N(lh`+c1j=h#~DuXJsWZqVuQ-(yUkjzNAdbuQC((Eic17c!-N7yS1- z4`}~2&TYme<{IZ(jVM>=I~Qm_=jm}_UCzKs?c9qzQXJZ8`(Bg7DbB6PSn{Lkg)WSu_kqed40*zMdi?S5x8Q`#KT< zhZR3!E_^DF=z=zf$<!*>1T^F(${R>v!WuheL%z|&fYZ(vK6-tX`` z?JGmrS7cwL9KNsND+`m&^R2QZMpX?tZGIZxkgJI z^7$+L2>D7xW+nTQLak5;qxw)Q*;fJy_Q9%^NK$-{ZEwWN90pr;Nv@zUvMRkI2Os4v zy&?@Cl|gQ0I>MzPR+j5@VbIDlj8Qw$2--$E#%y{;wqCXzJ}M2h!pATz`NYaO5YxUD zzOG;7V};T_vTqIyqWZ|z=3KHqEJ|0GX*MZ*!rt!4{+As|5(r1KdaFAUaSMePOp z9A9fe_E!qD2nx%tC`a9qPoXX;UJ0~i^p%nn<*R+IFNreE>eNs(t0urwYWL}UdJSC_ zXmw6@6<g& zTBu#+Xmem4mRp5V)e`>7jJ~#zBSAU(4e_#Cg4%tiMwxh`mVCOs)WRAqEA;v;9afXU z9f>RuwdCV?biX2Bx;AZmnc6IT-2|?;8te1dD6~W>7r)MrQt4tZk~)P}Oume6&s5^& zby*!&LOvajeB9cxL&+M2X<3v@e~pjph)Ne0Bef_}%hgire1Yn1MZIt399#>!T-M}J zYJ#qwHCgyLtlS%`!_q6OOuY2UO5^iaKrPoVu6?d^Na9XIS7^B`)%P4^YfU*6lPy_Y z_T;NrlS9prFTJ81B~HGaE^+deugu!EA-Wm1td8z=S~foiR{-Dt=&3XBE-bxMP<}!>*ZNd}?Jmt_6~%jzp8+nzUgvYedXQ=zBKlo1^d4q;JBiiq%{$ zRcq!LUs;{?`A)?u!#dqyDan@R=iu7XT2@vWUqx*ttk;&JHI3!ATU%c5OB-KhJ*%Wb zxqK99jh%-o;j4pB$ui@stoNyUHn%cs?r;?=={`;^u`HxuRSbPi*oDaWDo_m1=&(6a zdd?6#2Q!tdFKgJcNCs_)*lf7m_$swk)WR|j-9f4&c&^q_8IZ4=Q-%^EpVFm4zKVRQ ziKp-mz-%_3MST#Pk-qWGSyN_wm334?#FpjDP)FqRu^yLw<)KpJ%dDy}KDDaS>ccaN z<5kp9*^_Lprp#JeGr?F;xr$noPGg0&uXHt)5QSw|W+LpXT2q16PGM>NHj+SJNLo;R zkS|wL?v*$?49`Ih6J7?XQJ9abk=asx_o1+Es}!CU@S`gB7XgpmcAT6*@duN<m2EIO+*vlmw!FAVw)5 z>Mdhb0z~I%Flq)weUOYwfv6viQF98=x)3mIk#2qMjY*HUgsl9Yz}iZH+!1Mwcygd zd`8;=(TNp|x&hIdT8z2_QST}v>L;ahwHWmT>WhADM!kUcL{BQC-aypf&4~IDsjr(6 zjiXS%HzVqYq&{#)I|5NZFQc7+sLz+t&Op@v%V-xM>L+GIJ-yUp%xE_t>OE$(I}r6G zGs*x_A3USJKx5FO%!vAqTjPGqXb+&V=&NVcABfI@Vl)7V`db+d1Ud*~C5#3E(Kret z>T#tp6-GmVXncjyoxxw4dWh+4gfj?<4lYW1UenP|BR@wnnnm1(Wn!R9xxgQbT&p_ z7?lHc$CwkNLx9e~DL6dIn97nyLYX@p9Q7FUy^hLKp>LGAqrhE&5kN-cfiA@86r-bo zsDGK!F+dlKOAI;|h(;@zI}V7>edHAAq!&8vktZb6I2-l6(+UGRyDFc*3S%0~odiT9 zYOLjCpli`X&*&7O3iNN|g$MtrEU&}35F;wD5@1Gj%I)>AlhIk|@xB3=5s&rWV9XBosuK>CY{gBLE z2}FI8%v}X^C&qLcT@6Iz<{a}HpgS-Q&)l^@S#gg+6+pKkCR=tL@^%+eU_^bObSeXD zxd|~R12IPy-!ByUVd&pva1UVgixKsjPDPG6y<353gps-1fF8tX52M?GXe1NgzW7I{ zGTe`H;F>1;AHi58x4OGw@uTP?<}1=o~!* z^fVCXh(=*N>=wYer4iGofjH(1h)E|*vd$NQDiNE}bf9xER>Wuq5S?Mg=p~@dF`CYH z(w^2`Fc!<45AJ!41T%USs59OmI3}G`uo13gMs&_WYuxJ?(Mb5F(8+SMAh$6_>lnQa zM5C9C-T|T!Hb(CP&A?bYYoRlBUc&qV<~{&NEA$!72J$h2%rWO+PRMkO$8Vy`jAnuAb?~g^GawqVXEYCpW<4Wo`Y$zcBg{=nKr$VDuAETeJu+mxY+y(iXF1*p^?weFcuuuRwHS8ONj?}TlNfCR z^cix?Xj7mnlmsK1>-alLiBUTss$WKFphc)(M(u(AK>af60JIoa45N-fRKJ+ei+?mH zak*G(5Y6(#mP7{8Oh&40ZdqGGZl$O-Xe%I^W5nFnKvegPwgFlr>I~Wzh*|=3+W}Ea zVAKt06>QWxI?sI#Y+=+JCoI*W9WvU1<{ZK@Mmu6oqJX80Xilr+tTc#b zw^Cc<+|mqPnq$X^=IT<*V??udspWAg4S;1>Kw!{7pcwXhXR8MRC9rcmBbwVw?U2zB zAet4#Xip$~lNvM>h*~q-N#|%qppy}uIv+;cW<+xpLr8%U%~OQU2GJZw7b!4D^L8at zU_>)`Y4!uBJ{IZG+y_Pn05!)v2)?5n2t+&oGdc*U1@@a~bTCkB(xY1ljh(lK+@>1Q zoSRmN$%tm((9BUrG{1!AigJ2KLXKwWvX-NOHbqS4#sjs%j95lAPPZ8(Ip#4ytFS*h z-x+A^lTN(ln8$-lJMF=ZLH*MB63tmx_B2 zj7|rNh%JoV89+39m$gg;Itg!jjA(p*E9Yc`Xk>nC=Y4}{y#8hE-p=(vqt@GCzAVd~ z2W~s3n?dITb;nFv<`mGjX!ne0ocjaO)1V81dOEL|mP{jLDl$Gij_T@#Eh1?qvh zyo_iRx)0{?diqO?#%SpZVeSfWJ7H{!5sfhK;zUgzX!bxKa7q1!f3Np3$AoU6^@4z-Y-ru0Q7Cv(CGLXjVSQya(g* zQOwNe)M>Py)*CRQ*$FhSpApSZxD0C$_$f-~2oJ*&K}Iy5+#EadGkU~%6j$~6hI`C; z+!;=HBYovO0WCWNGpYpI71unYCxJ$wL>WB=l)`%>Uja{Jj_x&juYXeWEV#WLY0Bj} zpsu)Au-x-NWhfa&(||@gu8H{qP)eT^Kw4e|8ijJ=a+wY^2(zIX%>a7NoRLE3m*n%$ z;#3vZ`7+Qx&XY#xD?rW6i627vK>Okf4Yhp8Mo znfn0f0H@rb*+Aov26J55HU}}7=H`&iG;+@KqouL8txa(onqvEb$-Jn=j+Bz-S21#>C(lGK7=>h5p6yIF^&XM={C(ma zQ-4vQb8z?M+Kd4u#My?61D%U`JzTd5pz|=ViBS^hd`B6S0#ca&!(0i_1qVblR=8O|l)x3!M4lcX6r%ykBLJ!a@I>H>5No=}W72f7)vtr&F$nv9d| zS<4o3OF0EIulW6CE4j6t48$?FLCh(L$!J?3dhRgV4yXp_q%i6RM01B&OLy5rI+#bq zTu*Sfp(Xla0|pIY?%K zSj%8&xgS~>4beIuFlbMp2a!5+LxJvrPDaCk9)i`3_5!*QbN?6(2YMKD78#8IdH_#S zMrA;cV&)d3y@96UWMf7nfgZyQE=Hq(+TxkZXf)8{I3J18K0q5{T?eCmfu6vdE2I5@ z9>F|*Mq_{~@%GJVe~q3rB{5bWAZhMDeWR^Kpck=Ph|$qN z({Z9Mqho+(V3k5AeZM|d9w%uf5p&0bdkHIm7@Yw00@fLEj!p!69$ypu<}pE@BwvPH zFU)YqdDZe1`Hb_jkvkPJUq%Y7p)hEoICC`?xVciL% zbL6@5Rji)iyT*C)e8hakASEx5({b)6a~H~sB&|$hbg{fdzTv!S(53P+NpA{#Cz=FX zXjK8D%Yo>HWC{ z=p(E=;+T_x<~d)P`@|HWInd(iUb0)|ZSoVO&ggb|hx`ayy69TDQ{E+MEt98fGb`_w zwBn0xxd&RlaK1F?UZAhA0*tx)fToDA47wlaOXpsb`U5~TXPjd`2s9UKq!>*FI!kH~oed~N@xF>+VbG|pI66kxU zn~C|P<~o~q=%?h&@7-|obg7>+dv246fKr}N4_h6b`CUJ-jnZ3dMjfs zA0Xy$&LV?m1JOGgb8~=xcYZZ!F3>29urT)_&?Jng9F8&Eu=q%REPIPTOw3Qf(Ysw| z-ReG-pUEm`CnGmcbBj&P&w=Q@k9B?lv;=aDz69!pQN&?d%UAMidAX=ISHOI5^oGbW zzX7@mTqm7IPJSzwIm-?A9k}Htk1Fdq_81xHJos&2BrC;T5GLLsqj=2cjb~wL`(eFUigU$EdKY*6u z9h7UVN-ma5VKv|DmdI-PCVGh(EtSipBR@BHhUJi(iSy7{OAU~euH>h7ty}@WXSkK% zJQ*_FD!Cf|uxyU>qhbxXu#A|PbwCjrmHe#21PK@0Ss2c7G1oyRj27v-Zc?TU^4ySH zBAXc$b|Wt4yBfJDrx0<`u!I0}NcQIPV z0o@~ZHK-hDSLBG(I|OKs*v+6rfp(L-8*~^Dz3+3(!-4wA*(QY}bj*Gxe@D7Uxx3?A zfO9+EJ=)F4{>HLn++*Fo_%dMbIQMv$z6{vv6WkNsLEt!r3D7wJa*R#_>JOcaP6paT z_A}@dpuuv8(Q>MLnmbtTX}HtD?J0)>?S^?$X8;Y8dl_yb&~Q1zpfiEW!cR%EaS zUX6MRpsz1KYwmT}Dcz?I9R47wj^ygXX+ zv;P72LHB5UF>%bP;Es{U8tx(NYjzA`@_qLaEqAOzj{?y*65qWa13F$FW6m53zji@ z&wbxL8>ut;0K3Q0S0CFs2ezCm-!gAAbAe`v^GvOL2y`C47CGieKyQf|<}K)B_Y-%z z7;kF&Q*cM&+mY-2GobV3Yo;yD1L}r(t;~H6bb;K)Jb}IddRbgx()$uf$*s*h=2seB zV66Vyo$qe%Txhg>1MVW(%V@~~^>i*WTD}FkP`+Yv^qoc*87<#q$2{7b!Nb!cDSp82 zc^AvUM(0n6IRsy|Z0ACt-Wbo}GW!{O?9n$abH9R{BriAUH=xVq6$UK=x>876V-&uQO-~&~@^9gQ|h9mp2%+6zE2IlR?XXZju!SEeE<; z-e^z_&<*kygKB{$%P9t}0Gc9iHTT_>?kbnQTseQM!QCcrH{2TRB}m_~%;mw|A@4Mt z@Eq?hnKejyu18iv-gGzxOMUI$j4s@G*%%BZ`9!E(q*8*sYe8QlX zK#$4C4Qi!hK4Glh&};2I3N8Gu-^Od}Jt7}9F*icY2jx`5ZH)aEACM0kZc}jg%Lfd% znb*#%l=mAh4em)sbTJ9}l**@5_^Eo-o zeCOY&4nuk$$l0)k#-R=enl0Zm+z~)?(8I-+9SQWFoMX^YKzGWy28{=ri_|&h(LizM zLxYY1`cNiJDIE)xNACv5JPzn147@Tr9%v}~Js6z;^s(I6pc8@mh`mLBo%adeNnS6^ za%Ob0cZ#8v#~4cMDe+?%I$SsZ4=K*~wzcMk;_muawoNwNcF7Ph&K1V+b=jbBDoG-sH z=wdB5-`IHx(AUty?d4LSZ)DEIybOr?U|7o}pzq{223-#HmHf`2D}cV0UmA2J(D&kd zgRUYZzcalfR|D-Y7nt|KYp~Pn0y)imGgo-mc|XV>4R^hFgZCqz{roL@qj!@xUHoLY zo4s4SpX5S=CVNx7h4N>EZuM^SewM!&bh~$l_lx}1pgX<0yd&yS*1Ovqj&G7q`kUk) z?_O_z^zv|S?}MGc;X8oQ{Xm~Oiwt@IXp!8&yp=o%6cfK2ZYt34a*nB^hk(u#KN#*| zpdXN1*7*p~YvK>XJqq-PJlAlK0lgrq4EHz?^&_#|6F`gQ7=tQ-_LfTwdJ<@fe9>rm z3aDBxHFu(?v12avIPqQTS?r#>OfEO*dF-US9DP&Fy?|YH-_zIhZn&nWV~5=ud9}&W zOVC*>YfO4C1Fev?2E78b5PRErl%YEp5{6ml_{OW!Bv0fo_r#^`gP zh#NNO3!o@^)R_AcDCR~D`U*(8af7}Fin|Ge<^v_%q(R>RCEb)kIiQqVV$iohA!y+o zedm4eg`tJf0`CVe0xgVw^nUW9(86e;_p=v+7A~baH?1_6Jaj+uU$fK+WC$Ms6|C0A~ZkEdkoVjTux8v_iBnXem$&x5l*OWk4<6 zuo>A}4is`)x_mdS0U9V<8M#`ZR_=xdtpM84ZEes>pw@01gH{2xbvH6-H4ydgajmQY z+SuL1pgN#U&?CZJ9;gj^{uqf6=EC9KpOFJ}iQLR^5@<8GtwAnOE9m61_OJu>hDeW5 z7`suohAoVu*qOQwOMKF;{}!tNY4!CWTU@&<_1LY)f;Xv|DD- z20-o6C&^q3pkHNsgIWR|jJqOpt$@B39ZczN2-Lw{W=g&_kdQZj>1gbl>4Uc%*Lq*fv_{`pN!t>Ehf@*j31?qqNO? zjM%GepV0$)G>vt*X8ZOXHG0VKq5E6c#wu=e8?0k1obJI|v(;o>s)a#4X>At$v!T}g zbCzoG?`R%fG~MFtp#^2hs!j!2%I|eW+2W;9+^YY7SZbrA`wknnUtn4NHTHSoL)x|{ z>;5&_8;i<5U(~AN?BB`JenqYNdzvXrwv4R%*UIYu(xtL%C@cRzRFdnT?v1dxaP1dw z&ws`iv+DYy>8=lJpBiHVH8-$yK8$VU)*ZD^S=oq@qk9|>DBDoKL|Yl_{-;=*qf!6n zJA+L(xSShG!~ZWTs|Kt7Q#JT^O5^Xy7SHcLr_H@2AJ>MC8rHY}et0XW&@9#GzxqA)a8VwVuK8X#0;~1|tTOD8*d@6b3v%5Y)oZ5j z37b#rQrXe_B)^%je}1FuYBnV~gN!Q3z6kDrENg7;QdILxjo5x8N9;Fz$L;IwIISrZ)elWVv10l5FZWwyLSk|Fo>WTMrpFps7{C?a;M~9tw{Djj^J)(P4+29;CmbJ*bjmz1VP1AbbIItwG4jyT+$huZnfqRa*Bhei; z;9h6g#&?ybnv2UaYpt-d)@9a~pmiw8r#_Brs)^2qsHajR5rNf*jVj#ejDnD zpXiniE)C1FtVPzP>!>%h2Fn&_tsTK_gJgR_^U3%LF=%Ap{izS8X^Z93u%Xtq*0HQj z$A((BcsaAIjceV;R@qSN()|Oebq_8p!}bVfNi$tB!Ec+5Sz8*`wdwPFtPQoUWsCR7 zv8;`2UE7|EYvx`=o1S&+bu_BMrYz2z#XlQr-M=PV+^R8Jv(;o>Y7Nx$S-dm~^oyD| z)q8_A8}@3=mJKNz&;vf}+Vm#|%3AiUK-TIAmTk;hWL>K{Sk|%^BHf9?zMBl+XXpU( zTlN}lRnxk$>=lh{wk^i8XKJ>oHI}`+k*p21I;IA)bRE&RR&ZHamU7ha{IQxXdu||W zukK*YmMtz@oDH_hYG$_3{px0I^C{yGIpYL0tft?v!EZsfMqdfcuVr5^%09S0tm(fB zu0fmb|AcLtUmk6-?~}HEtvgOXku0*VE!lC{KY87@(ZEuM8)O>y70~@Ts(TXXeZ$7G zE?Z@YyhU8JdOKmy60W+f>G4ZqJ3%4Q}mL)-Reavo>y1m#>sU=>}g%R>vDf(`DAi zZR);RRF>JMG8WG)D%+T~GS+>osBB}_%2@ZlqO#1|xJ}*ri^?+FRL0^5ipnx;<2H4R z-|K?gvuzE*SBhnWufe~@7S|knrC80ySznh`(^9aq!R^Yj!7bLZ!PkOii^~>Ims?#S zn~Sr-wQsEoZdaBKZn1xjEv~t^RS$|RYRNvGtZVZ>D6j@CyQfe^WC#C=Yfy1Nx^?Yx7L zjoZ|1UGysBIgU+bEY>^o7ra7KMcYPeK~veRChOXg#VG+rSejo|Shf`VhZkl`us3pH zHii9r3$r-CrU=`(oSR-LY;)lngyQrmE}kwfUi`Cht!v9Un6+iatnJgZ zuKl+BE38e=x(%8=SY@w;rY&cHw%M{)*1Ew@I@>lH=g8>jX=RUJTXTJ=WjkorBC-nI zboFJ|zNqZ6jbs~i=pOE#EZc9$p#CF9j9llNeOREZ)iFGfB}Jo0_8q!DtS#9tftsl# z|L$zV{Q@=HKDddRwaDhvy3AVC)IBFqvmTEfG;;Xa|7OcrTZj}J&o6;VMDD;*FN2ug4yD-!Ph?B>(;IX zQ&tFFdzO+-pVKXLHw(V2SXsVb6_TZ=!n&nlWj6|B?Va$iu!YiX8>qQ>x^|2p`1z~v zNZot&asxFtX6cT*zH_(!H_F;_wXQA6;@4mS*7WliV9h;`S=;t)y4GzISVxu(ZW~rt zaBKe)*4SJ?b}hEF{=R6fv6{)M;%s_dS)-X`i?i!qgSL+NO~zVd-9KUZUT5Bdtc-R4 zmh9ix+#|U5O*!{${9f1eosd}@*XGE&$2DqKO`mj)Su11R;~UA^P@7WYH`RX$YuZMz zRkn_fE7tebvw*CrqvCAia<0#jv8n+3_iMjr2Ra0F-7CdtE>H``ssilamo;ngY;D`p zux{{u!?LFawjBGE{4-Vtl!p1@?7k@-#kx*e{X1C766Ij+cNCl7Q;1y0D$8lSZ0ta<%f9oPQ)$#U)g`(+!~VAJ+o zyiNWc+2AY1+&6m!&z}7g*4*0*$QEbm?t(cHh2ALsk8QXXbsPCFE~{ewlOy##*7k$i zJA!q&_tGNk+E!P9HSKCZ(Ro3CCL46G<1bBphxeMo)Wo=yR+8nJ9Yts)- z*J|dnvT?0z(+`%lY;ZZ-k__&_Fi(+Q>%$h;T%6r&0D7Oh3+!=3_feYz>o%}dM;2Mv z#tOFCvKx|U5zT3^R-<*TY;n!~@m*a^GsyMSya$O2TkF=fRu!-Pza!iKZ=@Ss&bB=l zXW3?(KkHiA;w;;2Wvpvui?hL2+42r9=l@Q&;rh*>4s9t|w}GV!wxQN-VADm}Alc%j zVQT@i4)D*$wXRJ+xSTD^vKCp_-c?%YYtTLqtZQSn(CJ##)D70$*yg4()^@hpBJ0}N z#dFj$&?;+tu+7%0mij(v<676I8!T(t;B*@_lUX*db#2aqbM#kO?iKG-@O`7P&9+`` z`mF-XifpFw&|tQ~DjK`6nyhQftVy~}W?02_x;CzrwJym{DA=Ai2(;PC{+Z1rY~xyY z?fiDDXKg-htj2ZJv?R%@|AcJwzme`gCrg?e$~ma4?ER`&FD~a^y@JcxhFaIvnyrj= zE!((`Y^ZhrzO2<`UHjz~+>7}CA8X5-OVXBtb&Iq1Dm$!E+px0sUeIYh*apoRNL!88 zwVKNVHCx$3)`M-VxzKnhw+%bv$GX-!E{#I6TpCu!x{YP66*knm#br6ag=D#`Y7UJkb&Ips=KTU?|0?STr2AK8DPe1?b?x2s1|rvG zF=A3=FF4aT5-h8&!p;bsUuqkq$);=F>vX!d$HuyrWzAMo(=k5QY-Oz5Sk@xz+Wa0^ zG{5_<4{J(;H5bY+Yqqvp*ILK2>zCi)92IXHwlr=knqRIXYom2-4hyiRG+48ZYh|rl zy!Kgk{YoP^M-8PBIJRhPKA>o6jL~eN95HL_)w(vnta<%%6l@jg!VHz}h3_i=97}T% zpVy^f%hl%7y3AVC)SVGn&Q{m+B7^Tmi>zyP6xTc*vg_V!td3w=%T6z9)n8$)CTpv8 zuMgC0S+Z)~IdXQMTX0!f_9ZQAk=1BjV%IGV%NE!CT%fE?sQ_#4^`nDj{}-_O>c*IM z(LG&Z;uemavfROrfl)HQCya-vgtH+r#7<6 zveu5`>_d(6Yh|nsW-V&!K3O!~zoYpPXr5SKt~OoFDy8Zg~s@Tuav*Wa_!sNwyu>e&IZ@Mm2J%060|7<=hw20YvJ$6T8;K9 z$0r9s;z6;e|K*!r(bCPhTSJ=^G4UNwUzQc za!6T^VD`ULwy{;V=4`0VS#XXl+p$q;kZg}$4eh$PY}fzwvbGd-Pd@s>C`ZBXlbEj7 zeTzo<4U%mrxnS0&V_h4oaY@=x>vFnQ#=4gMr)6zA)}=2o?50#;UsKzE)wo^#3uSxU z9N3d!tm<(~fjZ*d6Q>lNGj?+$*{0uR%-VEpj;z}_-KMh47LuJ@G+ky3$xbOM%WNUp zTZ_svTS)dcy=#Qcy>)Hv-&&MyY;(OVx2qnL1LrbXI~tW__on51x6YA?+udrm?mdn2 zYeTK(X98KfLNJ&m*+Jcfc&ccA3#4nlIIj*&*WS(f`D>ANt?k91&QJfT=5Bgk0p-Bv z#A<#jP}Z_f7tL?5tW6=9wci@SHaBK%jWw=jyot#8kiBP(NFE893nP1yqF{QtOn z5AZmOtnc?!^+=XP64_t_LpE7tFR{orQDg%P4B2FpO)e2l7ACC8LpIrDlbdX^fCUUJ zFa(oXOtfT$xxaH}dUs*v+4p<-_CEKyrRS*reNvqYU0vNhQ&S!7{Y$g&hM%Ry{#&`f zm1aj-G+Fr-+uuLm&!lJ9^gOzz^w>Wjt$5C2&Z5ckigZRX_g`){3i^NJ`5&a!_bD^5 z{TJzf+Fvv~Gk(9??7x4rzUsdhek-lk;NNzf=-)PL$#bPZFJ(trp0!5BR%a2Wx_{F; zr{Dg~e4N{_RDJ1ZsQx$7tnK>)ZU4QH*`8U`w*TJGY|p4^ z+kY=)wx`#$?Z5Xk+tX^=_TPh=lm~ss?l}(sziH2 zzcK$-nw684o8`y%Ynw^?_ni6a-?p|ii>j^Pa(^q$JY~^jdH>~RQuW;Yk6q4rPo@i# zfAnbotDwyG#G1R?U0d_c`dX`z#ccN)zkMGX`>k(QZvQpPeD!aeNl)t6b0%H8rnI)_ z+P1aJU8`ofwWVv;v>o~fq_sWkx%BVne%6w;rOTLYrkmwi|5l{g(eLv=)hzdqcwXbb z=6R(*P~T<$Yf&x#U-Mk)v)}hzcF+Dtr2WU7d9E$(za=xHnKj)-L_`VAfXs zU&}HnFV;xe(eIyLp8OkW)(cr4e22R z<(aQaxf_ibzMal9nKa8Q((LH>`Rf0{a}N3MZL<5aRchXc_FwKlW3J^n*7O|vjaloi z&)oX2Q8okj-;)0)wliwy{yk@HSBc7M&+L`unY90TBa>EU!ptViGwFZZw)zd`6|+1m zSD%&g+gp`Aod4}@T4g+E(k%a<+J=Ae{O`8^D$P7*dH?58)yJwW`0ZyrS9hA~Us~JN zdV{9uzufFh>0kOkwaxbzbM<}bY*OE!wEEPgwsbu#`)Q4;=NU+=p6{9Ad)R-z^Rmy? z{~!O>>W&uGjBG2?thaxkk2Txu`Bj!@TB%91qu=LG^()PM{1NGsH9h}Nq*)YMp2gn3 zZ6@tM=Iq-J{kP;lrP^BAQI=<(_wTnxne+guW!rzb|Fo@jUD&bab)kRH+01`HzcJUA zR?q#F`mgW*8`4^>@kGBh%Em}VnjK|%*3Ol8)-!syc)oegY_k0ShHblf{@<1RM{Ljg z1Lgkz)AovBKpTXxDW+c6@=7_zZ=Goo zhRS)Aoi|zjueSYMf3a=dYWTL5(Vp34d1hNVe=}~Dt5j`gEY%;}s4YFO-2t!vs=T5?9^w$`+*wDXK?x2kEoxy78dM%D^hUh$kAWqEct z;mtPV{=Ov}YqmzyZ*2eRqw@LK8Az*l1Wh&H@%<;;TEC6eSo2J2sClLgs5zeX-szvC z?DzGpt0`@)>G?lJRqITtuX(2YHmcwEZ-d1=qfuAs{eRZ;w`bXanzj|sGqSC;P^)|7`}Yv$HHKH_NkGymFRh+$_(|y8k4twKCtlX1SG^ zv+}Y$EB8N1Yn7Xm(BF5`t9SIl+A1qA%d^%9QmXMg2(#9-oq@Dk?iDp>hAX9j?<|@u z&syWEnrHXblGd=jTBg>JURCofyHZ-+jH9}uX1UkYEVo#*zQvmLy@vYyGb%k7^r>Uk zW>=UrYq^Y@2v*-n~jbCB>hjGqZG?g(!S`)eelt@ zx>)A8Tr7|4E0#y}MhU$wF7~EAmOFhE$fv%woJy)hbfFCOcDS^M_nozG==wIj)`UUEZMpDr(hu%<@9yEwvNi8F-j~>3oK5 zf!})`My|j6+(OR1^|Tb*RL4k?mL*5&N$6?!ln;q7bmx8A9ies~drI2(Nf7h|{l3&u zzDD3VW`qV$tiHf8{yqNTV_(jbH}qHjH@%@Doi0iPg0{)@SdUJ9m=^sANYI5Eq}yl!vIcY-(yl-r8cJPxU+Ri3 zomP@`nz$mA{whBGHTp13ppqLwKBO~sv;{qY9z>f;k+vz4r`ks3p|b>GKP}=XqAyT% z1@Zzp{vgWwRjCLrlH(J<>8~XhI+ZUjU!Ruq^$`-u*V9V%DHI{>>teaJE-e>Ww2!I_ z66>P0*QJo!g#;Za_2@$Z5-4@(K;mOv@T2OYFVu1V*GUrULK1W01)1O{=29Vd96R_> z>Ow9L6`iOoS0EQ3j8X}8QWp9u8li7}C$2SNTrnDgQCjZo4Se-Gb~Ez2$8`;D$kYD$ zu2MsxD}_cj6sK!0jU%TI1&?efaa_{=nJ$fKujrY;S)wG&Q-Ndr^$A2faR%h2*jFkm zrG2eQ^sR{`!6^En)L(M#_0rS|geOegaek7vW9q&HLs)%IIr> zTEPW)1z+lIg<9zASe7~|4>5}6minoEE%gJ*gMb-p19kkB8{jvPhq|eKsgHdznc6q9 zPTa`4)D2}k7K~C?(l#DYgz{kJPn8nX%yBdPQhf)!4%Y%T4^VywW2*?|;YHt4KVHWz zG(JHmDb{r)tx%{-$y1KgBqkkDsGkU)h%ArZ#5&34>y<)oVjZKhv7;_FcI0BClxZKC z3W;xqTEIa%pwzWM%@PygipZ6*H@LhJJ<^j0mmsvD(9;aBnRXAkC`yu}<#H)k#k8C< zAE!Mdr-yRNH7r6Sp<>SnX8#dflR{rQeFWDvh`&4(xe7;@_KH#LmClsw8dCB=&U~PA zwG^073e3&v^eCk+rBtN52ocNlRN{2v;@X)iPjx$m`K|;Nk`dF2P{=X=<(PkRp)=+R z&@g1f&>4no7&@V|9XZsQa@?-uNB!FF!!NY*FQG2{D)pgL>XFx#e#zJ2!*@;_pG-0u zopeqcoiJ}E(pgIKoheiR2Y4YVQdV(VnncRdGdT1J*N-oAqkHmo!}{`dvG2=V>>Hg7 z>kIS(Ha#(sK792RbD>wMl*HbAZh}!E7kdl26r7Sz=oyu?^h`~PUC{+-YUg;DQvV`z z`50(a*AQRmYVm1jAP?m2NujGfiR9EJ8PyqcsZpAAa9rvfSl7U{rO-K&c9PsEqmi_W zF`gIH0rH$=S2h?1SP}7CdxsdqHI(a1(O z3@lHC#xzdun}q!&{7h<`)H|thOz)V+R&>*zQ4N#P8`C?iu?3pYlPWbyIc-YIu_;K} z7=-I~IUSJp6bH2TO5-RfP*xzmQBZU5_=e`*A&pbHc1-2E5s^pu#d2tZ8e(5)OpW08 z2{S~1gt|3)54^Kp|I}t|YlU6uLrg6l1A{wRQ_@@*-=NIKAWpG=ecWs;{MSR9|!B zXrq?KG*>J~oo#X@W*uQ=m6tS^hZo=#;6+wvMdtD}5w7J!j2NrABG>hppp!^0B-p{r z>$M(U$xDvNlcJx1?F4+1gY(R(BbfU~a?Xr`ickk6j3=cI&Zi=zvKEe8I44?ssk4=O zwdO`K4^3t6n#`OunYl^2Q(bp8wlW4=8FQ_yeOh%5luNlDr>tcMx-z@^ISt)xJC-2_1MO#eGljM z?;Xtba#F)8z1QVt?oE^VCG~fd^Q>Lc?$w~E_fp)aqM2f6oN@bCu(jt>suMcJYK8f{vz>Ade;#00Qv76(bz+GD` z<58mCZ?X2}-041mb?~5^FeW|ymv*JO&|QGiBy!D3^}elp4k>lz-D%z9^?s}zxfdgc zLT}n7+T8FrQBwnauHP;JWfqo&4IKd*+wx>hhiAxfbYkBXErv&ACGy1O> zo&}#0UN!vzNj>^c8-FHrri`6rxIUQ){g(~Tj86%#n0|dyhyGK>Z$f9v*yjz`B~9qR zWOycgN_g4yUE<+CTGesbK55vaKV|H5hMVvy;U&|5(9K4lPPMl6iG%;B@e}nEA2a>g zTmpXFuuF2}PZ-W64`P=Z_71a@fv)Y3&+g$3<}-1#($^4aHs{G_vvHER9QtDXSO+V-A&^IVEqtiXS-gN5R%;-a;S=1;0^pzTtXDEUCsSGQc%q3z24WTINh<+vMKxpKWuf>A&Ie9Yz@* z;HY0O8#E@yiEG3UL~2t1{MUmg-Ba*8jlV*&Qg!@4$>?9XI{t%ODOn+@jQLOe zQ|<};Pc!`|xi^vYSM&3P`U%qvKjof8-f1{h{n%yt_qzwcpBa9@El;27IVkd&yC44F z4L{)?!{^V2A6FcIsOsP+{9N_ql8NOHhJ^k45gKi@E z6vGqUL*!o=e$?GV{;lDM+@s{*8=lQE#==zd|A59RpBbL0bqSwW_3;_MF#i4OGyT%| z_o$!vt??h#x`gkH|Cl3w`N8;)Yq{x9#=phgivG)n?{K$(CmUWRdD=Z~^U}xuY4?nq z@x$?PUFN2S4?Uayk z8eS<`C3(}@>RNxdyAS@S#$P$v)K%v5yx-Ift=3EAX-0QtY;)!cr%<}R>9@I4DC-)- z8@n~oA8t57OTzXR+cr#BZ=Juh@n?~3-Ct+j#qhRnWAZ;6UL)Crda3QvvWeRUpSv1= zBex;^jm^)-ZX3nrx!Uy-gEC0!(3pI_ucjQoY(O6T2^|xvO(kE zpJ8RqOx@eN2N?erS&Q@cY{NIpZRnh1cqXC~IoI%Qatr**=d0FEW|C8KJgk!G?k2gJ z%kUV}In|v;4A)w02fBlZ^JK#Zxr520;e*{FPD*WtN4eu@pNkA1=MDs4Y&em1=pzeX zPICCjUupak-AUwE7(UtIFI;6fI{X!`HhhXZ)k(2v_%wGSWnE|Z7Oj_@Z*{+2_acs! z_cwQFy$Y4jG2bS)v&g#0>T-u-xxn=Al)KPxH~w8}Te#5h?Q$pj7gzaU-X&^b6Xb66 z|6=^R)i%)Xq&tz&k5xWc{!-Onm--fsf4?wh!|oRI_6|RxV0d9x!xHmO57tX`-0cqy zkzL(xwD|$1vzuF(Hl!U%>nCd`hgu))=+;VZB_8eH1KAJvMq=2QiJ67QcI}TKSa8hRGbnc?sI>a<)5%_8)Kh8zk#j z^}mrb-5C7bX#CUN8RXX+9^=lU?`|@DmOGmmZZ>?5JC}OhV)$HlI{nDpN7^X4g7{AW zT`yNik$Rn~Y`Iddf`5|XYd8`)&F~e9(-W)wB5_8;MXW_mwf4VKuEEb~hOd%qW$<@x zrgN?6yx3?1@vrVJ;u&ao4%v|Yy2SL~cHeoE_I*V z@MRpazBN2f7z^QeRgtCq()c;s_)Gg`yyVX@yo}!%Kj#|WBx&)CLvRC6{Z{mhL*uXL zmjaJ9yoz7d6Pw|UlV!=(c9JaXm-A9O&-lyvVZ?vF;g$U=_`KNguw;2`l|M|D_bYfQ zUSRwc{BXvemMgN7Uzs>BGCVxlq{<&AtNNATU26PI6L5Nwr=sX@hR&s6k=6Yg$geP+ zmHno~pgJO(C-{_$O@9r)CjPH9oh_2hsk`z=$(nvBab9Ko)fIg#Klwvt_bX z)lZN=`PC@va^qjlsH}`hrUSW-K0QU73beNWa!Ap1*494CUu$?N?Yq)gi)Sr=IZb=D z@mKU~(dO3}zQ^B!KJzl^1>c%HG-fZuTPH72?%v?wuJQOTE^Pc){5ItKa&Z>v@Ynbk zrW|PeZIYMqr~EbKW#2)$2N}PJj^r0M{cE(W($dDiM|~D_?26pt@4^3CrgMwmmb$NP z{G0uFe6n64-Q;fuuV#3>>I>Ib(xZMm^cgp#*5pxNiT_x+-rs=##f^WXzlm~LuaIu= z*Mk?gvTjtJ{1V2$UUiB~8otTji0$g8Q}ncDT*Ua-`s=`p8oo~b#Ko#u+j~*dzgcy{ zkg7iMr%M?gukpuKO=o-Jytj>WL-NG`f}hy1m+^N<9!6i!!&DyjkNBC!Gww-``0bO5 zzV^}9)OT;w-!{3Gvb3#+$&Se+zd+ZX;FJ6$)v>-48IkOiO!<*{L=KZle#d0+v3r{B zPRT_7nelIyiT)w~>pP4s(nEd+Y&8avt?^kYE0vf0tJHC%@n7|?5$FDfU-R^PJizeF z{w4HpGyI}r*{8~X1)Y5jzv5p+XFtO)scm|j#dDQsY?kuI-#I}i?gPJ0uJ*6{p_d9dGzo{}VCaTIGYo%~f0U<9Nfr zs(yNl;h)r}+-mp+{}}qrQ>4c{^G#q(lOFd^_!n+uUL#%VnLh&O1}XJVV!OTJC;j92 zq|ZoC_^14ou{#=m%3lf|VfZipY5&o%sx3g#X#=<~Mw?XWk8Z zp6jf|T$^rdagNhC)9nmD=AWZpyP3}O8nYA(Kj)vvb`QgkYn)*R(|=CmjJq2DN!5|v ztG4(__b{Cadfo}^Y|`C+0&#LLLE0|48$WuEx5`*zyL#4njDNAegmYwG!JH`v$ow{+#SsjbTZ--0O900n@p{>-B0u!&fRlE@(b)SAM!&RR^De`()A`9-p$Z z={(>c1aDyc2mOfZoFL2_5BNoFPB=j>qz#{%XKvHE#J4jx1{!YnT>nF>;jy&2q+6TM zc7Gl*%xV0yRfne&TJCxNZ1lN?kuJoKq^+iZ7W_Sbn60XFz8`e(?1s4&%rv1W73>z8`PKT z&rLqBt#1dq`QQ&U{(SCEa@J3zyBxg8`iV53;&hNawO`eZOyh_Tz1SMBEM0JVjNc`+YdYE5 zWX@z7C;hvIJ5?wBp{m2PtJq_<;yU5=8ow-W(w>KzKFAGP?r_7?1)cOq(-FO$=7R&8 z;1V;h4#Cb%=RYx#rgJ2bm(<`!eMZFpiq4hrA6F<>YJ0{f4A15CJ}EVPl|DP-Ns;O_ zIK4OB)bQ2nKR#vn8ppj+%1*;p>$jp0^mrtN-*R z!#Ar=?5OG!gS=kVC;s9j!#BCx$+;gOb<0B7GR{aBIOf`@GOk?i0{rk?hSV*;@L$J) z^1GQz7PPW{kxQ_>$8;`nmxAv#e5vEUKR#f1oWp;7(D2XdC;hwm>1I6UR{P2DFOhM3*?M=BM8RK~|=JrfBLw|F0S_f?A_O0r02k)PCC%2r5 zj>zTi3U}JvkC>mmlh<4&&f&S&+~xRZE+$>!bnT`wi|m)Y>MCXJR`;rV&3$%wz3IG0 z$(3?N7I#ZvyQukOl}KMajBTAr!h9b)%+GAe;@G}!cnR0cHRuh)-5v|mr-zene7{-c zPxphrn_#%?B^h+^{f4J|j?#w=i|U7m6D@d2H-x%xWHAhJThoRk47a)^$#*imwc9_r z{mdN=FX0wPe^G1aB{hCo%=n9|pNNb!L~X-HrZe4l5zk##ZXYoWI`}@rUA~WaCK@jL z>BRGp#na_G(ZAF9z32=&_+G=Ez8C!m4fo+w!bH>W^wZG4!}vYu3_AE8!_#~Z`VScH z#ixV^P5(T1KJnjXaZdB+xxwGvZaU|?9&GQf`k99Q1EznzJCC~DW_2kf*xDS@Am_Pu zeCYL$Co4K{a0OI6x6H$TeKyB+Q&{7tJjW!RfP}Ns@PWw*vc%ligTIG=V6x;T*V{RD z5Pa_Jpdf3x2H9i9q2_aKw-)8DX?Un3kAE_}mRp;AO^a?u+jZ~XaX z5IVCNJ|x)?+vUKKtMo?X%Nu_qIh4AuV0c~`MZ2zVcu$#Eq%hum9*}^oeYlr*)G1xn zV*8U@gF3Eecnz&@Sl#fN8o&I>>N_gg8Gq`tC_Bq8_}Rex|5G2-W(icU#u&(_>rT~-^p|~ zlcSjjRyDkj9K{@{`hv!0_}BW=W7;oaOT%Bgk=U-{^-u-h|OM1)ob=SyS9+l)IGSVKN*aE1938lVhvx5M^)K z2Ojk&4d;k`rc8f0UL`DE^#ea0V)!$Mf1coJC+)31?H1sW_df%AXJYSq;x8bCN$}crNu5pEsX#3Oex_!}H1e=s#;Ze^dSR zIm7SE-^eFb`RK$+rvJXYLtSRF_$NDb(pe3^<0ey$ISjw)7Dj*eDjytXuJX}IXED66 zt?y>H`c8KEjB^-XNb>m9=b<8H*GE~c#?K4SW?~m(ky$+{qd(nnpVMbT-G&!W7DC!% zcwt#Ye%Vp$FQDVFecj5vk&p9SbN+e8Z`9|p_WYUAl{8YWKAUakvwy4^!)&JCD1Yak z=t}eXcRoGIy92`w_&I%}I`b1bYb)n0>sZE|q-R$B-zZnldY-l08}3bFZZMy3Io5`0 zv*Fj>8{qj2cPKv&sOk`dG#P%|QEob$wZrTBJUKKQHep1KR4?2U#GK*TsRL_!D|i3I zOXd2wzdYx34clu5XUZA$%K@fyd~!Z9AA(I}1)3sdLU)dnqDdqeposgU^l0Obr$Jb1vz0)hQlr?SHX;!ZaRZxJ^z$x{v9cA{P+@b1tb( z<1w8v_@^#~(WZY9UUg>H6qB~9pMi3!y~o(k`0X4?ew5+URKIwH*^ZS{&_B}fDWY@6 zzNRy)Tu8Zx8$LB52GbcsG{jao%JeU^@4p>pI;SM3R{adbi(Y#hDz>Uq9A*0L>N6fz zwWX}W;fBX+Y;u9~?vYVX7xw(m|^A?M77h4VQE(P*oh6}O>Weqocketq(u(jcXGL|V_SPYfKB*4KCf$D|FM$~UxeaGzf-S2na)S;|X7D27@fUverceD1HO?IF?_b|MJTMWFX;q4svG3j20cXXT!>E4DH zaf_m}u;InrBJ>MHTGXlC;fD8g_rW=$%153qY~yW&<31_uYy6$mkL+i74>tloqYN+N zh$S9ocv01l` ze2%R8q<-Nj?{u``k#2u%Pc*#0I{^KY3?Ji&t9Y*A(GI(` z-S7eKSn>-EAL}$0?(<29I_eruHGGJ}cY2=Ta}spYQ;99mdPlm?<``4e$4?wrB)*B$K!9elR&k5m6VU(kc2_45hg65}7~sB1W@ijQzp#*V4l9!a@p zRrQbJUhizf2RQm6oM!rmX}P=s*Z7asy2lGm=LoH1da2>V_45zm4AVK-;v~W`T#|KL+d8^mn&Ox9P#e8it&?PVfZ|}vZfL>uKecKRfg|X{cyGE?B^J> z=_%%aw9_$rzTthfuj2)VkI{Y%?H2RB8e4jt;eFIL9&bAPX`Fl}MxE}fe!?lHbG$!+ zb6MZn@I;7rY?5-{PCCgS59Xeqbi6+f{H@_*RX_io;p6a~EQl^?#Y z>KudZH-?Y#N2AYsBhso8&Q01!OlLW_JpF|YX$99p|1M{EdAAbh z=?aEll9!P(&yrq|m#E7`!!K)W=|hHJMZ&ty%4*@0(f54H^Cr@{2|glaNI_O|=TYV= z=5q}1FZTRlR*T_$e*w>4<}iGL=lNgQ!th!CeEN4w^Lc*4Gs2*sIcSnG=u5hV@z3-_ z;5kkXu8cg-8~mL&e1TsoX&R{~4QHG`pX;OAawnLa!x+dJ{|v9s9cMBAIsRPu&4$nP z=%kyQ|8xBk*!CKK$>a=T5VKv?txmhmZ2V{Zs?>28!>hYz@%d-NOC-yHDev&ihoN+H(|2~O?XR|iWUyv8k;o3|}1e6;7hmY?msI9&PR^Qz7f=znGS2!A;GKN>zt{m4(If0**a zr&XOJ(f`cwk^V6Be=vNw$B+DI`lFN|KB?*)ivASChx$?IPc?j)$B+DA`iH>(Y@3g( zI)`vRes6e`$5y7A&O!bVzxMvR24Zcd{QUREe}-8{XJhS*-TgDP+Y6@iv=k`!MZ*QZ zJLSG)cy|wPL8{XgV3x3z|e*R>1dJP}y5B4X$Uow2K zKgbWhgZpjL0scUA-ZOk4e2J{XNC*1^$XSPx4#IZOa(}lN_V**vpKSO*)d}wzK0sq& zWvKci)o0Xo8}D3_Z~QGsUc$KAOLp@6Fh1Wh{x|-Db<#_X z-;OPP3O_G9`mON!n3c7a-xdAm&CjlWH=kQ=lHq;)PK?{POlK$0^(2lnpWpf&!Iv4{ z&9{@QPaT<$$l6QYt`Nj{OfNM4!U=i&!EmeJ+DraE^S`y%v38^JfAl)8Z!(-uT8U?> z;R};|)pi~E#xKmg@uTril#@6I_q4L6c*b(P!1$m0rx*ho6W2sx+@)6=eoAyq6%Bvy zPegjH;YS30{rn>7DZx+LZf!L-;oJ%rf(z6{&!@4b|E1?#NiQ<|mFJonFE;!&?O*8^ zk*`%pE;c`3scpE(@I?u_={4vVC`r$W3ylAT$G4Rw@};NU;#lKP@swlws`<6A^zZ4! zNo?_M8}pAaI(Wx~FOieA?rERlC3yy3c^=OEtoz2tfvN&x>;#^pk*2u?(I0O5oo*VZ z#HNNXO@^R94;n3e;&Lh4VP4Z8EDL~}4Ih~NrTUEhBDe=pr(2A_pbRFT-SCpa7&Je8 zej`~@D$nHqMg+^?M`I|kud$A)`AxsebuuS!W-*LQ^f{>V3)17dxE5?-{9f0C&X$I! zyKd(5%?XGoE8Pg+zKqmFYal*M`W9%sAB@E|0T z-dg1^L7a0NUc%NFHyFMwSzOvKxQX@;aF;~q#;WaQNrlh5tz-neU^GH@!smLXvzn{| zdtt+C%WA}cJ!vN?5$A#y+o!Gt{vw7;?o;ZunBi5>`fLuKUz`3aGG*-1HcmcvpHQ#7 z>3rfA$N!>LTd*ut<>MzVYLh1^R=uj(+CU$`v%$f}=VS%XP>KhKtFT;MKvY zY)K6yXngwgdu8|w8D3wG!M~0(uIchQ?XZkj{JC47|0^0^Pc}8F@{dh6$97dv@SE#< ziIn~$ZK3mumBlCF_1R2H-AJ42v-UuLlfG~t<9|8xxtM%O`!8?!OZNr+(qi~?#bMbh ze|`L{VE7A%zO+~$t*>#$6%D^89q8y96l!gL9+db^Q9w4>wiuy69YA z)j>bKsnYL$1OM#uHyeKg)t5UBFRMF0g+baKei;he7 z!vE{o2HD$Rjr0xk^BPCIOEtWgC+7H9!&mF)kn<;-pAG!F{<%AEws?Zy&`W;2>1;@B zQ+~X|@Vb5%zsF%u8{WkSu6@rK4t_m9V!Iov`tXb6&Chy%BVU^77UOS(Pu@#b@p}H_ zb8a!6jr}I@ZZ-ZU=<^=a@Oplsg!lD~56+-uW7_b0!<%?;ytQgOH#&ba{@?^Z>8FP0 zP6m^IS;h09^MT<(%1=KrJUGENere~zJjoz4JtK82`wNA;OLZg`ky?hj8HzBYMCHh$P2i*q7Jd>_Q{#R)o<>$3YszSZ$;6eDT;~lmH>`7A<$G1)Y2YCmMlK#gw{lf6~@&o$BLHetfAD%G$w(6#- z;dfLgzEkz{S9FMj^p-r!|81?^p4C{=9jf>_`1%Y&*dYXdeA4jSsvmZ+{+i!A`bF<6 zM4prR$wwRiU3m}vr%eAnte@K9X~WLHD-T|${mN&>lN|lHGkBond>wcf<1gfw;QT$! z{M7j+;py1o?Z2Oevi2}Mi>D9MeGSj)Z%AGl#{CSb&f_!P#cXHsGvjj)!#TB$hgJPh zmT*5q8sHnqcQd@CAAtTDhG+G&p}(i$84nh2g1KW=JE5AA7nc7Qre#9A8odC`nmkGd+%@j zx%}Le%l!svZhv!9vE_4yeop`Dq@zr~!8an`-E^9%@6gNlGCZ#z$bG@Vh6nm);yJ|d zAU~Lxd6q<4$mhvVG@SPfqkod&h5dN??qtKaB=mJS6+BFq@C$j#pJx2QegS;y^Ctad z@?!XG0}qwO{Nl{{rx<^6e+%=N+VZJXzaY6j&l0&USp-}4KTHCGGD15 zU1bfT+!G9sPj0KmGmy6f@Ojdu>!Jm;F5x)C3u-*^c*BFVtn>uKOK3dlsfHKRvUm!l zwu^dV$VbBqYdaK9GMv{s#uE)MqHPjRHr(i0pQiU)JllBA#qjpD8rlkEy(XNyq(`3{fUNm@Y|vP zkm2q9=I|djyoF~DNK?Z*d*+__r1{@g+ax?-czd-?CmP;Heez8Nt^0P`R`F58JE$Ld z((umy&*(pE_|JO1NS`yjnP=S*jr44go4$3@^cVSn`SS(Czp$f*MB*lWAd4{eem4J$BuL^fhQ(hh zeD~AvFYZ^?gqxWDukHf+k@7To^r@+qb%Ffsq_Dl=pWUL^O*2~%x}Ao1kR9>4u9@!0 zT?hw;SCJi9dv9PqR}t2*F>n0s;p>W8(+=F5OnGAi^Z$X?E4*OWix1@^>h+@Oe57@Z z%awB5 z@RK_i`Nqb-K)CIgd^-{I-9K^YKK(pQ@j5 zjGco&3Vc2>rM7STPbv3U!*8i=dZOvPA#cKeTvdpH*wWW5wl`%8ez+$gO+lh9P{HV@ z9j5cSe1Q)2Cw-y%Ixb0X%IEl`Jkl46)7MS^OJUs?D1-Es+G@L#J{Q(^QOi(1IDNzP zzt**4pghtyvNW;Rkk zSa~|9Yt%q|BsF5g9B2U4Bz1f*+Vkz!9G}I?=~|5EH#x~ei%C6Ce{$UI<+zW{@vNeb z@6^@Fy5J4583t`ixw;p%?yj#p-EYq)D0U*>1KJ1O{mBnOPd_tpB>7R4c?=~V2fq#8 z=^UQ{|15ORA#aC2mU1tJevV|_NR&%gA!@4e7{*y#?m4?&MX zPeRY4`vUY5zFy(D1FY+GT}$gacrx@Z^d9{8p%2jch~rPepJDSk^cBb767P4&eumhD zi_em?(GKJsn+&;})H~V{nuX(Lj^_Z+1I-5whPMzreW$&+tCJa7oqbP^2?#Cq3fWVpj+YJ>FVWfY#zjZBJ>#ir?7jD zd=j#k(Rl;>7W6Ls51^00A7e8G`W*Qe=zR@uD)ckd39kpevKt`I*GYr-GK;!D?hIcRYAhwT?KTds~0zZ%ZMM&R4ybQepy$Zbsb)fe;I&Wb=8T=mj zL-5DYryNg#z5?qDx$mK$z|$zV3*TjQb4gAHuo#<(d=_YSKA}5zLR&%$!C!>Aa53=W z&=Bx4@Rm*L*;R;fm^AR6w;Uf>s^e3I^)ejV3fdl>UEuEu?Saic*zOD7A37L(82ORp zqsfnlPKHk9_)PM%q4TjHOMWrDaoAr0z7kvnUk|>4d^~guyjwZG1AI3&_kiysmWklU z$e)0oLFWbNWq7YaucPxO$M2B82Ym>A0(}mB4gc@x`~d!mdQ1cNg3C~nV9}&eh8T952cX%_TTq8l7dp%Yj#fzY_VX9Ipm{4UX4>)`ixGHiAD4 z`R3p)pjLFYg|^4%j_`K{?}knR+MDB%=#M^KSDkQ z{?{CTNB#r(&**kS)4@IP^um5qF_-FEkaczHVvb7+x#U8Q&yL2(-kYiWpd9Ku z5^!C6{os1deN1AS6#dk)@an(lTN6Es7R zj)LxuM;&L15ide{(R^ZQI)Szsz+Sc;N$BId71jEsrW5Fw2K@-Gk3zEc5bCaV33d8; z+h&mP55d?tI4%(NDB`n@ykNTvs!nVi z6z8K0JL)2@#p)Q{CadenNn>oBUlxq)LrC4H_GGe0>gb0?X&NL8MfRzsya~+C?B&R= zh2t47`TCand|X&%$yCZ~BF`i1NOWJ@mik5FqO{p~tGn8%tchdI7mx*|Kn%j?yes8N z6ZWPvSQZl9AF<@0D>tD-yEh$M{|GH0O?-wPpNu~G_7r5=F2`1N2Fk*;S!!dx9bPLf zTG7F`EW%YT`Vr-{EJyCAVT+f$txPZ>DbpF)$jbrItrYe0QZtdBSdvDl2fLc@dpu zdE?hgNd>LD##t_KlxP2R_A802#~{tLBhe6xwlV*m=0oG3XlsqL8Civ=d3||ec@>k@VaUtn+RW_G!*$kyjsL!Kk;zk=7juk&cCthsN! zxVB8~&08Pw-|Q-~d|!y`V5j|%XC+BVeQ#Io@_p;Zb+Mxy#>>0J9(oU8w^8-^cHcUY zcBe+#x6_a{Q->+0^LF2wvYzhuY1a-~hrRN32mNUI#&MHqN7UgezJFhlRdhCr8}P9O z@qxMvqb&5qo{~#l?8)~Ii^F5Sw?rSQj9B1xAZuaQ>5XJld|pKzek$|dd{%Tq?}oB5 zA1kBXt8s?jW6();-~Qh9c{7_b!$Wr7#`5=i#JQQ4H;bFclzmclJ}c%5?47DddCRwr z+ab#{M+Rhh_GcD$Tdl~p;X8d3kTnY}nkyv}{vngTt>b3M3b~G|&(Nz!dG=$Cy*tDm zW5lkdYNs;wsrmMC3-ehiFY{SSRJJ*9vV-pLiX9wy8jH%LuQhJPmz7J2FoKJ@z%6P- zR?*oiwj$$*Sn_q`y_qcbZ5g-5XHn}{&U5Vv{Emd>=xhE zJ9Jf6h<_$dl?jhwbWdnK(!HSD`}T@^n_XwQlV~fxRHiz+@~sZtFFMkHqZ^6?(w?O= zoxa`qeu2i>S#Gd6=^=R&?L-US5{?bldIj{vVTl<|7hAQGzxo4i|!=Np3-UG z0r5cEIyR=|j&j-<;5C<9$+eFTiU&vC13SeBJ72RG_Q3Ka)*0GIhr~l;2YYI3TW5Be zY(Ktd)NV4OY1I931+Adlu8P7H1^ROlM!d zHKU_IpB7i@r!i?A2A22X`!S>0hnmqMEseS#wH`HFepEa<>i*R9f;3lone51Ti0J;+ z!n{=B=~2b*hpysb1>gPQJL1E(tmuG2Axsp z?8S34(LKt!=7dJ_-ch}I&Wn`I4MxXfnL{c*t#5kUdo>@${Bm48K915O+L|8Hy~nGv z_FnrgEI!k6sVZyd44BH88q<5UoDg+yb6S(~QpUXcR9SoPF?@$h_l>T^QsE73%(IVr z+A~^CjJnsko}1e5dLC)t>Uk7n8$KiTqvz>AJ&!Wk$?-VOzcChP+N67;V~LL1ofMB3 z&Nyoq9TOeB?TiWCpS`{B)OZ@##z~D6>A#1XbieAwZA_@nDe*+n(seFKn*u&NdfCm| zbWY$CffLws{V0D)Rkk?!_DvId4l184r^i5TbxzhgN9tU$Kd5{x?XUBMjzMjaaX!`rb!{ZvX9J{b|Dh5I9MQ{k2BFOHYQ zp&Wf#ZI`^sDmoX%3;BpWk#QEPuV(J2G>_Z^T^j!qWk6A7l$Y1v{op9iqod{l=xIA7Fn~_bm^3Z|Dk;yLRTabE$PpOng|5ard@!Y#qFUY1^{qn@A zI`Ept^0qBspNjmW?i?Y@BWq`$(@>|q9=V$ky+-R1ziE=MzcOAG3w2mwskW`~0;oWK zO)SP%eru=0B+>LkRp;t>h50NYtN2vAiq7Rco7XcMf6P+C-tczBRY97rjn{E+D8w?5 zUQn4d1!m$r_l8%?^)X+cYO8RC&^Xm6IXYMItiOfdVqw;WGnL*VIBUg$lp49e4^ReC2i zNYnK)K889e>zJs-BJ6H&c1=aOL3EG%`o75;0jrh4b^G@U`NO$e;;peY2~yx15TwZJ zKTYy{PIUtLZSnS~N22ZY4;iKNK<8$;BZefcmZ!hPqepje?>Qv7Gv0-aD9lcIdPEy> zzj=#Hpge7}NSu-KBo{<=T9fhYZW{D=6X4UMtg-Yc@cbj@?vD4wXscb71!Q`ZFY`Zl zyWAV4I$nyjTFU%@7Qe9&>h6p8$214meCDyUBXmOD9lHN(jxa4w>gDZ7%dNYOeP1KL zopYtrKGL=tTo>rc)Q7s8n5zOMG*g2hl{Q9(PN=()_c(b*K`SMujAwi@UQ{Mcm+^i_ ze@`H?$3PV1-TB_A_h{T>JP;pbT^=mTsD4?qV`urq_z?FGY7zDBylPjG>GvFq{IX3^ zV`E$tS?^ZzwD;loNK_fMruF&jF7hjDDZgV7dmfFCsf_U{F4Nasbsm(7lJ7;LeE{Wq z^(gXNPHFEGF(sCQmWL$m%fqYaq`i;Fhp|%`67!|9iq1oP##@gf9wWACcSWZ81AGrE z&u_J zQj=*c&+sX?`*vJt&S`hSwV8nNpwsU5K+ctP4iaGSs4Pg#FeY|4m1~n-kH~`Vj^7;y=0CKhJwdjVWTMHKfg|vb66hKHm^} ziq^0CKd^>Mxr%E3dVC|2n@s;JuY`ZiUzImw+LL$cGtYHMd3kgq}Be&l>pc7vX(w>RNb~K;6k(Xsh?)`%#Z#-zcte%CjSF_rAB~ zZ=5SBcG0f4)Q+Rz^8A9;2l2y*y~^+zrD8`cJuSWOu=Yx+yKvt~?8KS&s1E=8-r^l^ z+7p?t&62*Ul&ASCy!(wlMUs|NJzIDl71?P9o-f6ZBk>_)t`9-_*Z=S%t9_+1PfWp*iZMnzUCf5T@ACNNft=oa`4fIg>7L9OKp@^kzpw$hSF`9F-` zYn)`c%6^JpNGlTkGa297tmsUTALEz!8D>6*(J~dEW-mX)uk3dpN6Q#|wMgE4@>?+F zNisEljn851Mlc#*`ui{?%h8eV<2U$eF`wEu6`yKflE24q$yt*MV-Q)|SF&7XpYyJt z=aI-5yU6miSyhKm1^m6*g3)A1Dx-(l=o3DttL+)-L(%&8WwO+N6j_(T5#m!xWEKso zL0kXI511*&lK-JkxPH^#M3k4VI9>a}Ha-l@XUMdF(8)_@n|mX?lq*5xClp+p$EPskB^w7?f#K@(bZgjlnDq|An32s5-v^oUNb2ctw6WNb?`4VoE!S%}c4B zg&d)umIt&ow3QeeMcPGqCGC0Yt$AZxQ=4!Uk;SSkW!{BX&bgV|hy$O2b37$3%`5ha ztHa+YWO-@lyZc2(c+nN`QRfa8M8GrMREDoah4%B*b- zloG0S2;e-kT}5Y>wnlV|_!RWqb$BR4QYkq7%JmzgWfw67`v8*Bl!!@3SLp>VuA5E!Eb!DZgQrcBlScJ~vdV z=SbVy?&WZ2?!}xBT*wM`k{!^Hjs)9nAi;?OmavgJ*}Kp_$+G)1wCRab1hHEk-QTFa$^X zpe1yTMApo2s1~{wZ(E{Ge+yTijb{1*ojf{u_Ulkt3v;&0u$o?xjq6&ZZ4pO3dBzfW zP8;+$arx!dVC4>JTdFPXiuNp4Wd&s1M_Rs^Te_{l@3yi-N?96%#h|(BEZMfW`HWP( zQjXfGPME%^Tf)&UJWnPyRO`+&9hEKQmegM=qwcf}`k_1W>tqG;|A)HsfRC!^{{Gyu zEoHMEP|>9*ARqyxx21_ll@1o7fS_0+q9PXVf=E#`b`-_6f*k}E1Z2U2U96ywWmOcr zD3ELtAn)(YnVSMx)JNa{|9#<;o%zn0K6B^ZyF2I1(DD}XmT{5^+!NiND9$WQ;zT)) z(>&e`XGj-7mPEQJ;*$(q9xFdyJ0YIJS!dKfs(Y$T;551<&OS?(wTkD*6KE|gujBh` zIy*51qVp3IWv%0F;&cveKAxAT&theZ(P!v8$lAtFL^>bpnJ?27A|1y`l#yM7Bt{dh zt8lw9m&zo$@LAq2-X3*9AJg~3GS3uFE~Yr5oNOQ@P|pO-L0Laho>a0Hq?3_9C+LPI6l8ov{ZVcshg1tqw$fP+D!*4beKZf6_1=`m;-Y0IACXFQS zCnOV6mc&_~R%s8dFUmX8v?}o1w|S(==}49=?S<8IG0tvmO4pGCdzvU6+*EpT=}GZ^ z@fgn5OQ6q4mO}iY_#OgvDea}597o;E0wH91l$Yg*$v8b>XA1KN^-LmN(u|eG%E?8} zW&Pu)U@i$WhCB;U_hc!N!1l!>5eXS36mYqJ%^R^ne{4hEoF(CtB8D8-hG7j8W(G|VSqLiV~ev(sXQJdoMcMrW98kofi$n>e2L0=oh-MUEIUyfg!6Bs zxWbSQ*MwD?1SKmhTx-MP!?8|4Msostb}d>9AWN26!fXo}M|K zRYq}8m-1oSaI9w*tvslUEDvvr7S*@>RBZ&#HK*?tFQad3D&U8V7Nw`)7-TURU zFeFIFan6LDDyvkWF3AcDPp1NTS#(Y&uC>YWDKrNmLpu5f1@nvJBumeUpM~}z7xX7m z(b<(~5qyYKpq-6*CiV-o0_mho?6>yC(9Q|kxyTctki}&CD4n&B(w_l4R!Mq?h776p zK>~sd^K5GTe9SZC0ukj!vhCCdm^bHW7vLJ(E}x-e2e$8L8OJ#RfDHAMF5*mrZ7GULc}BGuo!?1B zamvTRzEq;r!rV=WsBXcZDkV2onkX%dUmQ<^ra($zDa=_5dmReUhD+kpi9KCS0rUcN|rQ=q-=&Z3$lDE!>7zMsp4D?n_pXTUNCx8B%s5*mDXek0p(iZk0BJEFxuA{7S6=GWt#j@l~D_CssaFy9)J8$TlR znddQ-C!9s5RYGJ*cTxPtxP`OQlMq?BKa)&2S$0EwKI%l}#iR`9s^heDFv=~8-;8uc zCVij0)=^}p_S!P5;&;bigDf9; z&cJUnuT{#T>BaF|G&&2O=HPP35+y_&=g#=8$P+sp(Jv|NeN4!76epU#BYvBf!1?eP zKeSJg_l?+nkd6#w{@leYciCx){ofqCXQl z>WtHiv0oDI67Bx@$+8Vr#S{bMfw_R1=`;r)h(CxqXkqRa&^XBW9A`|)Jve)#FfA|+ zQy>#KYaVx8xCQCL^h5E7u}&mq+XbGzEXZgLA@`B^vbcqGbZt_)0)z>ZW%uDaEWo(a zdpMO>SWHx8P@JXO{Tj6$y`sk5f{fxM(>H4m;Ciz3y66{6USkC`=P@^u>ABj2T0uz+ zy&^;s^Il-i$8hgW78jH(k3Wifii)Isk`fhEKMT(cR!K7bSp0GHS(0+Z+dtCd`Xd+p zn0_+;R2*C>voPKqCzgI9zDz?tc=AShDld|u)bt}b`@^bCM|F@S%X^s4Lq%OEm4$nv zg)vRicYx_w`sw%znoIJTA$B0PpJW2Az?@$he}?+An#`i7g#GwTKcTI{wGumkdY~1Q zClRGjrXSayM4u(`O$SOuIaC+44sNVub^O^l;!vKHPR5VXH;ah#6wbdvI@HmERGupex+LZcoy$w@6C#Q>P+hnUXnP5rscT_uqmU+5f5R zJn#1&GI)6F@vX&41AC5W(}rFr=(W8{(%~RUftaD4G;qj}VI9V|K56{$0b^UsR}iFG zA$B2dZIZg!cOWGvj_=sJZ~uX9$F~zyD|v51Zaqh|J`q-gYe+icd#~ChCufw5$tanU zQ8FW=WN}8x@{E!-86~e}lx!C#SG81)2KUbQ86{KfQOF?sZvlp|9({#+3=H!f$F&QOOGD^}FYPD=PzO}uE&;yOY4%|Z}g;G)%)(`Aj+i5H* z$(&{vb`i)lD5vVG#{<$~%2|wZhL7kw6c00%&mmL;4SiJgRHJfhpA?*%y0)vehijd- zuaZL~qLx*e`@mg`WQA<0uNFx{N;0qUwT*TW($Fe@GWSl~@onw)a5&MB}qu^c~D(q;#-u&!8K6#?T#5G)zi@I#dN^8=Tz&=lG?^J^BtY% zTkRu9eNZT`Mm&=rG81{_t4+cyUu_cl-O=u2`)et#VvC+Rq1cmE@p3%Q?*OEu&<6M#=XXC22@#UZe9X*Ej0XY(Wy)(rPnAt;)4XcudnsWv8j? z9hz?`A$0rM(w+zWY?;P68+IC7l0XWq%C(fULP}DZbIW+g$h7+JG%~Ns|4o{v_Drny zPFo~v-7%x&M_623}s>Nd~o zYVSWRNr*$=kpE0lTMg`TES@2UltbSI9DL1Tn-1pU_jawT^)=<@#vLnD-Drno?K81R zO8Bjx%j+JXj)x91Ga7WLtMM8H?x1Af>Q!_VTMoHa_ zl9Q|6Y3=94c2q{~&lClCrf{NenQ9%)SWflt4{Fw$c8}V9omo<-rQ;Y#)4mL z0rGM;YX`y3S_Rkde6YG;B2^bDI(2xnQt$(11pz&Zx;J!KvU8P6VGCr64IS1+S4hDx z@oIv)H$s4&5mhaxF3HDZb*%zqbtD8`4oLw)y_$kLPSv}j6LouSDKZME#((1@eGec93b(m^+;F(+)33jfUw@ih6HUuVdm5e8u>-nfvWv^O%_Ym& zUE%3`(mfqYcdq)aa#Bk{t@%@+alj)^(qM;r6yS>&nAJBGp6Hn}E7|Q;Sz!c8 zuvukQO|Z`s9aWnEJ2~W{A6@YdU7S3r=V8ou9pmn@6zf%uy8+GJU54l^7c$%?LUxLS z1vPFgNYTYkQA3ciff)tAyF}d^a2e1o);x}?TSv@~qgJ~OaRdbG=pJRBSWSR~YVxTa zcwjJU6b?ZfDacP(wOqBMja}Uu4a``pi~{X|$0w_+Vd-mFtyb|054VE^?W+kgW>uL2 zuWvP4{uO712G%Y>UnOd$_}wlXzXsOGsu3146APIO%Ti%S)aoKEGVuaau5jl14lgV- z8q=37Kg`Xe)hBAkF?SnYi*Db!s*VtHJU(*Gk56nNmyGL>)s|J7DC|lNgkZ~#qvqh^ zgatsXqF590FX=EhX_gf|swxG(v6qEY3bp#^D5HD}31k`XK`@b*B`Tv|Tc6;er7|GM z*opsd3eY88oM;Db6DF2$^cC)$hiwPlis(i^Pe0j(do5oE7A^x@aGj_opz9-};O}<{ z-B{j2b(gJb;xuWN(A_{@gJ=hyead$}IN3S9x&X7JGpdU_=NJdyAk|e%0=jc@Xx zK#jQ+RNYdMVjkM@_pAHAnu6B$FFMiCUPQOl7!H5nTk7AhmCVZT!rDGd-kr(9w}mmM z2ZGxF9aK1O=qNm%QulLtH&9u*KSoxGqh{Bh4??T5k|`|BgA}w_8Z~b$!g^fYAZrRl z)Os3%mkvn*0nRy}zxi-Oi$|R3Nu8RgyBeCIee9Z#mSdIrzyD9RoF+AQd(z=V;V;>p zSS3g~(7RG_Oxn|BRHw>;N?I^dY$ega3KG;K0o}II<0PPV98|{lJWEhU#^zCqQT3YG z^C}5b*?8?qaaLT0oN&m1EW#@R?rKOe8HGn*7M=(?Qnllxs#+m721-M9ah*3*%Mv}k z;yT|%%d1HOdNiP{9K7!O#r!SNXdG#4|3_KLm4P2pk(GR)&&k}t-5Wifow#u3;iW;) zGxbG5x)s&6NI;9e68t>36$I9yf|utuvju8dnrGnAz!`n{T8|P?CsI3V2;v3uy|(st z{C^gT1~wm6w{j+mxwvrT0`M=kqiXKbq{cwqw9SRDuG~5ac+4+yP3#`sVJ#SKx`maa z(ftDtMda?E46sfhvs3z|Yib26`Rf4?33xr}uv+%$1v z#0^;nSC_93)sDQ6(T?PQv&c}(-{I?ny5uW|Gl+_&4zp5cY{wzJOZVD7=tl_XDO@c8 z(QoJe_JPYi8-h!)SW@re6lrpx*hkNwuf!f}El-_gc# zqNBZ|qocEp0DEhGV?rEXM@LB*$dOxsIuh3mg|Y zE_PhvxYTjE;|j->j;kHB9C61S$6Uue#{$Rojzx}}95*{|b=>Z_({Yz$iQ`^J!ts#f zQOA>xm5%2e>m8dNuR30Hyy1Au@s4Aw<9)}6j*lJN9iKWrb9~`QIlgx6aD3j>A;u7<8Au4b;5uGX%0uFkIRu9&N@>lD`z z*D%)z*J#&R*J-XZT;pA5yC%7&xTd-;bY1M4?waA6>AKoA%N2Lcam{nx;JU@N*tNuU zpX&kFBd#Z1t6ghc>s>FpUUI$R+UnZo`j6`i*ACZC*N?7WUAtVnU3*<6u2NUIYrm_) zrMV5a!|if=+&S(%cfcKTN8EMY_1%r#&D<^BZQUK*UEO`$C%Xr@2fK&4N4igQPjF9h zU*MkRp6R{@mI-IOuXSJNUg*BjeY5*E_nq#0+z+@PazEl;?taYug!?J?O808_bM7_n z7u*}%o7}IsUw6Oj{?NV6{iXYB_jm4}+`qZ^x=Y>r-I~Yrcs$u2FRa}KJRwiSQ`d8Z zr@p7Lr-i4Dr>mzsthV*?^zoeJIoUJNGsJVMXSipiXRPNe&qU98o(nt|doJ-@0gG_g zdan1};<>|fw;=LgU4p530ko)S-~ zr`)q2cBPCgN0uwgljYAkGAo+ZIP18q%Oe}vmVTPEbG~<=d;#kt;^bwwJ~c`*2`I2vR==6GwbcF z_p-KUrLw-y`Z4R5tUt0!vi9SUr0ncE*^RQBWH-xhp4}$9b9O9yVD`xDaoMM57i6EE zJu!Pq_J!HgvS((`$)2BmV|G#YE!nqa-;sS+_C484vlH15WIvMqO!k`WWcJJ1uVufP z{eJeg?9Z}yWdD?%&OVT>CxnA1I{S5E(&0Xc(mPR$vcb7s!OoO5$7 z%9)WfGv}(DYjUidIXTzm%+Fbvb3@LZIZx!Q%2}85QqG$>@8x`$vn}V-oG)^|&iN^4 zSI+L7;v6m4lk3YpI``PzX1UFCPsq*BZIjzBw_9$n+>>*MiFZbcx<++dNKArna?sK_oa@Xa)lDj4M?c9%YQ@Ow7 z?#?aC)x1ux$D8fV^M<|kybZj^ds}!<@aB8lcu(}U_jdAj^>+96^q%A$;2rH9=N<1o z$9s`?n)h<=mELQ-bG2y_X+Px?{nT4y{~xR@V@2! z!27xPOYc|SZ@k}ncY1&D{_OqD`-gY0H|;I+8hM_)oV;+}F?kL08s#0A*DSAPUYooQ zd7bmR<@L<#o!38aVBWC25qYEX#^jC5J2UT`ybJO!&AU2pZr-B2oAPeXyEX6jygT#m z%DX4;zPtzX9?5$&@A16Vc`xR@n)iO*=Xqb{?a2E+@0Yya^NRDz^D6QTpUda*<@o%* zh_9~i2;Wh@qkU0dV_y?rOJ93mFW)fV2;V5*7~eSG>Ao|4XZa@jCi~9wo$tHQce(Eh z-(25KzB_&Q`tJ8V;(OHhgm0y9m2bUov+ot(7T;UG_k7!YpZNac``q`X?+6 zeLwns_U-W%`_jHL-#*^~m?by-PQS;WZDHxLNa z4>Sq13bYNh3v>u{3Umo{3-k!|4D=544fG524-5zl3JeLH8WZ>!oak^^uXnTD*{&qtiYVWb%BL}n*vJ$%K}dZRt267JRevaSQpq3*cjLp zcq#BoU`ycjz?*@$1Mddj3w#jxDDY|Ei@;Zb9f6&Jp8~%Hb_a?BrGb5c3LI+Y47!6^ z!JMEs=nDpdq2STMX2JYmhhV2*mtePGk6_PW?_l3xzhM91fZ(9ukl?Ao;lYu?(ZR97 z(}LrJX9p(*rv#@4FANq2rv;}6FAL5H&J11^ye4P`X9uqhUKgAnTo}A5czf{9;N8JQ z@PXh%!AFA2gO3HD2tE~D5qu`NI`~|0P4I=_`rwPfWN>rv<>0Hq*Me^Z-wM7H+!}m8 z_+jwl;P&9B!OwzU1XIDUgFAxX1-}pe82lx;EBHrnPcR)U3+@XZ2pS<*C_9uF3WUO; zdZ8mj^+U&m8iX2!jtw;lH48NlwG6ciwGOonwF`9!bqaL}bqn!CM8Z-?Fuy%+i*^igPA=#$WYLZ64e41E>)HuPiYx6t0uzK|An zhrQuC;RfO6;WpuJ;aIp=_@wa3;Zwo`!-K;^!^6TO!lS}t!sEiHhtCWbgwGC744)I8 z5Fy%fiox*M>KT-wD4L{viBu zczgKM@MqyK!m04r;T_@c!rzB~4F4SdHM}eQM|e-TIGhfbh4+OIghfP;m=R~h9m$I1 zM7$ASBoGNjB9Xe0qaw#dj*H|+Iz)O#`b7Fg21Eu$hD1({43CVAjE;Q?ujHK4@Mr2EQ>rEc|7uD?|8BkLj?A{!%{A}>W=iEN3y9(gnJ zcI4g2dyx+!A4RrBK8gG%@_FRT$XAhXBHu=KMt+X$itLG`Bl{wvj#0-|$5SV}PHvsN zI{rGrI^jBX>eQ=qWS#nTj;Yh2PNO=<)@f3wS)Jx}TH-s_3TzGdxBi-F%{0oZ$)9}A z!WR_(Ua9{^UR>`{*at|tHPw#5S&z1_x_hRSQOGPKZp<;Rl`XO0&NCKD|8?+@{Qve} z2kdmDGCIi5cF?4^eH7YGg;w{ElVPJ_@q&xvgQV zpWHU$SezHzOg~=cYr6w*CRr1`X=OO~3-=1yAE%VV;f@mHrN6dMyJsja{WXAQ-1s;8Ra6bO=4|2ziNTr`&@AEWw= zPF$yWt?)zGaZ*A=Jw@(VVfWHl8S7M>QaD2ThM})02L1IHr-{?0ucO{c?<`Yx&^s#M zHI=i4d&*8_yWCrU<#V3uVM;krUa@u_U1jYMP7Q~8gR zb!~<(hA16>;tUc=&Gi;~OPqqxTBd4&bH!R!qn0vGs~SBuNcGhq*x_%hpQyK!DF@*+ zvbK7AR3$+bWGqwmg;AvHh$tlub)On>uaN&I<*XxK?;fKzQ7;Z#}5EsCBa_XPP_v#*xP z6sL$~*cHihtGDQblL7~WxySm5zBs*&(htF2ty5)u1HIK-j&u(#ruEc%!9GkM$wKrv zWCl>$bsEpIb=o>P?+*Q31N}-4U7o;TJ=dR%(~dcG@-XN>109}RjQy+!d?XwPV?ph5c_ zLe@f?l)^Io?b9;%+DO%J-O+RXaC$CtcbQjroFW-hJs6WAF`Oe}mx6~ioObk( zzK7A1Bz;i1dFZgnBL z4|YbEilY%q<^2k~k;KpZX-`w^L$C0@I2(DSUTl;YX<0hiq^0xM`yqUfu~&w@iM__3 z$kv??ALT=Tbwxep64e2d>lgjyxY4;-56Te!Bw4QH4zPCBN$aAWstuDZI8K92Ev+*` zx}u+l!}brw<$j(ZhD!3_l!IwF0rXOw{y76DT2_TlM+n9DKnLJraS7sFRv9u#8!S_w zCk9D(zji>Y(1fnxOlkvXy;HhTQbJaKh#F~)F*akh_l*zK*sPEv!$dLYZ;#k3iUkZD zN%{?%K;&Pkt;ZN_H$IUm?YIZK`(!zXj>Ak*EYr=znWJyuJkif&-Wy;A_${11`Wa3a zrJT-}^o6+IxS_HX9tApUdXQ|ZZ2dG2(pY!;a(Z;zr#YJ zEH|vup9M=oo!nn$~+PGepd?ox8ryeZ6 zlWTt-iBoe2>qBJk9)%M~ZC`ycOoq{EaYJ#UdAYGqrVnC-a&$k=T&G-Ix?9iHy?UPR zlVSDrdyIQ!Jcn3>^8)UX{zbAxia!r$yiV56hsB{n+42TjL+}OKh2V>|X|N1LvF;NM zF>36efN{E3o2$*!=4%VIo3&fCJ7k3_7(BnQD8rLROB5HBkKAMkIMp_{drwAV47 zl*bnBHTd7u-qp7L%`yE@e1u=dw_#-IEajhJ!9cz=n|(Q-V#gnK#c!_36EQ$7#r%k`J^m-U&(m69LOAJiYwm&s6)uNM#K@8N8D z^1pY;XHbR3g-6OfdX^mNy87M55}98X#+ZFP#{4-CV;|KfX;U!H)3r;r%VZx#!Ba8P zmuoX5--ok*3t$Ips-y%?1D*g&Msv06FwP5MgXdQ5HtlvPn~xKK=U|*~Rdjdde9|j@ z)B+yIuol5M9;tnzeJbMzz)9&dH4l87q~C!56zxOpb4jOYFKe%8Z)tBMgmQXCdsW+l z@q9~rPkUe6rfrv@B&q(F={nt5If|Pwilb!TQ96u`^gpCOsz0WGW_)gZZ~SWfCVTQ> zH7+E1Tz^7;Qh!SS+V}=BDCK&b(fhvsflU2=wa;0CX_lfLQ0r(CcNaB5|v@4U)UC z&2AQKMp0?=asIWX#if6VMiy`GhxHngEYZlO&QgRC;VfBgob>T0g&m=;J)aiV$Zjiz z`Cz-2Tod+!v$SmOBBN0Dfvy>nKi57r{v$&uR&9R=kIT8T$EN7#>X%C2MloEUB7Lji z8>NrY$La<8WQ1L$&yeB#c{%8L$)6iv7+)Gc7(dE#H|h@=DdQ{S>&lRaWcUNdg9iH^ z7Z1n~9+z3d60@;4{90MttHjkf&BrFHKMoO*5@&`_isO>9+CE2Wr>R~&O*=#SPJ&g) z{_uZjd?ah}y77kbj`6PXp`_Q0*NwNOkMebBPR#|Y#p8F&H(Q@0`*D_T>2VNAxo5M`uRDxyjh~F4jbCJ~HtN~v-S3Q@)xsz~ z{XJgobGAsxe6A8p_4}l+NWZz#N3n}!=uJ4k&ra_YH{itZyJcH%P(6BsSghS8L+n_# zOV$#}f0EV@{dv0fv9V3o@MYr_*`G`=87~`KjMt2}RIjc#HW)7&uOjSC85=)^YF;f* z+oiq8y^cq9;xDzYYAw|+z4|OZS3gg-f%~?qhsWus>1UybFGl}fD`Q-t&(yEfuhOs9 zuhD0zuoe1B%;QUp>BgP122blN^i}!>eY5_G{;Ix3&#DaHpuebZ)IY)qEHV}wcgfg` zj2orPpO52IY^ou-_eozuzh9Po3;LdYH|yl5ShwqUNcUFd-l*RsnPhj$)?bN}pV&7S zzQq}PZvZZ=**k5fKBXzPuQuqU?3*sOYdhxV=Zowif^Ui(4&Rr?J+pOi7b z)Kcj4ueEQqpS544M!W)^!55CeY&hg624c^>#ym%jNgsjGVCM$cH<7vABt}_ZZU2%ZkIChQ7N|= zw<;g^JNNZM^fmh^&h7f0`eOYq{ce4Uey{5JCHg(ee`96cf_hkwNV*ay*RyXfd?CF~ zWgNS8w#)r*lkHO96>BA0S}XlWeR#TlhJL1gwmuR4c!}yoVk+lMeLQ><^b7Ur`ZM~o z=uZlLMo*##?RwlSeK)}-8-?7YK9{OFN?{B2>nq!Kn|{0W->Tmx-9>s;-`F{3a%=C0 zOtC4vT&p>Qrphue)i0B7^-nvO3#DYW{;iybo{rR$OH9xrr&etzcbKooeYyBJjJAEhGyi5OG|3lv`Q>FAB`nUS``VR+%zplTj ze~dn%65oJ-o4#NA|4JMGEY6SGPa3z;b`Ndw02SjD3is@};|i=Fz9`Y-w( zeXm}OGp5tBRqvt)e$szdp{07641GqtuD_$dt8Z2GhW?iRwxUeA|K0Eb=!?U*=TLUM_hh5LF+pCZ zCueji?#VJvKZ9L6_5XysT0AdWXhN1xXT?1)j@O!NEwu_=7@DCQhLo&9s7Lyq7HeTO ztu?Itn})-18ZN_a*b?f27ere~e8zqm+h+uffyN-iFirW+?gs~r!Nw3N4H|Wfx;QWI zR7rJ=PUx-bZRVb{KPO6AziOY=| zu|^Z4snO184=IH;G#VMrz?~&EFd7=i!{5c|YIHNE8t2PU?lFpelEM8({{N}JR@#ZO zS89Id7`evjMg_jcr+VZX+)J9NOQx_etV#2Xh!{t}l5S7gKVyw?vQ0-CJrG8HGr|~Y zj6&!c#+k-=qrf;z$|;9Q#yQ4hV;L;`K59HBL%SIiHpMvCI1hbufpMYn_#r*?Kh-aP zR!&c&m#kY)`FW&q6s&T$L8~dv>1)hi^qmqMXyNC@E0BRHe_CrZAabNwhK^`6$enuJRR>3Go@i zti7>P`tApHsYsv(4)|776qRrp$qLx)l{Lj#aPVnv)TJV-e9_Vra?VGJtp|#bmVCP^ zY+p>I(i|2O36#cC+gDUA%#K%7nIgZU5ViUl^~=9nEt0V;$t!ZUny1?;Nk zD^g+6bQEc6#=`PD!srSpDxrR%6h$RPs2}&IeX(L+@i_DWW=_e9V(JYie7@p&@R=f2 zLbYFyFkfjB{YUk~NUOG4vWI8{V|%Q9UhM<;Ea^J{U#cX5wC}^`OOsDvJaEM;U#vKW z6m*DKQl_99h&{=DUF4|7_H4z~NHq|9WBX{vVifk^hd{p0i}53%^d(CQa0SpjjqMe< zX5@J6wUjSfycIqwSHPM!tQJ#UihT$p->yA{xc12hshkn;6(`HSlD&btq`SzgLSR(C zk~Kg)_+CJ7SbJjdb*Ag6*edHH=eUI*^Sj7df-=h4XYJip(nZdut;ItTkLFeW-ULo` zB3}%4zu8x?w-8e5-Pm4=N51IZeB~?JLn$b%aF3;YL-!OYU%?(9a-oqf+LJIlMw;eOA{|w}XlbIH*PH^J;XyvkwX{GA_E8v({)%!6lPgkb z3Tfr|%ABdr$#M(#6e_J?e{?_1-8}dTFkjY7Ujkw4ah;3(DLIF{!rGUB?*&}(*1iHr z$(JlIL>T8sDQG??_fdXST0!|xNaeWgBdHv>1NkZ}dLXuM9Oi}>mhWQ+sP=g{joBxC zUQr-@RD;-o6xupA%u`E8uXTz2 zR4(;P0=>(nMGxd7jLJ>yFN9B)cECaz_cWdc5GWweaKsNAik zupKo8GysKf|*uO&F z%TUICoX&tb>B7v8rFrGrRmS%>SXbJ|Qe1EQ6IjEj*DRb`MLw+jI4g>M*1oM6kM+0) zV>l;*dKbO}N!bpRrqR8Jp5X*eD)4IG!)H}kxVwA=UlJ!ic(nr*CZ#mKmX<_3@(Jnt zhT>t>;W?C)`N=WYgbIsk0=dZ1mr|NnF_|CvtZHGDGlx;Rl)}=4x|_yu8bhVD(q}0j z+F^%P*zuAF5-OMEfdb`AR0zbQYd?9w_W2G_pUU;1B87OgTEuWphgzi$P<|9<9k8Vd z+*x_v55<{Kw$CcFeM#xVoYbP2<8&uR4vxL z#G`SuDpG1JMFm|mw8n}GDwlm!uJXy!@Vr)$wBu>yqiZz@OHF*OT3QMzWZQ7Ql3F`) zIu`rT_XwlaVyGq%Cf8G)d^9piJq9WJD6Je{BMF}zLEZLYULlNDDfp0^BdkssK z6`^P zLRU9E9VRP%MK}$I!xHIT7;};)?B2fMjaWppniU$ks1dV}J{`Rml#dCWe)}sZnPNOO>Rsu2Bl# z9_n36k=UC+82PL{NjwXXG=WpiI7JNS&#^ChAOWAuPp(ZAPv`|`rK|yF4(F1@38}my zVLIVI|Er)cBNfqJPYt8QGTH@W3Wp*C*ev4xBCrwq*JrAcg1dt08)b6mi zETo8h0TEW|!blfJ2vWSwm11ea7vh-Td`L14Xn) zy*{)cIA#;XY$T3WL_5_RV;4Kint^CPJ5~n#BW;MLNXxPokTns_6tx7AoMk7-bS)IM z0<}agEXxO-AX+IRZ3@zWJ7w1IvKmq&Uk^v6WHJM_mydOh^V={g}@CoofIP-p18 za7@yW=_21as14mjcjVYb#q5EY%`ozuE(U6V7Bck&wZIN(6Z1D8JIQ;a&Rx~`^?|G# zYQv-17t{*G<g zgdw0FxNC8`p&;7n%|tu@dm<&%Fc9qv=hBCh76t0gxsc9IZ}bb(C`o-(OwxBEjRHeL1tQr-E`+d#(B~nrODXU z%tX5@Cn6=&ji7UolIbSUdC)Jy6E*(P{ypk%&hr-R+N1tvx($0aX~((~t<tRJ58LaXenqsc389QJ`nAd zXG(x*Z#~ofpi8k6oBQkm>{~6^KTZiGCBE zkNxLN^jqixu~3!p9DY|^i2af*TLank7<;C*pc}An*2LXJ;P=CIa=+zKax~XtXLk{H zuJP6JB4RGW_%dw--Hcp0mn3Kb;xcUl-H1Fn=4Q|h*xSkU5{PCA_XO>}pNAcwobFY~ zZpA!g+5(!3U7t*^fo?;uF})6oV?Hsx0lFRi%k(B_7UmbzTcA5I5=?J{uExw`dIxl; zxKh!(pqbcv%CfDX#TY-P_dwTR_bJo+pt~@dOdo(OakrumL3d+pS@scVHuioqeGFQH zv1Zx^x(zb!3DP&Y9l0=l3Vnz>P#zQMLeQ>QrZ2GX`cmvB=l)C~mwPdHnZ5!o#Xj~N z+#^i!wfF`*(C@)c`!OKevA<7r`D&XsZ_J@-`Q6D)c zXs7ri&=+DE>Eb*9y(><)3+a|4F4OOzhY*+P5708?!n7OoFs=}$J)lQX9@AdXgV0lA zDh54&=D;1_Hr zCukk6J0=&1t~w?+h;%EMJfIiFMnzemq}YVi@`7kJ;_=JF zS%+(}Q-EcD$ezJ2ZzkIR{1P-@n1UeEf#EiUK%@`D<%O}g{WZLIv#gGky{@P(h%|aw zRuA+B(lH$YNsWg`TLfTF5AtuX?g^aXUOnC=7PHUpQkC-eYE%&XEF_9kl2jW9T$AdnC z-V4i`OZpJ+6ZEeIc59Fx1L8NEK)EY!rITP(*APuOv%(E?s zu6dTxFZiE}FBG){(F(w__Mk6CN>K+8X=<>nBZyW2rcNNz+F|MpqV<5O3y5@ln7V?# z6FU`k1JUZhvhE<#0%7U_`T_bQOfe9x6-+%rq*ub!3q&gi6KSpf3jGr%(pmil>j+a{ z&@S=2qLV@lOx`CXoKWMKgR&)x8w4zu>JHqIoS0>sEhA$%&k)B+s z*rjMNh_u^ybtA32ZRlMl(%$=Bl&Ntitv%9#<5@6L8>N+teTqo$k@T@xHWu0k`^5o8 zw6_~;jG{BNGc{}x&^YFJtw5ul@Jwex7fI7}MWj1Mng}eLq@4r*$10b}&~QmXZ-Lu) zF4|yfU#S+I2YMd6?O8SzL_6>KDn1_?P_zr5Wfww5d&cRiatP9ta%-=uTrQUBJSyfi zP!>{hI?|VNL0^JtIw%JznJxu+pgqAv`Z%;w@wG|%I53c;WLH3j?;{k=1kp;x>8=F% zG{2&&Kz`_IuPi6or&!H-QqOfubT1X|l2GW>6#TepSLPpoUoeSVkI5jkRMn9P@>Lq~CO` zcAS!tUfXe6BSo|)zKPaU<98?0P#_B?d`Gw&vg09RS|X{Lib)zb&9HZkWlJGzp&hS? z^l(~0#@A5-dOG7oOI6+jkhRoWD0&do9Q(Yu)(?U9h*pXo2IXseRr?+RwZcv~j=2of zMr*5RIp{>_*s|l1f=JJr=>cpDmw1GPaKzc-Tp;$UrvDxGxShC*AK>+%6~-iOGHXc%@uR#UcctziU&V*hQ%XWa| zx-3WKThQ59vsv~Xh*oJXfwVwqm1ZI>5?ZC1eu5qd>9;YFM#xm?rZSP%2jt35YjP~gQlUcnf8H(paiDCob2$_7oq$TQ`D#$hCwazT?YN0_{zF&G!7 zJkVs!CMF+f6h?{34>}j~j)`=TM_|mDf}p9Gp-dsrFpMBm7<2*VGE)RJ6ywQ68ZQ@N z)-%-w4aVp))dO9O>x1bCP(Nr*G93w;uAQaUL9$Lnnyx%2>g%wl0ZmsE?|)8lj2_kL zF3Yk8utqWiTCq%Imt+*Ql{wF2k;@fW>6yqXL{sQ7Gm%A-ncDHHyr!T6aix+q1Ch2f z$2=ZH`t3~3LDy(!sB|qrmy5HMjBKIwfz~a@JOMNdwh$W2xMWktf?g-fT0=G)TDVMY zKy#p%&D0h|I@(Mpg61L@UWwX)Wjc?+=>9U1g`URH z`Q~(8KnroNWFpHs3nAlNy1^pM_0SmRbUh%u0h-}VWGQAI?&@@Hx}rn!YiVHS8 z`slZaMJguQO1V+HRrS(IpcAywiu!>_!`#F#3)rQu_t!}eo$onh{eU!;xx9ghNq2Q7 zvWjp!^wpULgYMAoR786Aw}JTkNV17=r?yzhhCxPmd`>qUbhoxd(Fo8z&|u_rBcZ)| zFNkA~ma?Ua#(tLaSWwStJt%Jz|ZO~p+6bHQsI|D2uE!mA)QW5FTCbdn9NY`_dwpr0! z&}LX8;B=&cNKX+=^FXBA&NLrH&lF4xK(E494!2<;=y|ly#4i~hsYkW~I`ABG5oB9n zAx+V#;w>e+6SB9p z^VIdX7<3gZcJMqS?MBkn=TRZ;#;ZWw2GV(a3o)6Ng5H5m1`Xe*X9?0s-3onve&?_q1uMyaz$=!%hdw9s+#`TOC{;>FIwAivZk)WsqGfwklc<+KT5XPWLEi zJFE~eJqDuZBBsYdpCV7DCqVR+#Cbjm`V7xnOizJ6hfNBO`84PY*eqaL0iq`;rj;Pl zZ)JK0^c9}9m{!S{|50yztD!^rInr@|J_jw;uc3|1<*h-?ZP1WqS_|3%jajA_K;J;O zmT4X6X*{Vjtp`1!J*8*^h%|6n_9BR$!?-RRLEpn>2g{P6MbOh_+61C!G>*9$MA~R9 zdr8W^N3Drph7Rpc#AG5Z=I8J<$LU@}%vV7?Vz29O=(j-Mmvea&vR`3Ggy}6%5uW>) z-Uj^wTOv&FfNp~JFz5L$Xcz7QOr&$R3o^bVya(G1zvFq4(|rKhZ+Kp0`VjO6-cp!8 z0_}!f38s%hq(95F4YU{9$V}Touj9#*=@SrX*)n}9X)k6n?HeJTNz%S$+2@dzLOYM? z3s9L>uINh;>7ueM1=^?WSM(K#tQ4{AYY?6~6@3H3b_1PdJ3#O&`WB?Ysu9b+0~xSy z#IzISfW0H8??F!8q38#Y3-$jf$LWf-yCO0S#)^wOi zr_2xgI!sw0va`eUI@`!G0(uZ7kd$~Ktv66BZ4?y5^D)aBfaqD7sUc{BXrQPOsDVCFrE3hDBpNE&v7mx6}1E%2P>Ui&l5mR zVX>2`6^N{PGUbDg*PAP94Qc`VgDh(UIsuj(nMjMNIqWzxkrop@e>1fMwboBi)E<ye3c_8(>PN%P-j@lWaTUEf$hIXDX%ouv0uG#t8cWUY^7BcT;XPwGshS4cL= zm`IC`p4*vDgC^d9$~KT5-9Xr$Pp^2qMT7~S4abg6NfaU3kO@KsEUXmj(H7eEUYCVw7DS6?EWy3RSkOgU?OW8Q}y!|k^PPH@fOCiJ7N7~7_{@5?lSH+$XWr@65}4@ zLRbo7y4P50Tm%a@O!vVe0lkSZ-ETZ#Ow*?-BHKXc!A1zn$ezQ8+9j%AmZ4uR(cf3I zXF2F2ZMu>@3Yv~*PVT|SK$pU50R1|UEgmlEa#@LV z+c6`#bh4>Q?=w7;SHlV<*^FU&4i+GXOZw=CsB^jo*pjoit!}J2kf~6Uzb)X@z z?!(u^dQcpeewa3ZX2V7e$9xe)_G(zR5p*rCDyAfetf(+;0$ryMRp~Z^u7Zr~Np^RJ z>Q^Xw1r~Q^qCA$7J)SwRgTqAjk2Z>VDo?V?GY?jJxdgHyGhbh)ertUj^om%ZWbc3$ z=nECS3tFgeRx!6q*?iTX?-}nK^AMAJ_XAj3+KXSr_!|4j_}KUz?^E3NZAf>${;Rs@ zkX67B#SKdK3Frp>VI;9CjwAV702fxJkwQ8nT=8ma4pOKrLW1iPP->73n7^*|#9F>ch_(-@!K1t+2Jk zF~5iG7T8f?`T;at+@kvIN11Mf>a(9fWO;>S{tUVU_G*}Z0g>$*4SU02TNJcdzg5Y8 z1Kp*cs_L=}G*aB9WWR%kin|s40lHfsrecz9ol~)IjmKdRY>JY-7ak+BJ4)}4TzVQY z@70$oDh0KKZBmw%fiBk1QR&KI2XP5v^2{PF_uFAzhhtVC<~?|iWg^{fdaG@LZ=3vr z9z^d&c@caQ#Lq=W&U4zmj=C_v6ij zV`hQ=&>m2-Y|sPvW{PDwpeStrG3A0D#5)m_7j(1skdozr9?~1D@_ZnAus5Lpjo z3V@cuk|0wMv>bNrm_i`3WXBW+kySgU2#74)G1UQ)wL7M|AhLYNR1fqtY*jHG0a~Fy ztmsJ4!}=@g9q%Z!zWIp$GTz7N-_hnV<}&>yMNzYXxm@3@sG-@&d{p10sIhsh`Iw$m zbe!45d|cnCsHxe^d_sRw(eY+;^GSV!q84UL(0WBDn61o}`qOGoe)XzNGBx_)t zuD^MTc@*qdam@yxF3-b`71Kb_T3EDV8U)&aw{NDwAhK-5Gz9dT{<@-}pf_M$jAf^S zHo_7X(=gB`SgK?i4tg2&WEuh5j5aWh1g%HgnMQ$LK)*1J2E77nI80+eZ=pp@V?l4j zLJZS5(3`Lx!*m*mEXnZG)9L0JCRvqXI@26)ZiS6ZrULUUliv23&Ne5QWR;O=qB+U@ z02XMN&M_yOAA-1qDYAr*6rBtD7*;n~b{=ROtobla1%0G%S9CszY#*`g0?;S0^}}?b zlzob|f&N`&7Mf%~iRof&omeGE$k*ST?b0SvJ%rg&`wxX zVww+n9kzv-7J$Bor6s0?pdVq6iRpUK53oVR&kQ$!eukYQrbVD%V4a9#-U#{*7L1r~ z0{sL_R!l{pU-4}e)6Jltk*A4Yi(%c(yw&^xc{1H*-fog5D84rDFz+rhPhnD?5y@of;7uoNYbB_*c&Kzm_ViYWmy@x2Gr{UEZp#Pk4&z6D`= z5LAlqOPC%4rSY8z)58=~D_8UgXrI1EmA(vA4!cwwb2*5oar&L6g_XQG0R{Pk#kv#Ts-);hUo>63%M|@18K;GX+6koWGmVLqVH!|_9BSB zpJCbv^1@mWQxfFUU5Yk=vJAf}VKXQXR)n~oFPSf!KEto*74ub-zR6+P7V|YT0Q)*j zubXd}LD<@1deeN%Bx^fNZ=3I!^t}$#yXICi0$W5(@0stL^eqq9>;sfu*QlrHLlAxE z!?KS+N5F0o)5jqC28d}Jh%B@)Z3oqdwHBsNKt~%#D*9B$tYeU#kyrf3{LDN8>G%%x zx%q{e1Dh_K?n}fx2H#pSr9gG`sFHmJio%`_%f1FRFv2S4H=vN-P|0?H$YK!3{1(*M zXrSmjP$T15MLR*q8pkR69(0`1M9~i*vO>hU{0M3a8$?V$fttYvkst47u$=)q9#)H3 z_6w*1EEIA3el>qHo54m6(=PLOvpMY5F#TcfHd`PUrak6f^EfdESGbNHaK&bcX^568 z&ouIE2}?L!LMiA3j3uv2WuRk3E7XPlm4jNrh7QNv2g*0F;Z4f+%XF;_-Vt)ZtT2zk z{!%94&>UoChu0U~VK~U*4wLC{ILP7-lhfgHoCu3NOm2tAaRMweF=aWj9b~nMDaVoP zXbOkPKxqnqAA)y(IpsOW$vY_6Ffv{dh?WC0M_gko6`)XC_gVunEN^v+5a29X^o zju`=UflVl;I-ssbdzG#(=v%FulGOus!&@`QJOXsN-d)L#1a&udsMYN#8MB8Gf@Vst zsE<=kd%z+S(=j;VGzPmvObu|_=~?odj1Y9n8aWz+daAKK)^VJJzBS{KZh{k0dl~k3 z9?ft%>Ue#UdLnC%lTru5z9^4oOO#GS*HVsOl{7$u?!T4x;CW@Y;eV?qGxZgZ!au3i;dA~c(oAD?xS3;L z-Lp7rZt#z&`RXLw%yLP#?=WI(kXFHAU z+R|vP<=WEPYo+qQe5QYPT-&WFwac?zJJ#XrT)WinjoRnr;iY!1+8?&ge?@BNWVgh2 zYfo!SYp=7NSHr{Bis!Q(*LLlkX)pMpqhL$_d0IOs+qKK*a&59*JJ#WA#qG7z*zVs+ zYsa&E9t+}qF60+qwkphBj{>rfnPKZojFxf2!&0yYxj2x z5*~8x+fsJz70`BVY4osZYnR${AY50h~L-9yjIfGf+Z&=TksWH!6)S^Oeyi5{fJGF-N;Iva}NbNMXdv2{#b^mQ$`xx1Mb$ICoB7wZ^a%|U5`_H6Q z>8c$24sBD7FCby1)Q)Al)BdDZwWY19vw+1IMQv@@&iRtVmOEWa?dKZXwbMrbLRven z?a~utuYn`m)?V)6rFM&^)mrZ1rS|=oTV&V9c59c?oUDGQt-V}3kJ?*g*Xn}9*7@+# zNpg>oU5@PzA31a=-pkw6ex=yup8J2;dk^?3s;zx^?LDE`V+9p;Y=}J+HTIE?B1TY& z{V1Rj6=Fv$YzvA#Dk?TO_MoD%V;}XZ*kh0FdMs$v>ouC>^ppIbwdQOwaWZn{-uu4q z_c{6PtY=o+YuDLR&J6Af{JvjV>11*vq{rgDW?kD(AumEY6;DQWZ5uu#*{G@`W1bor z^OVS#kBy9Za%9ZMP%NTERgrBJ%sIAvo#(pn8OgSD$M)@P8$J_S+m17EXWNc5u(h$Y zsVad9^Kh?Mx?Ek26y~A z+nyJ>>N_h^%J0AHa%LDfV;Q8;o};6RULpVIq|r6GY*KFE&Mn9H2)H+#C$0alNsB#p zV7P6xG&m2TLMdMy@%JNmEQg*+NfiB?U_gC**lmwx|$h+dBa9wX-ChN zYw5B`ZLI{gVfQSxIYighZJ~8#eT3WEBTl%jEm62M+SW>=TQFQ2Z5v&p-%3Z?qvY?_ z{Nc4>>-mn*nzT^`Qd>8chTGcnF)O`m89d(^Y8&m@<{zGKwA8My!}IMZwRgd7G?v~F z8FRR2>+AYZTaor3H0Z{^q^N*}{7<@f!$qtxzMYWr36nMgde zU)lcrXQZ}YhuapT>mPl+Zds*O_Pp$OPfCP)wsm!HXl?u}F%KR!f^T#TupTWP66)DX zj|i2rBYq}uX{24{dvvJh=zNRi9dNX~o5Jc^xUO4AM%o6y zl<#a~_pgYwy)-i4%OY(rjQ~_< zvats>*_CZjlUBDg4O*}(+n@zI+t~e}=X7OzS!gR*+n~pGWgGNZtJ|3dBc&_bV5D@m zvHMF#XxJEBGD5?~Z!j}-m2WUJ*nB$EU`AqF_H3!u3T7m`*O`XTgto^+%Yo+1yq?Lw`6e|s% zC#^Jmgj#9%JZYujGsDtJqdiAQ67_721N{q}ZfkQ2m)e+vv2XLSw4>B|vQkUKJzHtGXZFQ!Y&#{ijh0Az;}=)Oy#e-E zYCQ*cJUer(^z@*8i}_fORvP3RZEJNcwa?ZDo-NnXKah^^&&vjUNt`!X8UKb_ACp9C z_d3(SwlkO82n&m%=g!h%xg&mg%Imy!BwyC$z0N+?jf^U=?QCOxh1=REoWsle$0b@4 zb65FBM-?p%k2$(TR=R#@U0LaRk0ULq?E^0hXWT4{L9RvI01c)m7= z|C}`Z$ZqrPT8bH|f8WqHvgh4(p;GqDw#WYo>C$-)qUwD9Xn_?#ed2yd7=r zo~3rJ5*#J%o~2eR{P=67;YZkFO%5CuRg+yvxhC-oZVI>kV<|s16r8i$7%jDJ6i97N zT57ezSBzHLwP%hw+}6e%F17tR{P??c(jHybGtaTh?%5t;Ew!}~c(yTGYNgRpl}5(A zYNT|vNa^a4(w>phGwzF+VskO1RV}I^!+fiz5EbZ9aJKJ`YS{q9{j)l&)9i`UB z(vBmgvu#JIwXwA0IO=TMQEF{0?KsLh+jf*%8%tN}Fa~XJ3zu51r7L%^wOs4tKP|QS zbS`grzBW1uxy!fP1yZZqnd;E;+9T}JNbTG7EVVh5gnG789s2uy>x1O3mesX%iIiRQ z-ndaC##m~#B->wS5zDnyk-H4G?AzvNsrAgVC9{|1TDt7{T2GeR_1&Mje#QNa&-c5y zuTgws%%76}>Y3Z$#%ifOE1wYg=9USeHCc?g|Afdls6^XNkF@v@|LMKiamClE?Ob@9nybYT8wJ5$f*9)Qd_U~DwiFL+lEGEr9q#xHkMjxc+6HB zc(yi{TIpZ5T=BLx{&RH|-rJWh-@j~^zKxcyuIwHBj=zYEwjCfNl*cch{dXQm(c?GT zHhK&Owzj8OYU5a2qOx2|mrfd7>0L4-1=s1UkNZPCTWMEE$;i1q`na%6^K%e;5S6UO ze*dkR(R+lJsQ9g!vBCPP3)`_nqijcq+uFJsEVlMt)s|XmU~9SjEX2?e!}?okc)nKJ z(Q{|p@bY%FwR@J@@`va9TdDi&thvN?OvOH<#tq;Sg-Mrud*xr3F7do%wqBBN;5od! zHs(NT$E~H-NA%2JCM{@fEd9%tuO@e{4O>^ih_thdt*fP(RjiGrf7x>Pv$bHUT@(IQ z&s;nIoBNe*F-z@vcl4dsE~Ley*aCO>m`uvw|%YN6( zc@E(9RuGllv$0wlz6!F^CF`89m0NEquhs2L1J5?!&U0O~ZTQN~zRjR_=vB2PQXg@3 zj%JCJgZ|f~whZBQwRF<(@><*Q^8P!dLB7`0pJ|0ZXS*z|zbv-lHECP_JZ}8owLU)? zf`LM}hDxJtqoqsh*+O9S;|-c z`7Vj2R%=TZ{?67)w+@|wt&c4u?}>yj;pMf`@Ya`p4X>MbQQqJRMpx3`UT5Hv z@RLoJ+I*L8EgIxwqp`Np*Mho=D)7}WvP6N@<|j3ZMWM|%s7WieTuVFJcGe2d*V=~1 zTpYjKxuG%td!$h_aP(6{e{0tmn@8E{in0jcmT* ztzf0$^}KY_XwT8L5mA$9vxqkOw@9UY_AZ{#F?gtabTQv>=~y~cdQP}>NTltMNZYZI zwxc6$|98i1d%2~y?t+@MTuYZ(ifc57bv?S#&Jp=W+x|}4d9M3S-}ud2zir7nM)f~s zYon2RMwACfo)P?!lq=eLv~=k_haW?&?H@^_&T*n`M@E+SkEBuMjkfK0bnaYNeKaN9qY@~?yr2p!$_+E>?7&Nuof87{R^g-dOZ4Wz|iCH?Ly zak#DR1wqVR*@o9uM_c=JvZYoUef??+JVnv<6V88R%gtc(v-H1}ug%9&x#owP6FoSn z-_1yWNq<`_|NpKHTY5`v4+`%&R=TG2D{Et^l}6k4inJBs?|Q8Dyezgs%+`~oJe%SA zYQ?fhgQ%=WOReW{sjai{^8W9T+9)iwC0j#+ws(Xq*V3T%t&OEt`hU@Otz{_h|7Kg; zCYIW}0O8~J-yvN^YSQLs>C$;#7TcgiHXloE{^8}d(jZ@JW2u!cjjh$S)IN_CKK6?_ z4Ei(DC7$_Og3ZrTUX}2yR1$d~meF!_sH{buf13QXQj*PIs7*@Hs-FS{A798QjV%CY4E&g_%p6N%J>=3WtZ|hJ9a>fmfF4% z?zyAX+F06AYWF(Rz_Ycn)M_nFzP2xPe(y9M1HtyIl;7fued~GKNU43=Km2KyXwUys zwo6kYTY5`v&lx~|*8jyrA|#VxTnCJl^IH6@*WzV3RkxI7ObbcEK4f0bw3H%IuA2F+ z*l#sizm;-6Fw>e=$XmTk4HEW|;G;E>scAOpc(b32H^;KT@b5$Br4!ARPk?Wdl=qTN znYz}BY+b7lYCuafCTWnsPl2DR%OsGzbXBG@?PUxSWgyQaGPRkSte39ICQ_6$>H2JC znsSu!vnCVE)@JIUUjtq(7xpgn>a%m8w+Ma~WvVlCGL7j{NKiW&FH2cZ z{tW-mQ8t!?EQ{Q-71%e~N=Yn3N+a%69LY_(nHc>0Nko~7Bb6eVbR}qI%B1R&Rg&Cf zJRO4^78zKkatwsoGQxeEC4Z|5@qA z)U0$>s<9P$r{if#8%eQrO*&TmqqGO)f$xI4put~5sxifS2D17zp>8SDfHWt)2>;7~ z%Ye%zHKbkayTBe=U=dO&e3cZQrAU>jIfxDVDas(fjF<92(Mytkic+vl zHl^y5vGmAf&-B9NwDhzj;z^E7_eN9=$=Xy|(oM&cHR(jMKHb!sNHw+Aq{{@CX6llZ znU-3F9#fz8TT9dFmXWE-mfCbvOKEyeOJkZ^O}Z{wpXr^f$|hRNvLlm=GBxOZO)V~Z zuAiCH+L&o*>6an&)>+L9(+$l%GvzH+8Nb=hxGg3#t)&6-@@%ZNCcCh;G21g)o*UU( zn~kHlQ)@g|+cGjYr=>F2)KZ5LQkg5menm@pF4p2Ar7@ZoX5E(hY&mc_Mo&NROI!No z<}{b(V$HE!d2?OPZSI}#*SsiS-Ru<_noXgqC0=Mk8reFnFsrq!P}^FUuWK#K_iRmL zg!RkETHX9eq?%UB$6K3n4U+uaoK`HTOzj}ptC?xPt7A!4b9Ua@0n_9#^`HqNS3yscegA|qK;Eu%ba9oi<>en zHOW~mr70h@4m91;J7rqyl8vp6Ny2}mWE`?MWHHcc$laFOQ(nDHlWAB+```%GD;PA=RJ;8?!aZ z`Ye1R#U=T`oa$3G zNz?8nd$yq-3SM$np)y%jn3jwc;z&MH0{cBvvkLuEb;!34wvD-Xx)H~OhCF3T3zV)x z!XM^Y^cKuwHAofd2GEAoqBgg!w#{qv+TAw4-5_~wSZcIUTMQ}Q7H^NYm91P^nTyJRg zF$2WY)i}mgr@T}X>bEJ49I`%+%E&o~5}{>{w6dQzc|?)-Gajg)hpd2-Ao+R9Ru zUocs>&CSKyynL)Jk$2lDTbp;Y(9b4vZZ4in>09;+OTY7c!ehILp1>#-`VcdAgM2Gj`kvxM3uw2Hwx$;bN0$2uvI zi{}!#rfghN9A#@rdssWv<(e>eG+_=g=+`Fcw)IOK+bCz+Dd)F)xdeGRS5a(#T9gyWqK?G0+&V^P3Y$v8-wK zIqCY0uj?|4B-LjU84ofK=M(XqL7(#^#o7$!1;V_5vgXT?X0HVtP1$TPbD=NPe!n~h~W(CJ7f zO?fXn4aX!Z7#u@PI+63yW!7*5g6l{MOB1=6beVQdrpBfSJJ0PD?JrtU!E} z$WRi;oKzK`V`PZyD4ocr<=9BsRrL^uys26d(b{?)O>`O((Q?l6;NL5k?N)MDc3!^c zA;Bv<%Q<8o7QDQ(swVGI!M(KWkpG%s*I5bpb-_cNQs}UMk9zC1HTkEC|5Dup{vQ#Y zb@aN>nI`-doeg07itsmZ)`I@4g4fl(HJQ^zXKlvbsS@)#?9-ekcwLU)pC-6B`=rwa zuclWAzgle9(yM`R@3$~{eG5B6}QGX5aP7wZ@Y->&wyoO#Aeohjdjhu}U|63B< zCeDVy^@2BcHg$%r{kGsOoK2i3j`~pWhR#ONX%M`XvjxidiQqLg^72j+{~J2+Z{868 z8XEfarr?d(zu(|+8})TIbDsR>UEy!$^aKAr!Tp@go#EHNFL-ljOXT&D;4Pi4&|V)4 z9^ecF{idjc7|aJnoz3CrBk{i#+tSB^w_scE6TzE0eZhZ6^anZpVcRIUzcT=~ivrE|L z`Z-8&51mJsnka2iP(7hPN%#fT2K{{nFQ>sb2N!MO$D1VjZE88_A0_-Y)eil!f|u9e zn?s7W@Z%jN`t53Y=pQY7XoHRuyn+Vb94dHu4T*QO=#yRn`c=Xo<_t$UZbb5FxRVBt zv8U2H3!R&#jHDI#`-%RFY-B|ep25&FjnUug}xzu=XaZw?o{BKz@<5q+&! zg8t;94)ndr!e5#B=2+oty$a}Yf=4(b(JoVgOKBBds#|*zSp+vBRHv3z&8k9 z+gS(w=Q+XaIqL(zD0m%bJ>W%xdpm1``b9o`n&$=gVIBIL;9i`s_p`NkyvW}QZVxK{WjI*GcvzNnJ{f3)a08v5n{!6mHk#iVXC%7LFFgr8Aa z=8??}h9pr z7oAl(25+J0bayZ=y!nEc=VOh3ui&i4@rV|P{&Eg%&3%Gbch&%XQt%qin$Ukr@S4tA z(0N+$TF&b5|4b1>hn^Ondpa4^&)wK}X-)RyJth2hP2k-o`s65w61NLh&Ytkk`b2B6 zPxGYcw`o|ow+erC&ewlN_&HtB%lC^5zo6UD4z~#I;q*ja_XzIktN{9e;1!$|otf`H zC^(~$uXnfj>FMBD>E9!`2ghvg7ahfZs7~H1vQ z{w#PeXEc1)0sAzab-XX7&y04^rvkp(N1p@zM$tcqZN2XVpUZjC&!Rs@?^X1}vvdRc z-UFi3pvLHK$u9(-t}%a`Ced$DA3?_z{zqzW#J-{6F|aK;^$XGYN-b98Z!7%8YFE^A ztCVq9XLr;|M)23_OZeGFbar#TR%Ft`_nh4jPfqZu8fzK<@1k>>2H&KLI%7byQlGmy z9(?8mPt&KMjGv4CuFf>XoD}`t9mL>gL}wq4L2O6TDH>}T^O@+6arPNAwLui%9G0_Ex__zU%SjPcC{f2I;BO)0| z^#s48-c=Oi^%+6`Jym`~ABksg=VQdPA^3(qhJQ+IBs%XYtdGn`f=|-#pe!E?eiwa= z%!7i5&`^4MT<}Y@vCiJ`ybsb2v^R~R#lHl{C#|~@mthj^N&IWk zF>Fes5nT`)(E-jtT6b&y)%*w=NP}q2(%>G|AjC%C@HP-yeHLsbc@2l2sTn2w5j5Tz za_^pk2SIDCnyp1=1Y(#`I!f?(X9Nx2YER&cz{O)f{(+*uBkGj=;GW$MREd64Df$OG z*P-3{SYqfpJqPW=#|ff2`fBul90RaDtPXC(e8T* zepxL-zrq>|+au~_v^!Qr*cPc*P_0<^U^~cp1bp^cMF%?%qhGJaqp;ldx~z=y17JW8sRI%DHKh2P3?#`Y5Z%{0cD zf3fh7(kGydePn*vUt`S07YcuCjWwE&bq2Pb^p2WhHwu4ey_23%eUso_^sf4xD{dC- z={-Pi6}-2`deDDV@P2w1U4Fx3f^XDwQMbIlA=*{%fcpH0;2j+JHa`lUtINUvr{HpD zN8q0X@969dohHH8=$mnD!nz9EP5N4${BQ%o*XnDa<4Rd>)*R!8!oQKRzqa6;IR+1F zDQt5!muWrGzX?9cY$$j(`|+?oz;?Bs4cuGsHTqCcSMX07$0h$N!Pn{oQUBb3hz@hE zg-_P0!cpcI*v=OIq0V8T%#YD8`X}UdjqsZ^AJeWbV(`7IB!-{azqwlQFRbIw7W@B~ zOEHIHy#(*ax+eJTz~Rn*7(1+A2JZFxpVN8mg5xILfV_BJLO^5br!3YG*kTUmE%7r1 zvjDKid9#1~3fzY;Y!%p}L@$YLQ+Fu;x1>+gp_Id|xnlPTRjno*UX1?GZ^f>*>;)ex~(^wb#j|kpQ z?*xB8i_e{$ok4#QytA_lXtUs5ob938B6yg_m@{{Z?Qo5Ah}d0%N9$qmxuD1graNWa z4bw-W&hHa`nI6D>L+}7SP=7EGeGc268uLf|9>II*GWfr@sL%7tz2awt9;w$ozE=37 z^qzY0Rd*Nh1jIF8boNAfzh3Qb!Fxf6+}q@L*>G^xLJb2J0c3 z+}p)=h#m@hhv1=lZ`9TOMGPHtN8rZNAHPlT1PxniFJkEUdBOd;Z+Mu?uk>ovbd z@EQ6{`1wk((Px4Gt>82D1)!MAu$`yRKny%*F+LwUKL|cwAI0;(;4}1jpub3L!}QUp zs|A9G@;LJD6TCO~8Sj3vCQ#Ir5? z@vt7kwkzxS<$||kTeG9+>;egn{(^VFSE={82{LTu%s0GNBRbY$ADnN6+MPU5PW*ol z_(a0C2jPiAGg$C$v^#`D1aHszdfSNq-MHRN@Z{lktRsp4gXa$sovYPstZm-sp+mFP zbqd!B1z)G;0Q34AYc_Q~D4%2C>X36a^i#k!(7y&4YkF+gsB58*H9fX#*$?5|58HL@ z-~UL~U2$~_biNe+E$UXa%KBdkzFox?#c+;??GAN2e10SNPIZSWo%^leyVafW^Ml~y zoqIt4fwVi_qwdD~@JHdt**39Q^16k6`d__>r`yls|OXiErRbrY^$vQt=Qh6ZbbZi9))$3 zx&fHauP_6sn}EL%d^^g8>#m}IqdE>_mg^J8de))Ognu*JdVIdee&(VqIA_B)SKSOh z3BgmGsVGYd`eoFlegc26W}Tl^6ZD4&{z)Nr591u$)oMynpG$PBeqcgB?DGl}ZR%|< zc&dZ=#b+(usBXb{?<@RU^v`Pe^_vNHi>D5vDU=iUQOP z@rWr9c%Dpkw2jjT_;V3#K=AJ;1aHg!%~#^54{d;;zZTq&`T}o?gzNTnpq}^m(~`k~ z`cTYKe-m7(4+MU)$nQ&YcYIpvurF2W9`AfA{!er^ga=pBhJ?A(=lKXLb2<_Ex?Fp7 zlEZTwKi^wHThjXa{WmdRV_RRt*2i%L+kv_g^hxnwsSie52L(QaWAI)O9hXjqPc8$_ zF|~_&cwG30>I0zvqToJsiqrS(^+e}XX9N29ob`dTX#POSF#dZzmn^GzJ>a+pk z=i?A^*RI~O{|v#dz72E>@!y?#Kp*Xjt(3aM|B8Zp5Mnb=i2ite5d1tNxCiT?^|@|O zb53=FGWyVlA9_N{wGyq2*p?SRE7NMgtBC$;v?lPX!e5`J6>V{)g-}oNjfB4m_lv~F zf;WYP{6hrat~UY2n8CI(t%8_W5dLbMmydmHy*MwaFPt?nHN4Mfy}jTQb&9P!t%U!a zaHrKdtr&xWN7QkAUEyEB1Ye~vzk0h!J^WK$i7~#b;2QN$$a#H3 z^drv+SXDBBh>dU4@Z)VM@n5NKN1xeB@MiL+JsuA@(&^3Uh~ZC(ZC~lLTxRaQ zmHNn+o+|dwzSMo}r!tN<<8fp*k-F_mRT#^>ejuzK(BEbK&{MsnFvoj4i_eGjgE*h% z>)kx_Kdc*j4j25eehBgrf?raPp}ajr|1tF_YOjrJ+OTVW#3uiS*RXY-I7@@ zB0aA9U@bRYbRLAy*73uFv9C|ZoG@1WKcv5a{4Bv==!LL5TX2b^u@1RY@N}mHW9=^B z1kG2q$m@IYf2X<^lX^Q}=`NJc~D7s|C>Kbt=wi)P0B_>rrgAtnYm< zZ84wAMQPE0jQtzjd%*T6m)-9v<$6uM3Vx~BzN#LAE!KReWTP{ zt-4F?Hvc=pFQT`S*IoQPr=ADaf@?L-t^NMRylV9`gwEO#cLo;y+^x?o*-iBC(a)+CF4YA<%ZbjD3Vf3ne5Uh+ zO5TU_7Fv}SXubx(YXYLD;D@}y;%7a5rW5F(uW}!wA;LeySr2u^{VGQH=>+uA&#)!9 zPkLtxepG(0>Q87M)V%S^a{95DqW6l%)V*Rz=ZT|U!pVdD2 zV+6mdaSSxL_KMBdILGp43jR^^x!|ROztKPHkG8l>@DG~Ly)GC0PmOC2{uP4%q4_+r zM(}rx{fmoy#Oz%n_y_iBY9zMrxr}tB;72sZqc=+MV;a{x{XIqhQT=!5oF@41ny*<- z6TDD=4nLS5v3<_t+DtFq$RtEdlP+t~9&(P_{h zp}bQ>=Oc}F6CFI+g81hTsurEUX>N0FJ8qZH5YH*1|Cz?x+&fjU&tr|oh|Y8RdE~o~ z@SoMs!9T89V|$**rgumYgHQX2{tN8KR0#h$jeg=EB=~Ra$HOrd+wz3}d@Yg29Vz73{cA^8G;d7H1ZGp3s;M|1hLg#cGb00yKuSL@puCKVfHX?X|zK3-) zwzc`ZhFrnxaGm&A*J3;0IRH9Rc69(e1%BXJ^@Gn*;^%a=8M5Sc4^clg9oGl2))5ST ze3asy&D7@5*;Dviux(;5!JDfs;Agbx97wp2=O4zVc<0*$WTjSVN zA+`syjyVS9C7MW+@PD%COyK*OomY`5csUgOn8a{6>(CK`4`o{qd1E__^YS@9Tys-fqHgyQ|68lA zfcF)=rNS{VK34D+T<7u8f;VSXVA5f$3^FQ_G9i6d@WrMpZ5vA*r`XE)<=Doq7_kR=2)?1C z=p4iC>mM)pDBSD9^M^$~usKfjr?I}z<>$L$r$gsr!DrFg;Lj9%Eu95=i{P_426Lz2 z>p4#EKJjxl>v%H-pGDU}eyixrVL#>$!Pn6o_`F~688jXE{34(G$ZdkBvyQo4@ErEz z-7h{*XMKaZ#&!nodEiR5;OW>S?|jjzS8tfFfIjXn7?^WcZ-b`;f zcX*5S{k4T(uijMTZ6NqeLc4jFi2sWS_2FMG_+mVNfVGX_3kZEDcB$YC32PY-?TT#{ zO~az^GQk()-ZpucOKexNAH)5Iz^%c5Zezacc_nd*Je|ZPY|ES5&EW!c>&w;>?d)W;K_vk8$&$`A2@!Z=ue@k&_7A|Q`t6g zs^H^j3iQ!;u}x(hKS}hf330h63;zVRO`IZl3Sk_?(4Vj!PVi^AKj9h|uWe)8*KsT$ zUaRu>;+}?n>Z9$k-N^mU+#`54&lUc?g3nNAVs3c?{fy{Lbr$gIVtbi$2F~jr2Y)Nf zlhBE;E`9F}g}QRr5PT-rPi)O%UBNc7mf%Yr#4hoiOD7Xz_b`^QokCo0o>K@2W7J1K z!#0!WE4oSW%}mWhf-iS&rp+F?5I%cDAAZaXsh?9=$Ez#q!>9j%;G1MFd`NU|<#Fjg zCj8s*&5%BC_=4}j`2PCD7X)A7pg!X#Lw{@3Eb1oqyzoyToCgS>zczxlNIWO}+jwq> zKUVZ#3;idAKcDkTJS(`CFsHf=f^R3xAMU~;A9F+ONx^rpPU0EC^9g?94dU}AoO67% z=lN2HcM$aB3x$6tVIFlKFZ#qB7JEwYUF<*cwBX?i=TiO@X~(Oa;h2HbC;V%iBT>&2kXJPw zN$Bssk$g{8r$PRp=$uBgvHoXUJ~Cc|cvzpG8a)|2Tn8aTC#xf1TPHfFscFa;*H*BN zP}e$v4$h3!DaiL>;h&;TMVt=^K9%|21B!P}W4?J%@HCFWe@O5t>=RGau+Dg%SG+^n zJx~l7Wx#fkvkm$)AAg5{dzlmTbG%VOjYo*@uqpVk^^cVLKN6+Exq#qGl%C8)RslDL z|C1QfLPGl_-V*#0UFVSdso-v^JI2UH;fM9%=>XW8H>rMfUGvZGmkCwIcMfwh%sa z5?hM?3ThPetA)QO>$oQf9;Nn#{>h?qs5(rYTY_~Gwvp;8C+JsL=ctit?#kx~e~yE3 z7Jm~OSJPvJ_+uLizm702-9>ClkJ22BDb~UDF1p^K*eik`A&le1>w+JrN1*?a;2Ru_ zn|M9&TJ$78pBsBy_%}HiL-AIOk#f3^767B}u-(hwxQo9m_-5xm_k!gld5eD4Z9Q&r;G z(OU%{2>jK;GeqZTRi$bNULgD``04ZG4T3Ax(Q4h}Zxeig8n0%Q;XDCb75MWXx<5Nvg!cn-!6DOu&J9aI>)HV>Z2_#6#iuR>GR_p!3U^gpnr$p{nY+y(3JYaq!dU$7==er;b&N zCfy}?tQx0=t<7@*?$v_7^W0ftI}Wy#xJLNLsa?cQwbUm^Sx)M)76 zSJdB2m27{K;Jv~Bs%sj(-s&%lxAJ7{X*e@EZbyni}^zo#GQrq4Tc%Bn4@;AUw+VWI#z*@pD;2HDt&hK5+&r!Dz){+H^-a+s>YF*6#I|^P` z^+CJuB)E@4?1`NP-|l=(yN)Wr`#}1d7E|Bd+BhqqZz#8UyWnr=TRMF$nO1@BaDsNk zlSR0J-Qz*jBepvnw6L^q8Cs%^g0`rpHfSZULrlCWRE>|A1ZtIk1u3V|O zU>&p(`){MxUTaHzl4_^!1J)6Ye<<&|g70(`#z-IF4QVyCI?CI>=<`k|;1fAYtIrQv zPxL>)-nz%HFL))jGIX~R{Y&)+XzO;V+m+QSirlS*U#eC`eQqmwRka%WOqt--75aid zK=2xBCDi9Y!5`3vXgl;9Y+ulqH#mAK%Jm$*zf~Q#K851Cm5*}Yp0wH z;B6K6wS$Gf1N-q05nQfNXR*U1h8-B2g9VqfzITY=0jzHhEn?K4e}LEyQWz^{yx{HB z_G(6TrQq!q>fSq0@IZyWZw?Y%uDBieIE}kxs+C&D?!2Yo8G8~p!B>nYTq>j{65 z;Vn}2KFG9^x{4-+y%Y-t;FqW{rLRg2o z3Bj*&-6p;e{2bS9{C&~)={4woDg4(6Yhm{*!LM_BCB7E?Cf9%bThV`m(6+Hg;n(B& z5_0)?$xoV~EfU`geuvQJ@gD@g%g2k@KLx)}Xotj4g5SfjgWM+Z`8NBEe<%1|)^UFj z{0{q1{6qBX*=OuW!5O9=EB4tf*+!r(Z_iG&sRI=;XnErwi;(+9h_ee#;<$kVji0*Z90!O!8PX#1aG1* zcYNMR9y)ArpyVKX{@I_jdLxOUR{pZ9Ko0C%W!<}CioI{5p3TQ zKNl(RJyq1fy3a2We3^zVb#qv07WDh>zew~iRT=1rpKEFvaz8yx^f~2K1j1JVRkF@t+mEheBN@sss;Fdw@WJi_UrKeDI$ae7>5gb~xw-!86qbuzgAJ1_bIU*ucrX> zy+)j;=&7K%zld$Bu7*DDUt&8-AC0*V_g1l0^KW(%xQ~eK1bq~A`ba%gv#s~O=FCoD z+t>$!k7gbBb-`8a$9qHYeal=G$3o{J@qe7&7k>EuDF4#@c=+M_ zqm04#9}@j7^|sKzQuy2I`-(ofT<{ZrM|7sJt^cmzzPcauv4+NWoIV!(dg1TOb&_~n z@Ui+t#Pgxx`<=d;T+HdX2G~z;j(D(!#7~MS65@gcw5@2QC*HU9VC7(Q{SOYw-fxGYJ|L8 z@YTqH{2Rsg66Y#Z-wnV$=_=e z^A6be=m&Mb6Vw~q!jIn|I^U}YaL&RyMBl3K(N}jYVwBMzDEK?(d)o_czgHby3fILktMj6)E)O?OUOmqgfyNREx}z_jc3>SIR%Bg5hbWOjpxNnaP6oB&#{*f z|IlJ6Wc;wuDB!)2_CXql{qaZ#Qa9Z5>qdNEa1!`Oflfw##{y45IuYqqr0L+FjWh$; zfbzYcnb6~VXBWZG#o%9xRD=E5*uMt&I?x-DZie1G?B9xXC-(0Ky%(tt{D+YqLwW-H zPa{1C`HP@0BfSRv7UnMD>)5rx?*;ifNPX0bI7*{lk+wk^0NM87?+Cq}vA+wF zhcp!Ykw|+Xje%@m@W!g;=>Y7#~ucf0C_r_xZT(5XXu5WI&~4|)u| zXMmpveG&8((ASabq5mG}N2;ehr@k1zzJcAhsylrL{1fC&khdb??FUpqB3(jwLjv_c zT0uK_n*{0(bS==eLDxfawZ_V%gf<1<9BC`vgSN%~_DDM+?FQap-IIoa?v3$KfwV7d z#)9sryW`y#4jqjB!$4z56JT=`(qzb{fPXT0ry`vW-kG2VcIN?~4?GL>66jokbS2W& z*uMtpdf=O(HxD?DbURWl(!EG^uzOf{qsNe*LR`;5_Z9G71AY_o50LN2pb6N24Z0Zn z-vR#w+@zPI7U&khBRrYW-N9JJLT44E)sWV7N~kwdA7Ix(y+FPxXkVm$;BNuC4R~cv zH|h_(J@m?vc7|*>q`^*i8V))dJbspC9O!=79}jvk=wV1lA{~V^8EFc1P6Ry(^3y=^ z6e^xgEy0sC7^Coi5%49zR{-y7e>2iN$Zo;@?MSsq_afCHJq$j-!{JHj zJcY#XK=8qT4(UbUSHOD}_;u*j1HX&(KK4IE;&;q^4w^vv8ghOo%n!i-Kx%?s3-*)1 zDbzs@luEi&Nl6JUkF+wP+z>h&W3jjy@D{*ZA(bHw zLMlhv1<6AiiZl{wG*Si9en^!_hakm}CL&cK9fwqn7*2-2>B!?u?4N~n4)Dy9Zgc_o zmmt5(uwR38CDK($S0l|vx(2q_Lgyynxk&Sn;z+lEe=F>3ffpd%hjc$u9nu3OJ?TN@ z@dWTQNYBDQFMwY_dI|flz~8H|e;xQ8;CI1)AGiVjJ_7zbcwb=uE2OVWR;0z){~4(n zvR0%ta1OM9Jg8d_NPW6#ac3_kevekQ<0_vpAFs& z&~ri01MdRhi=lf7(q-UX0p3;MT?>32csF4GCeS$2t>E9@Z6V&Pm~JPk&+z*dd9O~W zV@eFaYmsow^s@Zk#eR4@S|HPge>cwWU`({L4DUO`8{SyfPxBI*-_yv);yS#utPH$B z2kSGVae9-0o!_3w@Vgy(FOK&;R_Jb~yJ1b-e}vD#F3_pKT!CIDcIAl0<@daaT?N($ zJxou$H6n(0O>%xQyw{EQT%pUG6%4=2jmyBXFTyjdOnuOm%__#n9+x5D@m?TX$@C=F z# zmi5MbwIXKppk9KqSBR_vvTpdzf=f6k<02$wjg*C{i#%2}tC`quWFFQcEQ?{CvAS8q zc)yWxOf2&tUOW*Y4tt zfzScnz_^C^J%SKPnMH;=0A1g#LoQ_8UtGLR&u#Z$hkeM_GwZ^qfh>Xk>ET^|;EK#^ z?_>H%$!z(&_F_5Pa*Q%U!OKMiQmZlcHT1?{HIOKrpEt`%!5A5 z@E=bsx)et&31H@Vpj;NF8&Y3mpvmPU#K$}rWoNn(ZDu?~y`&7h7wD`<8^gdzACU5) z9*gC~^M{+D#o}pVUzvE?Z|A*$_A{F!PB%kpiOj|LW1YUVh4Jw&NCWI)F7VoXydBcu z{g8g!mS!v1!6#bS`m{QmVSVl@53zXd%=2Z>q+Rr-t<5&*OD<$aWbi4zeZ;#t*7RPR zCw1gW8=(x6Z<*Q@zXId;%M$vtC-V!BO_Qd!GPN?Eb@6fWkjt0A+ZTPr8!OUnO&Rh_ zNc&k?0`F(!n6{z*CJoBKo|?vVJ%l9Eh@;0vfU1;Qg!A z#(Rd}+1j>)DL0^bM1Y?fu*_i36}lbmXs}=Kxb^YYSeC`u59s!^6J*#!pN|FacI7u# zwy|sn+8O2Z#V6i2ocGY@eZ2dYsb}_p%;XU#-b8Hjrk&rA8OV0W?|?mM@-cvUI$uG-^vQ=re3 zb#_O&{C0zxr;-1+p*-y#DA(@@Gtw+-bK4T_F2z9&xE|`v;H}Q1%$_{{P@gf}u46m& z#-a|cD4-0~#$^cdV;RAYXb&1H^-=**P-d0^LAEOmgD(##QGl;JTg1`2EGwtsh||lV zmq1GcnxQT!go!#@Yxw&KP3>Q{&yn|_R^y8b{65q~WxAG1ri1}n!n@Wu3+DsMAk+qb89hbpiR3Au(8V@(5T`CnBm%&5(!@g}lJmYOLkfLq9 zyq}Gs{=B@GGZ{Z~m^s|U@xEp5FHPtN(9iRJ9B*Pi!W?N5csH)kv4HF1EwtDZotQZk zuL|>cE-3osJ)e(Ag+uVvbOP_L<+Wl3-tC;oHR4Ug0X@nbZFrB@V1Bl`gKQF3J^Zd> zZX+LaaU){kcSE!NL~{guRzsF(XPH5KOcT(VV2&h{Gmv5Yij49Gv?^zE6Q~OPx5*=$m;j@Bjm?HVvxYXTo=6K`5m*4Ic zWt9?3EaPSQS@uea#g{l^8Q$~YxhhvhQ%n_F#l~4B<@4aPDmRgze@1DI)U^+uSMXsM z%TWGsTz~T6o7)H_=YHAdwmKZB8%-?O}>CLJ3$( zDC3FdB;)2|h2D_G3b8_Yj`v`Pcb-o(ryGNJjK@(vAH1jV{$ndU%}k~8T&z%wxshci z%WoxSyF~s}Q;qq^M}90b9KXm6WT%)DD4sWvu}^~|Qam5nC-Nto6VYza7dsE}`B^KQ zf~R2WSD0!}ft{a^q0W4Hf4c`OKhM6Vn={bv z@q7ZZIO6b7_5^4GWjE#=lYs9SW?1OvO|}N54`egUG~^eD%;T8yED3Z>{%mtPWYCAq zfU;g7OXSZo)46<*`Ry$8Q7=|@CVrP-pvis0MXNyzHIMzA$)9V^lUS@Qf%%$ch%bA- znP~`Ktc>*o8RhtydFbR_l+Wf9$V~oBT(68H4^Q&*5T%ED@lei0{xn{da}H9UF6!9I zyuzt;4%VGM@-ygfpy)$PV;Ra`U@kN!!#;f}pTWH1b4f7ITx2fBII4wRZ)pekfEN!k zKQqgmFFpdpml}gT z6kQoE7t26B{GUaav8>=h81Vc+ivJhUg z&$~C_z4eWeXl^n!IRl@)f0fO_SCH@xk=z`*8OPM}bSc&`CS9J!2t=*U!S_Qd z@^j5R*v(1R;XL41pCYTtU(dgFDfp?{_Bx!W;9C;N&qsdfm4zEAZuom5={ByjK!&f2 zh|W!Pi{YBUECD;bR~@l4W&7*+*>rqcgK*AGDbUGQK_J2uWYy~nuTWjvXqZ0;pe!GFpU=7BUb?(CNZhZb87{?+q-orP+aJ;&U z?%}zhIR>Amxej(df5l7ktEGDl`gLo4dwpA7tHF0Jc+c?nFR}~FeI~~5sE3{3T8DSl zgPX)Y=>4Y7_|PnaEU+_p-+Q2QH=gtN@lJawUyCQc3}`G9&pcorL@ZuQg5wmP!521a z@GktHvJ2=T92>!9S<*nC_X63ycoI3m-yuVOHN`UE%M)TZA5S0~d<}|a_}^mC-W(^> zhs`6HlMzEPzc`PTmg}0CK58B_apWMeAV0Ay${xV;3?9CT#&-DM3M+iO$$*yTo-j|E z(wvd98{}6C8FCYy#|@reKn@;a!FPo4K7S8iT*LR)VE2@H8pk-(QZGIYc)S3cYsG#eC^M@cUv}PH;RG{7Ho*9p(!fD(u1@}(b!;7 zR8)}IQ4#J%1?;iMzIN;ZET|}p6?^QluN`|dZBzIEo;foqu)DVJSHA!Ag@>Ja=S(?s zX71cF=gdK!s6$jF?Yir#C7*Rf6V0ok6_4w%t{8P}8R3E0Xx4h&~kI-a%m%WFE8E%Q+E2Ih}^psg~Bfwc=TfQ8^S*f@n|jLUqb= zPhoG2W>2Z8XvJLkoyL^%R5gg^a_C5r-yyoj=sJirh!)g|JfitdXdRVfwV}Sp$-5e! zNMZ=fTFP6Vv!BN|op^m1?}kJR%ktp_)$@Y=BHr!bS3gUVGC3^$zIWe>sljVp;dF+<5mgmLGcCba@x-Fq=8vcpqv|tTNh?Zc>EB34Q z9MD!s9*_q#fi;=(yeM8nxp;js+9O^B>aszjJTG9M5J>iq_$#Bk7DCGN9Q2jIHPP@J zgKrc`Z)(Q>L2=! zkn+5OJ<|mI!;~Z|ljU^_ke?9wcoMCZ_J`<0IcQbz6cd$om4ilneqg^N$e+xbx@S=s!gckP{k1I-+GAQ6&lO?J^DuU)zrkBxd$};4 zIVevA&z0ZW-`T*ZL&&r+J!_&Igs#@Y z9fH4}FurlcYa-Pl(H|&Y9f5CkfOus&!SD995xH;P~FxPdxkd&El=o>jQ~ zchHfKS`qR=)*7j!G(xfJxEZy65LI?mh`I>++)g8Y3ydGdZ|H+9`w+!?OMS5GA~O8l zu7+X)dL~3$xu~N31pR=p5tZd^$PE1i;=7CK5m#<(`&7f#STOGNN25VbynP64hb zjAaBgxu#<60j(u!#Y7eE9YDD5qOAxUx>=kjYF#dVgVL;x`-(7Zto;I>A}I_fL_-ZC z5p|y~!F@W6FEHVnYpW@QBTSpi#gcXn?p4Sy?{y8~2D)X3fv`6qN>qNj$AuH&2GUs$ zHlJmv?`Jd-YKY=qKp~E+ zaH8^hrBRH*e;Uy^kKrVtT1(H7xPGvv1`|<2@c9=?xE!~G_XgYpFn;h98ibe6VywwQ ze4Fw(UeLnw+6>G5(L_|zN)rb3?W3U48W3%3kLpC-(Dh%FSb((-t6d%W2@(wp;L$Lg zSd;KMSx%@SRu`A;#fS$W&f_xNMkFDywidVbJz7t+P(v$pRze9-aWBR%{Dw+|--3kS z$%f3@X$4q6C{Gw(Msu88r=SBZC_Rx1{1zpAu+1w%zACylWt~OvXjF;57bW~g9^@I5 zvW~&aD#=dZ=FvhkL?G<4hHi8!lw{o@yF9P2jna?8R->C8gj3CA#D#sy$kolzY(L@gH8i+TR z8TX6w6rm58?6r+W1*qc~^I=i7{1Xm~J2^qZ%^0~E@XiDCV=a>8O>?z>KGX`33XEz5k z75?Ocq6#!h6TtT)+|}8Mc)@dBEQ$GyI@@VGLeH0c1QVaj6OVu!^78-bQ1+*se&*~2MDxl;6j%LU;TjA)JZbbd)?-HQ4($!?+m5-CNCE8vl| zvTktwp3Yv5s4qx#!yZuqJQJ594edi_#r1uR0*Czkmf$(L5Z4{n5Aaf1AAwKQeolX< z0v=#VE_6*sKqH>UqFi5NfD?hgU@BKBX~p#m5>@qubrp4c7z3SBNP}qHUNOqWKr61_ z-PjYdh79q%Tq*lbeV8L@yTP`Fd@9R1f%_)OjA_BdF1Q~H^3{ra+i2VC%TgakxiDx5rFYk`%(JgE2z7?#y*~^N>^k!NO0+rkgPpzcjDT5*owq{p zK)h6_JOf~_W0UV(JW-Y7Imt%<%IiWXW!E3z40YyUUg3R3l_L~|Keu3FF!Y|KFJ_D_ zuAjO>tme2*Pq#8yKs#uoFJ`2oBZE!TSn);?@jzMmPmEam?#(B7rsvYF5

mHH+%1s#$?NE0BluxC`JbI)QhKO59_6*AWWB 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�FJg6(5uelm#YI;3> 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

<~!H=_=k(Ja-f)!yY)xYW-La6 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


{bggA zOE&z4oF-tCiUq+{R!mIzc9tz-GGz|ySq^AYDi>k{lu)O<$)b9sJJyLOk#2f@~ z%zDdTa4GDL%1WMbsqB?(9+aD;ub9fxDz;iiNHL!XTMMOP0kDf@ytZT|5~8?d1aakz z#@O;o$d5QjA@7Uky5K1L)bx=S!+dZcUln4 zCMww!%vy>`mg`A6MuVR%Wh3HpE5I-aX;?$-%LbpM^?I!>)5_6dk+y{FtcHZa z5WFm`BMD_X&siv=f4KyQH^99}8XPm3%wkDo<8Jq0puHk^Ed)ZA^uZh&cf}}}?kZ(R ztSXr8F7|mu-1{HlL7Z8HK{0Y#()UN+ZIpWs71=;_{WEZ5&2QKZLXis|i@sP+61%^ZbH-@a^pF`|)@NqB%lLahQO zjMCu9R|Ownl@TUpG5d>cG0bSekg2vspVncu_*=Csyxn$NAeIbRVFmg6o;A5;+NhR~V*KUOgJ4W1mno(b|RzzGhW{57;>YT&kD|9x?xukZ2N;R_n zOpZ8Y?K(?{&6G1fBkbyqFrNgDAcDwX_Ebeog3D&3#I;7mq&C5c3aCE`K1yqKk#buS zK*n|h{h0KdU4<5iGIYRQsF%XD-V^}F-2@mlcmyG(##^q7F|)%Qk{X$Cz&N7jK+JZXjTh2AsFC1hkuLWEjN541^_j7y&CqDTI)2e65rUg^g+oP~n)=h-G-kgf_F@ zX~y7x^b18yv21%a<=jq*uLzVIAj0|BpB;%24Rs@cLcOm>)1$gH$ z&14EZI4an$2sqSB1N>-JI8X;ST!OAZzQDVU_G~4Uq6{{MYe``fd}Kgh0=JUeEcx7e zm6t0>^%P|@yMS3i`~{^YR0A2p8g^G&lG~vkk4wwT0;RUuIX>&Pg{-mmqTi&_I|3=G zgjs0^z{U;ILm-~zy>LQ`MKR*HCxvPu8G%b0pcZ?)QYvx|M1es+`2Zfl)qd254wX|;e5z;&9&CzF^g{47y|7AKu>^e0BH^YRUrC}7H^?Z0zx}%1%SuL zu^%&9hqV+WYp69a%VZL z=^Ld&nTF_R!al15U?POe^s`p3REqEx$|~g7;X-2~VPtbh-F(<3{h&i)(s*5Z69^r# zLIL;?mtn#ZudTL{9IMs3GK=L*D8P6fh=v>BU|mQ>!T@VW(D_Nb&4-Q2rnAxhOtTo! zkC<{R)f`8eZT`HJf~N-Up^X*?f-9E7N-fB;F)t1G7`}8E9msAgrg(VWP$Ie8{R8HCDG4Ie2F( z*`{DoxsvNE`H)Gc;VMmz(Q2&Npc`?+fSD^5g*f09$%tQL0OEwJg(;2J>I zU#P(9$Hb7j4AFkz^#}W;A;BMjK+bWgT>|Zs1ui_4v{CL%k~14wHx-Xp!#v;+G=Tyg>eX^BJS!@~uHYW}aCN|e;XWR-3K4G67 zh!QGU46|0o?I3JJ8XTq!z+xeI<1&(nT*1Ii0B7TmhKXms2ywrWMjFv>=fu@sO5 zQVQz~9GNT$e#?XO0IawG>@^@LH1K!?`tGaL^C56s5Ghkk+CZ&|^ePwS8;?P1%#UgH6W70al+b7tUm+f7>EGL zK*)&u#0cX9LN8aY0Bqq1*H+;vg2cnta8~&M+mi%@ZFbOc5zCd45nhNBZC8R-i1;=< zK#B0}i$IrwY)}UB7LY_Q0)~RA1b~&p7pr8Gt_ZLzJkVNT1o}C+djT=DfCfSV55|JX z5eVhLG4%VupaOag5vhT}L^CsDvXXNffkNZNMny;wAUOx8JfU4-iE$iIhgeWR0>&I{ zfHu%Hm=&B42qw@%i+ms^RuIjYjigdiGf!!ZA)sbBzk_Dt<%*l7Amap*F^2L3KLB*Q z&&xWj-c&Xe3wfPa-_W zAZinW*#cIGlRaLjhiM&1fn0s17^bz1J6x^-iv^+#z)W#i7Tlmz#E>xno_UO52B<|s z`T<*oL;B!ADh^;POKJ74Y()gU$%63J8SwECJD(TAkg0)v4Y~9TS1pKP%18kOP|O01 z=%d(ViFY9cErgH)QtLWc;2L>EeYUt$DFRldKw@+QZ;58P5S*OLF4w~ZRvZ^WoW;?e z$s*D=p%eD(te+fE_SeLvu){UqK`6M(n0HeVXii358ILZjojPR}56x1>o4|JOY zxGT&HkcPmEg(gq4SVlZBi-0Nvd07FL4($Zw3vgA&7%S%qJ%y&lYQ)S6B9BrXn4#Ge z7B5JytZc;PlWN^J?LTLBMEbt-oE0aQj*7dU|cWd~+AMG)(D8xXFA zR^AUfE@U`KiX$fh$>M=dbpg2#Xsjz7A?!9n3PK_TP`OT;T+A-4nph|nx%|QV=W;F6pz@)Y@-1f1}J7s+xG zLdSV^rr2Twl8yripgM?)err50xdG3mlT8T$8L%+J6qRa=p)lY&u1Y(f^jb~fSXls{ z-4rjw!0e4=@KGnouHl(ZhGMLJqyg>_Q%e zOcuF3TqZlv-sL*3H(2<5JqNwf;lP3=%u1k}5nTh6ZXTi#mm^6W9A1Qb5L^ml2Dmfe zM>W=L6QCg&$G{{@<`H&B5^$JdbHY-mk>VsLVCw`t%Flvcz#~C3dc?x`k!YKX18ENA zG@<8#@&qVV>jeH%DjkQz{(Y(_pUH$mD6pW;g3$um0z*t7kAkL-1kSfe4j_;1O~IcZ~Q9ad56dw#e}Sd4o0R zgOnP_7f=V0wjNP&Q9m!Dxj^*-@f(erORma9v(rMDzl3_MmydrQ-$S97YTKC=5X)i4EjC>@#4%F(l3l7~25h z<2>T<7|bi=8baeR8wkG(Bss6@H~0og?0I2qBT0-B(%6tpHsD*6 z%u9Gj4kW^^1Q8H*!LACb52QZASi-FUc9YN@_!RvzfDpPI=W6cd)4#_)) z=|nh%khvh}6Cxln2oQE6_95_kaI_(+1Q?2>FTm`=@|JnAGFuRgJkm9wHWM2XZoq(J z6cN@V0DcBx|Dss1k4f*~5RO41AQWDZ@<4XMszK5tJPbv{l8(Ef1A$LR_9h70c!8V3 zfXqNhi>N=o04a+Q;4rx{Mug-{NX8uGN^nI8;ev2hhKq@Y?R&jhI z4V65wgq%tC8Pe65Pk4hO$Zx{iB- zF(C;L4ELi1s4Ju#{2~hxyiP*4g!qS+z{-QCqAS4eCI8?OR0I8krr;Mk9rea{WL~3x z@H8@CxAH+m6|BDEn?2-N^K8?z5Rgl&`b4!*@yA)_fzT*3)OXOU!B^2Uu3 zB`rsVQ6KVX!c8VCRvxM2N~31zcX`~_uuSeEg`bNG|ZWd_{{=!QxPOhn3 zA|6cYhEL@(a4XgjO2Yl*E0j)pmfT35BNupFlgBL}ogjB3zLj6(X1wH!s z9qBpJmB;1D7azCi^S7jBcsfS$xOHd?`RKT2WU|Ojk%vSsK*KvoE z3y;6Yv&egL>91e-^Y{aDr(8YxYC@hw)DZaww3vJ+*BjM4{zES2_=%*4@wNOMQa+h3 zx^!@QWd?pu&fABeZOFoeA{q-+- zY)BU#7b{m*E}x9+aoL|YSH9`-N1wM%{uB3--=wbcwZD3pT!G_)Te|22@e_9y1_;KAI*8%k=pB>-!_}Axm$d}4@9A85||MkW4 zx1=ZJBIH};QvOL%cq`ZJ@lE)3Tr{dDzdQbi6#98QD_qR%fQDUqlswY-04wr8ef<~7OIrVnC!YAva-JUNi6w&%bX*yyp`k@y*3qHG8tkg@zh6d4K!@dW%E2x2(FSioNqF3KS< zIuQmUv0xClaa=S+3J>Cx!FhpW%;OIPQQ>G5!VXBhxFFyTA~*^{6$+t5Fbl5~9~VP8 zh&28n7!_)9o+*uZXT9Q97<6@m~V7eS!B!^;x$jyY9{sy~-fh9s`vl~DP=K}~BW}h~w z6v}IgvGMWANyaL~%k@fQb?uFvqc`rpwYj;`sLetL714AsrsIg(Hk*c$Yf@hP?#r*f z^5To%`u119@vWCGURCL5ECdkm3kirDf=-SJQoht!KX~|~_kZ%Ezy01{z4^iI&o&-C z{P@jB8wZQK9wzEQRKB^zwUou~bVp|!l?+em95Yk;YpU0;e)Fl9pFVk}fBfpm)oYWQ zX`@a*H8D0kGCZtQ8;vG2?F_`{ng?$`didtS+KsKlH}9-(tlhcMu9s#@^QCNp;}Z#3 ztL#>F-?OK_^WD?0ox9lE*E6m%O&UkWz~pdPT%Lf(39SLWj$|{9rTyCv|LU#X&Cc5T z&T4CCb!S})Y^>kj*v?m@X=i$Ed$FR^s-o%Yyy#@En%vPiv_Xb4s;(nmoKrtOqJfeV z3qsaTCq$v>cB>uwKnOg4IzoBELQD!LXuZ-nGh;HTuAF)C;uRw}v{7#~l`VBTyKk&6 zl`HK)voQ-wax|65R0;_MwTk;<^u+bvYv%_CFOOgAzueuUKys#N2J;MpVk{aUA@sy* zxt2|Xzp#1t?%nSnbe48*?eDdZK7OwgTYTf)quD_6V0+0sI_wKZFLx^yCPh#8#6a)R zz?g+nYNza0+r-ed>thpYB<^xKJYEm$N-flCg+imUwAxv0t=?Ebe6d+B5R7K?X$~vK z=bABT#;)~tUA#OnrW_v`>c(${%774}u|z7JKpez$TqxFSmD=)hdu3&1xxUy$zD3yZ zLQb1y+N9T-DVmx#O`8w~!yiq|=7d-{QSIE?SXtZKSXx+KT;0EWaO-eyNleZ1QKSf} zC)|ES)n&|+8okLfGHJ4CM+UDc`-iTLk6lx$rc6_MEs~v0TPP1QRAx%`m9=JT{>C1X zB{f^^dJRcYf?hl0^nrwm)$H;(9S+TP0NYjSN&KfoenEWe4n~vdWLgvpxty3Um$QY! ze6_K#+-|jRv>N5YTp^!A{zHiVw1;-mFwW}qDve@%d~~1>86K_<^bKAc9aSh46M6$> zg)u!8ipCNgqO(=!GYfO2_QL#Xv$?#y)Tq^K^HK^Fa^BBHp>@09opIP4Gt>-4!LZ@+ zI2i}+Asl}Yq!9$T0K=YCl;(29xw#U8>=gj8h$Wz=W>I01lPiV|4N)TCl1a?wv)N2q z2x6z?;t6>dOYwXZf5Uwj#Qx+#U=8@NwOSoKcQZ8Wak4X33fOC>n$53wBKsJ-gA;x1IS0lQE8`~xJat;siu(Z?TBfBjeBsQaA z$~0|r`Y~(#9uJH7Wt0=MB!-PNkw~C*(L_3f5U-gu31gDWWpjnnyi`CKzeF^^I_*$O zA%uEJ$U7G5Oq5F}d3?bjf)xwvfmmN&UToD1Fk>d5HNb6HN+Xby*X?nIcoG|963tMI%jv=xBWQvRTgVKY`sk1#QO3L&D7fF?3lV3bar=WrsftDtY3%hLw|!=M z%AnR5?K3vBMysAO0Ssa`Pur026Ydm-a?D_2LAXp78<_0XOfFrR%}SN^`=9*iuRnV4 zjs2BcI^toxxusi&+c#j}bC}H*+qBi4$nnm}{@2dD)-ygG<`YDR3n22KMy*hpoKdKN zdU!O6?$(hU#jH6Rs;(lrjN{ArCubl&=9AM&(7vxl7y=5^|(FqAp2ZSCjvMF zLuAlvr?A{$2@8ch4!Fao%ywrW%EN#V=MzFIoy(WzazYe$c%Y2&m}2Ehxm?72TWIEm zcr*}5NR1meZ|`rk>v_2AqBsKZ@OpVR;j&FlYIM3uy+Nl{UY{5r#ZnjG-5=|&Q(hJ6u9GNjY=_Tam+BRld{>3TD3|sHl|c+^wV|< zS*I!59ZislhRtm*pGynEYzb?pvCwX>v}%an=J7{`OeztMqTbOs1PHLQ=h7j!a|TA_ zOm4o_UT#%u$O-EYI1#S}%6Jq_hV{r{o3YvLv^8nvqHqhk{jitB14?SlD;%zUQ@ z5fd{xaW-Ep&Cg@e&Nn)1EA2K&7Ymgtz7N4>|1xFsGB3^;sx7U0V$9KAs5`4ATZ z(RgjP8N?T|SZ!8>1$NRHZQ9A$Ej9}sj3r<=g&hG)HV6|6_GLF@{-75l0f&!27>R<- zKR;hgM}1B>zOglVoQO4<2UoUIoP$3+mEusJM7~+A7f|~`ZJ|*q%_6jfpP4oxnu;fi zOL%MuPMcA$)@mlz8kO?;qz*wltxiuk8VYz|pT)rlsWg$sU=>Q`N`WLgAPq*sRL<+P zOrs-VFG{3SLXer#n-JO*5ftWYpytD2V5M0n0)9r)bJh8hl#T~Io?r}K<+-_H9;-5q zX_T8Sl*o)n7Fi2?K-ip|^o$)ZY-$Wbs#vD9TJ?3c&IsoOMPcS}$uvyQLPEeJVeUXc zqjXk8Z4es+Yg0n#r(h5pC?5%8+%i}i0zzw8G3VUa$Z@RNNMbR}9$%tZZq|xfIBqy> z`@V!Ux6oN%U8xq*$g;r9ARI77_CpfS2wOCEfElZ0YDzQKe{~R9YKV7`j|X9SL--z> z)iUG6S)D)t5Mm*Q^;pDU&mq1AEZ#7hmmABScCDO21Zo69agxX=$wb)aA#R-@JUl`s zhiw{xt`e|aqB%hLWJw&I2;^&=7XhCK`?Sq!H(5-!X$zv@n6+w!X37E+B~C>^f+RdF zUqEDz1SSj8gjN@q7K$PdVLA~DlBQGk8OmzGXeIKsS`(Q*c^)H~2>GL#QgeB+QO_eV z5UjZ{Yb8@@&;X2MJ(s($jVbkd9pbnewb;QF6W4Xq2qhDYXG@hvt2v*~mzTG8wl=nQ zb~cuakW=`=5?1ok!h98xc4AKB_|UZpwRUoHVsuP3X)sPrPK=Co@CuLs_=*>bg3t5yoBC^)Y+n|0bU%iv-2;x(jld_2@LW#hy=Oep24?8pK3;~#iI1i;#LCPSQ zb~ID0)En~)&6=1?#5~CE?SzFA9ssO9%rpqDiF6K*D?oEXUWh8tU18Yuz>x=;B8EAi zPQ&})qD=kH%>z$2Gt6Ie*nw^y@m?E2NHh=QBaR#06y^pBplArIVI-c$o(;K-80#W99INw9X(TP2lg(N`4F1KTPN~_W8 z^kytBi`k%3T~}Pct~S_wkz_gz!BDo5`XDy~={sM+aaXL&&sQo)T3F0-K^T$)!FWO{ z&d--2B?MeEM!i;NnXwxt6Zw*;x_dcX7Us$o+`^CCyfw zVEbabz{1DSI{kuJg1Zjh2LP84;A3Q5V}YXtGbe>@C7X^!NffwrDuuHwQ)yt#MhuQvH4D8yPN@70ANFy8UkLAM?QG49eO=Jm;iVl(~iSrVX(nM z0u?f1v4m|Xjcrgq;K^c6Vw(j1!WV(aj7^3M2gBr0!A6%!Bgk+N<_&}@#y&`-WQf9U zM9z0O>|~#V{EgV{h-(Fr1mlW~)Vz|c_A}a-FKk5NEAu++j zvjC~ti?WHEA4{AR4gUc|6B5#m{OyLI4-X8EBXl(>GKfpaz98Gl;Rk`~7-|57`!J4k z;_UGUVKRy0M8}hZush*@vb3<*L*hObJYcH9xA+L3%jQYg{D>6`f8b0e+f6(cB{n4D zd_YA|H~DX3SHg$KFJc`ccCQF|8ZjEm<&hHcA)br_1`h<%4NoVJhcyT<^7ZkR@}K0B zU%${*#2^Jv0xVSIQHUsqLnEC^CP?p)8_DC2s{kjGTs|>65&s|VA-CYVeZ0zoWo`&LVCf6vezWOEfgN-*S*6uzd+cpva`t5cx6v(R?z@=tv@M5uE`}dMr*T zL_V}YcA20iJ~AK3geA2m4Z%prW;oKNFq>f#!V!rL#K%I$V__bPMuT*lh-13J8QaIoD>cxjUZdBqeJn?&f^tGqH{mK<}AnNf>jlkBRF;aYMckL(t@E`u4|NBSn zoCn7x(!xdoe}@ApUEDZ$>qme8@Bfeg^Jj0h1;><)O}1`*^w&T7=;6&WJ9_#rzW(I5 zobCPkVxibk^sb)|!A>!Q95AfHsw{6lODmh@h3ZG$u_{z*d`+N(-IMopt21)%AS$ zFTV4g7f*MMjUsMfFa)4Da1Bf_jdQ69p&T(vc|gC>VYE*|+tXYcbPxwj9RTui3BFi_ zP@fRpjv3Rm0TF_X8lCpK79xnSbnC+pKYs7c!~In#xl#S~aU%oEotNqT+Si}@&MRkM z?-`nywDHSZ+Z)X!Nw&MVccT&;zcw@mbQgVCy4W+M&{5&?{)0z1tCi~9!oktU zKYah~yL($OLCq$d%Cleo;_v*yAAj{*&!2eh%7E&+!Rks@R_}cL%m3>?{ICD+r=NcK z_8WU^3r)!O5!|zKmLFJ??3*}zxdH#J=o7G zU%xQqEZkl%yOgi|`5*rA*U6RL*R<}$%I5tKfBujE(~rNupGiv0`1$9be&)pMDy_wA zvAe~h5JoHyMxzFmWVh2QRhzr-{`JRqTZtKmCmN1AN6w%B%Tp>koAz0HUpsm7Y**hk zrI~LZe)yA*AKkr?4pD~5zMe~GPQ3bB&xmo#Fv-T#%WvG=-(8u{14tYJtR-TdQu)|u z3IS0@FP`fj9KEhJ+1SkX5C85bAHDbR?rs@2j!HVlOkaKZt6%!+x1N3VwaWt&*5=-= z!<*m`#%Eg_2RrQ+Fiz3%%-AbWpE!4AP(ihh-r22J%k`Dp8&x2SqUqN5t&N1{%(JiH zYrSW7VPp5+?Y)&^I_z@BiZ>1)y!Ytt!NyW0HGT2PKY8*m&+1r!C>@q33g@3dyh;Q_xS=e+jnvnMZH=^s@=ClrFX**KrD0^s<|%estIb>{E-tL?-+%PI@BI&- zynS?gXSK;$$1k0G?Yl3%{M5IKLA(;Fm~_g;oEN>++2l8tWhb8yvMHSyYT8OCtvFs7#-73J7|bK zYPHGcPt|YS+(8n-YPq?%)SRCcpbyMoA2h*6=7Vesg=KM}A`-(K=Y3dO+5XJ0wrJvgS)Bam5netG?1|JEB1 z-g@)s4eaN@%g<=~F1~ho5KF)t6B6+RvMk_4$W|5>n-wtv5pkMQUAuDeeBYpEdd4() z-8kdT)b>93xBuh6{p5Rxo%z|>M9893T)R3tGCDDK{#?(s360h5gas023(TOS`|o`3 z?f2e!=k3GI7R~~LN;x`orR!49u*wMAqX*=`Sv+cGWo>PHb8~fNVJ;o>JI#hkHRMsV z$zZY~jx*E?ZzPc|+muuH9Gw?G0(&ha2SKJyw*nRZggtdIO^<0dJ}5KgdGy0 zvxT&n6=7&bf090hGU#=|ifM#N%Ssl9KbD=FFBfOCsJ@VZ2n^v0vKmoJ$bTfi4Gf3G zvI?P;2v*Dts*9{l&}oU0jzd_?3SRRttmF~>kH~x>*sv*B1QD{>VzJnqt{{|vbha>8 znuA>z`KB_mL=I7BhH_Zo^s<7-3e(Pvo%KawlZOerT$wB9)5%0E5{1kiB=S2EwEVC| zQ_y)p5rj282BTZ4*;(6I?KH|ofXh5K9ZaCGBACf6l%BreK-^ zd@aGje5#$)8IWTN&~OR>aSs9ybE!h1G7n2ZHl2zRK$#D5qwVG??dbUEn9^wVMw76i z@d1@J=N15CmT0^My|f>Hn(GAQ6QduzLufP^p40 z3d>G)U9B>32^~pHZ%hcP6XJZ za50o+NU(N92KNx1g@D2M1jO~61dB7kXBZ0-FB3LTpg#jZ1UgY7mM;ND5oi`M_hw+7 zhVqn5C3v_~pnWs64dz|F0Wr1VCxKo_EFi>ePK05iC1GgM$57_no*Ow=dnvKR_Hjz@?1h&u`Dj)gc(u>BJBB(!r`JH!OQP-WAJ1c7}K z9}ZFQV9JEe#6gZtXsQGOorQym>|$s}8uJG89@ca>^kyjcSe8W1grfzMM1VI0Zvh8@ zW(3FFXBi8Qwzf!QQQ+zK}e)X!RTKcCNNjaU_+c9n4dmOFw8LY z9Wlbe_1aHB}F5z6KfFyqMJLH~r&hhRT3gNfpeY-b)^$2eiM@VMc>!%|OXFgIs0BT1S# zIB_v{G9HeAHX^`Cz+C{ZA%+nzXw2AuVc>@;m&^tDIA%QIOYhk-~d~hz|=&A zi8&YtELmTeg4jD{iv(s9v~uitnubI;v^)HQ!?F&jR0~5)ORvHPag_`NHavI~Z-nBq1+i)soA=ekq%xumh0(Aoe|sH~uHrq8Pb6*#<{;M6>~CAuONh zaQugCtNh3yc>Tf4s<6fo{fJBbGRnfziNw(m5Cwyv0`p=Y?kwn--}zSwUn# zFo!XVi7k*A+{laENG`-RkH<`|C^l{KBIgHro(vx#^&*cU<&mqg(9j+?DNybo_%(^y zjtGP3I@0GTUmoXQKZzJ0u_wq=fEc+Fa>-=@*4@+oQ1fBGUVB%h$C zzX z<#ACcA2%MqjxUirmRw27lS@Do<%i0TBZc5gxgcCZ%9F3ea33#Pvj51(sa#L_0&*D{ zF;XaL)8}JK+VZ%Mj;oA%knhPKa*O4b$hA2B=vSZ1bN0A%j?0sKn)LPKDfakI+1G9u$52lI!!h@hIV+wC`~XNL3y$O?*#kfPz22;qm3angAG*&&N$3pU?k!;)%!; z|LV)%`tnm>dFCt6e)ZWuf9`9~eH}kfKKJDF|62a}H_wxwfBpQE&p(OJzxK@6p84ui zfA;M^`Q{%z`GeA-ZZ@9)0T1G9knwtw5(gJm zHaiRQq-o0SjETsY7-D?sxF5WdC?q84XGklQh|SVQqt%HxNo6s@LZe2 z#~S1UKt=#E5e_9_jDhDO2sBJQN`C zM?0prgX5ouMhVDEXxcw%mX{<@zOI^AF?{QV#T>x z5Yu7Q2`4IuELE9BR#!h##M+R69a*Ge;(Sd^2d8zkGhJS3-)NSQiZTe}2SXzfxmpYA zKNl6?Z_F1WIZ2$IpDT(f98m$MWyUc*ZSlv_NRb?*jmVoK)>iJ{+Nh+#DMNG^3CC^J z30zt%6us83RE*h0PDJ}EQY;XpT~4nb;^{(rtK9%K8~l4~xLRG(Dwu= zMCok#&BLv=O+ZAe0$&N5rghge`pJReVTIC{Eo7u3`f6q-$g;&|esQr4@J-D;is^yDwJgYHI*(cT42QKzqpE6E4J z-MzJn1Q1ud`&H`e6Mf^uhG_(DY1HQDfRLk@M5?^7x3kljOBKpNdeUSv>Qz1cm&c}< zRC>OeZkB-y@R)=7_2s?oyZ6?L1&?j?O8JUlw!M4Mj0_E3M!3TK{=wb1-+ObT#dg2ebLI5;ix>J8>}+T0 z&c?bx8I=x|E!o=r`0cwp<-9j;>^k|%$xB**VJN@5y*LlhhaJ}Fe5bX)wY64ml?#ch zy<At?!DtcB^vqRy8FkCq`YCXeu?g^v3r(^;s40kmt_!cU`%1 zEnU02zt#?W#wHPjFSmF2_V?a-b1%?6s2IF9aK7tYpQ7^qVP{biZGBg}?T+@%cYpBy zhi|mw!J)n}RsYc7h;lM8<6f#(YDM$8Gn!s@{+&1f>Wxli`Nkw=*G(EHRXUrn7jN+K zv2g#3m!jhA!okhW#aivgJ*-8*fu@~P%Bhf(4mjv!u&AH)}3CtyTHA7jM1!=Gu*lMQ0kjsO;-8g)3@0CGPDo&WJ%Z6;7uXciw#X zX}#{}XH+wNeFIlsJu!-CCX2aj!7w?}tVz|z#=#p1d&klUJTyEsHR-c^#fA^ca73TD zapT6?&7-#-5dlJTwQu0+>#v`;N#z^sTiCVEcNyyQts9+0_X)LC7|zSkX6I#Vd_ z9PU|NFyIJg2E9d2=Jr!xyfBr*kDyWBUfYcDS^3XDIex4OAF?MW2cYiW`(Hp)(q>r`5-(DqVl z7Ai=?j5t<$-RPAoL!N+fr0E-7pd+a+_W zv(i|ox0Xe?JqTW}XW&wwZvM^tx3(gVnXXSmYa)PR*%DI92@BGnozszYd7!T z&haMYu+=_WF4R_T?Pb9UnAQ$-T{!Ww!qz!@@XneTrQo5NhsSAoWijra7||Mylgj?C z3+Jpiwzd!Eu&^|f=}vpOy|LE`s{!d%h18RM&wcBuXA7JAckZWhykgv$U0Q0c-QL*}hhsjjkmkk{7XDwej^i>o>Dk;x1S8~w<`*WaF;p?A)n#pOtF zJe1q0R1Xifw&q7P+ELw1XUE<4&OUbQq;VEmS(f$l5D$Pv`E6msKn)FaD_U;0!d>rN zJUQ8zu{%a|zUp=XuMJ;+zj|EL-Fffb_f7NC#izgf+mdfa**6-foj&>CIA4xTbhdYQ z436~ot2E=mt%Kvs;@nV2-?+R}sU2+>w__Gf|HNQN&+S|HI{K{17cZV~FU<~iw+=3! zKi#e6@=4x+QrKd|4Smt7@ zJNf*IsaG}5tUUhg^QTYtOR~l{Y*#WDhLY_qGJXL*1Y|_2HM_{N}S~r}^&p ze)`wH>Y5+5PER?#^HH!o2rU|meq!mP=bwJ|{HT^6efyWMzjLqOWOpQ&*FSiCyt#Jw zPXCA{Q#-qOQma?1-rnA}wtHQw?(SZtJ6x^o?0czU%WOPV->Gh=vYUtcan(RyUyn-D zWA|@0PWB_6t*xz0{p{lMpqBH`52#cvt&{!g5zCa>y0D0HXw%%R$slFVjvm(vvRB_X zq*V2esLghfVG?z8=Nq4$ibaamuYUV32JDh`BuRegQ^LuQL1C;~3> z+Iw2(ShV!fZ-4*ki<5Fz*`?}N4GoWu5BKZm(gN%5?|IibW=;I|%fI{0#qs8@t#?qX z)*#@VcofC+hWt81`;aD-dHV6^P=MGnYJin}BU(KOC>Smkq}`NuWPZ{wJU!e4Oe+|e z9vIc=bz>t2^(@RSy1n*{j!bh0FD_o5pKN6vW2&CvVIw=`h>Cd$UHn?QANEdwx+Aku zDXg<*wN5!SIzLHIB9)m$lhWv@`hi8Mb7Zr*&0KC>8W~op2lRHtmLb8ry0aSeuojh8 zHxz1=a3qzIZFk#;2DKCP0-s+$+FDI4Pmfy+;e>cxEhN($#VXUI?&}+$bh!QA#lrK- zN{q6bKou7~*e>Q%nfS7__1 z%uZ+Oa<8<8iXnbvDtT5*M{yb=v<(;y{XJa|dbw!q@aXu-l^7V~`cMh8v9*zjJo5ee zURR&NK{Jo$=Y(Kkv$Q8I*=#s0%zy<2{9XJz9jf7>u`!E#fy;mRyi%&V0xKvNJ1k^_ ze*4T!_w_ppwRRX~DBijB<>QlQr}HA%j>8)pGL9HMx;I~YqqPgAP*(cU`b8m=Uz3n}HphvoVa`E!1WkToIa9f$x%#swEvD|NKZSNi&9G{>Z4tcL$-cHN& z-Z?XqTVBS_Hj(lgyStStHI8v-;s+NWKP{vmS%T5r@={!sM45jyI(T2HP!D(a3>)a> z@`oRNoQ?|78P76KZ8NBp${18_-47=;g9gW}bu_e|uQwK@d~BLtTA(RvX|0+-``MQ3 zKYZo=u5mgVetvdPESmKLS}VVol2Pg?#b%ADDNuFx3{J`0A3VQ&`Z$-ODZSH!Vt09E zHDns=d-(9?t%s@sS2(=Bd3=)FTl$8s?R}#__v*&9U`yI;JbRjqu(W-3Ih9ne@G!Z;KQf4NKEJmm2Of3Y=u~J%brbd(tGu(f6T`XM%%i2udj05hb2Gg>*Vgf% zd(>>945pDzIwO~=%kGh}NpGmOceuB^8MoZN`_|2wG3x?0G3tRKP}J^~6WSidprLVj zvbmXzhu^>TP-7TFLEw0BQ}8f4KQHc`9-KUW@o~E5qvzzMm}nwK9!Sm+rN!!4->L#I zy1aV+DJtuB@?}8}>pe2m)&8KTyF*EpSC&_($(hjf+SA{Ebd*c46r;cofP}sKo!9zR ztRQWKeSO`^xxvSmpI}Sbs4R?AW*4d*rZio@e*I^!^aa*;kFv#L$`N8EZc)tcz5MNB z2-fsY`>l7{TpMfo)r@Ckc(PcoHtOry5*D=R0npRe+wt)B-Ik6Xdwgkm$VM|$O9|}O zQ`u@g1)zu11V7Z%uN8T+_T^WPc<;EP_ujqM+l9*h znb806z8(b_~DIC?FfpS8ZUqQn@?Y&V028;e!ru4$g`S6 zLPqoU{V_V0Lxt(p-(EheFH9IzovPNhhZ>#HWJ-x)dw2Ih+mLU&addq8>F0l6igQz= z>b`zO-@~4HUvYJf8P@ijJ7=Yh>cPuT{_Y6yWv&Ihf-;}$8lp3;vD^sDveIFvkJ ze{%jQqM`Ko=!k`)Cr$nRljEa)+x&ouUZ~f%t4GhCeSCF(FsRc_%+aWbvkvv%1cufz zK0`BzitESckFO3-8fJshGB?Kn3ozwGI5J^xf7nCWZSh(qUuYcGcjvo1dJTq28r=Q; zBL*v+0O$i}9ETz|uR4FZ(CMKuNpw=~Zw>;2}OhwmF@R7KKIF zz4o4*qDtFMPwA8`Z~W|+ZTjWDyjCbB^ldoVcu!zy8Y^Zx@qDo z`zHyvopMlqDZG^0J%8~@G8}MQhm`l;yL-1&XPhtWpX66VKizIbsFGwan|ZLOU>J!mYYo!iK!Q(axX#?ip;$>Xcve*D3QN7}CYckaD=SE)4t zo8vC7N;dr+Mc=4Y{q*y%{`Rx;qm7Pt-+c?k$bCA)-)2D|!k~nooF)*Ofj*X8F^^J~O z=Xl0A=`U42`RCsr7FH9`kFec$--!2O%Qe)Iah_U^eybMqUy_06q= zoev+M?jANyYsW%l?!k>$e*BYPymL>Xu~4aJUw-z@GG||ywnfsL`%j);)v~v*zwtM} zzK6XW`le=b7w1oC)-}mEmXnqJ=O2H3v^90>Z~oKu+wJ`Wqd@MsZ9-u+ow5!0+*2@8 z^~u>zInIr>-f9~(Q1d8V5(DWd3mo4J9V=|^o*Xx-Xd*m0JW6vRH=0S$A$#neozNJ} zv=~^8#j~rsnMZ!w&x-3QIqjO69Mz9$tx&sgVt2DDIfCe+y@IeQ3iRtLdd%2CcQEIf z8XZ#1WO92SZWUY>+oaZoro8Lhjl&i5KzpY`J&p>D31;zl|LlA%5gbC3`pD{f<@E9S z;i9{(t)pvTSgRcx8J-6r^66PTz<4*S+q*|#{n*}SJy9Tuyr9!E~=JZkZaJPOE52=;jh_qYZsqY<~EOFx#gUZhPx9|68 z#wjNyVBHj~_Hm$B77wZ@WnC%C53sfE=~WFHrxNMsFN%q{#p`jQ1sls*)}w8!|9P+-P+vtdIq!rQk+%N$w(-^vfkfo z02FOZwgxm2Ng^8Ab6eNnIuYc%Qs9bm{tk9ER5sOrD|w#m1!xqI~Vqffs2 z;_HK*N9!wzg`s|wsK58l?RyXI{Tf88D{^7??8R5#{KJ3#G~GabPmBUsPpfFX_4Yfz zR`r@~B1kvZxZ1_bkG}l+}%4 zxN?4RdVY9txO1?yvX+YQ^Ftjs-v_>h?(dkijNk7b6jrXT_A49d0+(1%TO8xQEzZ%| zGd!Xl?7OeCEteY?AANdxu$5ce*n6>ETMKIxw{Eu#T7>qEF7L)ojrc`$!AwJZ~Mcx2k+jv|Dbb7GdsJQTskUcW=x5S zyj*<#^1~0Fp4Ru)X1coDdtjG_4O6CYeRI9CIPHmua$~10viJ8IvZ?*y{Ra>F#wW(XKfr*}+C5?LtX@1h-rY?L zF89>5e`#fDb8{z8BaH6@p zFs#${wIhw#uR&{OQQq4w@2}V`X1`q8J3QQ7Pp$DrMQ8UQ2zdt7iVme3C#F)dnqF(< z(wVjN=H9_(uDBI5I~_x+f%Y~{%Zh-2R3#GSeJKMFL$B#?GETZW9H{W{i zPJ6E*a`y4lvqoqvxF{8$T^zt>?bKak*ca$E?L#+jKTv^QbGNw_q+<0?141(k0?BujqJU^(Fij~IWayn@@>p^tuRrf2q9^ARt+BPvC z+uf?}O3UfhqocFhF0$LjVO6hY1ZYC_!`t^2{w29_(hvhU4$W@W_fIb_pB*JU+V1YI z{()ijfNEekxP*hE@(LSF#tLUAyE`Y3Pj+}5<@N!x({lU0+jk${@3nIAHJr-(=Vyak zPhXs$pI@F`#!ypjHw_H-cXzl8tI4oQ+orRK^_}hQt%JP?!M<464|cZ8#gJ!EGlFB5 z?$+D4?!-|ZzPP)wb98z2?CJUW#fPcsDIAFR_$O`V$&v0mDn*Ykk_|1cWy_VT!^(Op zUT8dFW@mKTUd4mf_D)sLjBjzbzJc;=ekonwt>p9TTl-IPb~LFQ(e`$>+yR>q!-s&P zSfM8@lzefzyHl!EcVi}#g|G|^YkCzO5Al3sYF3aB&d>J>@nujlL=I01@tDu2*Qr$+ z{iG2oyjePu-&piyod7(g*S4{PKRC^=#TH#|+xUp0?cNZV->t8U!nm%_pV@CT8YkOp z*asyGxx(4uCa{bq)7Yd-Tv>QDJ+64D8;>kED#dc8k`ck6x|*&uPWO-UVTV%H-E#Nt zUA0?8q>p|SRI6gBEx$!rz(o_z7UWgK;6 z)0^}58N2?$Lq&TlHi1efc(TFIzJGLl{=sj)*!}FRJZCdo(Rr`;;lsOk+h*4`pMLpY z_m_P331$O6tWw#o8!RThs^bm_q3*OlR45RgIOo^0=@L6X8Y+MD`ENe?&5OtTu7_Rs zZ{51rGoED9*jR<5QFT-jy?z%atA< zY^<-AWB#qJN+4Wcj_4710OP8Q;1KZYD&?VVQz1DP1*Og^VT5Wkc?z4`kKHT_9&)2A zy;j^W%#Nvh&?g4IqFh=U2V2g#ek7CK-QC()arg8NjadxC18OJFOKVX+9!*t?Ynj#j zCi*YUfK*2}sC=ODF6OdR)@=BMy_FIIS@>i1fbH)i?zafal3wS24syDWIjXa%M!A5 z^b8E?`qc~7y_07Rz*IgsYk;R<_vG2iC|G8C?zOzv(%CtiTHD-Tcl!NEPSuYO_Kyx4 zQNLzzRHy6Jss^JuJ<9l1&bo)#sJk5Z98wI-lrFo0d z;q{If5MOy55$wr|+l}MXR3Z^&$B>0`PL1o3kC@Gt))(}8cMzz$Tt2_CQCwP_oUtH~ zoHQ9GCk(?tpcV@2u_f2s6cvo^)GC=04vy#S4$CwR#F@@KH6O{Y=UB@Kn*XsYnT@Sd zZbfFTwh8;vMtv(2@LPxO-MW3NYjA9GDN(3a*J6SwEEm?Qr!QW7`ebRrIMj9T=6m!2q-#d{^AsDP|_pq*w_THWUA>2u!Or866K@Iolib`k^~jjBwBY^&0~Fv zS$frt4sE~(Y;3HrrB_#0bAf*30;j;cFhvLVT65^=>1m@X+cc_P-{#?q&%gQmubwUfO#8+=Ej?=ED7yqw5x;fR3Ml)=%aeNT zX#dF*ufD(i{@oj+0VjfUy_OBJA@q>2n7l@=eo(x6{yb%N#V2})f=f7fwc!MJWN3hk z0*AdaOHCOx1HG2DH5s^)+|DF8a6*sPJ!>0_0nk8M$Hz2-&Mc66jhbJp(QvZ3xRls9 z_=pGV`W(7it2KRep_nh1{2tw?(NNu~dC-}AK-g)btyWP-1OSqED=5suw(+qR9>c-|) zeeZB$SlN2>c6%>-a@5$b@-w}?YR&lC2B6(3p|7*8ZF+5eV`pcx*r#~-V9ddkHcEwj zh-Jo17RT(&;sR}-Fi!SyvC_qPV~b!V`!ypv@Gtg*G0Xs_AhVE4@0^`|aJ7{bfn>7z z_~o?<*!>Mdec(+5pV6Sr!DP1f)-y}4Q6?bQYkS)%DbLXpdZPm&QBS|cAF7_e{IH(& zOzS{rxUjmKnV%Ya@KB{0-QL}+?^d@0%&;C0&_nARpz5ChwkWy8&)_h#+r{Ne zTU*;9{g@GHD0if~nJ@X6QB9u;y|{|Irx)u>Hp(TeO51yXvaP#v+!@z!mw8*=b3k;&ZOiHh<0?jbvfmm;WyvlIM^xUzqQ+A?$!)AV;uQY$5FmO~y~Sxo(SXSr6xUWm5f43zpX5sWyVVL}^QmEtZFT|F z1vNP(u;coHzTTA>f9UEkY9i{hu%8u51h}?@?%VKb1d~B4D?9>mAPfw)z zzRvr1MkdWOAR7wslM|zArPEue)X)HH!e|^{gk39dl!~*8t`1b(f#3rG!>9zD<=isB zP@4;k-GWoC(Lgw|nOR;8F3x%*x$PPp;*4?Bq%l}$9TCv>0cL73t47fDjG<$Tk!0!U zWodB{+-*F-ZLDwHXwZQJ5vWh_eJKYZ`(V+ZtK*z z4?g+&#d$5oJCNjAT;15&&M(g!`#O6@rWTSQ?E+8d%*dchf#XmCD!na7(e4t*;poe^ zx{P*<^XSijh9FWBB$aEss}X(y+(UYX1t=-x8dIZ&!8*q+0D`)N!WeK_09Q(bR}2j% zlexqCR*s|f2&hnr;0h$t`O><)2<9GUFIx-5O0@{GHxRM8I8jc63d(B-?IPuDQq2JfLoh+0gi2+B`i=vb z?M3(9X*)>dBoIY9rg7iJ)J7HMgPdbx%9)R*iko@#*RsLHOyXDwy;lNYt^?AQ5L1D< zaUMrjD=2)HKqiK>H^P_(Ft!8yzRRg}ns7-0!61M}aYb5WC~&t944d7HkP6viq6Rqt z&en7`4Q5L7#I%b8?h}A&-iJppnXT9z0tydA^D-O`xbgra0+6hU1|W6z1Wti6?MFc9 z0nXV3R{$nMdJPd!B^qM@G6!H6=ym}~00M7;u;-=M^SC#}GG(0wm57L&fiukJT9DSa zc554{MP_EwXqsVA5S~qm=z<2qE&+4|NW`JLnho9Dz_AB95TKNnq(lPG4W45>GL!>U zNZ|!9P_k&8wm>kn1X$SwGy&F2U|J~52Z9(dSTIcUVu}c1ktH;Mz_g>y2oQDv7CHf% zp0v*T77<~BzYHt@sM!aa2$urX$xmBxt}qF+0q8E+rJS@+NMuXpLMrUFTdg)Qpngl& z1OO*600AMo3|6Zc0p+3b4TJ;S8DUQXY=;Mw5>G-9*WmQbZ4_ za|d9TU~u7sn@* zpov2)E;?zY7h>srKE2H2ILkCO3jwa>z$5~`0MdB`Q-IKp038V16{Zjxybux-nZm|K z4&2Do#&J-j##U13FHTPz^<&`5gyqf^av355pu!0^5oi%7(M1{fbOK@ovMT~GFsKKy zD8Q4(Lajiz2#SVp9|Gw2RrtwLW*N<4JW!q}km%t@Ai~ib%nol*gr-5)KwGfbN*WBd=!DQov&eF-{afeemFL z^G+LDq=D-IU_bP^SxzQFcm&!tbW#G@XBN%krjYQPn&Y5r%Ml(3PIQmMDkO>zwx{?q z;c~=Oo3T>od3f;LdO98k7!p(j$y6#4VVzSZ&?qvnh^S~FELKF7h(Z&53g!qm1}zvs zpTu4e2Fwi7*&tm4&=U>Mupo%N0yGqq#9+LD%EDTp$RDJWfbs&b2n-b@KvqBSHQDH)w)f&B!^9+*cw5I}Fx91zCN`*C!Z0iWI~ zsxt_+Bap{1b;Rs|SQQ{}5N|^T36B64mXt(qVlr4@;h-ZP!RyIWdN&-ba4WV zhCl|iQW=S7oZ7YKu-zHE_nFBm`4vat(ILWN zPaXr1U*I{LXlpzVfe8_;BtSoKH%-_nfsGOyfcm1QKEhH07>t=AHU*Q9kE2@%@S5K~ z-3%ygLQr!6iUE7XVG+>pgc;aF&jI%en*lRSNDE-FvDlk0Q0y+^Dg@f@kLX?iPeX#g})@-cL+?hiPmir)PXK@k=P3Y?!|zJ zd_d7Ui}5$@2Et|nCx+RDeiMfWZwCM}TET-x+=<@XFuW-V1>FSDjt3?S2A>BHb`zfu zL@DNjaI)aam@5D@n<&2~c^_FB7!z>XM47*R7`zKl20aTvV{p9T;llCMsvHwQOahK_ zVnji5=>!R!9W>YQ9$>*GU7Mg1ggPTcm;ssqv~NiRf&Kuc`4X6d*?&=*C@cmI#s`$e zfuI9D^T-NpdOt#NN1n8~P$5Qua)}uKU$1}F>>Kfuw|?^GU%&a&H-Far^V7Hfnxc2>P|Nh#aU;DFbe|qgtuKnS)?_B#g*Z$zzzi$2^ zSTNxy{~vuL7#jNRV}mS5(Ansv8HD2%ViJS|4}$sP0MvIfEZUKwl@9sWpn+NkvYkj3b`Tdrw|buUfpQn`4Dvo!z(??T25-Q-$j9+cycd1JARGLK<$Vl@ z^*AR*JKgvh9GsMrB=GJ6nvNC7;I_yc`rIPmV;qKtpCemOQ*Ia(Q18$z;{Y89I#ppb zU`}zM#T$$9keWT@X21>^L-fltH12^K0v~Z8J{mp1h(Z!hKk^};kLV)${R(K`0ICw6 zd=EMz43LNf`6)N+q!YD9{j5=`H!d5<*9wtpu6B8ZP(+dLORLX%;uUt5J`TY6GK{b~sSIZULQ4mwPQYpsAQbGzGXa$rSkoqR@{_+J$ z64)T^0K>ij{(Os@MSplJ1-!hF163;THklCf=rqc%4uzr%cWqU-Y8Cwy_{i!NkTq4a zsf3u23x%?ri0~{2c?psbi%24*lgKrmfB5ms%d-*7u^WtKHYc(vAUx6= zFnX4CQ#4~^Y&whE?V#~+py_w$$!|?souOZ;ap1VtN}=z&o1-0A!!Zey>2!kL!Urx> zbb1zKG3HCfV!2dIPVl0X%9d&+yekreZ%x2wxe0Ws>Mz2xN$p||jKey9rz{ObyiY2g;XilfnsnsTp z$)cxpdR@N;hgl{)8j$GqdV^78uox&4Wy8v0(Gn6Oanr0b$VV#ZmCN!p&4?T*M}p|f zkWN9h(onW)rHuQ5kQof%AUtB>DWqHki(FttiA9|pj3pKuFZvkKq<30P@c%}wRjbnV z_iK$>gUX;Yur`J^57D-nigDIcX)wzR+c?(NrZx8GGb z60*fY8<+@RE}fO+GjQxNKFY@V95m*i=P8?&^ht!#icyptOkX-IHjSa{uF=ZZvQBl& zTUxcs;0|g#y4ZxR>!vCD&;R>ZpP!!}6;fp=Vyt{rsTCwal2fcN5y^7aNHA9~RbsSH z-EXkOm|!rG0*9E@qVH06n4GMShDXv_Y)<^f==8;oD&?%eyWyv3pW8r5wU?y`W3njK zMx)cAZN1T=(CDcwYqDy^`qj(o<@0h1M$>K3F(}@Rfw14yuAyLlVbCQJf|7g`j16tW ztrCrwzyJNqvQOR7p;TzCPCi>o&_)Zmu@Z8wa&UHbRbg2Q` zP(HglDVGW&_?{vW+^Zt9aAsgM2|C(u-gx)jpZu~_YcyfQLUC*?mp=cn%A54GO{oGb zRiQNE0YSQ5&6Q3r4|3R-!t`V%r_o}K6nHn>WKgfs^y{_#YPH^`xB4)RzH}D6hWxUM$+gQm ztat*eKWOP!^>--^HVQs4)_DH;H_wk6m0Vf`j@kfhpBw2P!ROE#EEG#TDFe&GRv6WcvXcRW&%(eA185aqMR)^3e|d}EW&0}790G0qLjn)vW&W&(i?ql zTs8(9VNJawpYZpx^kBGsew^J>rn9G^p_2k<-CMN#bB? zIo{Z=r5sM)W_6m}qR(Kn8EiqH-bUMKTHk*2wKr~e^_!eDFU8bfe^iOB6~uq}ZH}VEyBlRTPNRf{>PNYAqiD_)yXE_RqV}+CYL!6*wD%P{^tT ztf}L!F_x|uVuh+m78nVD96=J^sQYP)&YH-Awn<3Dg1L$mv!a3W5n=-|l1@Z&)jAdy zLMu4^V1j&@r%Z061%aGf%2tGajd)(p)*?RLyGE%{Kd7dV{_9e9z50_M|MZQw426@E zawQdHgCe6d(N4AA7X#cOTPmbW^|R+!4df!++SZ#lJG3Smr;3Gix>`Rdm#T6kf$+fk z_FumC_G@poT8ygOH`P`)m*#ztMmmwrijblKQ2~N3F~}!sc9nyJ z%MULRL#0KI;n3$63~lKAZq$I4QmMoNk=|(08?^l@BZXE0%_x+n40>30#Qca+aeEGM zXjQ-7$^_+dgFp_Z~iy=kkqkIt&1N1qK29r}piyaUi2#HFgQHOS>5Cxz|HXJ2993BO09vrDs5P1k2A~{%W zA?S4YB0LZrHdDXK;NaDd&5I9fM#~R4FJYng0pT>QGEL3i~suatd0P*aZ*c3BHDOE@HPsYf>^0?aB@(C z^-iZmw0uH@17bUOP=@pIv;a?#}L_MigE}KIX3VL_!8?Y-uoQ{ATf3OdM`$A>{|4>$w0c4_}W<=qhg#@)G zlNB)yeq*sqBT>NYPf>qBi-^pW9|Yc*^i%FapDzMM%>)LP(R1aBc)n$QY2u za~$*#aSw^6$=_58@gSxMC#%RqprqSy`_bP;nGu z;n=={m<>-z^d4JL#D@s75pAMta3YI7Az~1w274FY?Zl-0iJgS zOQ%I5WDvERbp6WqRzP_TdQ?CmY8GT!CUJRAgaO1eBEqI9>~XP75Nz@ocdd}i#yIru z;E*E{8AX5B8~s+J-ehFUwNiqwrPTdKy;{xF8nHkN5jq%QQU_muQLW213$Ej)IL^os zg3xj))i?l80Zc))k&{pZm!It%5%=Y5E&Ek=WZ1l9<* z(lrE7@NeK2CRP)>9gfG%WxP8jN3d#0cEw>d!NrS!v1HQ`F@@1^G?da{H5!6J2a&Cm zwnkE{N!R|x^btXN8;Qnq%%&|&L}%}{{=d{_j3*k2hbiyj66`I?A;yorq2LOKGx zgy|Hb1;)m)6f!sPgBBxM-VF9cZiLS1oCsrVqB#niLJp}EhK95p4#sCh%t;xH29;8y zMQb!Hr}EMBmtX|>^yTGAH4zix4PixKFOa7p`F&smVLs7O1L}{#T4~rF3A@HL5=kVt zgq;QUVW`zM!f%s%r(_@EFJz6t+kN+yzxty;f9*y~zlC8UAfUJc4>$^^MF`poG54bm z++<^5JyW?txdHx)f{ajsq8(3&~B<%jNb}(u@Mi4Equ!)6d!oM=c zgq2SWI0xo`A1}btWlPzFEU*rX7KqS(1hfv)(GQMQhG#=c1GzlnR!AU)5fa-0gAW6T zgCpW~Km?5@q)6={6$5rB=ocOr**UzB0KwydtK5kQ0-`2qLmTxpoK6HE z3}#~tPg@f520u&{IbW;w71f5<)Ss}kZXaTqggmEcnu^$P|-$PQ4L0B7Y+luhHjK>5Qzz_ zDl7`}Oe8Ia2w8wQk)4EJCm}{tw&X!LHx7@GK7qhcOAF=3s=~h#PPmB9;3jDB2XTYD zmOz$3CX9#yFXS3=Y5W)pPYg9)Xw8Q-Jw(KU3Kw}z_*@c)x=FT%xN08_eWV$u-r|m7 zMHp-mv?O9qgwBQ!!}jEzX8zc>ke_(zR5e5lY z7Ks&jA7q`7KZWjKIYVy{dScGWW8p!F&w)KnEXj(Z>j1)VY~!J;csoJ{ zEHLD2$ur|!5VnI&q$NZSWK@LonzA6G!f+89h}adudAK1tjFP62ZNx!Q1RFCDR( zvly*T`zES}N5>ld zHVaQu(_~E0S;&h}G~;{B0(oE4B0`|#hva``e?+d1r9>EHAw*mestpw&Dk~tAgL3w9&eCE#!to+1*HV|dAk$FP`UNR103>_^b;;IKV&P$(Tjs>o-9CBZ2I zY&f!S2=bv3Fs}}HSY+^QBqoQ|<07z{NY3Lq5!vBT0(pD#F!+*u*L-a3u8AygHRu)z zL`eLIZFy69(W0&y(4&Pk31;vgOcoX(hlPW*5Lw>j*-?N;v=d5#P>I|bei^HW=n)n$ zk6bARNvsa;gsH%UkU$F$h;0KbJ*nUDjVcL{zNXy(n5+eVqcfYAt7ElNMI6u zv`~?qnl2rkK#WX|SaKzSfyu{C$44BP+_6wF3_Kb13Ian~ z7;dqNt^(&hv0_LNJFPaXdI$2hFf7>X!F0gx5*bBA9OsaX1C*9{2V5I{ePKF?Jp!3O zUeGij5`IW3kZ*_q!RKJvAukw0d`A=>76$W#?FjMi#PKxmL7W|NqnHmIq>)o7Xfif~ zm_VY{Fe%MV0x|p;Joz;-O;8B3L52y&@fP0JTqw9G+!ncP^Nfv{ZTuzc11kVih%u47 zkW-|ljUX$A#id|?G3~H>WFf{9P+kgs3rQIYQZ&d_pnHN7K`u{Y&0_+q2U%p1N%|y< z1wmpoXbfzqBobqaU=m^>&II8a21H82NQ6WdFrsPFiUA(e=X78|uqaMAd`QBHXc$JE z*lffyM42FcvcrR$gZU1VQ4)&`{#uAeg4~3`lDzyfBI6UYH+DDpaUBeczsc;+M_uF>|;JaRvB2Tm!Nu zm_p(Ou;6%1E4&U-B`h?!Y#h1qBd8*(11%yGinJHzAI`6-e@)#Z#u>`c)JLosBnilB-FO zIhM0PPF0D968lUpi39-h%t)5n;GAPf5hFq*TYngHfwiK+G1;sW9mTZC*(`J#no1s- zSb4I%1-KUCG2vWsR)m#Bj_XKZhC2~20L#H3Jz{}|p!F{Z*O3)Kwj6mZ68d9IO-n-* z9_|lQh~Xl*A-awqAdOGV0$Hj=>X;8A1QLxmJvRwgiCi(kmDeO zs}UMZvJSWki=+)g6?k%(7#xzoO=B|wd*773AZHVt5AzMr2OlUWI5L0a;xJa21e8uT zO%XQiaK2nbif0Hf&=G=GLRd{RFJI*79X7q*#8>SR_9|SeciHAKU){&S;qWAEoVFb>!~ zJOjx>k&}IlHi)GKagdvSyN>WCVuVSl6oL#Q1560R z7-TFs1aidI!kZwLfb!$MBq6{fHGz|Oy`Fe1M4u2m`tw!Mk_qP%*jN(9ZCYBQbY#;f z0~paPy(4>fh=-VprhOy-5<%nkux(Hi3(n8=1|(FW5F}(L0><+;$J#Um&9Cqo43GSW zOMSZ*h#C`zkEbLGjRD{`M8(O^$*-Cw=3mSV)*gAm6yPrcGGgl>H2fuR|Mo9_NGAB( zI}<0;d|^PC7|05$L9R*ME#5>Pf;<8q1pgsWAd}Fv!o(932Zr&GLF3(I4)81J8xq5K zyrv%^)|_Z6t{UVJ8{i+vSFclmd`xSB%Y)WPpzkOkPg5=+CxuxcA0}(KIS%N4t^fov zPJt1c5myY&BLgF|+k6pa$IC%975Y#1lGuWi7nTDFD2YxqP3^ZACE_4bYWfiTk4TC< zG1+T0!yDWfqiq@;G8AHiND>FRU9?s=K{X(W=EMG9yA!;*X`G3DBBRFj5ipQ!56Olj zjK;vfbyGxkP`u{wiH1NWadD!g%^O%rX8!;2`v0e%>A(N?*RD06^8fx%NI+{OzXv+# z5BrgBL=7V6N3k!86?t?t=NK=(K~rN7=Z`S~aQPBAB9ET#@cj59z_Z~HsviM2!&#J< zVO?Nu;`||h2t{IEzf6U?w@UfwYXXxrX0?G#it~%Vs<5eYC6InIrA}^@MaF}&Ml=Ir zys_(HGn>6GL|HEC)p4Eiyd>!D$QUv%X9(?PX>2Z-7%F!MqOb4KIplGyp0QM1PABs+ znrZU!5csTdU@I|6NxHKeil!iDm!0l5g}GyXD=&bBz;EROGHP5yypxXl(Om-1PS&Ce zy=J`lLx*?|D)FKy5RN+Dibsoi+2ePDYb~mbZIvovHsm!sKV$lm%>7vqnNPSK?VFN4?Jj z*!T6jd|qZGZif47p%l&+1@DYWA7bLtK=h1{rDtZq=(Dh*=r8Yc_>^i14- z+$a{uh3{KQL*^OUZn77@3o5wMw%= z_~4JDA?RH@^0B!x4|$7GXbZ3KQY)(P1886= zqJf+hl<6Q_;`}HE^`mv0mXD)unZr+LKMVn?Ry`aO5VE!!vO_2u>zIRFe4Bp6k7e&dT#2a)#pGW+|KqJ_=AYiq@KP;qwV;tWSIb{~w-m_K;;v-W%84Q8jMHxy zoG!baveI_OZ0G*F9KkQ}@jnZ|2!|y5&In5=3x^kgz!0Et43gN!?5HI0DeiUQUaw-~U+0?bmuoTUUdpD_Zd5aOnB7-jH zs1c_9OxS@>VZP(_Z#;s-zwehuHU=sAy&n)p9I0uy|MWRn>$ z>gczwv0Urd)aQTp&sj>b7v9?Qwx`Rnz=>P|_0*gv@$I0A$X^1Zd7V&RAU{bi?C!Ar1)%fA}GC z{9z&K(xFlpKFTXf;neGYUUKd}Z){)t$FV>>lR1@XQy4~^h3a_hH0&sszV>@dsgo|2 zifB(C$9X$=mN>7S7&i-Cjg_MyHW@292AF_@F6sZ(mOpdcfE&?qGtwRN5tosZNwdje zLSUP8>Lj*%&%=|}8__WxgxP*%7o$$6czsVF4X4eoe?8oi6GJI+#*V7Ofb55CDOg|x zS2P-V*cr>v&(2)(UM1FcBt+@AKC`Fe8LA@lGq8g$bT?-x-s2ZMsh^2V<`>Dc>swp= zR(V&*2_%}EF()0d8HP5~4!_xh2#*V4&B5wB#<1-VAtt^4g(D=r@(mZ~)&F$u3u|0I z(@3IaVMu?F{K08wI;Rsv9<=%)7zSrc11OC!)hXVJav34VDMcF19dmtApqYsa!Ko!y z4lK4Dg9`92{hcBml8%3P87Lxol@1iI9n;t{MFWC$$iwpR;xb}Ie<=H>$FB_M!k@nK z_aQMKk4jR~&*OX(cq@+jg9>WF{BkaJeK?odW3PP!65c46JNlCsPKccI$m4ozEPuT= z92IZS5)WM!_75=nKwa1R-L~#d{pz`+LD$64SKB z&qzgG)*p?MlQ$ z;ZXwa@~~03Dzt%c0{rh{y)nnD7j!%tnvt9Wc8jpy^tJy3oLG5p+^o08uUpzL(zT-( zx9pr9=M(YFwR2sxvd1;PyQdQ}l_<}c`Ya+Fc4B8^$0meqb$<{Qpi|N0A2nteDH{#6 z{Hnnev)cjQYPP`UqtDBm`Xd~g$^mwaqDjn*?IKd>$Sp)2-~XCP#s!+Q(+I*~v7LSz zbklGmAv`l^=&0y*PHKIg&xx|jYnT3bTS#Zp`5!|6O40UzWYCG6i?;mYMW~#~F`RkE zEM|UE4te95WbW24wn8#Ur5M^ zV>``B948w)cI>zp$(CgGUMNzeNKvHNI{^^AmjOTsm?4KV0Esf_L>mW^{?c<=q6eJ&_cD1$SnpRc|zb8M)`;k7xOI#C@Y-=WdECCcyE zHmeNpyj)ETIL)y}#?#^`zvA(*tj>hhBz$(&O_hB{jQ6n6k)1LL)hwD}fjHTz*C{cV z%#eOM)f8h2fY0!m&X@;cq4LLH{P+xY$rHAQgoILvrHe(U{#wNJE|&-8>K`C$=- zDtE5-jKY;~V+aZ2j@%}Xf72uXLY*zV-ZPN>QKx#;^6c$GOZM_M&y*wol!cvqVxW;( zdVI*)lXa+-7Rsc{dym?Ar?c!!=m3tM`=^@yph2R0oN~E`@c=6YlX9muesD=P8*)$} zA7^DW?E&7cBmC5&WF))6T{!|F$uq)0x|cun+4`Qyh-cOF*ma48=#)F@-L{@t%drpk zTxQa_@eo*KnjU{=xaHt&BJ3XdX;#@7_lMwRaBovaHeWU^Mm$s}q-W+><2>UfM(c&4 zPBt`BA`AugSmWLScb2Z)H!07*gB2OjQ8EpVPNu#j?Jb^h#Jy?xqgO1E!#&=9CPWh+ z9cyO7_syGgCnwE%YaV%9J{c<-z)|9cVB^(2GLSYMyGZ%{4u9Rj8Rr&uCEJ6Dslt6{ zoq+(|qf@ug>`yL+ps~7j-~N!bP@$N|1|V4nyJ4PogyWree<*QSMmxuKY+EyJ^;4AI zf+NdqTF+QVbfXc#XEV)&5@$5+W=qs@cYwiuVX;1Sn4M)u1_D3*g-QR!9VqVu7QrLu zWu^h|5b={$8R3sP0)$XVxE%vDt7CMO(gchWoPU_^76`Ub$YnqW!o+r%30nW`j5}1g zu4IAr4`st7RtXVJZjqgnYZL^lZOsy7{1k}>@j&wl$mvu zn9?~@jKgZx=_K_rN5m2e@imdk0i7onf)GF)j5~TfF*wAOb#;z`q{Ka?ra`*d30029 zQ3|OO(j;;t@gKzyInfrf0fZh4#Z;Mt|Hr0D#<*Q|}RA(7A>anPf-%_H^Z0q?=r z_%$;zE3{6J)dRJ+MlXkr*hYCmAsezLP39hr1oA>#-0F#^2@Gb=h(Xu@h3j|61A%HU z<)q!r;Q(wcLfL=`bh(nsxQ9`D)oHg?XEPB_n&C6v65SMKPCJoJvn8qPaqBzvW`}!& zBufndJ;Lpw2}@5~eM}PabXJ~qcb3eulkxmyWys@)<`rlxiI>D9$&t!YM<8oaT6-)y znMG7GE3&!$qv;WkQ}2F4H_%h4xB8LlP$r8xSg%JT!;#v;P+6)nYw=X-vi@+$Ve2u4 zc5a#1IQ-ZIpiWS3XmJ)@Cu_0TAc-oOh^1&oB3q<9@tj~_5R|0#m^(EMgo3asDLB>dVhsta6VAVTgRTah;y&U-cipSXtwY zFNRI=P1TZc8~|X}HrZowOPadlw)I2?*6+43=J`w64J~}i1BB%yGHb~!1haT2W8J1EVsYw<(^|ON25DI1@U(49 zTixE6lhG@6O!<<7k_DU&3p6yWN&#W@Vmy1iuoN-_kPHA~O3-qh$>R>2WnU|6p`P+E zJXZ z!takmF~A`S%^T_qLjIt_nsOFZhZD6yS$LjX;IK01teLRjRWQ~N5rH-z>nFC1*MMol zPs?RW3#i;FeW!=6b5icMY%ER(AVN@u`}!H>YZT0WI9>T|N(-h=Phg;j^78?(s-}A+ znm`!lI|;V+FxKZjzb+nQJRvi79EeHH5)G^tI_y+#f52li$@CW37Ogk}{HU0PvgjBK zFx=c~kY6}L5Wn@%b#qo^=#va~t4?fYP^%r#GQkSxq$PStu&|Fn$ZTx2VxS&Y>S0@Xi1wWM^$Zt%?n0Y2T{j(;v)zkkjbFHIW%PsM|N~1 zF4?TJMivL0L`5?!S~&wROdxECE^}JbOWC+pfItui`x5kP3XH<68T@px)F6`(wx^t; z2LalQPR5>zgQy3d!Q5wf7iK(+9~>w!bmc^^99#=*jxZ0v=!T)r`DIWJ+#NV{aXNrp z9m;X8Ejf)iS0b*?sm3rmK;OXkbNlrFJn#x-;AQR!ZOL)K=WdiM)6oegNfd>rluYCX zc}7fF?hM2h0l5n9B5dlAp7AC0F8mdYr7r9l7$0%ybh3RklTMF1O?;Wm64I5#s2*@a zQH?KkT4N(qJr;=!YM2cge6AiiT`2jxB3hff5cVVt2l^kDLew4aq24(4 z(6cmpDtC3RX8-?3US36BYgKLKkrTTsHdkycUw{0CvS*GxaqRKZ$4Y*7^x@(Mi+@t| zqa*hh{-EId1>ZmXz5MSU`u3r39lZCzJqPaDf6qSr?7e3Xes<$$*WJ7B-g)=VZ+y)i zde4h_d0%(Z|NaA`CCp5nYJo%#K1e)(9l&5dK=VayJF!Sa-CdP6SB-sR)4 z@C_#^v!F%R85_*_PQtg{+l$@N!lOS?4@(#ZnIjWM)I8_k_H)GbxY7Z5vQWvhx zxb$MN44Fd!&j|Zy>4|*@+jjUw zH7gnm4>h}&E-j>3Tm$4_;E1xD-t_t)}qMXo@9S9S<~I4eHp+d7vyd z^VP^)9Er0gDX+4iKsx%yTPrSJd8>knhf|zI%Hvg4^8IIDTlA@$c`8RN8|h`#qSmS! zscU?BA>}g5WO@>W1}>ttqLNP!ojsGKb$XyiS{$*Mj|BFt*qQ}12di&xCjF_bn*d6x z*cYMofZfrVd*dh&tn?P}IQlv6(`iOj(`1Q{IF3GlfEYktnnNujdVL7;glEm%8}aF@ z%B8NM2_)+gYO@2N8f@vKFGx4Mo!- zQr?PWXr4Z?dV16W@+1@M;-aWg{iEMIz`g#^`G{jL@ zyO6Wu4@a4u^NAA=uh)&ATgf_fQuvBO4no*0BzogorR0j z)%)w{0T4@adb!2riznR5ZGW{+I`{7TYf-C2sA7F&^}hP>+EUtKQ6V9L3Zzm|H!Xkk zk(TtiwXp!H(vrO{mZh{(CEeGjDmW;Lub!KWQYxvQ!Uv?hu1W6#U=U?8n`o9q1#!d? zaw+Aea+yLRDVrW09bn{Ak+yemB5D>&RU#>qn4Ih*kvPs+dB@uvK66uBNYK1S z5$Wq~+)%)tzj-EQ+3~F%?i+8MiCZLK6AG{ZfWhwRaIxAJo*8U5VTVPj19OZkn)Hje zzF6g6IJ=N!;o&r?5F_5l>Xh(o;5iu_9Ennhw}bun#xLKUa~pX=J>v^njvo=a)BWi8 z4!KlCdJs?&gq4ew7Ueg0MCO+UoqCm#={<4(OU#8ktCUKv??vj8{J`E8-~8F>FsV`i zuZi>x_m&-uhYb%0A}lV)1<0iL3`ryI8(Fr2-!a| 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

  • UeC8pAJ;Et_r$n< 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\t{6^4EN0nO~CPge8$++Gr9?ty;26h|yNDb*-+c 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

    `0|~=iXG`EC^AlMKbv-hYFt^O=i#SCHtt> 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�&9FTx*x<%w`jU$UkqndecWZ@)y_6$Kj} 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

    X@XMH*Gf$QD#wwx6~i<+Us47{5px#IIq4l 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⁣KatI{?*uYdb4NgduH+-DCeqBew0IuhD#FqjGA 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 z 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

    l}PLEd;!&W`N2c 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

    ZNvSmW7X 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 z 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

    cOCQeVZ5C&3cR>q(RuKMl~ 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

    |}F|Br&L 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 z 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�!cnTIX2o)eH)Mz0*thF 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ʩjGzKJ6O@FZxZtoa>f3-{#G{!EohtgU-X+=N@r>Q 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�! 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Π?M^yfm>lh9r1N8ldz6p-6W>r92_IL9%3dg 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 +#include +#include +//#include "dosbox.h" +#include "dbopl.h" + +#ifdef _MSC_VER +#define inline __inline +#endif + +#define GCC_UNLIKELY(x) x + +#define TRUE 1 +#define FALSE 0 + +#ifndef PI +#define PI 3.14159265358979323846 +#endif + +#define OPLRATE ((double)(14318180.0 / 288.0)) +#define TREMOLO_TABLE 52 + +//Try to use most precision for frequencies +//Else try to keep different waves in synch +//#define WAVE_PRECISION 1 +#ifndef WAVE_PRECISION +//Wave bits available in the top of the 32bit range +//Original adlib uses 10.10, we use 10.22 +#define WAVE_BITS 10 +#else +//Need some extra bits at the top to have room for octaves and frequency multiplier +//We support to 8 times lower rate +//128 * 15 * 8 = 15350, 2^13.9, so need 14 bits +#define WAVE_BITS 14 +#endif +#define WAVE_SH ( 32 - WAVE_BITS ) +#define WAVE_MASK ( ( 1 << WAVE_SH ) - 1 ) + +//Use the same accuracy as the waves +#define LFO_SH ( WAVE_SH - 10 ) +//LFO is controlled by our tremolo 256 sample limit +#define LFO_MAX ( 256 << ( LFO_SH ) ) + + +//Maximum amount of attenuation bits +//Envelope goes to 511, 9 bits +#if (DBOPL_WAVE == WAVE_TABLEMUL ) +//Uses the value directly +#define ENV_BITS ( 9 ) +#else +//Add 3 bits here for more accuracy and would have to be shifted up either way +#define ENV_BITS ( 9 ) +#endif +//Limits of the envelope with those bits and when the envelope goes silent +#define ENV_MIN 0 +#define ENV_EXTRA ( ENV_BITS - 9 ) +#define ENV_MAX ( 511 << ENV_EXTRA ) +#define ENV_LIMIT ( ( 12 * 256) >> ( 3 - ENV_EXTRA ) ) +#define ENV_SILENT( _X_ ) ( (_X_) >= ENV_LIMIT ) + +//Attack/decay/release rate counter shift +#define RATE_SH 24 +#define RATE_MASK ( ( 1 << RATE_SH ) - 1 ) +//Has to fit within 16bit lookuptable +#define MUL_SH 16 + +//Check some ranges +#if ENV_EXTRA > 3 +#error Too many envelope bits +#endif + +static inline void Operator__SetState(Operator *self, Bit8u s ); +static inline Bit32u Chip__ForwardNoise(Chip *self); + +// C++'s template<> sure is useful sometimes. + +static Channel* Channel__BlockTemplate(Channel *self, Chip* chip, + Bit32u samples, Bit32s* output, + SynthMode mode ); +#define BLOCK_TEMPLATE(mode) \ + static Channel* Channel__BlockTemplate_ ## mode(Channel *self, Chip* chip, \ + Bit32u samples, Bit32s* output) \ + { \ + return Channel__BlockTemplate(self, chip, samples, output, mode); \ + } + +BLOCK_TEMPLATE(sm2AM) +BLOCK_TEMPLATE(sm2FM) +BLOCK_TEMPLATE(sm3AM) +BLOCK_TEMPLATE(sm3FM) +BLOCK_TEMPLATE(sm3FMFM) +BLOCK_TEMPLATE(sm3AMFM) +BLOCK_TEMPLATE(sm3FMAM) +BLOCK_TEMPLATE(sm3AMAM) +BLOCK_TEMPLATE(sm2Percussion) +BLOCK_TEMPLATE(sm3Percussion) + +//How much to substract from the base value for the final attenuation +static const Bit8u KslCreateTable[16] = { + //0 will always be be lower than 7 * 8 + 64, 32, 24, 19, + 16, 12, 11, 10, + 8, 6, 5, 4, + 3, 2, 1, 0, +}; + +#define M(_X_) ((Bit8u)( (_X_) * 2)) +static const Bit8u FreqCreateTable[16] = { + M(0.5), M(1 ), M(2 ), M(3 ), M(4 ), M(5 ), M(6 ), M(7 ), + M(8 ), M(9 ), M(10), M(10), M(12), M(12), M(15), M(15) +}; +#undef M + +//We're not including the highest attack rate, that gets a special value +static const Bit8u AttackSamplesTable[13] = { + 69, 55, 46, 40, + 35, 29, 23, 20, + 19, 15, 11, 10, + 9 +}; +//On a real opl these values take 8 samples to reach and are based upon larger tables +static const Bit8u EnvelopeIncreaseTable[13] = { + 4, 5, 6, 7, + 8, 10, 12, 14, + 16, 20, 24, 28, + 32, +}; + +#if ( DBOPL_WAVE == WAVE_HANDLER ) || ( DBOPL_WAVE == WAVE_TABLELOG ) +static Bit16u ExpTable[ 256 ]; +#endif + +#if ( DBOPL_WAVE == WAVE_HANDLER ) +//PI table used by WAVEHANDLER +static Bit16u SinTable[ 512 ]; +#endif + +#if ( DBOPL_WAVE > WAVE_HANDLER ) +//Layout of the waveform table in 512 entry intervals +//With overlapping waves we reduce the table to half it's size + +// | |//\\|____|WAV7|//__|/\ |____|/\/\| +// |\\//| | |WAV7| | \/| | | +// |06 |0126|17 |7 |3 |4 |4 5 |5 | + +//6 is just 0 shifted and masked + +static Bit16s WaveTable[ 8 * 512 ]; +//Distance into WaveTable the wave starts +static const Bit16u WaveBaseTable[8] = { + 0x000, 0x200, 0x200, 0x800, + 0xa00, 0xc00, 0x100, 0x400, + +}; +//Mask the counter with this +static const Bit16u WaveMaskTable[8] = { + 1023, 1023, 511, 511, + 1023, 1023, 512, 1023, +}; + +//Where to start the counter on at keyon +static const Bit16u WaveStartTable[8] = { + 512, 0, 0, 0, + 0, 512, 512, 256, +}; +#endif + +#if ( DBOPL_WAVE == WAVE_TABLEMUL ) +static Bit16u MulTable[ 384 ]; +#endif + +static Bit8u KslTable[ 8 * 16 ]; +static Bit8u TremoloTable[ TREMOLO_TABLE ]; +//Start of a channel behind the chip struct start +static Bit16u ChanOffsetTable[32]; +//Start of an operator behind the chip struct start +static Bit16u OpOffsetTable[64]; + +//The lower bits are the shift of the operator vibrato value +//The highest bit is right shifted to generate -1 or 0 for negation +//So taking the highest input value of 7 this gives 3, 7, 3, 0, -3, -7, -3, 0 +static const Bit8s VibratoTable[ 8 ] = { + 1 - 0x00, 0 - 0x00, 1 - 0x00, 30 - 0x00, + 1 - 0x80, 0 - 0x80, 1 - 0x80, 30 - 0x80 +}; + +//Shift strength for the ksl value determined by ksl strength +static const Bit8u KslShiftTable[4] = { + 31,1,2,0 +}; + +//Generate a table index and table shift value using input value from a selected rate +static void EnvelopeSelect( Bit8u val, Bit8u *index, Bit8u *shift ) { + if ( val < 13 * 4 ) { //Rate 0 - 12 + *shift = 12 - ( val >> 2 ); + *index = val & 3; + } else if ( val < 15 * 4 ) { //rate 13 - 14 + *shift = 0; + *index = val - 12 * 4; + } else { //rate 15 and up + *shift = 0; + *index = 12; + } +} + +#if ( DBOPL_WAVE == WAVE_HANDLER ) +/* + Generate the different waveforms out of the sine/exponetial table using handlers +*/ +static inline Bits MakeVolume( Bitu wave, Bitu volume ) { + Bitu total = wave + volume; + Bitu index = total & 0xff; + Bitu sig = ExpTable[ index ]; + Bitu exp = total >> 8; +#if 0 + //Check if we overflow the 31 shift limit + if ( exp >= 32 ) { + LOG_MSG( "WTF %d %d", total, exp ); + } +#endif + return (sig >> exp); +}; + +static Bits DB_FASTCALL WaveForm0( Bitu i, Bitu volume ) { + Bits neg = 0 - (( i >> 9) & 1);//Create ~0 or 0 + Bitu wave = SinTable[i & 511]; + return (MakeVolume( wave, volume ) ^ neg) - neg; +} +static Bits DB_FASTCALL WaveForm1( Bitu i, Bitu volume ) { + Bit32u wave = SinTable[i & 511]; + wave |= ( ( (i ^ 512 ) & 512) - 1) >> ( 32 - 12 ); + return MakeVolume( wave, volume ); +} +static Bits DB_FASTCALL WaveForm2( Bitu i, Bitu volume ) { + Bitu wave = SinTable[i & 511]; + return MakeVolume( wave, volume ); +} +static Bits DB_FASTCALL WaveForm3( Bitu i, Bitu volume ) { + Bitu wave = SinTable[i & 255]; + wave |= ( ( (i ^ 256 ) & 256) - 1) >> ( 32 - 12 ); + return MakeVolume( wave, volume ); +} +static Bits DB_FASTCALL WaveForm4( Bitu i, Bitu volume ) { + //Twice as fast + i <<= 1; + Bits neg = 0 - (( i >> 9) & 1);//Create ~0 or 0 + Bitu wave = SinTable[i & 511]; + wave |= ( ( (i ^ 512 ) & 512) - 1) >> ( 32 - 12 ); + return (MakeVolume( wave, volume ) ^ neg) - neg; +} +static Bits DB_FASTCALL WaveForm5( Bitu i, Bitu volume ) { + //Twice as fast + i <<= 1; + Bitu wave = SinTable[i & 511]; + wave |= ( ( (i ^ 512 ) & 512) - 1) >> ( 32 - 12 ); + return MakeVolume( wave, volume ); +} +static Bits DB_FASTCALL WaveForm6( Bitu i, Bitu volume ) { + Bits neg = 0 - (( i >> 9) & 1);//Create ~0 or 0 + return (MakeVolume( 0, volume ) ^ neg) - neg; +} +static Bits DB_FASTCALL WaveForm7( Bitu i, Bitu volume ) { + //Negative is reversed here + Bits neg = (( i >> 9) & 1) - 1; + Bitu wave = (i << 3); + //When negative the volume also runs backwards + wave = ((wave ^ neg) - neg) & 4095; + return (MakeVolume( wave, volume ) ^ neg) - neg; +} + +static const WaveHandler WaveHandlerTable[8] = { + WaveForm0, WaveForm1, WaveForm2, WaveForm3, + WaveForm4, WaveForm5, WaveForm6, WaveForm7 +}; + +#endif + +/* + Operator +*/ + +//We zero out when rate == 0 +static inline void Operator__UpdateAttack(Operator *self, const Chip* chip ) { + Bit8u rate = self->reg60 >> 4; + if ( rate ) { + Bit8u val = (rate << 2) + self->ksr; + self->attackAdd = chip->attackRates[ val ]; + self->rateZero &= ~(1 << ATTACK); + } else { + self->attackAdd = 0; + self->rateZero |= (1 << ATTACK); + } +} +static inline void Operator__UpdateDecay(Operator *self, const Chip* chip ) { + Bit8u rate = self->reg60 & 0xf; + if ( rate ) { + Bit8u val = (rate << 2) + self->ksr; + self->decayAdd = chip->linearRates[ val ]; + self->rateZero &= ~(1 << DECAY); + } else { + self->decayAdd = 0; + self->rateZero |= (1 << DECAY); + } +} +static inline void Operator__UpdateRelease(Operator *self, const Chip* chip ) { + Bit8u rate = self->reg80 & 0xf; + if ( rate ) { + Bit8u val = (rate << 2) + self->ksr; + self->releaseAdd = chip->linearRates[ val ]; + self->rateZero &= ~(1 << RELEASE); + if ( !(self->reg20 & MASK_SUSTAIN ) ) { + self->rateZero &= ~( 1 << SUSTAIN ); + } + } else { + self->rateZero |= (1 << RELEASE); + self->releaseAdd = 0; + if ( !(self->reg20 & MASK_SUSTAIN ) ) { + self->rateZero |= ( 1 << SUSTAIN ); + } + } +} + +static inline void Operator__UpdateAttenuation(Operator *self) { + Bit8u kslBase = (Bit8u)((self->chanData >> SHIFT_KSLBASE) & 0xff); + Bit32u tl = self->reg40 & 0x3f; + Bit8u kslShift = KslShiftTable[ self->reg40 >> 6 ]; + //Make sure the attenuation goes to the right bits + self->totalLevel = tl << ( ENV_BITS - 7 ); //Total level goes 2 bits below max + self->totalLevel += ( kslBase << ENV_EXTRA ) >> kslShift; +} + +static void Operator__UpdateFrequency(Operator *self) { + Bit32u freq = self->chanData & (( 1 << 10 ) - 1); + Bit32u block = (self->chanData >> 10) & 0xff; +#ifdef WAVE_PRECISION + block = 7 - block; + self->waveAdd = ( freq * self->freqMul ) >> block; +#else + self->waveAdd = ( freq << block ) * self->freqMul; +#endif + if ( self->reg20 & MASK_VIBRATO ) { + self->vibStrength = (Bit8u)(freq >> 7); + +#ifdef WAVE_PRECISION + self->vibrato = ( self->vibStrength * self->freqMul ) >> block; +#else + self->vibrato = ( self->vibStrength << block ) * self->freqMul; +#endif + } else { + self->vibStrength = 0; + self->vibrato = 0; + } +} + +static void Operator__UpdateRates(Operator *self, const Chip* chip ) { + //Mame seems to reverse this where enabling ksr actually lowers + //the rate, but pdf manuals says otherwise? + Bit8u newKsr = (Bit8u)((self->chanData >> SHIFT_KEYCODE) & 0xff); + if ( !( self->reg20 & MASK_KSR ) ) { + newKsr >>= 2; + } + if ( self->ksr == newKsr ) + return; + self->ksr = newKsr; + Operator__UpdateAttack( self, chip ); + Operator__UpdateDecay( self, chip ); + Operator__UpdateRelease( self, chip ); +} + +static inline Bit32s Operator__RateForward(Operator *self, Bit32u add ) { + Bit32s ret; + self->rateIndex += add; + /*Bit32s*/ ret = self->rateIndex >> RATE_SH; + self->rateIndex = self->rateIndex & RATE_MASK; + return ret; +} + +static Bits Operator__TemplateVolume(Operator *self, OperatorState yes) { + Bit32s vol = self->volume; + Bit32s change; + switch ( yes ) { + case OFF: + return ENV_MAX; + case ATTACK: + change = Operator__RateForward( self, self->attackAdd ); + if ( !change ) + return vol; + vol += ( (~vol) * change ) >> 3; + if ( vol < ENV_MIN ) { + self->volume = ENV_MIN; + self->rateIndex = 0; + Operator__SetState( self, DECAY ); + return ENV_MIN; + } + break; + case DECAY: + vol += Operator__RateForward( self, self->decayAdd ); + if ( GCC_UNLIKELY(vol >= self->sustainLevel) ) { + //Check if we didn't overshoot max attenuation, then just go off + if ( GCC_UNLIKELY(vol >= ENV_MAX) ) { + self->volume = ENV_MAX; + Operator__SetState( self, OFF ); + return ENV_MAX; + } + //Continue as sustain + self->rateIndex = 0; + Operator__SetState( self, SUSTAIN ); + } + break; + case SUSTAIN: + if ( self->reg20 & MASK_SUSTAIN ) { + return vol; + } + /* fallthrough */ + //In sustain phase, but not sustaining, do regular release + case RELEASE: + vol += Operator__RateForward( self, self->releaseAdd );; + if ( GCC_UNLIKELY(vol >= ENV_MAX) ) { + self->volume = ENV_MAX; + Operator__SetState( self, OFF ); + return ENV_MAX; + } + break; + } + self->volume = vol; + return vol; +} + +#define TEMPLATE_VOLUME(mode) \ + static Bits Operator__TemplateVolume ## mode(Operator *self) \ + { \ + return Operator__TemplateVolume(self, mode); \ + } + +TEMPLATE_VOLUME(OFF) +TEMPLATE_VOLUME(RELEASE) +TEMPLATE_VOLUME(SUSTAIN) +TEMPLATE_VOLUME(ATTACK) +TEMPLATE_VOLUME(DECAY) + +static const VolumeHandler VolumeHandlerTable[5] = { + &Operator__TemplateVolumeOFF, + &Operator__TemplateVolumeRELEASE, + &Operator__TemplateVolumeSUSTAIN, + &Operator__TemplateVolumeDECAY, + &Operator__TemplateVolumeATTACK, +}; + +static inline Bitu Operator__ForwardVolume(Operator *self) { + return self->currentLevel + (self->volHandler)(self); +} + + +static inline Bitu Operator__ForwardWave(Operator *self) { + self->waveIndex += self->waveCurrent; + return self->waveIndex >> WAVE_SH; +} + +static void Operator__Write20(Operator *self, const Chip* chip, Bit8u val ) { + Bit8u change = (self->reg20 ^ val ); + if ( !change ) + return; + self->reg20 = val; + //Shift the tremolo bit over the entire register, saved a branch, YES! + self->tremoloMask = (Bit8s)(val) >> 7; + self->tremoloMask &= ~(( 1 << ENV_EXTRA ) -1); + //Update specific features based on changes + if ( change & MASK_KSR ) { + Operator__UpdateRates( self, chip ); + } + //With sustain enable the volume doesn't change + if ( self->reg20 & MASK_SUSTAIN || ( !self->releaseAdd ) ) { + self->rateZero |= ( 1 << SUSTAIN ); + } else { + self->rateZero &= ~( 1 << SUSTAIN ); + } + //Frequency multiplier or vibrato changed + if ( change & (0xf | MASK_VIBRATO) ) { + self->freqMul = chip->freqMul[ val & 0xf ]; + Operator__UpdateFrequency(self); + } +} + +static void Operator__Write40(Operator *self, const Chip *chip, Bit8u val ) { + if (!(self->reg40 ^ val )) + return; + self->reg40 = val; + Operator__UpdateAttenuation( self ); +} + +static void Operator__Write60(Operator *self, const Chip* chip, Bit8u val ) { + Bit8u change = self->reg60 ^ val; + self->reg60 = val; + if ( change & 0x0f ) { + Operator__UpdateDecay( self, chip ); + } + if ( change & 0xf0 ) { + Operator__UpdateAttack( self, chip ); + } +} + +static void Operator__Write80(Operator *self, const Chip* chip, Bit8u val ) { + Bit8u change = (self->reg80 ^ val ); + Bit8u sustain; + if ( !change ) + return; + self->reg80 = val; + sustain = val >> 4; + //Turn 0xf into 0x1f + sustain |= ( sustain + 1) & 0x10; + self->sustainLevel = sustain << ( ENV_BITS - 5 ); + if ( change & 0x0f ) { + Operator__UpdateRelease( self, chip ); + } +} + +static void Operator__WriteE0(Operator *self, const Chip* chip, Bit8u val ) { + Bit8u waveForm; + if ( !(self->regE0 ^ val) ) + return; + //in opl3 mode you can always selet 7 waveforms regardless of waveformselect + waveForm = val & ( ( 0x3 & chip->waveFormMask ) | (0x7 & chip->opl3Active ) ); + self->regE0 = val; +#if( DBOPL_WAVE == WAVE_HANDLER ) + self->waveHandler = WaveHandlerTable[ waveForm ]; +#else + self->waveBase = WaveTable + WaveBaseTable[ waveForm ]; + self->waveStart = WaveStartTable[ waveForm ] << WAVE_SH; + self->waveMask = WaveMaskTable[ waveForm ]; +#endif +} + +static inline void Operator__SetState(Operator *self, Bit8u s ) { + self->state = s; + self->volHandler = VolumeHandlerTable[ s ]; +} + +static inline int Operator__Silent(Operator *self) { + if ( !ENV_SILENT( self->totalLevel + self->volume ) ) + return FALSE; + if ( !(self->rateZero & ( 1 << self->state ) ) ) + return FALSE; + return TRUE; +} + +static inline void Operator__Prepare(Operator *self, const Chip* chip ) { + self->currentLevel = self->totalLevel + (chip->tremoloValue & self->tremoloMask); + self->waveCurrent = self->waveAdd; + if ( self->vibStrength >> chip->vibratoShift ) { + Bit32s add = self->vibrato >> chip->vibratoShift; + //Sign extend over the shift value + Bit32s neg = chip->vibratoSign; + //Negate the add with -1 or 0 + add = ( add ^ neg ) - neg; + self->waveCurrent += add; + } +} + +static void Operator__KeyOn(Operator *self, Bit8u mask ) { + if ( !self->keyOn ) { + //Restart the frequency generator +#if( DBOPL_WAVE > WAVE_HANDLER ) + self->waveIndex = self->waveStart; +#else + self->waveIndex = 0; +#endif + self->rateIndex = 0; + Operator__SetState( self, ATTACK ); + } + self->keyOn |= mask; +} + +static void Operator__KeyOff(Operator *self, Bit8u mask ) { + self->keyOn &= ~mask; + if ( !self->keyOn ) { + if ( self->state != OFF ) { + Operator__SetState( self, RELEASE ); + } + } +} + +static inline Bits Operator__GetWave(Operator *self, Bitu index, Bitu vol ) { +#if( DBOPL_WAVE == WAVE_HANDLER ) + return self->waveHandler( index, vol << ( 3 - ENV_EXTRA ) ); +#elif( DBOPL_WAVE == WAVE_TABLEMUL ) + return(self->waveBase[ index & self->waveMask ] * MulTable[ vol >> ENV_EXTRA ]) >> MUL_SH; +#elif( DBOPL_WAVE == WAVE_TABLELOG ) + Bit32s wave = self->waveBase[ index & self->waveMask ]; + Bit32u total = ( wave & 0x7fff ) + vol << ( 3 - ENV_EXTRA ); + Bit32s sig = ExpTable[ total & 0xff ]; + Bit32u exp = total >> 8; + Bit32s neg = wave >> 16; + return((sig ^ neg) - neg) >> exp; +#else +#error "No valid wave routine" +#endif +} + +static inline Bits Operator__GetSample(Operator *self, Bits modulation ) { + Bitu vol = Operator__ForwardVolume(self); + if ( ENV_SILENT( vol ) ) { + //Simply forward the wave + self->waveIndex += self->waveCurrent; + return 0; + } else { + Bitu index = Operator__ForwardWave(self); + index += modulation; + return Operator__GetWave( self, index, vol ); + } +} + +static void Operator__Operator(Operator *self) { + self->chanData = 0; + self->freqMul = 0; + self->waveIndex = 0; + self->waveAdd = 0; + self->waveCurrent = 0; + self->keyOn = 0; + self->ksr = 0; + self->reg20 = 0; + self->reg40 = 0; + self->reg60 = 0; + self->reg80 = 0; + self->regE0 = 0; + Operator__SetState( self, OFF ); + self->rateZero = (1 << OFF); + self->sustainLevel = ENV_MAX; + self->currentLevel = ENV_MAX; + self->totalLevel = ENV_MAX; + self->volume = ENV_MAX; + self->releaseAdd = 0; +} + +/* + Channel +*/ + +static void Channel__Channel(Channel *self) { + Operator__Operator(&self->op[0]); + Operator__Operator(&self->op[1]); + self->old[0] = self->old[1] = 0; + self->chanData = 0; + self->regB0 = 0; + self->regC0 = 0; + self->maskLeft = -1; + self->maskRight = -1; + self->feedback = 31; + self->fourMask = 0; + self->synthHandler = Channel__BlockTemplate_sm2FM; +}; + +static inline Operator* Channel__Op( Channel *self, Bitu index ) { + return &( ( self + (index >> 1) )->op[ index & 1 ]); +} + +static void Channel__SetChanData(Channel *self, const Chip* chip, Bit32u data ) { + Bit32u change = self->chanData ^ data; + self->chanData = data; + Channel__Op( self, 0 )->chanData = data; + Channel__Op( self, 1 )->chanData = data; + //Since a frequency update triggered this, always update frequency + Operator__UpdateFrequency(Channel__Op( self, 0 )); + Operator__UpdateFrequency(Channel__Op( self, 1 )); + if ( change & ( 0xff << SHIFT_KSLBASE ) ) { + Operator__UpdateAttenuation(Channel__Op( self, 0 )); + Operator__UpdateAttenuation(Channel__Op( self, 1 )); + } + if ( change & ( 0xff << SHIFT_KEYCODE ) ) { + Operator__UpdateRates(Channel__Op( self, 0 ), chip); + Operator__UpdateRates(Channel__Op( self, 1 ), chip); + } +} + +static void Channel__UpdateFrequency(Channel *self, const Chip* chip, Bit8u fourOp ) { + //Extrace the frequency bits + Bit32u data = self->chanData & 0xffff; + Bit32u kslBase = KslTable[ data >> 6 ]; + Bit32u keyCode = ( data & 0x1c00) >> 9; + if ( chip->reg08 & 0x40 ) { + keyCode |= ( data & 0x100)>>8; /* notesel == 1 */ + } else { + keyCode |= ( data & 0x200)>>9; /* notesel == 0 */ + } + //Add the keycode and ksl into the highest bits of chanData + data |= (keyCode << SHIFT_KEYCODE) | ( kslBase << SHIFT_KSLBASE ); + Channel__SetChanData( self + 0, chip, data ); + if ( fourOp & 0x3f ) { + Channel__SetChanData( self + 1, chip, data ); + } +} + +static void Channel__WriteA0(Channel *self, const Chip* chip, Bit8u val ) { + Bit32u change; + Bit8u fourOp = chip->reg104 & chip->opl3Active & self->fourMask; + //Don't handle writes to silent fourop channels + if ( fourOp > 0x80 ) + return; + change = (self->chanData ^ val ) & 0xff; + if ( change ) { + self->chanData ^= change; + Channel__UpdateFrequency( self, chip, fourOp ); + } +} + +static void Channel__WriteB0(Channel *self, const Chip* chip, Bit8u val ) { + Bitu change; + Bit8u fourOp = chip->reg104 & chip->opl3Active & self->fourMask; + //Don't handle writes to silent fourop channels + if ( fourOp > 0x80 ) + return; + change = (self->chanData ^ ( val << 8 ) ) & 0x1f00; + if ( change ) { + self->chanData ^= change; + Channel__UpdateFrequency( self, chip, fourOp ); + } + //Check for a change in the keyon/off state + if ( !(( val ^ self->regB0) & 0x20)) + return; + self->regB0 = val; + if ( val & 0x20 ) { + Operator__KeyOn( Channel__Op(self, 0), 0x1 ); + Operator__KeyOn( Channel__Op(self, 1), 0x1 ); + if ( fourOp & 0x3f ) { + Operator__KeyOn( Channel__Op(self + 1, 0), 1 ); + Operator__KeyOn( Channel__Op(self + 1, 1), 1 ); + } + } else { + Operator__KeyOff( Channel__Op(self, 0), 0x1 ); + Operator__KeyOff( Channel__Op(self, 1), 0x1 ); + if ( fourOp & 0x3f ) { + Operator__KeyOff( Channel__Op(self + 1, 0), 1 ); + Operator__KeyOff( Channel__Op(self + 1, 1), 1 ); + } + } +} + +static void Channel__WriteC0(Channel *self, const Chip* chip, Bit8u val ) { + Bit8u synth; + Bit8u change = val ^ self->regC0; + if ( !change ) + return; + self->regC0 = val; + self->feedback = ( val >> 1 ) & 7; + if ( self->feedback ) { + //We shift the input to the right 10 bit wave index value + self->feedback = 9 - self->feedback; + } else { + self->feedback = 31; + } + //Select the new synth mode + if ( chip->opl3Active ) { + //4-op mode enabled for this channel + if ( (chip->reg104 & self->fourMask) & 0x3f ) { + Channel* chan0, *chan1; + //Check if it's the 2nd channel in a 4-op + if ( !(self->fourMask & 0x80 ) ) { + chan0 = self; + chan1 = self + 1; + } else { + chan0 = self - 1; + chan1 = self; + } + + synth = ( (chan0->regC0 & 1) << 0 )| (( chan1->regC0 & 1) << 1 ); + switch ( synth ) { + case 0: + chan0->synthHandler = Channel__BlockTemplate_sm3FMFM; + break; + case 1: + chan0->synthHandler = Channel__BlockTemplate_sm3AMFM; + break; + case 2: + chan0->synthHandler = Channel__BlockTemplate_sm3FMAM ; + break; + case 3: + chan0->synthHandler = Channel__BlockTemplate_sm3AMAM ; + break; + } + //Disable updating percussion channels + } else if ((self->fourMask & 0x40) && ( chip->regBD & 0x20) ) { + + //Regular dual op, am or fm + } else if ( val & 1 ) { + self->synthHandler = Channel__BlockTemplate_sm3AM; + } else { + self->synthHandler = Channel__BlockTemplate_sm3FM; + } + self->maskLeft = ( val & 0x10 ) ? -1 : 0; + self->maskRight = ( val & 0x20 ) ? -1 : 0; + //opl2 active + } else { + //Disable updating percussion channels + if ( (self->fourMask & 0x40) && ( chip->regBD & 0x20 ) ) { + + //Regular dual op, am or fm + } else if ( val & 1 ) { + self->synthHandler = Channel__BlockTemplate_sm2AM; + } else { + self->synthHandler = Channel__BlockTemplate_sm2FM; + } + } +} + +static void Channel__ResetC0(Channel *self, const Chip* chip ) { + Bit8u val = self->regC0; + self->regC0 ^= 0xff; + Channel__WriteC0( self, chip, val ); +}; + +static inline void Channel__GeneratePercussion(Channel *self, Chip* chip, + Bit32s* output, int opl3Mode ) { + Bit32u noiseBit, c2, c5, phaseBit, hhVol, sdVol, tcVol; + Bit32s sample; + Channel* chan = self; + + //BassDrum + Bit32s mod = (Bit32u)((self->old[0] + self->old[1])) >> self->feedback; + self->old[0] = self->old[1]; + self->old[1] = Operator__GetSample( Channel__Op(self, 0), mod ); + + //When bassdrum is in AM mode first operator is ignoed + if ( chan->regC0 & 1 ) { + mod = 0; + } else { + mod = self->old[0]; + } + sample = Operator__GetSample( Channel__Op(self, 1), mod ); + + //Precalculate stuff used by other outputs + noiseBit = Chip__ForwardNoise(chip) & 0x1; + c2 = Operator__ForwardWave(Channel__Op(self, 2)); + c5 = Operator__ForwardWave(Channel__Op(self, 5)); + phaseBit = (((c2 & 0x88) ^ ((c2<<5) & 0x80)) | ((c5 ^ (c5<<2)) & 0x20)) ? 0x02 : 0x00; + + //Hi-Hat + hhVol = Operator__ForwardVolume(Channel__Op(self, 2)); + if ( !ENV_SILENT( hhVol ) ) { + Bit32u hhIndex = (phaseBit<<8) | (0x34 << ( phaseBit ^ (noiseBit << 1 ))); + sample += Operator__GetWave( Channel__Op(self, 2), hhIndex, hhVol ); + } + //Snare Drum + sdVol = Operator__ForwardVolume( Channel__Op(self, 3) ); + if ( !ENV_SILENT( sdVol ) ) { + Bit32u sdIndex = ( 0x100 + (c2 & 0x100) ) ^ ( noiseBit << 8 ); + sample += Operator__GetWave( Channel__Op(self, 3), sdIndex, sdVol ); + } + //Tom-tom + sample += Operator__GetSample( Channel__Op(self, 4), 0 ); + + //Top-Cymbal + tcVol = Operator__ForwardVolume(Channel__Op(self, 5)); + if ( !ENV_SILENT( tcVol ) ) { + Bit32u tcIndex = (1 + phaseBit) << 8; + sample += Operator__GetWave( Channel__Op(self, 5), tcIndex, tcVol ); + } + sample <<= 1; + if ( opl3Mode ) { + output[0] += sample; + output[1] += sample; + } else { + output[0] += sample; + } +} + +Channel* Channel__BlockTemplate(Channel *self, Chip* chip, + Bit32u samples, Bit32s* output, + SynthMode mode ) { + Bitu i; + + switch( mode ) { + case sm2AM: + case sm3AM: + if ( Operator__Silent(Channel__Op(self, 0)) + && Operator__Silent(Channel__Op(self, 1))) { + self->old[0] = self->old[1] = 0; + return(self + 1); + } + break; + case sm2FM: + case sm3FM: + if ( Operator__Silent(Channel__Op(self, 1))) { + self->old[0] = self->old[1] = 0; + return (self + 1); + } + break; + case sm3FMFM: + if ( Operator__Silent(Channel__Op(self, 3))) { + self->old[0] = self->old[1] = 0; + return (self + 2); + } + break; + case sm3AMFM: + if ( Operator__Silent( Channel__Op(self, 0) ) + && Operator__Silent( Channel__Op(self, 3) )) { + self->old[0] = self->old[1] = 0; + return (self + 2); + } + break; + case sm3FMAM: + if ( Operator__Silent( Channel__Op(self, 1)) + && Operator__Silent( Channel__Op(self, 3))) { + self->old[0] = self->old[1] = 0; + return (self + 2); + } + break; + case sm3AMAM: + if ( Operator__Silent( Channel__Op(self, 0) ) + && Operator__Silent( Channel__Op(self, 2) ) + && Operator__Silent( Channel__Op(self, 3) )) { + self->old[0] = self->old[1] = 0; + return (self + 2); + } + break; + + default: + abort(); + } + //Init the operators with the the current vibrato and tremolo values + Operator__Prepare( Channel__Op( self, 0 ), chip ); + Operator__Prepare( Channel__Op( self, 1 ), chip ); + if ( mode > sm4Start ) { + Operator__Prepare( Channel__Op( self, 2 ), chip ); + Operator__Prepare( Channel__Op( self, 3 ), chip ); + } + if ( mode > sm6Start ) { + Operator__Prepare( Channel__Op( self, 4 ), chip ); + Operator__Prepare( Channel__Op( self, 5 ), chip ); + } + for ( i = 0; i < samples; i++ ) { + Bit32s mod, sample, out0; + Bits next; + //Early out for percussion handlers + if ( mode == sm2Percussion ) { + Channel__GeneratePercussion( self, chip, output + i, FALSE ); + continue; //Prevent some unitialized value bitching + } else if ( mode == sm3Percussion ) { + Channel__GeneratePercussion( self, chip, output + i * 2, TRUE ); + continue; //Prevent some unitialized value bitching + } + + //Do unsigned shift so we can shift out all bits but still stay in 10 bit range otherwise + mod = (Bit32u)((self->old[0] + self->old[1])) >> self->feedback; + self->old[0] = self->old[1]; + self->old[1] = Operator__GetSample( Channel__Op(self, 0), mod ); + sample = 0; + out0 = self->old[0]; + if ( mode == sm2AM || mode == sm3AM ) { + sample = out0 + Operator__GetSample( Channel__Op(self, 1), 0 ); + } else if ( mode == sm2FM || mode == sm3FM ) { + sample = Operator__GetSample( Channel__Op(self, 1), out0 ); + } else if ( mode == sm3FMFM ) { + next = Operator__GetSample( Channel__Op(self, 1), out0 ); + next = Operator__GetSample( Channel__Op(self, 2), next ); + sample = Operator__GetSample( Channel__Op(self, 3), next ); + } else if ( mode == sm3AMFM ) { + sample = out0; + next = Operator__GetSample( Channel__Op(self, 1), 0 ); + next = Operator__GetSample( Channel__Op(self, 2), next ); + sample += Operator__GetSample( Channel__Op(self, 3), next ); + } else if ( mode == sm3FMAM ) { + sample = Operator__GetSample( Channel__Op(self, 1), out0 ); + next = Operator__GetSample( Channel__Op(self, 2), 0 ); + sample += Operator__GetSample( Channel__Op(self, 3), next ); + } else if ( mode == sm3AMAM ) { + sample = out0; + next = Operator__GetSample( Channel__Op(self, 1), 0 ); + sample += Operator__GetSample( Channel__Op(self, 2), next ); + sample += Operator__GetSample( Channel__Op(self, 3), 0 ); + } + switch( mode ) { + case sm2AM: + case sm2FM: + output[ i ] += sample; + break; + case sm3AM: + case sm3FM: + case sm3FMFM: + case sm3AMFM: + case sm3FMAM: + case sm3AMAM: + output[ i * 2 + 0 ] += sample & self->maskLeft; + output[ i * 2 + 1 ] += sample & self->maskRight; + break; + default: + abort(); + } + } + switch( mode ) { + case sm2AM: + case sm2FM: + case sm3AM: + case sm3FM: + return ( self + 1 ); + case sm3FMFM: + case sm3AMFM: + case sm3FMAM: + case sm3AMAM: + return ( self + 2 ); + case sm2Percussion: + case sm3Percussion: + return( self + 3 ); + default: + abort(); + } + return 0; +} + +/* + Chip +*/ + +void Chip__Chip(Chip *self) { + int i; + + for (i=0; i<18; ++i) { + Channel__Channel(&self->chan[i]); + } + + self->reg08 = 0; + self->reg04 = 0; + self->regBD = 0; + self->reg104 = 0; + self->opl3Active = 0; +} + +static inline Bit32u Chip__ForwardNoise(Chip *self) { + Bitu count; + self->noiseCounter += self->noiseAdd; + count = self->noiseCounter >> LFO_SH; + self->noiseCounter &= WAVE_MASK; + for ( ; count > 0; --count ) { + //Noise calculation from mame + self->noiseValue ^= ( 0x800302 ) & ( 0 - (self->noiseValue & 1 ) ); + self->noiseValue >>= 1; + } + return self->noiseValue; +} + +static inline Bit32u Chip__ForwardLFO(Chip *self, Bit32u samples ) { + Bit32u todo, count; + //Current vibrato value, runs 4x slower than tremolo + self->vibratoSign = ( VibratoTable[ self->vibratoIndex >> 2] ) >> 7; + self->vibratoShift = ( VibratoTable[ self->vibratoIndex >> 2] & 7) + self->vibratoStrength; + self->tremoloValue = TremoloTable[ self->tremoloIndex ] >> self->tremoloStrength; + + //Check hom many samples there can be done before the value changes + todo = LFO_MAX - self->lfoCounter; + count = (todo + self->lfoAdd - 1) / self->lfoAdd; + if ( count > samples ) { + count = samples; + self->lfoCounter += count * self->lfoAdd; + } else { + self->lfoCounter += count * self->lfoAdd; + self->lfoCounter &= (LFO_MAX - 1); + //Maximum of 7 vibrato value * 4 + self->vibratoIndex = ( self->vibratoIndex + 1 ) & 31; + //Clip tremolo to the the table size + if ( self->tremoloIndex + 1 < TREMOLO_TABLE ) + ++self->tremoloIndex; + else + self->tremoloIndex = 0; + } + return count; +} + + +static void Chip__WriteBD(Chip *self, Bit8u val ) { + Bit8u change = self->regBD ^ val; + if ( !change ) + return; + self->regBD = val; + //TODO could do this with shift and xor? + self->vibratoStrength = (val & 0x40) ? 0x00 : 0x01; + self->tremoloStrength = (val & 0x80) ? 0x00 : 0x02; + if ( val & 0x20 ) { + //Drum was just enabled, make sure channel 6 has the right synth + if ( change & 0x20 ) { + if ( self->opl3Active ) { + self->chan[6].synthHandler + = Channel__BlockTemplate_sm3Percussion; + } else { + self->chan[6].synthHandler + = Channel__BlockTemplate_sm2Percussion; + } + } + //Bass Drum + if ( val & 0x10 ) { + Operator__KeyOn( &self->chan[6].op[0], 0x2 ); + Operator__KeyOn( &self->chan[6].op[1], 0x2 ); + } else { + Operator__KeyOff( &self->chan[6].op[0], 0x2 ); + Operator__KeyOff( &self->chan[6].op[1], 0x2 ); + } + //Hi-Hat + if ( val & 0x1 ) { + Operator__KeyOn( &self->chan[7].op[0], 0x2 ); + } else { + Operator__KeyOff( &self->chan[7].op[0], 0x2 ); + } + //Snare + if ( val & 0x8 ) { + Operator__KeyOn( &self->chan[7].op[1], 0x2 ); + } else { + Operator__KeyOff( &self->chan[7].op[1], 0x2 ); + } + //Tom-Tom + if ( val & 0x4 ) { + Operator__KeyOn( &self->chan[8].op[0], 0x2 ); + } else { + Operator__KeyOff( &self->chan[8].op[0], 0x2 ); + } + //Top Cymbal + if ( val & 0x2 ) { + Operator__KeyOn( &self->chan[8].op[1], 0x2 ); + } else { + Operator__KeyOff( &self->chan[8].op[1], 0x2 ); + } + //Toggle keyoffs when we turn off the percussion + } else if ( change & 0x20 ) { + //Trigger a reset to setup the original synth handler + Channel__ResetC0( &self->chan[6], self ); + Operator__KeyOff( &self->chan[6].op[0], 0x2 ); + Operator__KeyOff( &self->chan[6].op[1], 0x2 ); + Operator__KeyOff( &self->chan[7].op[0], 0x2 ); + Operator__KeyOff( &self->chan[7].op[1], 0x2 ); + Operator__KeyOff( &self->chan[8].op[0], 0x2 ); + Operator__KeyOff( &self->chan[8].op[1], 0x2 ); + } +} + + +#define REGOP( _FUNC_ ) \ + index = ( ( reg >> 3) & 0x20 ) | ( reg & 0x1f ); \ + if ( OpOffsetTable[ index ] ) { \ + Operator* regOp = (Operator*)( ((char *)self ) + OpOffsetTable[ index ] ); \ + Operator__ ## _FUNC_ (regOp, self, val); \ + } + +#define REGCHAN( _FUNC_ ) \ + index = ( ( reg >> 4) & 0x10 ) | ( reg & 0xf ); \ + if ( ChanOffsetTable[ index ] ) { \ + Channel* regChan = (Channel*)( ((char *)self ) + ChanOffsetTable[ index ] ); \ + Channel__ ## _FUNC_ (regChan, self, val); \ + } + +void Chip__WriteReg(Chip *self, Bit32u reg, Bit8u val ) { + Bitu index; + switch ( (reg & 0xf0) >> 4 ) { + case 0x00 >> 4: + if ( reg == 0x01 ) { + self->waveFormMask = ( val & 0x20 ) ? 0x7 : 0x0; + } else if ( reg == 0x104 ) { + //Only detect changes in lowest 6 bits + if ( !((self->reg104 ^ val) & 0x3f) ) + return; + //Always keep the highest bit enabled, for checking > 0x80 + self->reg104 = 0x80 | ( val & 0x3f ); + } else if ( reg == 0x105 ) { + int i; + + //MAME says the real opl3 doesn't reset anything on opl3 disable/enable till the next write in another register + if ( !((self->opl3Active ^ val) & 1 ) ) + return; + self->opl3Active = ( val & 1 ) ? 0xff : 0; + //Update the 0xc0 register for all channels to signal the switch to mono/stereo handlers + for ( i = 0; i < 18;i++ ) { + Channel__ResetC0( &self->chan[i], self ); + } + } else if ( reg == 0x08 ) { + self->reg08 = val; + } + case 0x10 >> 4: + break; + case 0x20 >> 4: + case 0x30 >> 4: + REGOP( Write20 ); + break; + case 0x40 >> 4: + case 0x50 >> 4: + REGOP( Write40 ); + break; + case 0x60 >> 4: + case 0x70 >> 4: + REGOP( Write60 ); + break; + case 0x80 >> 4: + case 0x90 >> 4: + REGOP( Write80 ); + break; + case 0xa0 >> 4: + REGCHAN( WriteA0 ); + break; + case 0xb0 >> 4: + if ( reg == 0xbd ) { + Chip__WriteBD( self, val ); + } else { + REGCHAN( WriteB0 ); + } + break; + case 0xc0 >> 4: + REGCHAN( WriteC0 ); + case 0xd0 >> 4: + break; + case 0xe0 >> 4: + case 0xf0 >> 4: + REGOP( WriteE0 ); + break; + } +} + +Bit32u Chip__WriteAddr(Chip *self, Bit32u port, Bit8u val ) { + switch ( port & 3 ) { + case 0: + return val; + case 2: + if ( self->opl3Active || (val == 0x05) ) + return 0x100 | val; + else + return val; + } + return 0; +} + +void Chip__GenerateBlock2(Chip *self, Bitu total, Bit32s* output ) { + while ( total > 0 ) { + Channel *ch; + int count; + + Bit32u samples = Chip__ForwardLFO( self, total ); + memset(output, 0, sizeof(Bit32s) * samples); + count = 0; + for ( ch = self->chan; ch < self->chan + 9; ) { + count++; + ch = (ch->synthHandler)( ch, self, samples, output ); + } + total -= samples; + output += samples; + } +} + +void Chip__GenerateBlock3(Chip *self, Bitu total, Bit32s* output ) { + while ( total > 0 ) { + int count; + Channel *ch; + + Bit32u samples = Chip__ForwardLFO( self, total ); + memset(output, 0, sizeof(Bit32s) * samples *2); + count = 0; + for ( ch = self->chan; ch < self->chan + 18; ) { + count++; + ch = (ch->synthHandler)( ch, self, samples, output ); + } + total -= samples; + output += samples * 2; + } +} + +void Chip__Setup(Chip *self, Bit32u rate ) { + double original = OPLRATE; + Bit32u i; +// double original = rate; + double scale = original / (double)rate; + + //Noise counter is run at the same precision as general waves + self->noiseAdd = (Bit32u)( 0.5 + scale * ( 1 << LFO_SH ) ); + self->noiseCounter = 0; + self->noiseValue = 1; //Make sure it triggers the noise xor the first time + //The low frequency oscillation counter + //Every time his overflows vibrato and tremoloindex are increased + self->lfoAdd = (Bit32u)( 0.5 + scale * ( 1 << LFO_SH ) ); + self->lfoCounter = 0; + self->vibratoIndex = 0; + self->tremoloIndex = 0; + + //With higher octave this gets shifted up + //-1 since the freqCreateTable = *2 + { +#ifdef WAVE_PRECISION + double freqScale = ( 1 << 7 ) * scale * ( 1 << ( WAVE_SH - 1 - 10)); + for ( i = 0; i < 16; i++ ) { + self->freqMul[i] = (Bit32u)( 0.5 + freqScale * FreqCreateTable[ i ] ); + } +#else + Bit32u freqScale = (Bit32u)( 0.5 + scale * ( 1 << ( WAVE_SH - 1 - 10))); + for ( i = 0; i < 16; i++ ) { + self->freqMul[i] = freqScale * FreqCreateTable[ i ]; + } +#endif + } + + //-3 since the real envelope takes 8 steps to reach the single value we supply + for ( i = 0; i < 76; i++ ) { + Bit8u index, shift; + EnvelopeSelect( (Bit8u) i, &index, &shift ); + self->linearRates[i] = (Bit32u)( scale * (EnvelopeIncreaseTable[ index ] << ( RATE_SH + ENV_EXTRA - shift - 3 ))); + } + //Generate the best matching attack rate + for ( i = 0; i < 62; i++ ) { + Bit8u index, shift; + Bit32s original, guessAdd, bestAdd, bestDiff; + Bit32u passes; + EnvelopeSelect( (Bit8u) i, &index, &shift ); + //Original amount of samples the attack would take + original = (Bit32u)( (AttackSamplesTable[ index ] << shift) / scale); + + guessAdd = (Bit32u)( scale * (EnvelopeIncreaseTable[ index ] << ( RATE_SH - shift - 3 ))); + bestAdd = guessAdd; + bestDiff = 1 << 30; + + for ( passes = 0; passes < 16; passes ++ ) { + Bit32s diff, lDiff; + Bit32s volume = ENV_MAX; + Bit32s samples = 0; + Bit32u count = 0; + while ( volume > 0 && samples < original * 2 ) { + Bit32s change; + count += guessAdd; + change = count >> RATE_SH; + count &= RATE_MASK; + if ( GCC_UNLIKELY(change) ) { // less than 1 % + volume += ( ~volume * change ) >> 3; + } + samples++; + + } + diff = original - samples; + lDiff = labs( diff ); + //Init last on first pass + if ( lDiff < bestDiff ) { + bestDiff = lDiff; + bestAdd = guessAdd; + if ( !bestDiff ) + break; + } + //Below our target + if ( diff < 0 ) { + //Better than the last time + Bit32s mul = ((original - diff) << 12) / original; + guessAdd = ((guessAdd * mul) >> 12); + guessAdd++; + } else if ( diff > 0 ) { + Bit32s mul = ((original - diff) << 12) / original; + guessAdd = (guessAdd * mul) >> 12; + guessAdd--; + } + } + self->attackRates[i] = bestAdd; + } + for ( i = 62; i < 76; i++ ) { + //This should provide instant volume maximizing + self->attackRates[i] = 8 << RATE_SH; + } + //Setup the channels with the correct four op flags + //Channels are accessed through a table so they appear linear here + self->chan[ 0].fourMask = 0x00 | ( 1 << 0 ); + self->chan[ 1].fourMask = 0x80 | ( 1 << 0 ); + self->chan[ 2].fourMask = 0x00 | ( 1 << 1 ); + self->chan[ 3].fourMask = 0x80 | ( 1 << 1 ); + self->chan[ 4].fourMask = 0x00 | ( 1 << 2 ); + self->chan[ 5].fourMask = 0x80 | ( 1 << 2 ); + + self->chan[ 9].fourMask = 0x00 | ( 1 << 3 ); + self->chan[10].fourMask = 0x80 | ( 1 << 3 ); + self->chan[11].fourMask = 0x00 | ( 1 << 4 ); + self->chan[12].fourMask = 0x80 | ( 1 << 4 ); + self->chan[13].fourMask = 0x00 | ( 1 << 5 ); + self->chan[14].fourMask = 0x80 | ( 1 << 5 ); + + //mark the percussion channels + self->chan[ 6].fourMask = 0x40; + self->chan[ 7].fourMask = 0x40; + self->chan[ 8].fourMask = 0x40; + + //Clear Everything in opl3 mode + Chip__WriteReg( self, 0x105, 0x1 ); + for ( i = 0; i < 512; i++ ) { + if ( i == 0x105 ) + continue; + Chip__WriteReg( self, i, 0xff ); + Chip__WriteReg( self, i, 0x0 ); + } + Chip__WriteReg( self, 0x105, 0x0 ); + //Clear everything in opl2 mode + for ( i = 0; i < 255; i++ ) { + Chip__WriteReg( self, i, 0xff ); + Chip__WriteReg( self, i, 0x0 ); + } +} + +static int doneTables = FALSE; +void DBOPL_InitTables( void ) { + int i, oct; + Chip *chip = NULL; + + if ( doneTables ) + return; + doneTables = TRUE; +#if ( DBOPL_WAVE == WAVE_HANDLER ) || ( DBOPL_WAVE == WAVE_TABLELOG ) + //Exponential volume table, same as the real adlib + for ( i = 0; i < 256; i++ ) { + //Save them in reverse + ExpTable[i] = (int)( 0.5 + ( pow(2.0, ( 255 - i) * ( 1.0 /256 ) )-1) * 1024 ); + ExpTable[i] += 1024; //or remove the -1 oh well :) + //Preshift to the left once so the final volume can shift to the right + ExpTable[i] *= 2; + } +#endif +#if ( DBOPL_WAVE == WAVE_HANDLER ) + //Add 0.5 for the trunc rounding of the integer cast + //Do a PI sinetable instead of the original 0.5 PI + for ( i = 0; i < 512; i++ ) { + SinTable[i] = (Bit16s)( 0.5 - log10( sin( (i + 0.5) * (PI / 512.0) ) ) / log10(2.0)*256 ); + } +#endif +#if ( DBOPL_WAVE == WAVE_TABLEMUL ) + //Multiplication based tables + for ( i = 0; i < 384; i++ ) { + int s = i * 8; + //TODO maybe keep some of the precision errors of the original table? + double val = ( 0.5 + ( pow(2.0, -1.0 + ( 255 - s) * ( 1.0 /256 ) )) * ( 1 << MUL_SH )); + MulTable[i] = (Bit16u)(val); + } + + //Sine Wave Base + for ( i = 0; i < 512; i++ ) { + WaveTable[ 0x0200 + i ] = (Bit16s)(sin( (i + 0.5) * (PI / 512.0) ) * 4084); + WaveTable[ 0x0000 + i ] = -WaveTable[ 0x200 + i ]; + } + //Exponential wave + for ( i = 0; i < 256; i++ ) { + WaveTable[ 0x700 + i ] = (Bit16s)( 0.5 + ( pow(2.0, -1.0 + ( 255 - i * 8) * ( 1.0 /256 ) ) ) * 4085 ); + WaveTable[ 0x6ff - i ] = -WaveTable[ 0x700 + i ]; + } +#endif +#if ( DBOPL_WAVE == WAVE_TABLELOG ) + //Sine Wave Base + for ( i = 0; i < 512; i++ ) { + WaveTable[ 0x0200 + i ] = (Bit16s)( 0.5 - log10( sin( (i + 0.5) * (PI / 512.0) ) ) / log10(2.0)*256 ); + WaveTable[ 0x0000 + i ] = ((Bit16s)0x8000) | WaveTable[ 0x200 + i]; + } + //Exponential wave + for ( i = 0; i < 256; i++ ) { + WaveTable[ 0x700 + i ] = i * 8; + WaveTable[ 0x6ff - i ] = ((Bit16s)0x8000) | i * 8; + } +#endif + + // | |//\\|____|WAV7|//__|/\ |____|/\/\| + // |\\//| | |WAV7| | \/| | | + // |06 |0126|27 |7 |3 |4 |4 5 |5 | + +#if (( DBOPL_WAVE == WAVE_TABLELOG ) || ( DBOPL_WAVE == WAVE_TABLEMUL )) + for ( i = 0; i < 256; i++ ) { + //Fill silence gaps + WaveTable[ 0x400 + i ] = WaveTable[0]; + WaveTable[ 0x500 + i ] = WaveTable[0]; + WaveTable[ 0x900 + i ] = WaveTable[0]; + WaveTable[ 0xc00 + i ] = WaveTable[0]; + WaveTable[ 0xd00 + i ] = WaveTable[0]; + //Replicate sines in other pieces + WaveTable[ 0x800 + i ] = WaveTable[ 0x200 + i ]; + //double speed sines + WaveTable[ 0xa00 + i ] = WaveTable[ 0x200 + i * 2 ]; + WaveTable[ 0xb00 + i ] = WaveTable[ 0x000 + i * 2 ]; + WaveTable[ 0xe00 + i ] = WaveTable[ 0x200 + i * 2 ]; + WaveTable[ 0xf00 + i ] = WaveTable[ 0x200 + i * 2 ]; + } +#endif + + //Create the ksl table + for ( oct = 0; oct < 8; oct++ ) { + int base = oct * 8; + for ( i = 0; i < 16; i++ ) { + int val = base - KslCreateTable[i]; + if ( val < 0 ) + val = 0; + //*4 for the final range to match attenuation range + KslTable[ oct * 16 + i ] = val * 4; + } + } + //Create the Tremolo table, just increase and decrease a triangle wave + for ( i = 0; i < TREMOLO_TABLE / 2; i++ ) { + Bit8u val = i << ENV_EXTRA; + TremoloTable[i] = val; + TremoloTable[TREMOLO_TABLE - 1 - i] = val; + } + //Create a table with offsets of the channels from the start of the chip + for ( i = 0; i < 32; i++ ) { + Bitu blah; + Bitu index = i & 0xf; + if ( index >= 9 ) { + ChanOffsetTable[i] = 0; + continue; + } + //Make sure the four op channels follow eachother + if ( index < 6 ) { + index = (index % 3) * 2 + ( index / 3 ); + } + //Add back the bits for highest ones + if ( i >= 16 ) + index += 9; + blah = (Bitu) ( &(chip->chan[ index ]) ); + ChanOffsetTable[i] = (Bit16u) blah; + } + //Same for operators + for ( i = 0; i < 64; i++ ) { + Bitu chNum, opNum, blah; + Channel* chan = NULL; + if ( i % 8 >= 6 || ( (i / 8) % 4 == 3 ) ) { + OpOffsetTable[i] = 0; + continue; + } + chNum = (i / 8) * 3 + (i % 8) % 3; + //Make sure we use 16 and up for the 2nd range to match the chanoffset gap + if ( chNum >= 12 ) + chNum += 16 - 12; + opNum = ( i % 8 ) / 3; + blah = (Bitu) ( &(chan->op[opNum]) ); + OpOffsetTable[i] = (Bit16u) (ChanOffsetTable[ chNum ] + blah); + } +#if 0 + //Stupid checks if table's are correct + for ( Bitu i = 0; i < 18; i++ ) { + Bit32u find = (Bit16u)( &(chip->chan[ i ]) ); + for ( Bitu c = 0; c < 32; c++ ) { + if ( ChanOffsetTable[c] == find ) { + find = 0; + break; + } + } + if ( find ) { + find = find; + } + } + for ( Bitu i = 0; i < 36; i++ ) { + Bit32u find = (Bit16u)( &(chip->chan[ i / 2 ].op[i % 2]) ); + for ( Bitu c = 0; c < 64; c++ ) { + if ( OpOffsetTable[c] == find ) { + find = 0; + break; + } + } + if ( find ) { + find = find; + } + } +#endif +} + + diff --git a/components/doom/prboom/dbopl.h b/components/doom/prboom/dbopl.h new file mode 100644 index 0000000..0009448 --- /dev/null +++ b/components/doom/prboom/dbopl.h @@ -0,0 +1,219 @@ +/* + * Copyright (C) 2002-2010 The DOSBox Team + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +//#include "inttypes.h" //NSM +#include +#include + +#ifdef _MSC_VER + #if _MSC_VER < 1300 + #include + typedef INT_PTR intptr_t; + #endif +#endif + +//Use 8 handlers based on a small logatirmic wavetabe and an exponential table for volume +#define WAVE_HANDLER 10 +//Use a logarithmic wavetable with an exponential table for volume +#define WAVE_TABLELOG 11 +//Use a linear wavetable with a multiply table for volume +#define WAVE_TABLEMUL 12 + +//Select the type of wave generator routine +#define DBOPL_WAVE WAVE_TABLEMUL + +typedef struct _Chip Chip; +typedef struct _Operator Operator; +typedef struct _Channel Channel; + +typedef uintptr_t Bitu; +typedef intptr_t Bits; +typedef uint32_t Bit32u; +typedef int32_t Bit32s; +typedef uint16_t Bit16u; +typedef int16_t Bit16s; +typedef uint8_t Bit8u; +typedef int8_t Bit8s; + +#if (DBOPL_WAVE == WAVE_HANDLER) +typedef Bits ( DB_FASTCALL *WaveHandler) ( Bitu i, Bitu volume ); +#endif + +#define DB_FASTCALL + +typedef Bits (*VolumeHandler)(Operator *self); +typedef Channel* (*SynthHandler)(Channel *self, Chip* chip, Bit32u samples, Bit32s* output ); + +//Different synth modes that can generate blocks of data +typedef enum { + sm2AM, + sm2FM, + sm3AM, + sm3FM, + sm4Start, + sm3FMFM, + sm3AMFM, + sm3FMAM, + sm3AMAM, + sm6Start, + sm2Percussion, + sm3Percussion, +} SynthMode; + +//Shifts for the values contained in chandata variable +enum { + SHIFT_KSLBASE = 16, + SHIFT_KEYCODE = 24, +}; + +//Masks for operator 20 values +enum { + MASK_KSR = 0x10, + MASK_SUSTAIN = 0x20, + MASK_VIBRATO = 0x40, + MASK_TREMOLO = 0x80, +}; + +typedef enum { + OFF, + RELEASE, + SUSTAIN, + DECAY, + ATTACK, +} OperatorState; + +struct _Operator { + VolumeHandler volHandler; + +#if (DBOPL_WAVE == WAVE_HANDLER) + WaveHandler waveHandler; //Routine that generate a wave +#else + Bit16s* waveBase; + Bit32u waveMask; + Bit32u waveStart; +#endif + Bit32u waveIndex; //WAVE_BITS shifted counter of the frequency index + Bit32u waveAdd; //The base frequency without vibrato + Bit32u waveCurrent; //waveAdd + vibratao + + Bit32u chanData; //Frequency/octave and derived data coming from whatever channel controls this + Bit32u freqMul; //Scale channel frequency with this, TODO maybe remove? + Bit32u vibrato; //Scaled up vibrato strength + Bit32s sustainLevel; //When stopping at sustain level stop here + Bit32s totalLevel; //totalLevel is added to every generated volume + Bit32u currentLevel; //totalLevel + tremolo + Bit32s volume; //The currently active volume + + Bit32u attackAdd; //Timers for the different states of the envelope + Bit32u decayAdd; + Bit32u releaseAdd; + Bit32u rateIndex; //Current position of the evenlope + + Bit8u rateZero; //Bits for the different states of the envelope having no changes + Bit8u keyOn; //Bitmask of different values that can generate keyon + //Registers, also used to check for changes + Bit8u reg20, reg40, reg60, reg80, regE0; + //Active part of the envelope we're in + Bit8u state; + //0xff when tremolo is enabled + Bit8u tremoloMask; + //Strength of the vibrato + Bit8u vibStrength; + //Keep track of the calculated KSR so we can check for changes + Bit8u ksr; +}; + +struct _Channel { + Operator op[2]; + SynthHandler synthHandler; + Bit32u chanData; //Frequency/octave and derived values + Bit32s old[2]; //Old data for feedback + + Bit8u feedback; //Feedback shift + Bit8u regB0; //Register values to check for changes + Bit8u regC0; + //This should correspond with reg104, bit 6 indicates a Percussion channel, bit 7 indicates a silent channel + Bit8u fourMask; + Bit8s maskLeft; //Sign extended values for both channel's panning + Bit8s maskRight; + +}; + +struct _Chip { + //This is used as the base counter for vibrato and tremolo + Bit32u lfoCounter; + Bit32u lfoAdd; + + + Bit32u noiseCounter; + Bit32u noiseAdd; + Bit32u noiseValue; + + //Frequency scales for the different multiplications + Bit32u freqMul[16]; + //Rates for decay and release for rate of this chip + Bit32u linearRates[76]; + //Best match attack rates for the rate of this chip + Bit32u attackRates[76]; + + //18 channels with 2 operators each + Channel chan[18]; + + Bit8u reg104; + Bit8u reg08; + Bit8u reg04; + Bit8u regBD; + Bit8u vibratoIndex; + Bit8u tremoloIndex; + Bit8s vibratoSign; + Bit8u vibratoShift; + Bit8u tremoloValue; + Bit8u vibratoStrength; + Bit8u tremoloStrength; + //Mask for allowed wave forms + Bit8u waveFormMask; + //0 or -1 when enabled + Bit8s opl3Active; + +}; + +/* +struct Handler : public Adlib::Handler { + DBOPL::Chip chip; + virtual Bit32u WriteAddr( Bit32u port, Bit8u val ); + virtual void WriteReg( Bit32u addr, Bit8u val ); + virtual void Generate( MixerChannel* chan, Bitu samples ); + virtual void Init( Bitu rate ); +}; +*/ + +#ifdef __cplusplus +extern "C" void Chip__Setup(Chip *self, Bit32u rate ); +extern "C" void DBOPL_InitTables( void ); +extern "C" void Chip__Chip(Chip *self); +extern "C" void Chip__WriteReg(Chip *self, Bit32u reg, Bit8u val ); +extern "C" void Chip__GenerateBlock2(Chip *self, Bitu total, Bit32s* output ); +#else +void Chip__Setup(Chip *self, Bit32u rate ); +void DBOPL_InitTables( void ); +void Chip__Chip(Chip *self); +void Chip__WriteReg(Chip *self, Bit32u reg, Bit8u val ); +void Chip__GenerateBlock2(Chip *self, Bitu total, Bit32s* output ); + +#endif + diff --git a/components/doom/prboom/docs/DMSPEC16.txt b/components/doom/prboom/docs/DMSPEC16.txt new file mode 100644 index 0000000..e5094fa --- /dev/null +++ b/components/doom/prboom/docs/DMSPEC16.txt @@ -0,0 +1,3810 @@ +From MSFell@aol.com Thu Dec 15 1994, upload as DMSPEC16.ZIP + + +------------------------------------------------------------------------------ + + T H E U N O F F I C I A L +================= =============== =============== ================ +\\ . . . . . . .\\ //. . . . . . .\\ //. . . . . . .\\ \\. . .\\// . .// +||. . ._____. . .|| ||. . ._____. . .|| ||. . ._____. . .|| || . . .\/ . ..|| +|| . .|| ||. . || || . .|| ||. . || || . .|| ||. . || ||. . . . . . .|| +||. . || || . .|| ||. . || || . .|| ||. . || || . .|| || . | . . . ..|| +|| . .|| ||. _-|| ||-_ .|| ||. . || || . .|| ||. _-|| ||-_.|\ . . . .|| +||. . || ||-' || || `-|| || . .|| ||. . || ||-' || || `|\_ . .|..|| +|| . _|| || || || || ||_ . || || . _|| || || || |\ `-_/| .|| +||_-' || .|/ || || \|. || `-_|| ||_-' || .|/ || || | \ / -_.|| +|| ||_-' || || `-_|| || || ||_-' || || | \ / | '|| +|| `' || || `' || || `' || || | \ / | || +|| .===' `===. .==='.`===. .===' /==. | \/ | || +|| .==' \_|-_ `===. .===' _|_ `===. .===' _-|/ `== \/ | || +|| .==' _-' `-_ `=' _-' `-_ `=' _-' `-_ /| \/ | || +|| .==' _-' `-__\._-' `-_./__-' `' |. /| | || +||.==' _-' `' | /==.|| +==' _-' S P E C S \/ `== +\ _-' `-_ / + `'' ``' + Release v1.666 - December 15th, 1994 + Written by: Matthew S Fell (msfell@aol.com) + + "The poets talk about love, ...but what I talk about is DOOM, + because in the end, DOOM is all that counts." + - Alex Machine/George Stark/Stephen King, _The Dark Half_ +------------------------------------------------------------------------------ + + + + + + + + +---------- +DISCLAIMER +---------- + + These specs are to aid in informing the public about the games +DOOM and DOOM 2, by id Software. In no way should this promote your +killing yourself, killing others, or killing in any other fashion. +Additionally, the author does not claim ANY responsibility +regarding ANY illegal activity concerning this file, or indirectly related +to this file. The information contained in this file only reflects +id Software indirectly, and questioning id Software regarding any +information in this file is not recommended. + +---------------- +COPYRIGHT NOTICE +---------------- + +This article is Copyright 1994 by Matt Fell. All rights reserved. +You are granted the following rights: + +I. To make copies of this work in original form, so long as + (a) the copies are exact and complete; + (b) the copies include the copyright notice and these paragraphs + in their entirety; + (c) the copies give obvious credit to the author, Matt Fell; + (d) the copies are in electronic form. +II. To distribute this work, or copies made under the provisions + above, so long as + (a) this is the original work and not a derivative form; + (b) you do not charge a fee for copying or for distribution; + (c) you ensure that the distributed form includes the copyright + notice, this paragraph, the disclaimer of warranty in + their entirety and credit to the author; + (d) the distributed form is not in an electronic magazine or + within computer software (prior explicit permission may be + obtained from the author); + (e) the distributed form is the NEWEST version of the article to + the best of the knowledge of the distributor; + (f) the distributed form is electronic. + + You may not distribute this work by any non-electronic media, +including but not limited to books, newsletters, magazines, manuals, +catalogs, and speech. You may not distribute this work in electronic +magazines or within computer software without prior written explicit +permission. These rights are temporary and revocable upon written, oral, +or other notice by the author. This copyright notice shall be governed +by the laws of the state of Ohio. + If you would like additional rights beyond those granted above, +write to the author at "msfell@aol.com" on the Internet. + + +-------- +CONTENTS +-------- + +[1] Introduction + [1-1] id Software's Copyright + [1-2] What's New +[2] The Basics + [2-1] Pwads + [2-2] DOOM version information + [2-3] Terminology conventions +[3] List of DOOM.WAD Directory Entries +[4] The Levels + [4-1] ExMy or MAPxy + [4-2] THINGS + [4-2-1] Thing Types + [4-2-2] Thing Sizes + [4-2-3] Thing Options + [4-3] LINEDEFS + [4-3-1] Linedef Flags + [4-3-2] Linedef Types + [4-4] SIDEDEFS + [4-5] VERTEXES + [4-6] SEGS + [4-7] SSECTORS + [4-8] NODES + [4-9] SECTORS + [4-9-1] Special Sector Types + [4-10] REJECT + [4-11] BLOCKMAP +[5] Graphics + [5-1] Picture Format +[6] Flats (Floor and Ceiling Textures) + [6-1] Animated Floors, see [8-4-1] +[7] Sounds and Music + [7-1] PC Speaker Sound Effects + [7-2] Soundcard Sound Effects + [7-3] Music + [7-4] GENMIDI + [7-5] DMXGUS +[8] Miscellaneous Lumps + [8-1] PLAYPAL + [8-2] COLORMAP + [8-3] ENDOOM + [8-4] TEXTURE1 and TEXTURE2 + [8-4-1] Animated Walls + [8-4-2] The SKY Textures + [8-5] PNAMES + [8-6] DEMOs + [8-6-1] Level changes from 1.2 to 1.666 DOOM.WAD +[9] Savegame Files + +[10] The DOOM.EXE File + [10-1] Version 1.2 DOOM.EXE Data Segment Overview + [10-1] Version 1.666 DOOM.EXE Data Segment Overview + [10-3] Detail on some EXE Data Structures + +APPENDICES + +[A-1] Backus-Naur Form definitions of wad elements +[A-2] Engine limits +[A-3] DOOM.WAD changes and errors +[A-3] A BLOCKMAP algorithm +[A-4] Other helpful documents +[A-5] Acknowledgments + + +------------------------- +CHAPTER [1]: Introduction +------------------------- + + DOOM is simply an all-time great game. A big factor in its success +and durability is the plethora of user-created add-ons. id Software +tacitly encouraged them by including the -FILE parameter, and by having +a data format that is both straightforward and easy to understand. +DOOM is basically two files, DOOM.EXE and DOOM.WAD. DOOM.EXE is the +"engine" which does the display and controls the game, and DOOM.WAD has +ALL of the graphics, sound, and map/level data that the engine uses. +The -FILE parameter allows small or large external "WAD" files to be +incorporated, changing any number of those graphics, sounds, and maps. + DOOM 2 has many things in common with DOOM. It uses the same EXE file +as version 1.666 of DOOM, and the WAD file format is the same. It's just +the contents of the WAD file that are different; there are more enemies! +more pictures! more weapons! more stuff!! + + This document explains in great detail nearly all aspects of the doom +WAD file format. And a new chapter (10) documents the location of data +within DOOM.EXE itself, so that various unusual game-play changes can +be made. This information has been updated to apply to DOOM 2 as well +as DOOM 1. + The specs were originally conceived as an aid to programmers making +DOOM utilities, especially map-editors. Coincidentally, there might also +be information useful to advanced level designers and players. + The material herein is somewhat technical and it is not recommended for +beginners, unless they are determined. There are some other very useful +documents in existence; I list the ones I know of in Appendix [A-3]. + + +[1-1]: id Software's Copyright and the Shareware Version +======================================================== + + My comments and statements are by no means official, and the excerpts +below are just the parts that I think are relevant to these specs. Please +read the LICENSE.DOC and README.EXE that came with DOOM. + + The LICENSE.DOC says: + + "You shall not: rent, lease, sell, distribute for money or other + consideration, modify, translate, disassemble, decompile, reverse + engineer, or create derivative works based upon the Software. + Notwithstanding the foregoing, you may create a map editor, modify + maps and make your own maps (collectively referenced as the + "Permitted Derivative Works") for the Software. You may not sell + or distribute any Permitted Derivative Works but you may exchange + the Permitted Derivative Works at no charge amongst other end-users. + In order to commercially distribute any such map editor or data + utility you must first sign ID's Data Utility License and ID + reserves the right to deny authorization to commercial distribute + the any such map editor or data utility. You may request a copy of + the Data Editor License from ID" + + "(except for backup purposes) You may not otherwise reproduce, copy + or disclose to others, in whole or in any part, the Software." + + The README says: + + "id Software respectfully requests that you do not modify the levels + for the shareware version of DOOM. We feel that the distribution of + new levels that work with the shareware version of DOOM will lessen a + potential user's incentive to purchase the registered version. + + "If you would like to work with modified levels of DOOM, we encourage + you to purchase the registered version of the game." + + If you are making add-ons, plan on them not working on the shareware +game, and plan on including statements about the trademarks and copyrights +that id Software owns, as well as disclaimers that they won't support your +add-on product, nor will they support DOOM after it has been modified. + + +[1-2]: What's New +================= + + Each new version of these specs renders the previous version obsolete. + This document has grown considerably in size, and to fight that trend, +I'll not discuss it any more. + It has now been five months since the specs were updated. I won't talk +about that either. I'll just apologize for not releasing updates in late +May and July like I should have. Those updates would have been numbered +1.4 and 1.5, so perhaps that's why this is version 1.666. + Here's some of the new or revised sections since the 1.3 specs: + + - DOOM 2 info, especially in [4-2-1] and [4-3-2] + - lots of info on the DOOM.EXE file in [10] + - BNF style definitions in [A-1] + - DOOM engine limits in [A-2] + - the DEMO format [8-6] + - the ENDOOM lump [8-3] + - comprehensive list of WAD lumps in [3] + + - many parts rewritten for clarity + - changes in terminology to reflect id's where possible, and to be + more consistent throughout + - reformatted again, errors and typos corrected + + +------------------- +CHAPTER [2]: Basics +------------------- + + The starting point is the concept of "WAD". It is not an acronym, it +just means a collection of data. Throughout this document, "WAD" or "wad" +will mean a file with a .WAD extension that contains data for the doom +engine to use. + A WAD file has three parts: + + (1) a twelve-byte header + (2) one or more "lumps" + (3) a directory or "info table" that contains the names, offsets, and + sizes of all the lumps in the WAD + + The header consists of three four-byte parts: + + (a) an ASCII string which must be either "IWAD" or "PWAD" + (b) a 4-byte (long) integer which is the number of lumps in the wad + (c) a long integer which is the file offset to the start of + the directory + + The directory has one 16-byte entry for every lump. Each entry consists +of three parts: + + (a) a long integer, the file offset to the start of the lump + (b) a long integer, the size of the lump in bytes + (c) an 8-byte ASCII string, the name of the lump, padded with zeros. + For example, the "DEMO1" entry in hexadecimal would be + (44 45 4D 4F 31 00 00 00) + + A "lump" is just data, in one of several different formats. Some +contain sound data, some contain graphics data, some contain level +structure data, etc. These specs are mostly concerned with delineating +the formats of the various lump types. There are 10 different types of +map/level lump formats, each has a section in chapter [4] (sections 2-11). +There are 13 other types of lump formats, listed below with the section +where the format is explained, and the actual lump names in parentheses. +Also, Appendix [A-1] has definitions of the structures of all these +WAD elements. + + [8-1] palettes (PLAYPAL) + [8-2] colormaps (COLORMAP) + [8-3] dos exit text (ENDOOM) + [8-6] demos (DEMO1, DEMO2, and DEMO3) + [8-4] texture composition list (TEXTURE1 and TEXTURE2) + [8-5] wall patch "number for name" indexing list (PNAMES) + [7-4] midi mapping (GENMIDI) + [7-5] Gravis UltraSound patch mappings (DMXGUS) + [7-1] PC speaker sound effects (DP*) + [7-2] Soundcard sound effects (DS*) + [7-3] songs (D_*) + [6] flats (lumpnames between F_START and F_END) + [5] all other graphics (all other lumps) + + The "marker" and "label" lump names like "S_START" and "E1M1" (or +"MAP01") do not actually refer to lumps - they have zero length. They +merely serve to mark the beginning or end of a set of related lumps. + + It is possible to include other directory entries and lumps in a wad +file, e.g. an entry called CLOWNS could point to a lump that includes the +level creator's name, date of completion, and the latitude and longitude +of the Holy Grail. None of these non-standard entries will be used by +DOOM, nor will they cause it problems. + + +[2-1]: Pwads +============ + + There are two types of wad files. The original DOOM.WAD and DOOM2.WAD +files are "IWAD"s, or "Internal wads", meaning they contain all of the +data necessary to play. The other type is the "PWAD" file, "Patch wad", +an external file which has the same structure, but with far fewer entries +in the directory. The data in a pwad is substituted for the original data +in the DOOM.WAD, thus allowing for much easier distribution of new levels. +Only those resources listed in the pwad's directory are changed, +everything else is loaded from the IWAD. All external wads should have +the "PWAD" indicator, as id has requested. + A typical pwad might contain new data for a single level, in which +case it would contain the 10 lumps and 11 directory entries necessary +to define the level (as described in chapter [4]). + A pwad file may contain more than one level or parts of levels, in +addition to replacement graphics, sounds, etc. (as of version 1.666, +sprites and flats do NOT work from pwads - see chapter [5] for more). +In fact, there is apparently no limit to how many entries may be in a +pwad. The original doom levels are pretty complicated, and they are +from 50-200 kilobytes each in size, uncompressed. + Pwad files need to have the extension .WAD to work. Many of them have +descriptive names, e.g. if J.R.R. Tolkien made a new level, he might call +it GONDOLIN.WAD - to use this level, a player would type + + DOOM -FILE GONDOLIN.WAD + +at the command line, along with any other parameters. More than one +external file can be added, thus in general: + + DOOM -FILE [pwad_filename] [pwad_filename] [pwad_filename] ... + + If there are duplicate entries amongst the directories of all the +wads being "added", the pwads listed LAST take precedence. + When the game loads, a "modified game" message will appear if there +are any pwads involved, reminding the player that id Software will not +give technical support or answer questions regarding modified levels. + With DOOM version 1.666, there is also the @responsefile option for +listing command line parameters and -file specifications. See the DOOM +README or the latest FAQ for more information. Also, there are numerous +"front-end" utilities that make it easier to play pwads, e.g. load several +external files at once, warp to certain levels, specify options, etc. + + +[2-2]: DOOM versions +==================== + +Version Date Time Is + +1.0 10dec93 01:00 first release (aka DOOM Operating System 0.99) +1.1 16dec93 01:10 slightly different from 1.0, newer dos extender +1.2 17feb94 01:20 modem play added! +1.3 - - unauthorized beta release +1.4 28jun94 01:04 shareware beta +1.5 ??jul94 ? shareware beta +1.6 03aug94 01:06 shareware beta +1.666 01sep94 16:42 registered full upgrade! +1.666 ? ? DOOM 2! + + The important releases as of this writing are 1.2 and 1.666. Hopefully, +everyone will move up to 1.666 soon; it has many important improvements +over 1.2. The 1.4, 1.5, and 1.6 shareware betas contained increasing +amounts of the stuff that's now in 1.666, but there's no information +here about what exactly those changes were. One, I didn't keep track, +and two, they're not really important. + See appendix [A-3] for some miscellany about what has changed from +version to version. + + +[2-3]: Terminology conventions +============================== + + Throughout this document, I will use the following conventions for +numbers and variable types: + +(1) Most numbers will be decimal. Hexadecimal numbers will usually be + labeled thus: 0xffff or $ffff. But sometimes I'll say "hex ...". + And in tablature form, a column heading "HEX" indicates all the + numbers in that column are hexadecimal. +(2) "byte" is of course the generic, 8 bits. It will usually mean one + 8-bit component of a larger data type, or an 8-bit ASCII + character, or some such. As a number, it is an unsigned 8-bit + integer (0..255). +(3) "short" is a signed 16-bit integer (-32768..32767), stored in + lo-hi format. +(4) "ushort" or "unsigned short" is an unsigned 16-bit integer (0..65535). +(5) "integer" or "long" is a signed 32-bit integer. If you don't read + this first, my use of the word "integer" might not be immediately + apparent. +(6) "string8" or "8-byte string" is an ASCII string with length between + 1 and 8 characters inclusive. If its length is less than 8, the + remaining bytes are zeros. +(7) The first byte of a file or any data structure, for addressing and + offset purposes, is byte #0, not byte #1. +(8) Some abbreviations I use: E1, E2, and E3 refer to episodes 1, 2, and + 3 respectively. "The EXE" means the file DOOM.EXE. +(666) Any reference to this number is purely intentional. + + +----------------------------------------------- +CHAPTER [3]: List of DOOM.WAD Directory Entries +----------------------------------------------- + + There are over 2000 entries in the DOOM.WAD directory. Most of them +can be easily described in groups, and so are not explicitly mentioned +in this list. This includes the sprites (see [4-2-1] for sprite names +and [5] for the sprite lump naming system), the wall patches ([8-4] and +[8-5] have more info), the flats (chapter [6]), the sounds and songs +(chapter [7]), and the map data lumps (chapter [4]). All the others +are listed here. + There have been several changes from version to version. The "Ver" +column indicates in which doom versions the lump exists: + +___ no indication means it is in every version. Most are like this. +1.1 it was in 1.0 and 1.1, but not in 1.2 and later. It is obsolete. +1.2 it is not in 1.1 and earlier, only in 1.2 and up. +1.6 it is not in 1.2 and earlier, only in 1.666 and up. +r it is only in the registered version, not the shareware. +1 it is only in DOOM 1, it is not in DOOM 2. +2 it is only in DOOM 2, it is not in DOOM 1. + + In the lump names, x (and y and e) indicates variable ASCII +characters, and * can be replaced by an ASCII string (up to the +8-byte lumpname limit). + +LumpName Ver Description +-------- --- ----------- +PLAYPAL fourteen 256 color palettes. See [8-1]. +COLORMAP maps colors in the palette down to darker ones. [8-2]. +ENDOOM text message displayed when you exit to DOS. [8-3]. +DEMOx x=1-3, are the demos. [8-6]. +ExMy subsequent entries define a single level's data. [4]. +MAPxy 2 like ExMy, but for DOOM 2. +TEXTURE1 list of wall texture names and their composition data, + used in the SIDEDEF portion of each level. [8-4]. +TEXTURE2 r more wall texture compositions. +PNAMES lists all lump names used as wall patches. [8-5]. +GENMIDI General Midi standard instrument data. [7-3]. +DMXGUS Gravis Ultra Sound instrument patches. [7-4]. + +D_ExMy music for a doom 1 level. [7-2]. +D_INTER music played on the summary screen between levels. +D_INTRO music played when the game starts. +D_INTROA 1.2 more introductory music. +D_VICTOR music played on the victory text-screen after an episode. +D_BUNNY r music for while a certain rabbit has his story told... +D_* 2 music for a doom 2 level. + +DP_* vary PC speaker sound effects. [7-1]. +DS_* vary Soundcard sound effects. [7-1]. + + All the remaining entries in the directory, except the flats between +F_START and F_END, and the "markers" like S_START, refer to lumps which +are pictures, in the doom/wad graphic format described in chapter [5]. +The flats are also pictures, but in a format described in chapter [6]. + The next seven are full screen (320 by 200 pixel) pictures. After +that, ST* are status-bar pictures, WI* are for the screens between +levels, and M_* are for menus. + +HELP1 Ad-screen says Register!, with some screen shots. +HELP2 Actual help, all the controls explained. +TITLEPIC Maybe this is the title screen? Gee, I dunno... +CREDIT People at id Software who created this great game. +VICTORY2 r Screen shown after a victorious end to episode 2. +PFUB1 r A nice little rabbit minding his own peas and queues... +PFUB2 r ...a hint of what's waiting in Doom 2. + +ENDx r x=0-6, big red "THE END" gets shot up. +AMMNUMx x=0-9. Small grey digits for ammo count (15/200 etc). +STxBARy 1.1 x=M or A, y= L or R. Status bar used to be in pieces. +STCHAT 1.1 Status bar used to have a "chat" box. +STRSNUMx 1.1 x=0-9. Small red digits. +STWEAPx 1.1 x=0-5. COOL little weapon icons. Why'd they drop them? +STFRAGS 1.1 Tiny "FRAG" to be placed on top of part of status bar. +STBAR 1.2 Status Bar as used in deathmatches. +STGNUMx x=0-9. Small grey digits used on the "Arms" panel. +STTNUMx x=0-9. Big red digits used for Armor, Health, etc. +STTMINUS 1.6 Big red "-" used for negative frags. +STYSNUMx x=0-9. Small yellow digits used on the "Arms" panel. +STTPRCNT Big red % used in Armor and Health. +STKEYSx x=0-5. Blue/Yellow/Red Keycards and Skullkeys. +STDISK Disk, used at bottom right corner during disk accesses. +STCDROM 1.6 CD, used during CD-ROM accesses. +STARMS "Arms" panel which replaces "Frags" in non-deathmatch. +STCFNxxx xxx=033-095, also 121. Small red ASCII characters. +STFBx x=0-3. Green/black/brown/red squares, for ST player faces. +STPBx x=0-3. Squares with bottoms, for inter-level screens. +STFSTxy x=0-4, y=0-2. Player face. x=0 is 100% health...x=4 is + very low health. y=0 is glancing right, y=2 left. +STFTLx0 x=0-4. Face looking left, player hurt from that direction. +STFTRx0 x=0-4. Face looking right. +STFOUCHx x=0-4. Face looking surprised (hurt bad). +STFEVLx x=0-4. Face with a grin (when pick up new weapons). +STFKILLx x=0-4. Face with a grimace (when killing foes). +STFGOD0 Face with yellow eyes (invulnerable). +STFDEAD0 Dead face. +BRDR_* Tiny pictures used as a border between a less-than-full + screen view and the "outside" marbleized zone. TL is + top left, BR bottom right, you can guess the rest. +WIBONUS 1.1 Medium sized red text "BONUS" +WISCORE 1.1 "SCORE" +WIMSTPx 1.1 x=0-3. Red text "ONE" to "FOUR". +WIMSTBx 1.1 x=0-3. Grey text "ONE" to "FOUR". +WIMINUS 1.6 Small red "-" used for negative frags. +WIMAPx x=0-2. 320x200 maps used on inter-level screens for e1,2,3. +WIAe0x0y patches used to animate inter-level maps. +WIURH0 "YOU ARE HERE" with an arrow pointing left. +WIURH1 "YOU ARE HERE" with an arrow pointing right. +WISPLAT Splat mark that indicates a completed level. +WIOSTK "KILLS" +WIOSTI "ITEMS" +WIF "FINISHED" +WIMSTT "TOTAL" +WIOSTS "SCRT" +WIOSTF "F." +WITIME "TIME" +WIPAR "PAR" +WIMSTAR "YOU" +WIPCNT "%" +WINUMx x=0-9. Medium sized red digits. +WICOLON ":" +WISUCKS "SUCKS" +WIFRGS "FRAGS" +WILVxy x=0-2, y=0-8. E(x+1)M(y+1) level names in grey/white letters. +WIPx x=1-4. Red "P1" - "P4", for multiplayer summaries. +WIBPx x=1-4. Grey "P1" - "P4" +WIKILRS Small red "KILLERS" going sideways up, for deathmatches. +WIVCTMS Small red "VICTIMS" for the top of the deathmatch chart. +WISCRT2 "SECRET" +WIENTER "ENTERING" +M_DOOM The DOOM logo +M_RDTHIS Big red "Read This!" +M_OPTION "Options" +M_QUITG "Quit Game" +M_NGAME "New Game" +M_SKULL1 The skull indicator with eyes lit. +M_SKULL2 The skull indicator with eyes unlit. +M_THERMO The marker on e.g. the Sfx volume "thermometer". +M_THERMR The right end of the thermometer. +M_THERML The left end. +M_THERMM The middle, repeated over and over. +M_ENDGAM "End Game" +M_PAUSE "Pause" +M_MESSG "Messages:" +M_MSGON "on" +M_MSGOFF "off" +M_EPISOD "Which Epsiode?" +M_EPI1 "Knee-Deep In The Dead" +M_EPI2 "The Shores Of Hell" +M_EPI3 "Inferno" +M_HURT "Hurt me plenty." +M_JKILL "I'm too young to die." +M_ROUGH "Hey, not too rough." +M_SKILL "Choose Skill Level:" +M_NEWG "NEW GAME" (title of New Game menu) +M_ULTRA "Ultra-Violence." +M_NMARE 1.2 "Nightmare!" +M_SVOL "Sound Volume" +M_OPTTTL "OPTIONS" (title of Options menu) +M_SAVEG "Save Game" +M_LOADG "Load Game" +M_DISP "Display" +M_MSENS "Mouse sensitivity" +M_GDHIGH "high" +M_GDLOW "low" +M_DETAIL "Graphic Detail:" +M_DISOPT "DISPLAY OPTIONS" +M_SCRNSZ "Screen Size" +M_SGTTL "SAVE GAME" +M_LGTTL "LOAD GAME" +M_SFXVOL "Sfx Volume" +M_MUSVOL "Music Volume" +M_LSLEFT Load/save box, left part +M_LSCNTR Load/save box, center part (repeated) +M_LSRGHT Load/save box, right part + + The following entries are markers that do not point to a lump; they +have zero size: + +S_START marks the start of the item/monster "sprite" section. + See chapter [5] for the naming convention used here. +S_END is immediately after the last sprite. +P_START marks the beginning of the wall patches. +P1_START before the first of the shareware wall patches. +P1_END after the last of the shareware wall patches. +P2_START r registered wall patches. +P2_END r registered wall patches. +P_END marks the end of the wall patches. +F_START marks the beginning of the flats (floor textures). +F1_START shareware flats. +F1_END shareware flats. +F2_START r registered flats. +F2_END r registered flats. +F_END marks the end of the flats. + + +----------------------- +CHAPTER [4]: The Levels +----------------------- + + Each level has eleven directory entries and ten lumps: E[x]M[y] (or +MAPxy in a DOOM 2 wad), THINGS, LINEDEFS, SIDEDEFS, VERTEXES, SEGS, +SSECTORS, NODES, SECTORS, REJECT, and BLOCKMAP. + In the DOOM.WAD file, all of these entries are present for every level. +In a pwad external file, they don't all need to be present. Whichever +entries are in a pwad will be substituted for the originals. For example, +a pwad with just two entries, E3M6 and THINGS, would use all the walls +and such from the original E3M6, but could have a completely different +set of THINGS. + + +[4-1]: ExMy or MAPxy +==================== + + DOOM 1 levels have an ExMy label in a wad's directory. x is a single +(ASCII) digit 1-3 for the episode number and y is 1-9 for the mission +number. + DOOM 2 levels have a MAPxy label in a wad's directory. xy can range +from (ASCII) 01 to 32, for the level number. + This label just indicates that the lump names following it are part +of the designated level. The label does not actually point to a lump, +and the size field in the directory is 0. The assignment of lumps to +this level stops with either the next ExMy or MAPxy entry, or with a +non-map entry like TEXTURE1. + Without these labels, there would be no way to differentiate amongst +the many lumps named "THINGS", "LINEDEFS", etc. + + +[4-2]: THINGS +============= + + "Things" in DOOM are player start positions, monsters, weapons, keys, +barrels, etc. The size of each THINGS lump will be a multiple of ten, +since each thing requires ten bytes to describe it, in five +fields: + +(1) X position of thing (at level's inception) +(2) Y position of thing +(3) Angle the thing faces. On the automap, 0 is east, 90 is north, 180 + is west, 270 is south. This value is only used for monsters, player + starts, deathmatch starts, and teleporter landing spots. Other + things look the same from all directions. Values are rounded to + the nearest 45 degree angle, so if the value is 80, it will + actually face 90 - north. +(4) Type of thing, see next subsection, [4-2-1] +(5) Thing options, see [4-2-3] + + +[4-2-1]: Thing Types +-------------------- + + Short 4 of 5, occupying bytes 6-7 of each thing record, specifies its +kind. The table below summarizes the different types. They are listed +in functional groups. You can easily get a numerical-order list by +extracting this table and SORTing it. + +Dec/Hex The thing's number in decimal and hexadecimal. This is the + number used in the THINGS lump on a level (ExMy or MAPxx). +V Version of DOOM needed to use this object: + no mark indicates all versions have this object +r requires registered DOOM or DOOM 2 +2 requires DOOM 2 +Spr The sprite name associated with this thing. This is the first + four letters of the lumps that are pictures of this thing. +seq. The sequence of frames displayed. "-" means it displays nothing. + Unanimated things will have just an "a" here, e.g. a backpack's + only picture can be found in the wad under BPAKA0. Animated + things will show the order that their frames are displayed + (they cycle back after the last one). So the blue key + alternates between BKEYA0 and BKEYB0. The soulsphere uses + SOULA0-SOULB0-C0-D0-C0-B0 then repeats. Thing 15, a dead + player, is PLAYN0. ++ Monsters and players and barrels. They can be hurt, and they + have a more complicated sprite arrangement. See chapter [5]. +CAPITAL Monsters, counts toward the KILL ratio at the end of a level. +# An obstacle, players and monsters can't move through it. +^ Hangs from the ceiling, or floats (if a monster). +$ A regular item that players may get. +! An artifact item; counts toward the ITEM ratio at level's end. + Note that 2025, the radiation suit, was an ITEM in version + 1.2, but it is not an ITEM in version 1.666 on. Also note + that 2022 and 2024, invulnerability and invisibility, do not + respawn in -altdeath games. + +Dec. Hex V Spr seq. Thing is: + + -1 ffff ---- - (nothing) + 0 0000 ---- - (nothing) + 1 0001 PLAY + Player 1 start (Player 1 start needed on ALL +levels) + 2 0002 PLAY + Player 2 start (Player starts 2-4 are needed in) + 3 0003 PLAY + Player 3 start (cooperative mode multiplayer games) + 4 0004 PLAY + Player 4 start + 11 000b ---- - Deathmatch start positions. Should have >= 4/level + 14 000e ---- - Teleport landing. Where players/monsters land when + 14 they teleport to the SECTOR containing this thing + +3004 0bbc POSS + # FORMER HUMAN: regular pistol-shooting zombieman + 84 0054 2 SSWV + # WOLFENSTEIN SS: guest appearance by Wolf3D blue guy + 9 0009 SPOS + # FORMER HUMAN SERGEANT: black armor, shotgunners + 65 0041 2 CPOS + # HEAVY WEAPON DUDE: red armor, chaingunners +3001 0bb9 TROO + # IMP: brown, hurl fireballs +3002 0bba SARG + # DEMON: pink, muscular bull-like chewers + 58 003a SARG + # SPECTRE: invisible version of the DEMON +3006 0bbe r SKUL + ^# LOST SOUL: flying flaming skulls, they really bite +3005 0bbd r HEAD + ^# CACODEMON: red one-eyed floating heads. Behold... + 69 0045 2 BOS2 + # HELL KNIGHT: grey-not-pink BARON, weaker +3003 0bbb BOSS + # BARON OF HELL: cloven hooved minotaur boss + 68 0044 2 BSPI + # ARACHNOTRON: baby SPIDER, shoots green plasma + 71 0047 2 PAIN + ^# PAIN ELEMENTAL: shoots LOST SOULS, deserves its +name + 66 0042 2 SKEL + # REVENANT: Fast skeletal dude shoots homing missles + 67 0043 2 FATT + # MANCUBUS: Big, slow brown guy shoots barrage of +fire + 64 0040 2 VILE + # ARCH-VILE: Super-fire attack, ressurects the dead! + 7 0007 r SPID + # SPIDER MASTERMIND: giant walking brain boss + 16 0010 r CYBR + # CYBER-DEMON: robo-boss, rocket launcher + + 88 0058 2 BBRN + # BOSS BRAIN: Horrifying visage of the ultimate demon + 89 0059 2 - - Boss Shooter: Shoots spinning skull-blocks + 87 0057 2 - - Spawn Spot: Where Todd McFarlane's guys appear + +2005 07d5 CSAW a $ Chainsaw +2001 07d1 SHOT a $ Shotgun + 82 0052 2 SGN2 a $ Double-barreled shotgun +2002 07d2 MGUN a $ Chaingun, gatling gun, mini-gun, whatever +2003 07d3 LAUN a $ Rocket launcher +2004 07d4 r PLAS a $ Plasma gun +2006 07d6 r BFUG a $ Bfg9000 +2007 07d7 CLIP a $ Ammo clip +2008 07d8 SHEL a $ Shotgun shells +2010 07da ROCK a $ A rocket +2047 07ff r CELL a $ Cell charge +2048 0800 AMMO a $ Box of Ammo +2049 0801 SBOX a $ Box of Shells +2046 07fe BROK a $ Box of Rockets + 17 0011 r CELP a $ Cell charge pack + 8 0008 BPAK a $ Backpack: doubles maximum ammo capacities + +2011 07db STIM a $ Stimpak +2012 07dc MEDI a $ Medikit +2014 07de BON1 abcdcb ! Health Potion +1% health +2015 07df BON2 abcdcb ! Spirit Armor +1% armor +2018 07e2 ARM1 ab $ Green armor 100% +2019 07e3 ARM2 ab $ Blue armor 200% + 83 0053 2 MEGA abcd ! Megasphere: 200% health, 200% armor +2013 07dd SOUL abcdcb ! Soulsphere, Supercharge, +100% health +2022 07e6 r PINV abcd ! Invulnerability +2023 07e7 r PSTR a ! Berserk Strength and 100% health +2024 07e8 PINS abcd ! Invisibility +2025 07e9 SUIT a (!)Radiation suit - see notes on ! above +2026 07ea PMAP abcdcb ! Computer map +2045 07fd PVIS ab ! Lite Amplification goggles + + 5 0005 BKEY ab $ Blue keycard + 40 0028 r BSKU ab $ Blue skullkey + 13 000d RKEY ab $ Red keycard + 38 0026 r RSKU ab $ Red skullkey + 6 0006 YKEY ab $ Yellow keycard + 39 0027 r YSKU ab $ Yellow skullkey + +2035 07f3 BAR1 ab+ # Barrel; not an obstacle after blown up + (BEXP sprite) + 72 0048 2 KEEN a+ # A guest appearance by Billy + + 48 0030 ELEC a # Tall, techno pillar + 30 001e r COL1 a # Tall green pillar + 32 0020 r COL3 a # Tall red pillar + 31 001f r COL2 a # Short green pillar + 36 0024 r COL5 ab # Short green pillar with beating heart + 33 0021 r COL4 a # Short red pillar + 37 0025 r COL6 a # Short red pillar with skull + 47 002f r SMIT a # Stalagmite: small brown pointy stump + 43 002b r TRE1 a # Burnt tree: gray tree + 54 0036 r TRE2 a # Large brown tree + +2028 07ec COLU a # Floor lamp + 85 0055 2 TLMP abcd # Tall techno floor lamp + 86 0056 2 TLP2 abcd # Short techno floor lamp + 34 0022 CAND a Candle + 35 0023 CBRA a # Candelabra + 44 002c r TBLU abcd # Tall blue firestick + 45 002d r TGRE abcd # Tall green firestick + 46 002e TRED abcd # Tall red firestick + 55 0037 r SMBT abcd # Short blue firestick + 56 0038 r SMGT abcd # Short green firestick + 57 0039 r SMRT abcd # Short red firestick + 70 0046 2 FCAN abc # Burning barrel + + 41 0029 r CEYE abcb # Evil Eye: floating eye in symbol, over candle + 42 002a r FSKU abc # Floating Skull: flaming skull-rock + + 49 0031 r GOR1 abcb ^# Hanging victim, twitching + 63 003f r GOR1 abcb ^ Hanging victim, twitching + 50 0032 r GOR2 a ^# Hanging victim, arms out + 59 003b r GOR2 a ^ Hanging victim, arms out + 52 0034 r GOR4 a ^# Hanging pair of legs + 60 003c r GOR4 a ^ Hanging pair of legs + 51 0033 r GOR3 a ^# Hanging victim, 1-legged + 61 003d r GOR3 a ^ Hanging victim, 1-legged + 53 0035 r GOR5 a ^# Hanging leg + 62 003e r GOR5 a ^ Hanging leg + 73 0049 2 HDB1 a ^# Hanging victim, guts removed + 74 004a 2 HDB2 a ^# Hanging victim, guts and brain removed + 75 004b 2 HDB3 a ^# Hanging torso, looking down + 76 004c 2 HDB4 a ^# Hanging torso, open skull + 77 004d 2 HDB5 a ^# Hanging torso, looking up + 78 004e 2 HDB6 a ^# Hanging torso, brain removed + + 25 0019 r POL1 a # Impaled human + 26 001a r POL6 ab # Twitching impaled human + 27 001b r POL4 a # Skull on a pole + 28 001c r POL2 a # 5 skulls shish kebob + 29 001d r POL3 ab # Pile of skulls and candles + 10 000a PLAY w Bloody mess (an exploded player) + 12 000c PLAY w Bloody mess, this thing is exactly the same as 10 + 24 0018 POL5 a Pool of blood and flesh + 79 004f 2 POB1 a Pool of blood + 80 0050 2 POB2 a Pool of blood + 81 0051 2 BRS1 a Pool of brains + 15 000f PLAY n Dead player + 18 0012 POSS l Dead former human + 19 0013 SPOS l Dead former sergeant + 20 0014 TROO m Dead imp + 21 0015 SARG n Dead demon + 22 0016 r HEAD l Dead cacodemon + 23 0017 r SKUL k Dead lost soul, invisible + (they blow up when killed) + + +[4-2-2]: Thing Sizes +-------------------- + + The list below gives the radius, height, mass, speed, and toughness +of all the monsters in DOOM 1 and 2. Almost all non-monster things only +differ in their "radius", dependent on whether they are obstacles or not. +For collision purposes, things are NOT circular. They occupy a square +whose side equals slightly more than 2 times the radius. This square +does not turn, it is always aligned with the x and y axes of a level. +Consider a simple collision detection in a coordinate plane: + + IF (ABS(x1-x2) =< (r1+r2)) AND (ABS(y1-y2) =< (r1+r2)) THEN *collision* + + This will result in square objects centered on their (x,y) positions, +and that is the behavior that DOOM objects exhibit. + I don't know why the horizontal size is "slightly more" than 2 times +the radius, but it is. A player cannot enter a corridor of width 32, but +can enter a corridor of width 33. Experiments have shown that no monster +can enter a corridor that is exactly (2*radius) wide. It must be bigger. +Moving up to the next multiple of 8 is a good idea, if not 16 or 32. + Monsters CAN enter sectors that are exactly "Height" high. But obstacles +are infinitely high for collision purposes. A player on a very high ledge +might not be able to jump off, because of an obstacle right next to him, +even though it is far below him. + Height is also used when under a crushing ceiling, and to determine +if an object can move from one sector to another. The space between the +highest floor and the lowest ceiling must be "Height" or greater for the +object to fit. + Toughness indicates how much punishment a monster can take until it +dies. Bullets do 10 damage, Shotgun shells 70 (7 pellets, each is 10), +Plasma 20, Rockets 100, and the BFG does 1000 for a direct hit. There's +more info on this stuff in the DOOM FAQ. + +Dec. Hex Radius Height Mass Tough Speed Sprite name or class of things: + +- - 16 56 100 (100) - PLAY +3004 0bbc 20 56 100 20 8 POSS + 84 0054 20 56 100 50 8 SSWV + 9 0009 20 56 100 30 8 SPOS + 65 0041 20 56 100 70 8 CPOS +3001 0bb9 20 56 100 60 8 TROO +3002 0bba 30 56 400 150 10 SARG + 58 003a 30 56 400 150 10 SARG (Inviso model) +3006 0bbe 16 56 50 100 8 SKUL +3005 0bbd 31 56 400 400 8 HEAD + 69 0045 24 64 1000 500 8 BOS2 +3003 0bbb 24 64 1000 1000 8 BOSS + 68 0044 64 64 600 500 12 BSPI + 71 0047 31 56 400 400 8 PAIN + 66 0042 20 56 500 300 10 SKEL + 67 0043 48 64 1000 600 8 FATT + 64 0040 20 56 500 700 15 VILE + 7 0007 128 100 1000 3000 12 SPID + 16 0010 40 110 1000 4000 16 CYBR + 88 0058 16 16 6666 250 0 BBRN + 72 0048 16 72 6666 100 0 KEEN +2035 07f3 10 42 100 20 0 BAR1 + - - 20 16 - - - most non-obstacles (e.g. gettables) + - - 16 16 - - - most obstacles + 54 0036 32 16 - - - large brown tree + + +[4-2-3]: Thing Options +---------------------- + + Short 5 of 5, occupying bytes 8-9 of each thing record, control a +few options, according to which bits are set: + +bit 0 the THING is present at skill 1 and 2 +bit 1 the THING is present at skill 3 (hurt me plenty) +bit 2 the THING is present at skill 4 and 5 (ultra-violence, nightmare) +bit 3 indicates a deaf guard. +bit 4 means the THING only appears in multiplayer mode. + +bits 5-15 have no effect. + + The skill settings are most used with the monsters, of course...the +most common skill level settings are hex 07/0f (on all skills), 06/0e +(on skill 3-4-5), and 04/0c (only on skill 4-5). Unusual skill settings +are perfectly allowable, e.g. hex 05 for a thing which is present on +skill 1, 2, 4, and 5, but not skill 3. + "deaf guard" only has meaning for monsters, who will not attack until +they see a player if they are deaf. Otherwise, they will activate when +they hear gunshots, etc. (including the punch!). Sound does not travel +through solid walls (walls that are solid at the time of the noise). +Also, lines can be set so that sound does not pass through them (see +[4-3-1] bit 6). This option is also known as the "ambush" option (or +flag, or attribute). + + +[4-3]: LINEDEFS +=============== + + Each linedef represents a line from one of the VERTEXES to another, +and each linedef's record is 14 bytes, containing 7 fields: + +(1) from the VERTEX with this number (the first vertex is 0). +(2) to the VERTEX with this number (31 is the 32nd vertex). +(3) flags, see [4-3-1] below. +(4) types, see [4-3-2] below. +(5) is a "tag" or "trigger" number which ties this line's effect type + to all SECTORS that have the same tag number (in their last + field). +(6) number of the "right" SIDEDEF for this linedef. +(7) "left" SIDEDEF, if this line adjoins 2 SECTORS. Otherwise, it is + equal to -1 (FFFF hex). + + "right" and "left" are based on the direction of the linedef as +indicated by the "from" and "to", or "start" and "end", VERTEXES. +This sketch should make it clear: + + left side right side + start -----------------> end <----------------- start + right side left side + + IMPORTANT: All lines must have a right side. If it is a one-sided +line, then it must go the proper direction, so its single side is +facing the sector it is part of. DOOM will crash on a level that has +a line with no right side. + + +[4-3-1]: Linedef Flags +---------------------- + + The third field of each linedef controls some attributes of +that line. These attributes (aka flags) are indicated by bits. If the +bit is set (equal to 1), the condition is true for that line. If the +bit is not set (equal to 0), the condition is not true. Note that the +"unpegged" flags cannot be independently set for the two SIDEDEFs of +a line. Here's a list of the flags, followed by a discussion of each: + +bit Condition + +0 Impassible +1 Block Monsters +2 Two-sided +3 Upper Unpegged +4 Lower Unpegged +5 Secret +6 Block Sound +7 Not on Map +8 Already on Map +9-15 unused + + 0 (Impassible) - Players and monsters cannot cross this line. Note that +if there is no sector on the other side, they can't go through the line +anyway, regardless of the flags. + + 1 (Block Monsters) - Monsters cannot cross this line. + + 2 (Two-sided) - The linedef's two sidedefs can have "-" as a texture, +which in this case means "transparent". If this flag is not set, the +sidedefs can't be transparent: if "-" is viewed, it will result in the +"hall of mirrors" effect. However, a linedef CAN have two non-transparent +sidedefs, even if this flag is not set, as long as it is between two +sectors. + Another side effect of this flag is that if it is set, then gunfire +(pistol, shotgun, chaingun) can go through it. If this flag is not set, +gunfire cannot go through the line. Projectiles (rockets, plasma etc.) +are not restricted this way. They can go through as long as there's a +sector on the other side (and the sector heights allow it). + Finally, monsters can see through and attack through two-sided lines, +despite any of the line's other flag settings and textures (once again, +provided sector heights and the REJECT [4-10] allow it). + + 3 (Upper unpegged) - The upper texture is pasted onto the wall from +the top down instead of from the bottom up like usual. + Upper textures normally have the bottom of the wall texture to be +drawn lined up with the bottom of the "upper" space in which it is +to be drawn (sidedef Y offsets then apply [4-4]). This can result +in the upper texture being misaligned with a neighboring "middle" +texture. To help solve this problem, common at "windows", this flag +can be set. + If the upper texture is unpegged, it is drawn with the wall texture's +top row at the ceiling, just like middle and lower textures are usually +drawn. This can help realign the upper texture with a neighbor. + + The article TEXTURES, cited in appendix [A-4] gives a great deal +more explanation on the "unpegged" flags and how to use them. + + 4 (Lower unpegged) - Lower and middle textures are drawn from the +bottom up, instead of from the top down like usual. + This is also commonly used on lower textures under "windows". It is +also used on doorjambs, because when the door opens, the sector ceiling +is rising, so the "sides" (the doorjambs), which are middle textures, +will be drawn from the ever-changing ceiling height down, and thus will +appear to be "moving". Unpegging them will make them be drawn from the +floor up, and since the floor height doesn't change when a door opens, +then will not move. + There's one slight difference with lower textures being unpegged - +they are not necessarily drawn with the bottom of the wall texture placed +at the bottom of the wall. The height of the facing sector and the height +of the wall texture are taken into account. So if the sector is 160 high, +and the wall texture is 128 high, then lower unpegged will cause the 32nd +row of the wall texture to be at the floor, NOT the 128th row. This of +course excludes sidedef Y offsets, which are applied AFTER unpegged +flags do their stuff. + + 5 (Secret) - On the automap, this line appears in red like a normal +solid wall that has nothing on the other side. This is useful in +protecting secret doors and such. Note that if the sector on the other +side of this "secret" line has its floor height HIGHER than the sector +on the facing side of the secret line, then the map will show the lines +beyond and thus give up the secret. + Also note that this flag has NOTHING to do with the SECRETS ratio on +inter-level screens. That's done with special sector 9 (see [4-9-1]). + + 6 (Block Sound) - For purposes of monsters hearing sounds and thus +becoming alerted. Every time a player fires a weapon, the "sound" of +it travels from sector to sector, alerting all non-deaf monsters in +each new sector. But the sound will die when it hits a second line +with this flag. The sound can cross one such line, but not two. All +possible routes for the sound to take are taken, so it can get to +some out-of-the-way places. Another thing that blocks sound, instantly, +is incompatible sector heights. Sound can go from a sector with 0/72 +floor/ceiling heights to one with 64/192, but the sound CANNOT go +from a 0/128 sector to an adjacent 128/256 sector. + + 7 (Not on Map) - The line is not shown on the automap, even if the +computer all-map power up is acquired. + + 8 (Already on Map) - When the level is begun, this line is already +on the automap, even though it hasn't been seen (in the display) yet. +Normally lines only get mapped once part of the line has been seen in +the display window. + + Automap line colors: Red lines indicate the line is one-sided, that +there is a sector on only one side (or the line is marked secret). +Brown lines are between two sectors with different floor heights but +the same ceiling height. Yellow lines are between two sectors with +different ceiling heights and the same or different floor heights. +Gray lines are as-yet-unseen lines revealed by the computer all-map. +Without the all-map, lines between sectors with identical floor and +ceiling heights don't show up. With it, they are gray. + + +[4-3-2]: Linedef Types +---------------------- + + The in field 4 of 7 of a linedef can control various special +effects like doors opening, floors moving, etc. Some of them must be +activated by "using" them, like switches, and some of them are activated +when they are walked over. There are a huge number of ways to use these +effects, but it's all done by using one of a hundred or so line function +types. + The most common way they work is this: a player walks across a line +or activates (presses the spacebar or the use key) right in front of +a line. That line has a function type that is non-zero. It also has +a tag number. Then ALL sectors on the level with the same tag number, +that are not already engaged in some action, undergo the effects that +the linedef type number dictates. Note that the tag numbers are NOT the +sector numbers, nor the linedef numbers. A tag number is in a lindef's +5th field, and a sector's last field. + +Explanations of all the abbreviations in the table: + +Val The value of the linedef "type" field (#4). If you want them + in numerical order, use SORT or something. +* This line function only works in 1.666 and up +Class The category of the effect +Act Activation. How the linedef's effect is activated. +n does NOT require a tag number (see note 5 below) +W walk-over activation +S switch ("use" - default config is spacebar) +G gunfire (pistol, shotgun, chaingun) cross or hit line +1 the line may be activated once only +R potentially repeatable activation +& affected sectors "locked out" from further changes. See notes 9/10. +m Monster actions can activate the line's effect +Sound The type of noise made by moving sectors +Speed How quickly a floor moves up/down etc. +Tm Time - how long it "rests"; doors "rest" when they've gone as + high as they're going to go, lifts "rest" at the bottom, etc. +Chg Change - some of them cause a floor texture change and/or special + sector change. See note 11 below. +T Trigger model, see note 11 below. +N Numeric model, see note 11 below. +X Floor texture is transferred, and Sector type 0. +P Special Sector types 4, 5, 7, 9, 11, 16 transfer. +Effect What happens to the affected sector(s). +open The ceiling goes (up) to LEC-4. +close The ceiling goes (down) to the floor level. +up Will move up at specified speed if the destination is above. + If the destination is below, it arrives there instantly. +down Will move down at specified speed if the destination is below. + If the destination is above, it arrives there instantly. +open/ The door can be activated while moving. If it's open or opening, + close it closes. If it's closed or closing, it opens, then pauses, + then closes. +open, The door can only be activated if it is in the closed state. + close It opens, pauses, then closes. +lift The floor goes down to LIF, rests, then back up to original height. +L lowest +H highest +C ceiling +F floor +E adjacent sectors, excluding the affected sector +I adjacent sectors, including the affected sector +nh next-higher, i.e. LEF that is higher than source. + + More notes and longer discussions related to these terms: + +1. "Adjacent" is any sector that shares a LINEDEF with the tagged sector +(sectors are adjacent to themselves). +2. All S activations and the teleporters only work from the RIGHT side +of the linedef. +3. For teleporters, if more than 1 sector is tagged the same and each +has a teleport landing THING, then the lowest numbered sector is the +destination. +4. Floors that raise up an absolute height (up 24, 32) will go up INTO +ceilings, so using the WR and SR types of these in levels is unwise. +5. A few of the linedef types don't require tag numbers: the end-level +switches, the scrolling wall type 48 (0x30), and the "manual" doors which +operate on the sector facing the left side of the linedef with the manual +door line type. +666. Here's the terms id uses for different types of activations: + Manual: nSR and nS1 doors + Trigger: W1 + Retrigger: WR + Switch: S1 + Button: SR + Impact: G + Effect: line 48 is the only one +7. The "moving floors" go up to a maximum of HIF and go down to a minimum +of LIF. Why they sometimes go up first and sometimes down is still a +mystery to me. +8. The "crushing ceilings" go from their original ceiling height down +to (floor + 8), then back up. While crushing a creature, their downward +speed slows considerably. "Fast hurt" does about 120% total damage per +crush, and "slow hurt" grabs you and does somewhere around 1000-2000% +total damage per crush. +9. The & symbol indicates that a sector cannot be affected any more by +other line types after it has performed this effect, even if it has +finished. These are the floor-texture-changers and... (keep reading) +10. Moving floors and crushing ceilings also "lock out" further changes +to the sectors affected, EXCEPT for restarting the moving floor or +crushing ceiling. If a line triggers a type 6 crushing ceiling in a +sector, then it is stopped, then ANY other line with a "crush" type that +is tagged to the same sector will cause the type 6 crusher to start +again, with its original maximum and minimum ceiling heights. +11. Some line types cause floor textures and/or some special sector types +(see [4-9-1]) to transfer to the tagged sector. The tagged sectors' floor +and/or special sector (SS) type will change to match that of the "model" +sector. The TRIGGER model gets the info from the sector that the +activating line's right side faces. The NUMERIC model gets the info +from the sector on the other side of the lowest numbered two-sided +linedef that has one side in the tagged sector. + All of these "change" line types transfer the floor texture. Also, +they all can pass a special sector trait of "0" or "nothing", i.e. if +the destination is an acid-floor or "damaging" sector, then any of these +lines can erase the damaging effect. Lines 59, 93, 37, 84, and 9 (see +note 12 for more specifics on line type 9) also have the ability to +transfer the "secret" trait of SS 9, and the damaging traits of SS +4, 5, 7, 11, and 16. None of the "blinking light" effects of SSs can be +transferred. SS 4 "blinks" and causes damage, but only the damaging part +can be transferred. SS 11 also turns off god-mode and causes a level END +when health <11%, this characteristic is part of SS 11, and cannot be +isolated via fancy transfers. +12. Line type 9 is a special one. The definitive example is the chainsaw +pillar on E1M2. Take the lowest-numbered linedef that has a sidedef in +the tagged sector. If that linedef is one-sided, nothing happens. If it +is 2-sided, then the tagged sector's floor will move down to match the +2nd sector's floor height (or it will jump instantly up if it was below, +like other floors that are supposed to move "down"). + If this 2nd sector CONTAINS the tagged sector, i.e. all the linedefs +with a sidedef in the tagged sector have their other sidedef in the 2nd +sector, then this 2nd sector is the "donut". This donut's floor will +move "up" to match the floor height of the sector on the other side of +the DONUT's lowest-numbered linedef, excluding those linedefs that are +shared with the "donut hole" central sector. Also, the donut will undergo +a floor texture change and special sector type change to match the +"outside". The donut sector does not have to be completely surrounded +by another sector (i.e. it can have 1-sided linedefs), but if its +lowest-numbered linedef is not 2-sided, a minor glitch results: the donut +and the donut-hole both move to a strange height, and the donut changes +floor texture to TLITE6_6 - the last flat in the directory. + Note that if the donut hole and the donut are both going to move, the +donut hole is going to move to match the height that the donut is "going +to". In other words, the whole thing will be at a single height when +they're done, and this is the height of the "outside" sector that borders +the donut. + Whew! +13. Line types 30 and 96, "up ShortestLowerTexture" means that affected +sector(s) floors go up a number of units equal to the height of the +shortest "lower" texture facing out from the sector(s). +14. STAIRS. Any sector tagged to a stair-raiser line will go up 8. Now +find the lowest-numbered 2-sided linedef whose RIGHT side faces this +sector (the first step). The sector on the other side of the lindedef +becomes the next step, and its floor height changes to be 8 above the +previous step (it raises up if it was lower, or it changes instantly if +it was higher). This process continues as long as there are 2-sided +lines with right sides facing each successive step. A couple things +will stop the stairway: + (a) no 2-sided linedef whose right side faces the current step + (b) a sector with a different floor texture + (c) a sector that has already been moved by this stairway (this stops + ouroboros stairways that circle around to repeat themselves) + (d) "locked-out" sectors that can't change their floor height anymore + The component steps of a stairway can have any shape or size. + The turbo stairs (100, 127) work just like regular stairs except that +each step goes up 16 not 8, and rising steps can crush things between +themselves and the ceiling. +15. Line types 78 and 85 do NOTHING as of version 1.666. + + + +Val Class Act Sound Speed Tm Chg Effect + +SPECIAL (Continuous effect, doesn't need triggereing) + + 48 Spec n-- - - - - Scrolling wall + +LOCAL DOORS ("MANUAL" DOORS) + + 1 mDoor nSRm door med 4 - open/close + 26 mDoor nSR door med 4 - open/close BLUE KEY + 28 mDoor nSR door med 4 - open/close RED KEY + 27 mDoor nSR door med 4 - open/close YELLOW KEY + 31 mDoor nS1 door med - - open + 32 mDoor nS1 door med - - open BLUE KEY + 33 mDoor nS1 door med - - open RED KEY + 34 mDoor nS1 door med - - open YELLOW KEY + 46 mDoor nGR door med - - open +117 * mDoor nSR blaze turbo 4 - open/close +118 * mDoor nS1 blaze turbo - - open + +REMOTE DOORS + + 4 rDoor W1 door med 4 - open,close + 29 rDoor S1 door med 4 - open,close + 90 rDoor WR door med 4 - open,close + 63 rDoor SR door med 4 - open,close + 2 rDoor W1 door med - - open +103 rDoor S1 door med - - open + 86 rDoor WR door med - - open + 61 rDoor SR door med - - open + 3 rDoor W1 door med - - close + 50 rDoor S1 door med - - close + 75 rDoor WR door med - - close + 42 rDoor SR door med - - close + 16 rDoor W1 door med 30 - close, then opens + 76 rDoor WR door med 30 - close, then opens +108 * rDoor W1 blaze turbo 4 - open,close +111 * rDoor WR blaze turbo 4 - open,close +105 * rDoor S1 blaze turbo 4 - open,close +114 * rDoor SR blaze turbo 4 - open,close +109 * rDoor W1 blaze turbo - - open +112 * rDoor S1 blaze turbo - - open +106 * rDoor WR blaze turbo - - open +115 * rDoor SR blaze turbo - - open +110 * rDoor W1 blaze turbo - - close +113 * rDoor S1 blaze turbo - - close +107 * rDoor WR blaze turbo - - close +116 * rDoor SR blaze turbo - - close +133 * rDoor S1 blaze turbo - - open BLUE KEY + 99 * rDoor SR blaze turbo - - open BLUE KEY +135 * rDoor S1 blaze turbo - - open RED KEY +134 * rDoor SR blaze turbo - - open RED KEY +137 * rDoor S1 blaze turbo - - open YELLOW KEY +136 * rDoor SR blaze turbo - - open YELLOW KEY + +CEILINGS + + 40 Ceil W1 mover slow - - up to HEC + 41 Ceil S1 mover slow - - down to floor + 43 Ceil SR mover slow - - down to floor + 44 Ceil W1 mover slow - - down to floor + 8 + 49 Ceil S1 mover slow - - down to floor + 8 + 72 Ceil WR mover slow - - down to floor + 8 + +LIFTS + + 10 Lift W1 lift fast 3 - lift + 21 Lift S1 lift fast 3 - lift + 88 Lift WRm lift fast 3 - lift + 62 Lift SR lift fast 3 - lift +121 * Lift W1 lift turbo 3 - lift +122 * Lift S1 lift turbo 3 - lift +120 * Lift WR lift turbo 3 - lift +123 * Lift SR lift turbo 3 - lift + +FLOORS + +119 * Floor W1 mover slow - - up to nhEF +128 * Floor WR mover slow - - up to nhEF + 18 Floor S1 mover slow - - up to nhEF + 69 Floor SR mover slow - - up to nhEF + 22 Floor W1& mover slow - TX up to nhEF + 95 Floor WR& mover slow - TX up to nhEF + 20 Floor S1& mover slow - TX up to nhEF + 68 Floor SR& mover slow - TX up to nhEF + 47 Floor G1& mover slow - TX up to nhEF + 5 Floor W1 mover slow - - up to LIC + 91 Floor WR mover slow - - up to LIC +101 Floor S1 mover slow - - up to LIC + 64 Floor SR mover slow - - up to LIC + 24 Floor G1 mover slow - - up to LIC +130 * Floor W1 mover turbo - - up to nhEF +131 * Floor S1 mover turbo - - up to nhEF +129 * Floor WR mover turbo - - up to nhEF +132 * Floor SR mover turbo - - up to nhEF + 56 Floor W1& mover slow - - up to LIC - 8, CRUSH + 94 Floor WR& mover slow - - up to LIC - 8, CRUSH + 55 Floor S1 mover slow - - up to LIC - 8, CRUSH + 65 Floor SR mover slow - - up to LIC - 8, CRUSH + 58 Floor W1 mover slow - - up 24 + 92 Floor WR mover slow - - up 24 + 15 Floor S1& mover slow - TX up 24 + 66 Floor SR& mover slow - TX up 24 + 59 Floor W1& mover slow - TXP up 24 + 93 Floor WR& mover slow - TXP up 24 + 14 Floor S1& mover slow - TX up 32 + 67 Floor SR& mover slow - TX up 32 +140 * Floor S1 mover med - - up 512 + 30 Floor W1 mover slow - - up ShortestLowerTexture + 96 Floor WR mover slow - - up ShortestLowerTexture + 38 Floor W1 mover slow - - down to LEF + 23 Floor S1 mover slow - - down to LEF + 82 Floor WR mover slow - - down to LEF + 60 Floor SR mover slow - - down to LEF + 37 Floor W1 mover slow - NXP down to LEF + 84 Floor WR mover slow - NXP down to LEF + 19 Floor W1 mover slow - - down to HEF +102 Floor S1 mover slow - - down to HEF + 83 Floor WR mover slow - - down to HEF + 45 Floor SR mover slow - - down to HEF + 36 Floor W1 mover fast - - down to HEF + 8 + 71 Floor S1 mover fast - - down to HEF + 8 + 98 Floor WR mover fast - - down to HEF + 8 + 70 Floor SR mover fast - - down to HEF + 8 + 9 Floor S1 mover slow - NXP donut (see note 12 above) + +STAIRS + + 8 Stair W1 mover slow - - stairs + 7 Stair S1 mover slow - - stairs +100 * Stair W1 mover turbo - - stairs (each up 16 not 8) + crush +127 * Stair S1 mover turbo - - stairs (each up 16 not 8) + crush + +MOVING FLOORS + + 53 MvFlr W1& lift slow 3 - start moving floor + 54 MvFlr W1& - - - - stop moving floor + 87 MvFlr WR& lift slow 3 - start moving floor + 89 MvFlr WR& - - - - stop moving floor + +CRUSHING CEILINGS + + 6 Crush W1& crush med 0 - start crushing, fast hurt + 25 Crush W1& crush med 0 - start crushing, slow hurt + 73 Crush WR& crush slow 0 - start crushing, slow hurt + 77 Crush WR& crush med 0 - start crushing, fast hurt + 57 Crush W1& - - - - stop crush + 74 Crush WR& - - - - stop crush +141 * Crush W1& none? slow 0 - start crushing, slow hurt "Silent" + +EXIT LEVEL + + 11 Exit nS- clunk - - - End level, go to next level + 51 Exit nS- clunk - - - End level, go to secret level + 52 Exit nW- clunk - - - End level, go to next level +124 * Exit nW- clunk - - - End level, go to secret level + +TELEPORT + + 39 Telpt W1m tport - - - Teleport + 97 Telpt WRm tport - - - Teleport +125 * Telpt W1m tport - - - Teleport monsters only +126 * Telpt WRm tport - - - Teleport monsters only + +LIGHT + + 35 Light W1 - - - - 0 +104 Light W1 - - - - LE (light level) + 12 Light W1 - - - - HE (light level) + 13 Light W1 - - - - 255 + 79 Light WR - - - - 0 + 80 Light WR - - - - HE (light level) + 81 Light WR - - - - 255 + 17 Light W1 - - - - Light blinks (see [4-9-1] type 3) +138 * Light SR clunk - - - 255 +139 * Light SR clunk - - - 0 + + +[4-4]: SIDEDEFS +=============== + + A sidedef is a definition of what wall texture(s) to draw along a +LINEDEF, and a group of sidedefs outline the space of a SECTOR. + There will be one sidedef for a line that borders only one sector +(and it must be the RIGHT side, as noted in [4-3]). It is not +necessary to define what the doom player would see from the other +side of that line because the doom player can't go there. The doom +player can only go where there is a sector. + Each sidedef's record is 30 bytes, comprising 2 fields, then +3 <8-byte string> fields, then a final field: + +(1) X offset for pasting the appropriate wall texture onto the wall's + "space": positive offset moves into the texture, so the left + portion gets cut off (# of columns off left side = offset). + Negative offset moves texture farther right, in the wall's space. +(2) Y offset: analogous to the X, for vertical. +(3) "upper" texture name: the part above the juncture with a lower + ceiling of an adjacent sector. +(4) "lower" texture name: the part below a juncture with a higher + floored adjacent sector. +(5) "middle" texture name: the regular part of the wall. Also known as + "normal" or "full" texture. +(6) SECTOR that this sidedef faces or helps to surround. + + The texture names are from the TEXTURE1/2 resources. The names of +wall patches in the directory (between P_START and P_END) are not +directly used, they are referenced through the PNAMES lump. + Simple sidedefs have no upper or lower texture, and so they will have +"-" instead of a texture name. Also, two-sided lines can be transparent, +in which case "-" means transparent (no texture). + If the wall is wider than the texture to be pasted onto it, then the +texture is tiled horizontally. A 64-wide texture will be pasted at 0, +64, 128, etc., unless an X-offset changes this. + If the wall is taller than the texture, than the texture is tiled +vertically, with one very important difference: it starts new tiles +ONLY at 128, 256, 384, etc. So if the texture is less than 128 high, +there will be junk filling the undefined areas, and it looks ugly. +This is sometimes called the "Tutti Frutti" effect. + + There are some transparent textures which can be used as middle textures +on 2-sided sidedefs (between sectors). These textures need to be composed +of a single patch (see [8-4]), and note that on a very tall wall, they +will NOT be tiled. Only one will be placed, at the spot determined by +the "lower unpegged" flag being on/off and the sidedef's y offset. And +if a transparent texture is used as an upper or lower texture, then +the good old "Tutti Frutti" effect will have its way. + Also note that animated wall textures (see [8-4-1]) do NOT animate +if they are the "middle" texture on a 2-sided line. So much for the +lava waterfall with the hidden room at its base...hmm, maybe not... + + +[4-5]: VERTEXES +=============== + + These are the beginning and end points for LINEDEFS and SEGS. Each +vertice's record is 4 bytes in 2 fields: + +(1) X coordinate +(2) Y coordinate + + On the automap within the game, with the grid on (press 'G'), the +lines are 128 apart (0x80), two lines = 256 (0x100). + A note on the coordinates: the coordinate system used for the vertices +and the heights of the sectors corresponds to pixels, for purposes of +texture-mapping. So a sector that's 128 high, or a multiple of 128, is +pretty typical, since many wall textures are 128 pixels high. + And yes, the correct spelling of the plural of "vertex" is "vertices". + + +[4-6]: SEGS +=========== + + The SEGS are stored in a sequential order determined by the SSECTORS, +which are part of the NODES recursive tree. + Each seg is 12 bytes in 6 fields: + +(1) start of seg is VERTEX with this number +(2) end VERTEX +(3) angle: 0= east, 16384=north, -16384=south, -32768=west. + In hex, it's 0000=east, 4000=north, 8000=west, c000=south. + This is also know as BAMS for Binary Angle Measurement. +(4) LINEDEF that this seg goes along +(5) direction: 0 if the seg goes the same direction as the linedef it + is on, 1 if the seg goes the opposite direction. This is the + same as (0 if the seg is on the RIGHT side of the linedef) or + (1 if the seg is on the LEFT side of the linedef). +(6) offset: distance along the linedef to the start of this seg (the + vertex in field 1). The offset is in the same direction as the + seg. If field 5 is 0, then the distance is from the "start" + vertex of the linedef to the "start" vertex of the seg. If field + 5 is 1, then the offset is from the "end" vertex of the linedef + to the "start" vertex of the seg. So if the seg begins at one of + the two endpoints of the linedef, this offset will be 0. + + For diagonal segs, the offset distance can be obtained from the +formula DISTANCE = SQR((x2 - x1)^2 + (y2 - y1)^2). The angle can be +calculated from the inverse tangent of the dx and dy in the vertices, +multiplied to convert PI/2 radians (90 degrees) to 16384. And since +most arctan functions return a value between -(pi/2) and (pi/2), +you'll have to do some tweaking based on the sign of (x2-x1), to +account for segs that go "west". + + +[4-7]: SSECTORS +=============== + + SSECTOR stands for sub-sector. These divide up all the SECTORS into +convex polygons. They are then referenced through the NODES resources. +There will be (number of nodes + 1) ssectors. + Each ssector is 4 bytes in 2 fields: + +(1) This many SEGS are in this SSECTOR... +(2) ...starting with this SEG number + + The segs in ssector 0 should be segs 0 through x, then ssector 1 +contains segs x+1 through y, ssector 2 containg segs y+1 to z, etc. + + +[4-8]: NODES +============ + + A detailed explanation of the nodes follows this list of a node's +structure in the wad file. + Each node is 28 bytes in 14 fields: + +(1) X coordinate of partition line's start +(2) Y coordinate of partition line's start +(3) DX, change in X to end of partition line +(4) DY, change in Y to end of partition line + + If (1) to (4) equaled 64, 128, -64, -64, the partition line would +go from (64,128) to (0,64). + +(5) Y upper bound for right bounding-box.\ +(6) Y lower bound All SEGS in right child of node +(7) X lower bound must be within this box. +(8) X upper bound / +(9) Y upper bound for left bounding box. \ +(10) Y lower bound All SEGS in left child of node +(11) X lower bound must be within this box. +(12) X upper bound / +(13) a NODE or SSECTOR number for the right child. If bit 15 of this + is set, then the rest of the number represents the + child SSECTOR. If not, the child is a recursed node. +(14) a NODE or SSECTOR number for the left child. + + The NODES lump is by far the most difficult to understand of all the +data structures in DOOM. A new level won't display right without a valid +set of precalculated nodes, ssectors, and segs. + Here I will explain what the nodes are for, and how they can be +generated automatically from the set of linedefs, sidedefs, and +vertices. I am NOT including any code or a pseudo-code algorithm, like +I do for the BLOCKMAP (appendix [A-3]). This is for reasons of space, +and more importantly, the fact that I haven't written any such +algorithm myself. If there's to be some "node code" published here, it +will have to be donated by someone, well-commented, well-organized, in +pseudo-code, and 100% effective! So the odds are long against it. + + The NODES are branches in a binary space partition (BSP) that divides +up the level and is used to determine which walls are in front of others, +a process know as hidden-surface removal. The SSECTORS (sub-sectors) and +SEGS (segments) lumps are necessary parts of the structure. + A BSP tree is normally used in 3d space, but DOOM uses a simplified +2d version of the scheme. Basically, the idea is to keep dividing the +map into smaller spaces until each of the smallest spaces contains only +wall segments which cannot possibly occlude (block from view) other +walls in its own space. The smallest, undivided spaces will become +SSECTORS. Each wall segment is part or all of a linedef (and thus a +straight line), and becomes a SEG. All of the divisions are kept track +of in a binary tree structure, which is used to greatly speed the +rendering process (drawing what is seen). How does this binary tree +lead to faster rendering? I have no idea. + Only the SECTORS need to be divided. The parts of the levels that are +"outside" sectors are ignored. Also, only the walls need to be kept +track of. The sides of any created ssectors which are not parts of +linedefs do not become segs. + Some sectors do not require any dividing. Consider a square sector. +All the walls are orthogonal to the floor (the walls are all straight +up and down), so from any viewpoint inside the square, none of its +four walls can possibly block the view of any of the others. Now +imagine a sector shaped like this drawing: + ++--------------.------+ The * is the viewpoint, looking ->, east. The +| . | diagonal wall marked @ @ can't be seen at all, +| /\ |@ and the vertical wall marked @@@ is partially +| *-> / @\ |@ occluded by the other diagonal wall. This sector +| / @\|@ needs to be divided. Suppose the diagonal wall ++---------/ is extended, as shown by the two dots (..): + +now each of the two resulting sub-sectors are sufficient, because while +in either one, no wall that is part of that sub-sector blocks any other. + In general, being a convex polygon is the goal of a ssector. Convex +means a line connecting any two points that are inside the polygon will +be completely contained in the polygon. All triangles and rectangles are +convex, but not all quadrilaterals. In doom's simple Euclidean space, +convex also means that all the interior angles of the polygon are less +than or equal to 180 degrees. + Now, an additional complication arises because of the two-sided +linedef. Its two sides are in different sectors, so they will end up +in different ssectors too. Thus every two-sided linedef becomes two segs +(or more), or you could say that every sidedef becomes a seg. Creating +segs from sidedefs is a good idea, because the seg can then be associated +with a sector. Two segs that aren't part of the same sector cannot +possibly be in the same ssector, so further division is required of any +set of segs that aren't all from the same sector. + Whenever a division needs to be made, a SEG is picked, somewhat +arbitrarily, which along with its imaginary extensions, forms a "knife" +that divides the remaining space in two (thus binary). This seg is the +partition line of a node, and the remaining spaces on either side of +the partition line become the right and left CHILDREN of the node. All +partition lines have a direction, and the space on the "right" side of +the partition is the right child of the node; the space on the "left" +is the left child (there's a cute sketch in [4-3]: LINEDEFS that shows +how right and left relate to the start and end of a line). Note that if +there does not exist a seg in the remaining space which can serve as a +partition line, then there is no need for a further partition, i.e. +it's a ssector and a "leaf" on the node tree. + If the "knife" passes through any lines/segs (but not at vertices), +they are split at the intersection, with one part going to each child. +A two-sided linedef, which is two segs, when split results in four segs. +A two sider that lies along an extension of the partition line has each +of its two segs go to opposite sides of the partition line. This is the +eventual fate of ALL segs on two-sided linedefs. + As the partition lines are picked and the nodes created, a strict +ordering must be maintained. The node tree is created from the "top" +down. After the first division is made, then the left child is divided, +then its left child, and so on, until a node's child is a ssector. The +n you move back up the tree one branch, and divide the right child, then +its left, etc. ALWAYS left first, on the way down. + Since there will be splits along the way, there is no way to know +ahead of time how many nodes and ssectors there will be at the end. +And the top of the tree, the node that is created first, is given the +highest number. So as nodes and ssectors are created, they are simply +numbered in order from 0 on up, and when it's all done (nothing's left +but ssectors), then ALL the numbers, for nodes and ssectors, are +reversed. If there's 485 nodes, then 485 becomes 0 and 0 becomes 485. + Here is another fabulous drawing which will explain everything. ++ is a vertex, - and | indicate linedefs, the . . indicates an +extension of a partition line. The <, >, and ^ symbols indicate the +directions of partition lines. All the space within the drawing is +actual level space, i.e. sectors. + + +-----+-------+-------+ 0 (5) + | | | | / \ ==> / \ + | e |^ f |^ g | 1 4 (4) (1) + | |4 |5 | / \ / \ / \ / \ ++---- + . . +-------+-------+ 2 3 e 5 (3) (2) 2 (0) +| | < 0 | / \ / \ / \ / \ / \ / \ +| a | b | a b c d f g 6 5 4 3 1 0 +| |^ | +| . . |2. . . . . +---------+ The order in which How the elements are +| | |1 > the node tree's numbered when it's +| c |^ d | elements get made. finished. +| |3 | 0 = node (5) = node ++-----+-----------+ a = ssector 6 = ssector + + 1. Make segs from all the linedefs. There are 5 two-sided lines here. + 2. Pick the vertex at 0 and go west (left). This is the first + partition line. Note the . . extension line. + 3. Pick the vertex at 1, going east. The backwards extension . . cuts + the line 3>2>, and the unlabeled left edge line. The left edge + was one seg, it becomes two. The 3>2> line was two segs, it + becomes four. New vertices are created at the intersection + points to do this. + 4. Pick the (newly created) vertex at 2. Now the REMAINING spaces on + both sides of the partition line are suitable for ssectors. The + left one is first, it becomes a, the right b. Note that ssector + a has 3 segs, and ssector b has 5 segs. The . . imaginary lines + are NOT segs. + 5. Back up the tree, and take 1's right branch. Pick 3. Once again, we + can make 2 ssectors, c and d, 3 segs each. Back up the tree to 0. + 6. Pick 4. Now the left side is a ssector, it becomes e. But the right + side is not, it needs one more node. Pick 5, make f and g. + 7. All done, so reverse all the ordination of the nodes and the + ssectors. Ssector 0's segs become segs 0-2, ssector 1's segs + become segs 3-7, etc. The segs are written sequentially according + to the ssector numbering. + + If we want to create an algorithm to do the nodes automatically, it +needs to be able to pick partition lines automatically. From studying +the original maps, it appears that they usually chose a linedef which +divides the child's space roughly in "half". This is restricted by the +availability of a seg in a good location, with a good angle. Also, the +"half" refers to the total number of ssectors in any particular child, +which we have no way of knowing when we start! Optimization methods are +probably used, or maybe brute force, trying every candidate seg until +the "best" one is found. + What is the best possible choice for a partition line? Well, there +are apparently two goals when creating a BSP tree, which are partially +exclusive. One is to have a balanced tree, i.e. for any node, there are +about the same total number of sub-nodes on either side of it. The other +goal is to minimize the number of "splits" necessary, in this case, the +number of seg splits needed, along with the accompanying new vertices +and extra segs. Only a very primitive and specially constructed set of +linedefs could avoid having any splits, so they are inevitable. It's +just that with some choices of partition lines, there end up being +fewer splits. For example, + ++--------------+ If a and b are chosen as partition lines, +| | there will be four extra vertices needed, ++---+ +---+ < A and this shape becomes five ssectors and + |^ ^| 16 segs. If A and B are chosen, however, ++---+a b+---+ < B there are no extra vertices, and only three +| | ssectors and 12 segs. ++--------------+ + + I've read that for a "small" number of polygons (less than 1000?), +which is what we're dealing with in a doom level, one should definitely +try to minimize splits, and not worry about balancing the tree. I can't +say for sure, but it does appear that the original levels strive for +this. Their trees are not totally unbalanced, but there are some parts +where many successive nodes each have a node and a ssector as children +(this is unbalanced). And there are a lot of examples to prove that the +number of extra segs and vertices they create is very low compared to +what it could be. I think the algorithm that id Software used tried to +optimize both, but with fewer splits being more important. + + +[4-9]: SECTORS +============== + + A SECTOR is a horizontal (east-west and north-south) area of the map +where a floor height and ceiling height is defined. It can have any +shape. Any change in floor or ceiling height or texture requires a +new sector (and therefore separating linedefs and sidedefs). If you +didn't already know, this is where you find out that DOOM is in many +respects still a two-dimensional world, because there can only be ONE +floor height in each sector. No buildings with two floors, one above +the other, although fairly convincing illusions are possible. + Each sector's record is 26 bytes, comprising 2 fields, then +2 <8-byte string> fields, then 3 fields: + +(1) Floor is at this height for this sector +(2) Ceiling height +(3) name of the flat used for the floor texture, from the directory. +(4) name of the flat used for the ceiling texture. + All the flats in the directory between F_START and F_END work + as either floors or ceilings. +(5) lightlevel of this sector: 0 = total dark, 255 (0xff) = maximum + light. There are actually only 32 brightnesses possible (see + COLORMAP [8-2]), so 0-7 are the same, ..., 248-255 are the same. +(6) special sector: see [4-9-1] immediately below. +(7) a "tag" number corresponding to LINEDEF(s) with the same tag + number. When that linedef is activated, something will usually + happen to this sector - its floor will rise, the lights will + go out, etc. See [4-3-2] for the list of linedef effects. + + +[4-9-1]: Special Sector Types +----------------------------- + + Bytes 22-23 of each Sector record are a which determines +some area-effects called special sectors. + Light changes are automatic. The brightness level will alternate +between the light value specified for the special sector, and the lowest +value amongst adjacent sectors (two sectors are adjacent if a linedef +has a sidedef facing each sector). If there is no lower light value, +or no adjacent sectors, then the "blink" sectors will instead alternate +between 0 light and their own specified light level. The "oscillate" +special (8) does nothing if there is no lower light level. + "blink off" means the light is at the specified level most of the time, +and changes to the lower value for just a moment. "blink on" means the +light is usually at the lower value, and changes to the sector's value +for just a moment. Every "synchronized" blinking sector on the level +will change at the same time, whereas the unsynchonized blinking sectors +change independently. "oscillate" means the light level goes smoothly +from the lower to the higher and back; it takes about 2 seconds to go +from maximum to minimum and back (255 down to 0 back up to 255). + The damaging sector types only affect players, monsters suffer no ill +effects from them whatsoever. Players will only take damage when they +are standing on the floor of the damaging sector. "-10/20%" means that +the player takes 20% damage at the end of every second that they are in +the sector, except at skill 1, they will take 10% damage. If the player +has armor, then the damage is split between health and armor. + +Dec Hex Class Condition or effect + + 0 00 - Normal, no special characteristic. + 1 01 Light random off + 2 02 Light blink 0.5 second + 3 03 Light blink 1.0 second + 4 04 Both -10/20% health AND light blink 0.5 second + 5 05 Damage -5/10% health + 7 07 Damage -2/5% health + 8 08 Light oscillates + 9 09 Secret a player must stand in this sector to get credit for + finding this secret. This is for the SECRETS ratio + on inter-level screens. +10 0a Door 30 seconds after level start, ceiling closes like a door. +11 0b End -10/20% health. If a player's health is lowered to less + than 11% while standing here, then the level ends! Play + proceeds to the next level. If it is a final level + (levels 8 in DOOM 1, level 30 in DOOM 2), the game ends! +12 0c Light blink 0.5 second, synchronized +13 0d Light blink 1.0 second, synchronized +14 0e Door 300 seconds after level start, ceiling opens like a door. +16 10 Damage -10/20% health + + The following value can only be used in versions 1.666 and up, it will +cause an error and exit to DOS in version 1.2 and earlier: + +17 11 Light flickers on and off randomly + + All other values cause an error and exit to DOS. This includes these +two values which were developed and are quoted by id as being available, +but are not actually implemented in DOOM.EXE (as of version 1.666): + + 6 06 - crushing ceiling +15 0f - ammo creator + + What a shame! The "ammo creator" sounds especially interesting! + + +[4-10]: REJECT +============== + + The REJECT lump is used to help speed play on large levels. It can +also be used for some special effects like monsters in plain sight who +CANNOT attack or see players. + The size of a REJECT in bytes is (number of SECTORS ^ 2) / 8, rounded +up. It is an array of bits, with each bit controlling whether monsters +in a given sector can detect and/or attack players in another sector. + Make a table of sectors vs. sectors, like this: + + sector that the player is in + 0 1 2 3 4 + +--------------- +sector 0 | 0 1 0 0 0 +that 1 | 1 0 1 1 0 +the 2 | 0 1 0 1 0 +monster 3 | 0 1 1 1 0 +is in 4 | 0 0 1 0 0 + + A 1 means the monster cannot become activated by seeing a player, nor +can it attack the player. A 0 means there is no restriction. All non- +deaf monsters still become activated by weapon sounds that they hear +(including the bare fist!). And activated monsters will still pursue +the player, but they will not attack if their current sector vs. sector +bit is "1". So a REJECT that's set to all 1s gives a bunch of pacifist +monsters who will follow the player around and look menacing, but never +actually attack. + How the table turns into the REJECT resource: + Reading left-to-right, then top-to-bottom, like a page, the first bit +in the table becomes bit 0 of byte 0, the 2nd bit is bit 1 of byte 0, +the 9th bit is bit 0 of byte 1, etc. So if the above table represented +a level with only 5 sectors, its REJECT would be 4 bytes: + +10100010 00101001 01000111 xxxxxxx0 (hex A2 29 47 00, decimal 162 41 71 0) + + In other words, the REJECT is a long string of bits which are read +from least significant bit to most significant bit, according to the +lo-hi storage scheme used in a certain "x86" family of CPUs. + Usually, if a monster in sector A can't detect a player in sector B, +then the reverse is true too, thus if sector8/sector5 is set, then +sector5/sector8 will be set also. Same sector prohibitions, e.g. 0/0, +3/3, etc. are only useful for special effects (pacifist monsters), or +for tiny sectors that monsters can't get to anyway. + + The REJECT array was designed to speed the monster-detection process. +If a sector pair is prohibited, the game engine doesn't even bother +checking line-of-sight feasibility for the monster to "see" the player +and consider attacking. When a level has hundreds of monsters and +hundreds of sectors, a good REJECT can prevent the drastic slowdowns +that might otherwise occur (even fast CPUs can fall victim to this +phenomenon). + + +[4-11]: BLOCKMAP +================ + + The BLOCKMAP is a pre-calculated structure that the game engine uses +to simplify collision-detection between moving things and walls. If a +level doesn't have a blockmap, it will display fine, but everybody walks +through walls, and no one can hurt anyone else. + A concise definition of the BLOCKMAP is in appendix [A-1]. This is +the full explanation of it. + The whole level is cut into "blocks", each is a 128 (hex 80) wide +square (the grid lines in the automap correspond to these blocks). The +BLOCKMAP is a collection of lists, one list for each block, which say +what LINEDEFS are wholly or partially in that block (i.e. part of the +line passes through the block). When the game engine needs to check +for an object/wall collision (to prevent a player from walking through +a wall or to explode a rocket when it hits a wall, etc.), it just looks +up the blocklist for the block that the object is in. This tells it +which linedefs it needs to check for collisions. Most blocks will have +few if any lines in them, so there will be a substantial savings in +processor time if it only checks a couple linedefs per object instead +of a thousand or so linedefs per object - it would have to check every +single linedef on the level if not for these blocklists. + The blocks are also used for object/object collisions, but that is +not visible in the WAD format. During play, each block is also given a +dynamic "thing list", which tells what THINGS are currently in that +block. Again, this negates the need to check every moving object vs. +every other object for collisions - only a few need be tested. + The BLOCKMAP is composed of three parts: the header, the offsets, and +the blocklists. + The 8-byte header contains 4 short integers: + +(1) X coordinate of block-grid origin +(2) Y coordinate of block-grid origin +(3) # of columns (blocks in X direction) +(4) # of rows (blocks in Y direction) + + The block-grid origin is the bottom-left corner of the bottom-left +(southwest) block. id's blockmap builder this origin point at 8 less +than the minimum values of x and y achieved in any vertex on the level. + The number of columns and rows needs to be sufficient to contain +every linedef in the level. If there are linedefs outside the blockmap, +it will not be able to prevent monsters or players from crossing those +linedefs, which can cause problems, including the hall of mirrors effect. + + There are N blocks, N = (number of columns * number of rows). Each +block has a blocklist and an offset to that blocklist. Immediately +following the 8-byte header are N unsigned short integers. The first +is the offset in short-ints NOT bytes, from the start of the BLOCKMAP +lump to the start of the first blocklist. The last offset points to +blocklist (N-1), the last blocklist. Note that all these offsets are +UNSIGNED, so they can point to a location 65535 shorts (131070 bytes) +into the BLOCKMAP. If they were signed, they could only go up to 32767. + The blocks are numbered going east (right) first, then north (up). +Block 0 is at the southwest corner (row 0, column 0). Block 1 is at +row 0, column 1. If there are 37 columns, then block 38 is at row 1, +column 0, etc. + + After the offsets come the blocklists. Each blocklist starts with +a short-int 0 (0x0000) and ends with a short-int -1 (0xffff). In between +are the numbers of every linedef which has any portion whatsoever in the +128 x 128 coordinate area of that block. If the block-grid origin is at +(0,0), then the first column is X = 0 to 127 inclusive, the second column +is X = 128 to 255 inclusive, etc. So a vertical line with X = 128 which +might seem to be on the border of two columns of blocks is actually only +in the easternmost/rightmost column. Likewise for the rows. + The first linedef in the LINEDEFS lump is linedef number 0, and so on. +An "empty" block's blocklist only has the two shorts 0 and -1. A non- +empty block might have this as its blocklist: 0 330 331 333 -1. This +means that linedefs 330, 331, and 333 have some part of them pass through +this block. A block that has linedef 0 in it will go: 0 0 .. etc .. -1. + + There is an upper limit to how big a BLOCKMAP can be. Even empty +blocklists require at least 3 shorts - the 0, the -1, and the offset to +the blocklist. The offsets are unsigned shorts, which would imply a +maximum value of short #65535 ( = byte 131070) for the start of the last +blocklist. At a little over 6 bytes per blocklist, that would be a maximum +of around 21000 blocks (145 by 145 blocks, 18560 in coordinates). But the +actual limit is less. Experiments suggest that the maximum total size of +all the blocklists, not counting the offsets, is 65535 bytes. This limits +a minimalist level to around 120 blocks square (15360 in coordinates), +or a realistically complex level to around 100 blocks square (12800 in +coordinates). + + +--------------------- +CHAPTER [5]: Graphics +--------------------- + + The great majority of the entries in the directory reference lumps +that are in a special picture format. The same format is used for the +sprites (monsters, items), the wall patches, and various miscellaneous +pictures for the status bar, menu text, inter-level map, etc. Every +one of these picture lumps contains exactly one picture. The flats +(floor and ceiling pictures) are NOT in this format, they are raw data; +see chapter [6]. + A great many of these lumps are used in sprites. A "sprite" is the +picture or pictures necessary to display any of the THINGS. Some of +them are simple, a single lump like SUITA0. Most of the monsters have +50 or more lumps. + The first four letters of these lumps are the sprite's "name". TROO +is for imps, BKEY is for the blue key, and so on. See [4-2-1] for a list +of them all. The fifth letter in the lump is an indication of what "frame" +it is, for animation sequences. The letters correspond to numbers, ASCII +"A" equalling 0, "B" is 1, ... "Z" is 25, etc. The highest needed by a +DOOM 1 sprite is W=22, but some of the DOOM 2 monsters need a few more +frames. + The "0" in the lump name is for "rotations" or "rot"s. All the +static objects like torches and barrels and dead bodies look the same +from any angle. This is because they have a "rot=0 lump" as DOOM itself +might say. Monsters and projectiles look different from different +angles. This is done with rots 1-8. This diagram shows how rot 1 is for +the front and they go counter-clockwise (looking from above) to 8: + + 3 + 4 | 2 + \|/ + 5--*----> 1 Thing is facing this direction + /|\ + 6 | 8 + 7 + + Many things have sets of lumps like this: TROOA1, TROOA2A8, TROOA3A7, +TROOA4A6, TROOA5, TROOB1, etc. This means that for frame 0 (A), the +pairs of rots/angles (2 and 8), (3 and 7), and (4 and 6) are mirror- +images. In the long run, this saves space in the wad file, and from the +designer's point of view, it's 37% fewer pictures to have to draw. + If a sprite's frame has a non-zero rot, it needs to have ALL 8 of +them. Also note that no more than two rots can be squeezed into one +lump's name. Some other two-rot lumps with a different format are +shown in the SPIDA1D1, SPIDA2D2, etc. lumps. + + IMPORTANT: Sprite lumps and flats cannot be added or replaced via pwads +unless they ALL are. That is, ALL sprites' lumps must be located in a +single wad file, and ALL flats' lumps must be in a single wad file. Wall +patches CAN be used in external wads, because the PNAMES lump gives a +number to every pname, and is used as a quick-index list to load in +wall patches. + Version 1.666 was rumored to be able to include sprites in pwads (in +fact the README says it can), but it can't. + + +[5-1]: Picture Format +===================== + + Each picture has three sections. First, an 8-byte header composed of +four short-integers. Then a number of long-integer pointers. Then the +picture's pixel/color data. See [A-1] for concise BNF style definitions, +here is a meatier explanation of the format: + +(A) The header's four fields are: + + (1) Width. The number of columns of picture data. + (2) Height. The number of rows. + (3) Left offset. The number of pixels to the left of the center; + where the first column gets drawn. + (4) Top offset. The number of pixels above the origin; + where the top row is. + + The width and height define a rectangular space or limits for drawing +a picture within. To be "centered", (3) is usually about half of the +total width. If the picture had 30 columns, and (3) was 10, then it +would be off-center to the right, especially when the player is standing +right in front of it, looking at it. If a picture has 30 rows, and (4) +is 60, it will appear to "float" like a blue soul-sphere. If (4) equals +the number of rows, it will appear to rest on the ground. If (4) is less +than that for an object, the bottom part of the picture looks awkward. + With walls patches, (3) is always (columns/2)-1, and (4) is always +(rows)-5. This is because the walls are drawn consistently within their +own space (There are two integers in each SIDEDEF which can offset the +starting position for drawing a wall's texture within the wall space). + + Finally, if (3) and (4) are NEGATIVE integers, then they are the +absolute coordinates from the top-left corner of the screen, to begin +drawing the picture, assuming the VIEW is full-screen (i.e., the full +320x200). This is only done with the picture of the player's current +weapon - fist, chainsaw, bfg9000, etc. The game engine scales the +picture down appropriatelyif the view is less than full-screen. + +(B) After the header, there are N = field (1) = = (# of columns) +4-byte integers. These are pointers to the data for each COLUMN. +The value of the pointer represents the offset in bytes from the first +byte of the picture lump. + +(C) Each column is composed of some number of BYTES (NOT integers), +arranged in "posts": + + The first byte is the row to begin drawing this post at. 0 means +whatever height the header (4) upwards-offset describes, larger numbers +move correspondingly down. + The second byte is how many colored pixels (non-transparent) to draw, +going downwards. + Then follow (# of pixels) + 2 bytes, which define what color each +pixel is, using the game palette. The first and last bytes AREN'T drawn, +and I don't know why they are there. Probably just leftovers from the +creation process on the NeXT machines. Only the middle (# of pixels in +this post) are drawn, starting at the row specified in the first byte +of the post. + After the last byte of a post, either the column ends, or there is +another post, which will start as stated above. + 255 (0xFF) ends the column, so a column that starts this way is a null +column, all "transparent". Draw the next column. + + +----------------------------------------------- +CHAPTER [6]: Flats (Floor and Ceiling Textures) +----------------------------------------------- + + All the lumpnames for flats are in the directory between the F_START +and F_END entries. Calling them flats is a good way to avoid confusion +with wall textures. There is no look-up or meta-structure in flats as +there is in walls textures. Each flat is 4096 raw bytes, making a square +64 by 64 pixels. This is pasted onto a floor or ceiling with the same +orientation as the automap would imply, i.e. the first byte is the color +at the NW corner, the 64th byte (byte 63, 0x3f) is the NE corner, etc. + The blocks in the automap grid are 128 by 128, so four flats will fit +in each block. Note that there is no way to offset the placement of flats, +as can be done with wall textures. They are pasted according to grid lines +64 apart, reckoned from the coordinate (0,0). This allows flats to flow +smoothly even across jagged boundaries between sectors with the same +floor or ceiling height. + + As discussed in chapter [5], replacement and/or new-name flats don't +work right from pwad files unless they are all in the same wad. + Theoretically, you can change all the flats want by constructing a +new DOOM.WAD or ALLFLATS.WAD pwad, but you have to make sure no floor +or ceiling uses an entry name which isn't in your F_ section. And you +have to include these four entries for DOOM 1 use, although you can +change their actual contents (pictures): FLOOR4_8, SFLR6_1, MFLR8_4, +and FLOOR7_2. The first three are needed as backgrounds for the episode +end texts. The last is what is shown "outside" the border of the display +window if the display is not full-screen. + + +[6-1]: Animated Flats +--------------------- + + See Chapter [8-4-1] for a discussion of how the animated walls and +flats work. Unfortunately, the fact that the flats all need to be +lumped together in one wad file means that its not possible to change +the animations via a pwad file, unless it contains ALL the flats, which +amounts to several hundred k. Plus it is illegal to distribute the +original data, so to pass around modifications, either all the flats +must be all-new, or a utility must be used to construct a FLATS.WAD +on an end-user's hard drive, using the original DOOM.WAD plus the +additions. (Note: Bernd Kreimeier, listed in [A-5], has written a +utility that does just this. It is called DMADDS11). + + +----------------------------- +CHAPTER [7]: Sounds and Music +----------------------------- + + +[7-1]: PC Speaker Sound Effects +=============================== + + DP* entries in the directory refer to lumps that are sound data for +systems using the PC speaker. + It's a quick and simple format. First is a that's always 0, +then a that's the number of bytes of sound data, then follow +that many bytes worth of sound data. That is, the lump's bytes will be +0, 0, N, 0, then N bytes of data. The DP* lumps range in size from around +10 bytes to around 150 bytes, and the data seem to range from 0 to 96 +(0x00 to 0x60). The numbers obviously indicate frequency, but beyond +that I don't know the exact correlation in Hz, nor the time duration +of each byte worth of data. Feel free to figure this out and tell me. + + +[7-2]: Soundcard Sound Effects +============================== + + DS* entries in the directory refer to lumps that are sound data for +systems using soundcards. + This data is in a RAW format for 8-bit 11 KHz mono sound - first is +an 8-byte header composed of 4 unsigned short integers: + +(1) 3 (means what?) +(2) 11025 (the sample rate, samples per second) +(3) N (the number of samples) +(4) 0 + + Each sample is a single byte, since they are 8-bit samples. The +maximum number of samples is 65535, so at 11 KHz, a little less than +6 seconds is the longest possible sound effect. + + +[7-3]: Music +============ + + D_* entries is the directory refer to lumps that are music. This +music is in the MUS file format, which goes like this: + +offset type contents + +0 ASCII "MUS" and CTRL-Z (hex 4d 55 53 1a) +4 # of bytes of music data +6 # of bytes of header data (offset to start of music) +8 number of primary channels +10 number of secondary channels +12 number of instrument patches +14 0 +16 s instrument patch numbers +X to end ? Music data + + X is the header size (the second short). Drum patch numbers (greater +than 128) are 28 less than the numbers listed in the DMXGUS lump. + What the exact format of the music data is, I don't know. + + +[7-4]: GENMIDI +============== + + This has something to do with General MIDI, obviously. This lump +has 3 sections: an 8-byte header (the ASCII text "#OPL_II#"), then +150 36-byte records (1 for each instrument), then 150 32-byte strings +(names of instruments, padded with zeros). Perhaps the 36 bytes contain +waveform information for the General MIDI standard instruments (this +guess is based on exactly one glance at a dump of the byte values, +so don't put too much faith in it). + + +[7-5]: DMXGUS +============= + + This lump is used to do instrument patch mappings on the Gravis +Ultra-Sound soundcard. It's in a very simple format - ASCII text! +Here's the start and end of the DMXGUS lump from DOOM 1 version 1.2, +which is 200 lines, of which the first 10 are comments: + +#Purpose: Different size patch libraries for different memory sizes. +# The libraries are built in such a way as to leave 8K+32bytes +# after the patches are loaded for digital audio. +# +#Revision History: 06/22/93 - Fixed problem with 512K patch library +# 07/26/93 - patch names changed in various releases +# +# +#Explanation of Columns: Patch # 256K 512K 768K 1024K Patch Name +# +0, 2, 1, 1, 1, acpiano +1, 2, 1, 1, 1, britepno +2, 2, 1, 1, 1, synpiano +. +. +. +213, 128, 128, 128, 128, castinet +214, 128, 128, 128, 128, surdo1 +215, 128, 128, 128, 128, surdo2 + + +-------------------------------- +CHAPTER [8]: Miscellaneous Lumps +-------------------------------- + + +[8-1]: PLAYPAL +============== + + There are 14 palettes here, each is 768 bytes = 256 rgb triples. +That is, the first three bytes of a palette are the red, green, and +blue portions of color 0. And so on. Note that the values use the +full range (0..255), while standard VGA digital-analog converters +use values 0-63. + The first palette, palette 0, is used for most situations. + Palettes 10-12 are used (briefly) when an item is picked up, the +more items that are picked up in quick succession, the brighter it +gets, palette 12 being the brightest. + Palette 13 is used while wearing a radiation suit. + Palettes 3, 2, then 0 again are used after getting berserk strength. + If the player is hurt, then the palette shifts up to number X, then +comes "down" one every second or so, to palette 2, then palette 0 +(normal) again. What X is depends on how badly the player got hurt: +Over 100% damage (add health loss and armor loss), X=8. 93%, X=7. 81%, +X=6. 55%, X=5. 35%, X=4. 16%, X=2. These are just rough estimates +based on a single test session long ago. Why bother tracking down +the exact division points? + + Unknown: what palettes 1 and 9 are for. + + +[8-2]: COLORMAP +=============== + + This contains 34 sets of 256 bytes, which "map" the colors "down" in +brightness. Brightness varies from sector to sector. At very low +brightness, almost all the colors are mapped to black, the darkest gray, +etc. At the highest brightness levels, most colors are mapped to their +own values, i.e. they don't change. + In each set of 256 bytes, byte 0 will have the number of the palette +color to which original color 0 gets mapped. + The colormaps are numbered 0-33. Colormaps 0-31 are for the different +brightness levels, 0 being the brightest (light level 248-255), 31 being +the darkest (light level 0-7). Light level is the fifth field of each +SECTOR record, see [4-9]. + Colormap 32 is used for every pixel in the display window (but not +the status bar), regardless of sector brightness, when the player is +under the effect of the "Invulnerability" power-up. This colormap is +all whites and greys. + Colormap 33 is all black for some reason. + While the light-amplification goggles power-up is in effect, everything +in the display uses colormap 0, regardless of sector brightness. + + +[8-3]: ENDOOM +============= + + When you finally have to leave DOOM, you exit to dos, and a colorful +box of text appears. This is it. It is 4000 bytes, which are simply +stored in the screen memory area for 80x25 16-color text mode. Thus +it follows the same format as screen memory does: each character on +the screen takes up two bytes. The second byte of each pair is from +the (extended) ASCII character set, while the first byte of each pair +is the color attribute for that character. The color attribute can +be explained thus: + + bit 7 6 5 4 3 2 1 0 + +-----+---+---+---+---+---+---+---+ + | | . . | . . . | + |Blink| Background| Foreground | + | | . . | . . . | + +-----+---+---+---+---+---+---+---+ + + So the foreground color can be from 0-15, the background color can +be from 0-7, and the "blink" attribute is either on or off. All this +very low-level info can be found in many ancient PC programming books, +but otherwise it might be hard to locate... + + +[8-4]: TEXTURE1 and TEXTURE2 +============================ + + These are lists of wall texture names used in SIDEDEFS lumps. Each +wall texture is composed of one or more wall patches, whose names are +listed in the PNAMES lump. But in a texture, the wall patches are not +referred to by name, rather by the index number indicating what position +they occupy in the PNAMES lump. + The TEXTURE2 lump is only present in the registered DOOM.WAD. The +TEXTURE1 lump is identical in DOOM.WAD and the shareware DOOM1.WAD, and +it only refers to pname numbers up to 163, because the shareware wad +only has the first 163 wall patches, not all 350. + + A TEXTURE lump starts with a 4-byte long integer N which is the number +of textures defined in it. Following it are N long integers which are the +offsets in bytes from the beginning of the TEXTURE lump to the start of +each texture's definition. + Then there are N texture definitions, which have the following format. +The first (texture name) field is an 8-byte string (less than 8 byte +names are padded with zeros), the rest of the fields are 2-byte short +integers: + +(1) The name of the texture, used in SIDEDEFS, e.g. "FIREWALL". +(2) always 0. +(3) always 0. +(4) total width of texture +(5) total height of texture + + The fourth and fifth fields define a "space" (usually 128 by 128 + or 64 by 72 or etc...) in which individual wall patches are placed + to form the overall picture. To tile vertically on a very tall wall + without exhibiting the "Tutti Frutti" effect, a texture must have + height 128, the maximum. There is no maximum width. + +(6) always 0. +(7) always 0. +(8) Number of 5-field (5 ) patch descriptors that follow. This +means that each texture entry has variable length. Many entries have just +1 patch, the most used in DOOM in a single texture is 64. + + Patch descriptor: + + (a) x offset from top-left corner of texture space defined in fields + 4 and 5 to start placement of this patch + (b) y offset + (c) number (0...) of the entry in the PNAMES lump that contains the + lump name from the directory, of the wall patch to use... + (d) always 1, is for something called "stepdir"... + (e) always 0, is for "colormap"... + + Each texture's entry ends after the last of its patch descriptors. + Note that patches can have transparent parts, since they are in the +same picture format as everything else. Thus there can be (and are) +transparent wall textures. These should only be used on a border between +two sectors, to avoid "hall of mirrors" problems. + Also, textures intended for use as the "middle" texture of a 2-sided +SIDEDEF (e.g. transparent textures) should only be composed of a single +patch. A limitation in the game engine will cause the "medusa" effect +if there is more than 1 patch in any middle texture that is visible in +the display window. This effect causes the computer to slow to a crawl +and make play impossible until the offending wall is out of view. + + +[8-4-1]: Animated Walls +----------------------- + + Some of the walls and floors are animated. In the case of wall +textures, it is possible to substantially customize these animations. +Flats' animations can theoretically also be modified, but since flats +don't work from pwads, that can make the effort very difficult. + The game engine sets up a number of wall animation cycles based on +what entries it finds in the TEXTURE lumps. It also sets up flat +animations based on what lumps exist between F_START and F_END. +Versions before 1.666 can have up to 9 animated walls and 5 animated +flats. Version 1.666 (DOOM 1 or 2) can have 13 walls and 9 floors +animate. + For wall animations, the entries in the columns "First" and "Last" +below, and all the entries between them (in the order that they occur +in the TEXTURE lump) are linked. If one of them is listed as a texture +on a sidedef, that sidedef will change texture to the next in the cycle +about 3 times a second, going back to after . Flats work +similarly, except the order is dictated by the wad directory. If both +of the and texture/flat names are not present, no problem. +Then that potential cycle is unused. But if is present, and + either is not present or is listed BEFORE , then an +error occurs while the DOOM operating system sets up, and it aborts. + Note that much longer sequences are possible! The entries between + and can be almost anything; they need not be the same +in number as in the original, nor do they have to follow the same +naming pattern. Thus one could set up SLADRIP1, TRON2, TRON3, TRON4, +..., TRON67, SLADRIP3 for a 69-frame animated wall! + The "Ver" column indicates what version of DOOM is required. "All" +indicates all versions have it. The "r" signifies that the shareware +DOOM1.WAD does not contain the necessary picture lumps. The "2" means +that only DOOM 2 has the necessary picture lumps, but version 1.666 of +DOOM.EXE for DOOM 1 also has the capability to use these animation-cycle +names (for pwad designers). + +First Last Ver Normal # of frames + +BLODGR1 BLODGR4 r 4 +BLODRIP1 BLODRIP4 r 4 +FIREBLU1 FIREBLU2 r 2 +FIRELAV3 FIRELAVA r 2 (3 patches are in DOOM.WAD, 1 is unused) +FIREMAG1 FIREMAG3 r 3 +FIREWALA FIREWALL r 3 +GSTFONT1 GSTFONT3 r 3 +ROCKRED1 ROCKRED3 r 3 +SLADRIP1 SLADRIP3 All 3 + +BFALL1 BFALL4 2 4 +SFALL1 SFALL4 2 4 +WFALL1 WFALL4 2 4 +DBRAIN1 DBRAIN4 2 4 + +(floor/ceiling animations): + +NUKAGE1 NUKAGE3 All 3 +FWATER1 FWATER4 r 4 +SWATER1 SWATER4 - 4 (SWATER lumps aren't in any DOOM.WAD) +LAVA1 LAVA4 r 4 +BLOOD1 BLOOD3 r 3 + +RROCK05 RROCK08 2 4 +SLIME01 SLIME04 2 4 +SLIME05 SLIME08 2 4 +SLIME09 SLIME12 2 4 + + +[8-4-2]: The SKY Textures +------------------------- + + The SKY1, SKY2, and SKY3 textures are rather special in that they are +used as sky backgrounds when the player is out in the open. They can +also be used on regular walls, but they usually aren't, because then +they just look like a painting. The "background" effect is done by +the game engine. There is a special flat, F_SKY1, which is used to +indicate that a floor or ceiling is "transparent" to the SKY beyond. +The picture data in the F_SKY1 flat is not even used. + Upper textures between F_SKY1 ceilinged sectors do not have the +specified texture (if any) drawn. Instead, they are "sky". Likewise +with lower textures between F_SKY1 floored sectors, but it doesn't +work as well, because if the player's viewpoint is below the top of +a lower-texture-sky (i.e. if any part of it is in the upper half of +the display), it causes a hall-of-mirrors effect. + SKY textures as sky backgrounds are mirror-images of what they look +like on walls. + The SKY textures are always placed with their tops at the top of the +view window. Since they cannot be more than 128 high, just like any +other texture, a rather ugly "seam" in the sky is sometimes visible +if the player can see too far "down". + SKY textures do move horizontally, though, to give a realistic +effect. Doing a complete 360 degree turn will scroll by a 256-wide +SKY four times. A 1024-wide SKY will exactly circumscribe the horizon. +The 0 column of the SKY texture will be at due north (as on the automap), +the 256 column is at west, 512 is south, and 768 is east. So the middle +part of a 256-wide SKY is visible at NW, SW, SE, and NE. + + SKY textures can be composed of several patches, just like regular +textures, but trying to animate the sky doesn't work. DOOM.EXE can be +changed so that SKY2 is the start of an animation cycle, and indeed +on a wall it will animate, but the sky background does not. This is +perhaps related to the way that "middle" textures of sidedefs do not +animate. + + +[8-5]: PNAMES +============= + + This is a list of all the names of lumps that are going to be used +as wall patches. DOOM assigns numbers to these names, in the order +that they are listed. The numbers are then used in TEXTURE1 and TEXTURE2 +entries to refer to wall patch lumps. In a texture composition entry, +0 means the first pname, 1 is the second, ... + + The first four bytes of the PNAMES lump is a long integer N. + Then follow N pnames, each of which occupies 8 bytes. Pnames less than +8 bytes long are padded with zeros. These names duplicate an entry in +the directory (but are not case sensitive - lowercase letters will match +uppercase letters and vice versa). Unlike sprites and floors, wall +patches can be loaded from external pwads. Whichever pwad was listed +last on the command line and contains a lump with the same name as the +one in the PNAMES lump (which itself could be from a pwad) is the pwad +that is used to get the picture data for that wall patch. + + +[8-6]: DEMOs +============ + + If you start DOOM and do nothing, after a few seconds, it automatically +shows a demo of play on some level. Also, external demos can be recorded +and played back by using the command line parameters explained in the +README and/or the DOOM FAQ. All external demos have a .LMP extension +which the DOOM OS attaches; you only type the [demoname] without the +.LMP extension. + The DOOM.WAD lumps DEMO1, DEMO2, and DEMO3 are in exactly the same +format as these external .LMP files. Strictly speaking, the "demo" +format should not be called the "LMP" format, because any external +file without a wadfile header, i.e. it is just raw data, is a "lump" +and deserves the .LMP extension. + + A DOOM demo has three parts: + + (1) header - 7 or 13 bytes + (2) data recording player moves - 4 bytes per player per gametic + (3) quit byte - equals 128 (0x80) + +(1) There are two different kinds of header depending on the version of +DOOM used to record the demo. Versions up to 1.2 use a 7-byte header: + + byte range purpose + +0 0-4 skill level. 0="I'm too young to die", 4="Nightmare!" +1 1-3 episode. +2 1-9 mission/map. +3 0-1 player 1 is present if this is 1. +4 0-1 player 2. +5 0-1 player 3. +6 0-1 player 4. + + Versions after 1.2 use a 13-byte header: + +byte range purpose + +0 104-106 version. 104=1.4 beta, 105=1.5 beta, 106=1.6 beta or 1.666 +1 0-4 skill level. 0="I'm too young to die", 4="Nightmare!" +2 1-3 episode. In DOOM 2 this is always 1. +3 1-32 mission/map/level. In DOOM 1, it's 1-9. In DOOM 2, it's 1-32. +4 0-2 mode. 0=single or cooperative, 1=deathmatch, 2=altdeath +5 0- respawn. 0=no respawn parameter, (any other value)=respawn. +6 0- fast. 0=no fast parameter, (any other value)=fast. +7 0- nomonsters. 0=monsters exist, (any other value)=nomonsters. +8 0-3 viewpoint. 0=player 1's status bar, ..., 3=player 4. +9 0-1 player 1 is present if this is 1. +10 0x0a 0-1 player 2. +11 0x0b 0-1 player 3. +12 0x0c 0-1 player 4. + +(2) The player-move data is recorded in 4-byte chunks. Every 1/35 of a +second is a gametic, and for every gametic, there is one 4-byte chunk +per player. So the time duration of a demo (in seconds) is approximately +equal to its length in bytes divided by (140 * number_of_players). + + The four bytes recording each player's actions are: + + (a) Forward/Backward Movement. + (b) Strafe Right/Left Movement. + (c) Turn Left/Right. + (d) other actions - use/activate, fire, change weapons. + + The first three are signed bytes (i.e. of type ). + + (a) Ranges from -127 to 127, negative numbers are backward movement, + positive numbers are forward movement. Without the -turbo option + above 100, values outside -50..50 cannot be achieved. With a + keyboard or joystick, these are the regular values: + + Move forward: 25 (0x19) with Speed on: 50 (0x32) + Move backward: -25 (0xE7) with Speed on: -50 (0xCE) + + Fancy mouse use can achieve any number in the range. + + (b) Ranges from -127 to 127, negative numbers are left-strafe movement, + positive numbers are right-strafe movement. The keyboard values are: + + Strafe right: 24 (0x18) with Speed on: 50 (0x32) + Strafe left: -24 (0xE8) with Speed on: -50 (0xCE) + + (c) Ranges from -127 to 127, negative numbers are right turns, positive + numbers are left turns. The keyboard values vary from version to + version, but are all in the range -5..5, and that's with Speed on. + + Using the mouse can achieve much higher numbers here. I doubt if + the maximums of 127 and -127 can actually be achieved in play, + though. + + (d) the bits of this byte indicate what actions the player is engaged in: + + bit 0 Fire current weapon + bit 1 Use (a switch, open a door, etc.) + bit 2 Change weapon to the one indicated in bits 3-5: + + bits 5-3 = 000 Fist or Chainsaw + 001 Pistol + 010 Shotgun + 011 Chaingun + 100 Rocket Launcher + 101 Plasma Rifle + 110 BFG 9000 + 111 Super Shotgun (DOOM 2 only) + + bit 6 unused + bit 7 indicates a special action which alters the meanings + of the other bits: + + bits 1-0 = 01 pause or unpause + = 10 save game in slot # recorded in bits 4 to 2 + (slot number can thus be 0 to 7 but + should NOT be 6 or 7 or else!) + + There might be other special actions. The save game action happens +during replay of the demo, so be careful when playing demos if you +have important savegames! One or more of them could conceivably get +overwritten. + +(3) The last byte of a demo has the value 128 (0x80) + + +[8-6-1]: Level changes from 1.2 to 1.666 DOOM.WAD +================================================= + + Many people have experienced the error "Demo from a different game +version", because DOOM versions will only play back demos that were +recorded with the same version number. Theoretically, though, ANY +version can be converted to ANY other version. Versions up to 1.2 +don't even require any modification, and versions 1.4 and up just +require that their first byte be changed. To change between the two +families (pre-1.4 and post-1.2) would just require extra header bytes +be added/shaved. + But there are serious complications to converting demos. There have +been some minor changes and bug-fixes to the levels from version to +version. Since the demos only record player actions, they have NOTHING +about the level in them, so they depend on the level used for playback +to be the same as the level used for recording. Some kinds of differences +in the playback level can cause the demo to become "unsynchronized" +with the level, and players will seem to have gone crazy. For example, +if a deathmatch start-position is at a different location, when a +demo-player is spawned there, they will try to open doors that don't +exist at the new location, shoot at people who aren't there, etc. +The entire playback is ruined from that point on. Some examples of +changes that don't matter are different floor and wall textures, light +levels, and linedef "unpegged" flags. But most changes DO matter. + Note that changes like (nomonsters) vs. (monsters), (respawn) vs. +(regular), (altdeath) vs. (regular deathmatch) will very quickly lead +to unsynchronized goofball players. + + + +--------------------------- +CHAPTER [9]: Savegame Files +--------------------------- + + +------------------------------- +CHAPTER [10]: The DOOM.EXE File +------------------------------- + + Via pwads, a great many characteristics of the DOOM environment can +be changed: maps, pictures, sounds, etc. But there are also a lot of +neat things that can be done by patching the DOOM.EXE file itself. +There is a large collection of data at the end of the EXE file, and by +patching some bytes, we can turn literal values into variables. For +example, the player has a 16-unit "radius" which prevents him from +entering very small passageways. The player's radius can be made 1 and +his "height" 1, so he can enter mouse-sized crawlspaces. There are a +lot more exciting examples, such as invisible monsters, cyber-demons +that look like players, super-fast shotguns, and a hundred others, but +I won't describe all of that here. See appendix [A-4] for some EXE +utilities and documents. Here I will simply give the data that has +been figured out to date. + I freely mix hex and decimal numbers below. Hopefully you can tell from +the context. All of the stuff below applies to registered version 1.2, +and some of it applies to version 1.666 also. This chapter has not yet +been completely updated for 1.666, but it soon will be. + +[10-1]: Version 1.2 DOOM.EXE Data Segment Overview +================================================== + + The data begins at 0x6f414 (455700) and continues to the end of the +file, 0x8db27 (580391). Here's an overview of the sections: + +start length what + +6f414 3d30 TEXT STRINGS +73412 1a34 various unknowns, probably to do with I/O, sound, mouse, etc. +74bf8 10000 looks like hard-coded math tables, for speed? +84bf8 148 misc. +84d40 82 gamma correction messages +84dc2 280 "are you sure you want to quit" messages +85042 3a2 MENUS (new game, load game, etc.) +853e4 140 ? +85524 36c configuration options and defaults, like in DEFAULT.CFG +85890 174 ? +85a04 60 ? +85a64 54 ? +85ab8 c4 ? +85b7c 20 max ammo at start, and ammo per thing +85b9c c0 ammo type and frame #s for the weapons +85c5c 188 ANIMATED WALLS and FLOORS +85de4 258 SWITCH-WALLS +8603c c0 ? +860fc d4 ? +861d0 500 5 colormaps for use with the gamma correction setting 0-4 +866e4 fc ? +867e0 40 pointers to chatmacros, "Green:", etc. +86820 88 pointers to level names, used on Automap +868a8 d8 splat mark coordinates for end-level screen +86980 5a8 wimap patch animations for end-level screen +86f28 224 SONG NAMES list of pointers +8714c 8b8 SOUND TABLE +87a04 1a4 SPRITE NAMES list of pointers +87ba8 3800 STATE TABLE +8b3a8 20 ? +8b3c8 2368 THING TABLE +8d730 3fd ? + +[10-2]: Version 1.666 DOOM.EXE Data Segment Overview +==================================================== + + +[10-3]: Detail on some EXE Data Structures +========================================== + + More detail on some of the data follows. The "names" of each section +are the hexadecimal offsets to the start of that data, in the registered +versions 1.2 and 1.666 of DOOM.EXE. 1.2 offsets are to the left of the +asterisk, 1.666 to the right. "Integer" means a 4-byte integer +in hi-lo format, unless otherwise noted (e.g. "2-byte short integer"). + +6f414 *** 82a14 + + START OF DATA. Several times I'll refer to "pointers". All of these +pointers are integers. Add the values of these pointers to $6f414 or +$82a14 depending on the version, and you'll get the location of what's +being pointed to. + Note: there's also at least one other kind of pointer in here, with +larger values, that point to a location in the code, NOT the data. I call +these "code-pointers" for now. I know it's a lame term. + +6f414 *** a2228 + + TEXT STRINGS. They all start on 4-byte boundaries, i.e. at xxxx0/4/8/c. +$00 ends the string. Then the next one starts at the next boundary, so a 4 +byte string is followed by $00, then 3 bytes of random junk, then the next +string. + +73140 + + I think this is the last string, "TZ" + +73144 + + Misc. stuff I haven't investigated. Some of it has to do with sound card +stuff and mice and joysticks, because at 7384c is "DMXGUS.INI" and at 74ba8 +are pointers which point to the strings "None", "PC_Speaker", "Adlib", etc. + +74bf8 + + 64k of precisely ordered numbers, which leads me to believe they are +pre-calculated math tables, to speed up some floating point operations +used in the screen draw routine. Any other guesses? + +84bfc + + 3 pointers to the episode 1/2/3 end texts, "Once you beat...", "You've +done it...", and "The loathsome Spiderdemon is dead..." + +84c24 + + pointer to the string "doom.wad" + +84c74 + + pointer to the string "default.cfg" + +84c78 + + 8 integers: 1, 25, 50, 24, 40, 640, 1280, 320 + +84c98 + + 2 code-pointers + +84ccc + + 29 integers, with values like 90 and 135 and 180. Angles? + +84d40 + + "Gamma correction OFF", 00s, "Gamma correction level 1", ... 4. Each +occupies $1a bytes. + +84dc2 + + 8 text messages used to confirm quitting, each uses $50 bytes + +85042 + + MENUS. I know this controls to some extent which menu pictures are used +for which menu, but I haven't figured it all out yet. + +853e4 + + 14 ints: 42, 22, 23, 24, 28, 29, 31, 40, zeros + +8541c + + 256 bytes, values from 00-ff, no two the same, "random" order. + +85524 + + The configuration options. Each is 5 integers: a pointer to a string, +like "mouse_sensitivity", a code-pointer, the default value for that +option, a 0 or 1 (1 for all the "key_" options), and a 0. It would be +pretty dense to do anything with this, I think. + +85890 + + About 117 integers, with a definite structure, but I can't figure it +out, and changing/experimenting seems to do nothing. + +85a64 + + 21 sets of 4 bytes: 0, 0, 1, 0, 320, 168, "33", 0, 1, $(b2 26 26 2e), +$(ff 63 fd ff), a pointer that points to the $(b2...), 0, 1, "ema", 0, 0, +1, 0, 1, "xma". All these are unchanged from version 0.99 through 1.2, +except the pointer obviously. + +85ab8 + + Ints: 0, -1, -1, 0, 0, 0, 0, 4, 7, 10, 12, 14, 15, 15, 0, 0, 112, 96, 64, +176, then 16 that are members of this set {-65536, -47000, 0, 47000, 65536}, +then 4, 5, 6, 7, 0, 1, 2, 3, 8, 3, 1, 5, 7 + +85b7c *** 95714 + + AMMO AMOUNTS. 8 integers: 200, 50, 300, 50, 10, 4, 20, 1. The first four +are the maximum initial capacity for ammo, shells, cells, and rockets. The +backpack doubles these amounts. The second four are how many ammo in a +clip, shells, rockets/rocket, and cells/cell item. Boxes have 5x as much. + +859bc *** 95734 + + AMMO TABLE. 8 sets of 6 integers (9 sets in 1.666): + + version 1.2 version 1.666 + +Punch 5 4 3 2 5 0 Punch 5 4 3 2 5 0 +Pistol 0 12 11 10 13 17 Pistol 0 12 11 10 13 17 +Shotgun 1 20 19 18 21 30 Shotgun 1 20 19 18 21 30 +Chaingun 0 34 33 32 35 38 Chaingun 0 51 50 49 52 55 +Laucher 3 42 41 40 43 46 Laucher 3 59 58 57 60 63 +Plasma 2 59 58 57 60 62 Plasma 2 76 75 74 77 79 +BFG 2 66 65 64 67 71 BFG 2 83 82 81 84 88 +Chainsaw 5 53 52 50 54 0 Chainsaw 5 70 69 67 71 0 + Super-Shotgun 1 34 33 32 35 47 + + The first number of each set is the ammo type. Type 5 never runs out. +The next three numbers are 3 state #s (see the STATE TABLE below) for the +pictures displayed when moving while holding that weapon. You know, the +"bobbing weapon" effect? Fifth is the first state of the "shoot" sequence +for that weapon, and last is the first state of the "firing" sequence. The +"firing" pictures are the ones that are lit up, fire coming out, etc. + +85c5c *** 9580c + + ANIMATED WALLS and FLOORS. Each is 26 bytes: an integer, a 8-byte string, +$00, a 8-byte string, $00, and a final integer. + +0 NUKAGE3 NUKAGE1 8 +0 FWATER4 FWATER1 8 +0 SWATER4 SWATER1 8 +0 LAVA4 LAVA1 8 +0 BLOOD4 BLOOD1 8 + <---- v1.666 has four more: 0 RROCK08 RROCK05 8 +1 BLODGR4 BLODGR1 8 0 SLIME04 SLIME01 8 +1 SLADRIP4 SLADRIP1 8 0 SLIME08 SLIME05 8 +1 BLODRIP4 BLODRIP1 8 0 SLIME12 SLIME09 8 +1 FIREWALL FIREWALA 8 +1 GSTFONT3 GSTFONT1 8 +1 FIRELAVA FIRELAV3 8 +1 FIREBLU2 FIREBLU1 8 +1 ROCKRED3 ROCKRED1 8 + <---- V1.666 has four more: 1 BFALL4 BFALL1 8 + 1 SFALL4 SFALL1 8 + 1 WFALL4 WFALL1 8 + 1 DBRAIN4 DBRAIN1 8 + + Obviously the 0/1 means floor or wall. The first string is the name of +the animation cycle's LAST listed texture, the second string is the FIRST +listed texture. The cycle includes them and all entries between them in +whichever wad file is in effect (It doesn't have to be DOOM.WAD, a pwad +with new TEXTURE1 and 2 resources works quite nicely). The final 8 +doesn't seem to mean much. + +85dc8 + + A -1 then a bunch of zeros, maybe space for another animation cycle? + +85de4 *** 95a64 + + SWITCH WALL NAMES. Each is 20 bytes: an 8-byte string, 00, another +string, 00, and a 2-byte short integer. There are 28 switch names here +in v1.2 and 39 switch names in v1.666. When a switch is pulled, the game +checks to see if the wall texture is on this list. If it is, it changes +the wall texture to the corresponding alternate texture. The +is 1, 2, or 3. 1 means it's in all versions, 2 means only registered +DOOM 1 and DOOM 2, 3 means DOOM 2 only. + +86028 + + 20 zeros, again, room for one more? + +8603c *** + + 48 integers: 3 0 2 1 3 0 2 0 3 1 2 0 0 0 0 0 + 2 0 2 1 0 0 0 0 3 1 3 0 0 0 0 0 + 2 0 3 1 2 1 3 1 2 1 3 0 0 0 0 0 + +860fc *** + + 50 integers, all are either 50 or -50. + +861d0 *** + + 5 sets of 256 bytes, each is a COLORMAP, for the gamma correction +settings OFF, 1, 2, 3, 4. + +866d0 *** + + 5 integers: 1, 0, -1, 0, 0 + +866e4 *** + + 13 sets of 5 - 10 bytes, each set terminated by a $FF + +8675e *** + + $74 $20 + +86760 *** + + 13 pointers to the stuff at 866e4. An integer '0' between each pointer. + +867c8 *** + + 6 integers: -1, -1, 0, -1, 0, 1 + +867e0 *** + + 10 pointers to the 10 default chatmacros, then 4 pointers, to "Green:", +"Indigo:", "Brown:", "Red:" + +86820 *** + + AUTOMAP LEVEL NAMES. 27 pointers to the level names used on the automap. + +8689c *** + + The ascii letters "gibr" - the keys for sending messages in multiplayer. + +868a8 *** + + SPLAT MARK COORDINATES. At what screen coordinates to place the WISPLAT +picture on the end-level screen, for th 27 levels. 54 integers, 27 pairs. +e1m1 x, e1m1 y, ..., e3m9 y. + +86980, 86bb0, 86da8 *** + + END-LEVEL MAP ANIMATIONS. Each is 14 integers. The first one is (0, 11, +3, 224, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0). The first number is 0 for all the +ones on maps 0 and 2 (episodes 1 and 3), and it's 2 for map 1. The 11 is +always 11 except the last one of map 2 is 8. The 3 means 3 pictures are +involved in the animation, e.g WIA00100, WIA00101, and WIA00102. 224 and 104 +are the x and y coordinates. The sixth number is not 0 for map 1 - it's +from 1 to 8. This controls the way the Tower of Mystery "appears". All the +other numbers are always 0. + +86ef8 *** + + Three integers, how many animations for WIMAP0, 1, 2 respectively. + +86f04 *** + + Three pointers, to the starts of the animations for WIMAP0, 1, 2 +respectively. + +8714c *** + + SOUND TABLE. 61 and 1/2 sounds are listed here. Each is 9 integers: a +pointer to the string which is the sound's "name", then a 0 or 1, then +a value ranging from 32 to 128, then 0, -1, -1, 0, 0, 0. The names are +"pistol", "shotgn", ... "hoof", "metal", "chgun". Prefix DS or DP and you +get the entries in DOOM.WAD for the sound data. The "chgun" is the 1/2 - +there's no "DSCHGUN" in doom.wad, and the entry in this table is incomplete +anyway, lacking the all-important 0, -1, -1, 0, 0, 0 ending :-). There seem +to be a few glitches in the way the sounds were fit into the whole scheme, +this is just one of them. + +879ec *** + + pointer to start of SOUND TABLE. + +879f0 *** + + Integer = 150. 150 whats? + +87a04 *** + + SPRITE NAME POINTERS. 105 pointers to the strings "TROO", "SHTG", ..., +"SMRT". + +87ba8 *** 9834c + + STATE TABLE. 512 entries in v1.2, 967 entries in v1.666. Each entry +is 28 bytes in 7 integers: + +(1) sprite number 0-..., lookup in sprite name pointers list. +(2) sprite frame, 0="A" in a sprite lump, 1="B", etc. +(3) duration, how many gametics this state is displayed until + it looks for the next. -1 (0xffffffff) is forever. +(4) a "code pointer" which indicates what action(s) accompany + the displaying of this state. +(5) next state in sequence. 0 means no next state, sequence is done. +(6) always 0, has no effect. +(7) always 0, has no effect. + + +8b3a8 *** + + Two integers: 1, 0, then 6 code-pointers. + +8b3c8 *** 9ed10 + + THING TABLE. 103 entries in v1.2 which are each 88 bytes = 22 integers. +136 entries in v1.666, which are each 92 bytes = 23 integers. + +(1) Thing number, as used in maps. See [4-2-1]. Some of them are + equal to -1, e.g. the players' entry, and all projectiles. +(2) "Spawn" state. State number (from STATE TABLE) for when this + thing first appears. +(3) Health. Inanimates can't be killed, so it doesn't apply to them. +(4) "Moving" state. First state # of monsters pursuing, etc. +(5) "See player" sound. For monsters who become activated. Also for + projectiles' first sound. Note that sounds are 1-..., not 0-... + 0 indicates no sound. +(6) Reaction Time. Lower is faster. +(7) "Attack" sound. +(8) "Pain" state. +(9) Painchance. The chance out of 256 that a monster will be disrupted + when it gets hurt. Otherwise, they keep attacking. +(10) "Pain" sound. +(11) "Close attack" state. +(12) "Distance attack" state. +(13) "Death" state, or "explode" for projectiles. +(14) "Explosive death" state, only some monsters can be "mushed". +(15) "Death" sound, or "explode" for projectiles. +(16) Speed of movement. Projectiles' speed are * 65536. +(17) Horizontal size (radius) * 65536 +(18) Height * 65536 +(19) Mass +(20) Missile damage. Also, the Lost Soul has a 3 here, for it's attack. +(21) "Act" sound, for wandering monsters. +(22) Flags, see below +(23) "Respawn" state, for monsters being ressurected. VERSION 1.666 ONLY + + Flags. 0 = condition is false. 1 = condition is true. + + bit flagname effect on thing + + 0 Special it is a gettable thing (ammo, health, etc.) + 1 Solid creatures can't pass through (but projectiles can) + 2 Shootable can be hurt (note barrels have this set) + 3 NoSector totally invisible + 4 NoBlockmap + 5 + 6 (InPain) ? + 7 + 8 SpawnCeiling hung from ceiling + 9 NoGravity floating monsters and not-on-ground things + 10 Dropoff doesn't automatically hug floor if "jump" off ledge + 11 Pickup can pick up gettable items + 12 (NoClip) walks through walls + 13 + 14 Float floating monsters + 15 (Semi-NoClip) climb tall steps + 16 Missile projectiles + 17 (Disappearing ? + Weapon) + 18 Shadow semi-invisible like Spectres + 19 NoBlood uses PUFF instead of BLUD when hurt (e.g. barrels) + 20 (SlideHelpless) ? + 21 + 22 CountKill Monster: counts toward KILLS ratio on inter-level + 23 CountItem Artifact: counts toward ITEMS on inter-level screen + 24 (Running) ? + 25 NotDMatch this thing doesn't get spawned in deathmatch modes + 26 Color0 \ 00 = green stays green 01 = change to dark greys + 27 Color1 / 10 = change to browns 11 = change to dark reds + 28- unused + +8d730 *** n/a + + Misc junk I can't figure out. + +8db27 *** a7b99 + + End of DOOM.EXE + + +------------------------------------------------------------ +APPENDIX [A-1]: Backus-Naur Form definitions of WAD elements +------------------------------------------------------------ + + The descriptions below use a modified Backus-Naur Form (BNF) notation. +Each entry looks like + + := description ;type or comment (optional) + description cont'd. ;type or comment (optional) + + Descriptions composed of more than one sequential keyword or element +are usually listed with one element per line. This is for clarity and also +allows each succesive element to be assigned different types without extra +lines. + + := ; + + is a shorthand for + + := + := + + The description is one or more of the following predefined types, +and/or previously or subsequently defined keywords. + + is an unsigned 8-bit integer (0 to 255). + is a signed 8-bit integer (-128 to 127). + is an unsigned 16-bit integer in lo-hi format (0 to 65535) + is a signed 16-bit integer (-32768 to 32767). + is a signed 32-bit integer (-2147483648 to 2147483647). + is an ASCII string of from 1 to 8 bytes. If its length is + less than 8 bytes, the remainder are zeros (hex 00). + + Any of these may be followed by a range: means a byte +restricted to the range 1 to 99 inclusive. A single number means that +value is literally included: inserts that 8-bit value. + + { } are used to enclose a group of elements. + + | is used to separate choices - exactly one of the choices applies. + + [ ] are used following an element or group of elements to indicate +an array. Usually a literal value or a keyword will be used to denote +how many members the array has. [666] means that the element + is repeated 666 times in sequence. { } [zeus] +means that whatever the value of is, there are that many pairs +of and . [1..16] indicates the value may be from +1 to 16 inclusive, and [...] indicates an indefinite number. + + A literal string "ABCD" may appear, in which case those ASCII characters +are directly inserted. + +------ + + := "PWAD"|"IWAD" + + + + + + := ;number of lumps in WAD file + := ;file offset to directory start + + := [numlumps] + := ;see different kinds below + + := { | } [numlumps] + := ; + ; + ; + + := |

    + + +
    := { | } ;different versions + := + + + [4] + := + + + + + + + + + [4] + := + := { | } ;DOOM 1 or DOOM 2 + := { | } ;DOOM 1 or DOOM 2 + := ;0 means not present, 1 means present + := ;versions 1.4, 1.5, 1.6 (also 1.666) + := := ;0 is off, non-zero is on + := ;0 is off, non-zero is on + := ;0 is off, non-zero is on + := ;shown from this player's view + + := [...] + := [1..4] ;1-4 is # of players present in demo + := ; + ; + ; + ; + +------ + + := "#OPL_II#" + [150] + [150] + := [36] ;format unknown to me + := [32] ;padded with 0s + +------ + + := pointless to describe here, see section [7-5] + +------ + + := "MUS" + + ; + ; + ; + ; + ; + + + + := [num_instr_patches] + := ;Drum patch #s 28 less than in DMXGUS + + := ??? + +------ + + := + ;sampling rate + ; + + + := [num_samples] ; + +------ + + := + ; + + := [num_PC_samples] + := ;seem to range [0..96] + +------ + + := ; + + + := [num_textures] + := + := [num_textures] + := ; + + + ; + ; + + + ; + + := [num_patches] + := ;all are + + ;lookup in for picture + ;supposedly + ;supposedly + +------ + + := ; + + := [num_pnames] + := ] ;match the from the + ; of a + +------ + + :=
    + ;offsets to starts + +
    := ;all are + + + + := [width] ; + := [width] + := [...] + ;255 (0xff) ends the column + := ; + ; + ; + + ; + := [num_pixels] ; + +------ + + := [4096] ; + +------ + + := + + + + + + + + + + + := [...] + := ;all are + + + + + + := [...] + := ;all are + + + + + + ;if there's no left side + + := [...] + := ; + ; + ; + ; + ; + ; + + := [...] + := ;both are + + + := [...] ; stored by order + := ;all are + + + + + + + := [...] + := ;both are + + + := [...] + := ;first four are + + + + [2] + [2] + := ;all are + + + + := ;if 0x8000 it's a subsector + + := [...] + := ; + ; + ; + ; + ; + ; + ; + + := ;see [4-10] for this one + + := ; + ; + ; + ; + + + := [numofblocks] + := + := ;note it equals * + := [numofblocks] + := ;for dynamic thinglist pointer + + +:= [...] ;the numbers of all the s + ;that are in the block + := + + +---------------------------------- +APPENDIX [A-2]: DOOM engine limits +---------------------------------- + +Maximum width of a TEXTURE = NONE? +Maximum height of a TEXTURE = 128 +Maximum edges in display that can have their sides rendered = 128 in 1.2 + 256 in 1.6+ +Maximum blocks in a BLOCKMAP = about 13000, or 113 * 113 +Maximum THINGS in view at once = 64, extras are not drawn +Maximum patches on a texture used on a + 2Sided "middle" texture before "medusa" effect = 1 +Maximum # of "plats" = 30 (up/down moving floors, and lifts) + +Maximum # of "scrolling" walls per level (line type 48) = 64 + + +------------------------------------------- +APPENDIX [A-3]: DOOM.WAD changes and errors +------------------------------------------- + + There are some imperfections in the DOOM.WAD file. All versions up +to 1.666 have the SW18_7 lump included twice. Versions before 1.666 +have the COMP03_8 lump twice. And with version 1.666 somebody really +messed up, because every single DP* and DS* and D_* lump that's in +the shareware DOOM1.WAD is in the registered DOOM.WAD twice. The error +doesn't adversely affect play in any way, but it does take up an +unnecessary 800k on the hard drive. + + Some of the lumps in the sprite section are unused. Versions before +1.666 had PBULx0 and PSHEx0, x=A-B, which were pictures of bullet and +shell casings being ejected after the player fired a weapon (this +feature was obviously removed). Also there were four more "fireball" +sprite-lump sets: BAL3x0, BAL4x0, x=A-E, and BAL5x0 and BAL6x0, x=A-B. +The only unused lump left in 1.666 is SMT2A0, which is a small grey +stalagmite, similar to the SMIT sprite which is THING #47. There are +some new sprite lumps in version 1.666 of DOOM 1 which are "semi-unused" +because they aren't used in DOOM 1, but they ARE used in DOOM 2. They +are all projectile sprites, so it's probably just a little leftover +from compiling the WAD. + + So, in case it might help with converting demos, or for any other +reason, here is a list, entirely by Paul Falstad, of all the changes +to the levels between DOOM 1.2 and DOOM 1.666. The 1.4 and 1.5 beta's +levels are in most if not all respects identical to 1.666's - I haven't +checked. + +E1M2 +- Linedef #530 changed from a door that closes to one that stays open. + This is the south side of the door out of the maze. This allows + deathmatch players who started in there to get out from the inside. + +E1M4 +- The swastika got changed to a different shape. A bunch of things in + the swastika room got moved around to accomodate the new layout. +- Thing #185 (a deathmatch start position) got moved from (768, 1952) to + (736, 1824). This is in the room with the ledge NW of the player 1 + starting room; the deathmatch start got moved off the ledge onto the + main floor. + +E1M5 +- Thing #216 (a deathmatch start) got moved from (-2112, 512) to + (-800, 1200); that is, it got moved from the west courtyard (the one + with the supercharger) to the hidden hallway just south of the pentagram. +- Sector #105's floor was lowered from 88 to 80. In other words, the + window west of the yellow keycard was enlarged a bit. Also, the + associated linedefs are no longer marked impassable. + +E1M6 +- Thing #116 (the sargeant in the middle of void space in the southeast + corner of the map) got removed. +- Sectors #139 and #142 got their floor changed from FLOOR0_6 to FLOOR4_8 + for consistency with the surrounding sectors. (These are the floors + underneath the yellow doors on the northwest and northeast corners + of one of the rooms.) + +E1M7 +- Linedef #782 was type 0; now it's type 31 (door that stays open). + This is south side of the last door before the exit door; it can now + be opened from the inside, so a deathmatch player that started in the + exit room can get out. + +E1M8 +- The computer map in the pentagram got changed to a shotgun. +- Linedefs 35, 136, and 140 no longer have their upper textures unpegged. + This is the secret door to the supercharger; it now looks like a real + door when it opens. +- A secret door was added in the east baron's alcove. When you push on + the east wall, a secret chamber opens with a switch. That switch + lowers the lift to the south, so that you can get back into the complex. + (Though you could anyway, by jumping through the window on the west or + east side of the hallway south of the lift...) + Actually, it lowers the lift to the lowest adjacent floor, which + (after the two barons are dead) is lower than the hallway floor + height. Probably not the intended effect. +- Vertex #223 got moved ever so slightly NW for some reason. + +E2M4 +- Northwest of the big green "O", there is a secret room with partial + invisibility. The door to the room closes when you walk north through + a hallway just southwest of it; you're supposed to shoot the door to + open it. However, if you run north quickly over the trigger line and + then run east through the door, you can just make it before the door + closes, but in 1.2 you'd be trapped inside, since the door would not + open from the east side. In 1.666, the linedef type of the east edge + of the door has been changed so that you can open the door from inside + the secret room. + +E3M1 +- Sector 8's trigger number is now 0. Previously, it was 6, which is the + same number as one of the lines you walk over when getting the shotgun. + This line would cause the floor to be lowered. However, sector 8's floor + is already lower than that of any adjacent sectors, so nothing happened. + +E3M4 +- Sidedefs 1327 and 1332 had their texture offsets fixed. These are + the sidedefs on either side of the window between the room with the + beserker and the room with two spectres and a teleporter, east of + the player one starting point. Now, the window looks better than it + did before, but still not perfect. + +E3M6 +- There is now a BFG9000 sitting in the northwest window in the building + which you're facing at the start of the level. It only appears in + multiplayer mode. +- The structure which has the switch leading to the secret level had its + north wall thickened, so that you can't trigger the switch from outside + of the structure. + + +------------------------------------ +APPENDIX [A-3]: A BLOCKMAP algorithm +------------------------------------ + +this section is being removed + +--------------------------------------- +APPENDIX [A-4]: Other helpful documents +--------------------------------------- + + There are several other excellent sources of information about +DOOM, editing DOOM levels, changing the DOOM.EXE, and pwads. +Some of the following items get widely distributed (BBS, Usenet, +online services, FTP) and some don't. Three prominent FTP sites +with huge quantities of doom-related material are: + + infant2.sphs.indiana.edu /pub/doom and subdirectories + (../wad_edit/text has most documents) + wuarchive.wustl.edu /pub/msdos_uploads/games/doomstuff + ftp.uwp.edu /pub/incoming/id + /pub/msdos/games/id/home-brew/doom + + The infant2 site also has a number of mirrors. + As time passes, newer versions of these documents may be released, +and/or the file names will change: + +DESIGN12.ZIP Level Design FAQ, edited by Tom Neff + Truly has lots of good questions, and good answers, + to common questions related to level design. Covers + the simple stuff, and some of the most advanced + topics too. Also, it is editor-nuetral, i.e. it + does not restrict itself to any single level editor. + Highly recommended. + +DMFAQ666.ZIP The Official DOOM FAQ 6.666 by Hank Leukart. + A huge collection of information about the history + of DOOM, notes on game play, and lists of add-on + utilities available to enhance play. + +DOOMBSP.ZIP The source code from id's bsp routines, which build + the NODES structure and the REJECT and BLOCKMAP too. + If you want to see C, here it is. + +METRICS.ZIP "DOOM Metrics", by Scott Amspoker. Has some more info + and more explanations related to [4-2-2]: Thing Sizes, + and how monsters prefer stairs that aren't too steep. + +TEXPATCH.ZIP Textures To Patches, by Gregory Lewis. Shows the + patch composition of every texture in registered + DOOM. + +TEXTURES.ZIP "Managing Textures and the Unpegged Attribute", by + Scott Amspoker. Explains in great depth how textures + are drawn on walls, how the unpegged flag works, and + how texture offsets apply. + +DH200.ZIP DOOM.EXE Hack Editor, by Greg Lewis. This program + allows changes to be made to the DOOM.EXE file and + they can be saved/loaded via patch files. The thing + and frame tables (discussed in chapter [10]) are the + main emphasis of this excellent utility. + +??? "Fun with Dehacked", edited by Dan Lottero. Has a lot + of tips and tricks for using the DOOM.EXE Hack Editor + (dehacked). + +??? "Blackadder's DeHackEd Patch Reviews", by Michael Adcock. + Last updated 24Jul94? + +??? "DOOM Deathmatch Wad Ranking", by James Dicke and Jim + Urbas. Is a good system for rating how good and how + fun deathmatch play is on pwads. If you want to find + the best deathmatch levels, this is a good place to + start. + +??? pwad review documents and lists. + +??? "The unofficial LMP format description 1.0", by + Uwe Girlich + +------------------------------- +APPENDIX [A-5]: Acknowledgments +------------------------------- + + The following people either brought mistakes to my attention, or +provided additional information that I've incorporated into these +specs. Thanks for all the help! Sorry if I left anyone out. + If you have any comments or questions, have spotted any errors, +or have any possible additions, please send me e-mail. If you've +contacted me before, please note my new address (msfell@aol.com). + +id Software + Created DOOM, added the -file parameter, used a simple format + for the WAD, and occasionaly released specifications and + technical information about DOOM and DOOM 2 :-) + +All PWAD designers and doom-utility programmers everywhere! + +Coleman Reed Ammerman (cammer@cs.tamu.edu) and John Wolsh + They were the first to document the DEMO format. + +Scott Amspoker (scott@bbx.basis.com) + Wrote the METRICS and TEXTURES articles. + +Jeff Bird (jeff@wench.ece.jcu.edu.au) + Good ideas about the NODES, and a blockmap algorithm. + +Alistair Brown (A.D.Brown@bradford.ac.uk) + Helped me understand the NODES and explained REJECT. + +Frans P. de Vries (fpdevries@hgl.signaal.nl) + The cool ASCII DOOM logo used for the header. Also, gave a + comprehensive list of typos and mistakes in the 1.3 specs. + +Paul Falstad (pjf@crash.cts.com) + I got ALL of the [8-6-1] information from his messages. + +Robert Fenske (rfenske@swri.edu) + Passed along a great linedef flag list. Also helped with linedef + types, blockmap, special sectors, and general suggestions. + +Nelson Fernandez Jr. (nelson@netcom.com) + Distributed information about savegame files. + +Uwe Girlich (girlich@aix520.informatik.uni-leipzig.de) + Wrote "The unofficial LMP format description 1.0" + +Stuart Herbert (ac3slh@sunc.sheffield.ac.uk) + Clarifying how pegged/unpegged flags work. + +Herre de Jonge (herre@morra.et.tudelft.nl) + First pointed out the stairs mistake in the 1.3 specs. + +Tom Klok (a344@mindlink.bc.ca) + DMXGUS and MUS file format info. + +Bernd Kreimeier (bernd@nero.uni-bonn.de) + Wrote DMADDS11. Sprites, savegames, sounds, and lots of other help. + +Steve Larsen (larsen@sunset.cs.utah.edu) + Several patches for the DOOM.EXE file + +Hank Leukart (ap641@cleveland.freenet.edu) + Edits the DOOM FAQ and distributes these specs! + +Greg Lewis (gregl@umich.edu) + Wrote DeHackEd, and gave lots of info on EXE variables. + +Joel Lucsy (jjlucsy@mtu.edu) + Info on COLORMAP and PLAYPAL. + +Sean Malloy (malloy@nprdc.navy.mil) + Step-by-step proof of exactly how stairs work. + +John A. Matzen (jamatzen@cs.twsu.edu) + Instrument names in GENMIDI. + +Steve McCrea (sm@eng.cam.ac.uk) + Animated textures and textures larger than 256 wide. + +Brian McKimens (samneric@connected.com) + Comprehensive work on linedefs' function types. + +Tom Neff (tneff@panix.com) + Edits (writes) the DESIGNxx.FAQ. Suggested BNF and wrote the + intro to [A-1]. Created the WIF text standard. General advice. + +Tom Nettleship (mastn@midge.bath.ac.uk) + Explained BSP trees in comp.graphics.algorithms messages. + +Elias Papavassilopoulos (ep104@cus.cam.ac.uk) + Tons of technical info on EXE files in general and DOOM.EXE. + +Robert D. Potter (potter@bronze.lcs.mit.edu) + Theory about what BLOCKMAP is for and how the engine uses it. + +Raphael Quinet (eedraq@chapelle.ericsson.se) + Lots of rigorous contributions on linedef types and special + sectors. Not to mention DEU! + +Colin Reed (dyl@cix.compulink.co.uk) + I had the x upper and lower bounds for node bounding boxes + backwards a few versions ago. + +Joost Schuur (jschuur@studserv.zdv.uni-tuebingen.de) + Runs the doom-editing mailing list. + +Steve Simpson (ssimpson@world.std.com) + Corrected an error in the PNAMES section + +S. Sproston (S.Sproston-SE2@cs.bham.ac.uk) + Excellent work on linedef types. + +Matt Tagliaferri (matt.tagliaferri@pcohio.com) + Pointed out omission of TEXTURE1/2 pointer table in the 1.1 + specs. Also provided a good BLOCKMAP algorithm. + +Ted Vessenes (tedv@geom.umn.ed) + I had the THING angles wrong in the original specs. + +You! Thanks for reading the "Unofficial" DOOM Specs! + + + + diff --git a/components/doom/prboom/doomdata.h b/components/doom/prboom/doomdata.h new file mode 100644 index 0000000..20eb99a --- /dev/null +++ b/components/doom/prboom/doomdata.h @@ -0,0 +1,204 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * all external data is defined here + * most of the data is loaded into different structures at run time + * some internal structures shared by many modules are here + * + *-----------------------------------------------------------------------------*/ + +#ifndef __DOOMDATA__ +#define __DOOMDATA__ + +// The most basic types we use, portability. +#include "config.h" +#include "doomtype.h" + +// +// Map level types. +// The following data structures define the persistent format +// used in the lumps of the WAD files. +// + +// Lump order in a map WAD: each map needs a couple of lumps +// to provide a complete scene geometry description. +enum { + ML_LABEL, // A separator, name, ExMx or MAPxx + ML_THINGS, // Monsters, items.. + ML_LINEDEFS, // LineDefs, from editing + ML_SIDEDEFS, // SideDefs, from editing + ML_VERTEXES, // Vertices, edited and BSP splits generated + ML_SEGS, // LineSegs, from LineDefs split by BSP + ML_SSECTORS, // SubSectors, list of LineSegs + ML_NODES, // BSP nodes + ML_SECTORS, // Sectors, from editing + ML_REJECT, // LUT, sector-sector visibility + ML_BLOCKMAP // LUT, motion clipping, walls/grid element +}; + +#ifdef _MSC_VER // proff: This is the same as __attribute__ ((packed)) in GNUC +#pragma pack(push) +#pragma pack(1) +#endif //_MSC_VER + +// A single Vertex. +typedef struct { + short x,y; +} PACKEDATTR mapvertex_t; + +// A SideDef, defining the visual appearance of a wall, +// by setting textures and offsets. +typedef struct { + short textureoffset; + short rowoffset; + char toptexture[8]; + char bottomtexture[8]; + char midtexture[8]; + short sector; // Front sector, towards viewer. +} PACKEDATTR mapsidedef_t; + +// A LineDef, as used for editing, and as input to the BSP builder. + +typedef struct { + unsigned short v1; + unsigned short v2; + unsigned short flags; + short special; + short tag; + // proff 07/23/2006 - support more than 32768 sidedefs + // use the unsigned value and special case the -1 + // sidenum[1] will be -1 (NO_INDEX) if one sided + unsigned short sidenum[2]; +} PACKEDATTR maplinedef_t; + +#define NO_INDEX ((unsigned short)-1) + +// +// LineDef attributes. +// + +// Solid, is an obstacle. +#define ML_BLOCKING 1 + +// Blocks monsters only. +#define ML_BLOCKMONSTERS 2 + +// Backside will not be drawn if not two sided. +#define ML_TWOSIDED 4 + +// If a texture is pegged, the texture will have +// the end exposed to air held constant at the +// top or bottom of the texture (stairs or pulled +// down things) and will move with a height change +// of one of the neighbor sectors. +// Unpegged textures always have the first row of +// the texture at the top pixel of the line for both +// top and bottom textures (use next to windows). + +// upper texture unpegged +#define ML_DONTPEGTOP 8 + +// lower texture unpegged +#define ML_DONTPEGBOTTOM 16 + +// In AutoMap: don't map as two sided: IT'S A SECRET! +#define ML_SECRET 32 + +// Sound rendering: don't let sound cross two of these. +#define ML_SOUNDBLOCK 64 + +// Don't draw on the automap at all. +#define ML_DONTDRAW 128 + +// Set if already seen, thus drawn in automap. +#define ML_MAPPED 256 + +//jff 3/21/98 Set if line absorbs use by player +//allow multiple push/switch triggers to be used on one push +#define ML_PASSUSE 512 + +// Sector definition, from editing. +typedef struct { + short floorheight; + short ceilingheight; + char floorpic[8]; + char ceilingpic[8]; + short lightlevel; + short special; + short tag; +} PACKEDATTR mapsector_t; + +// SubSector, as generated by BSP. +typedef struct { + unsigned short numsegs; + unsigned short firstseg; // Index of first one; segs are stored sequentially. +} PACKEDATTR mapsubsector_t; + +// LineSeg, generated by splitting LineDefs +// using partition lines selected by BSP builder. +typedef struct { + unsigned short v1; + unsigned short v2; + short angle; + unsigned short linedef; + short side; + short offset; +} PACKEDATTR mapseg_t; + +// BSP node structure. + +// Indicate a leaf. +#define NF_SUBSECTOR 0x8000 + +typedef struct { + short x; // Partition line from (x,y) to x+dx,y+dy) + short y; + short dx; + short dy; + // Bounding box for each child, clip against view frustum. + short bbox[2][4]; + // If NF_SUBSECTOR its a subsector, else it's a node of another subtree. + unsigned short children[2]; +} PACKEDATTR mapnode_t; + +// Thing definition, position, orientation and type, +// plus skill/visibility flags and attributes. +typedef struct { + short x; + short y; + short angle; + short type; + short options; +} PACKEDATTR mapthing_t; + +#ifdef _MSC_VER +#pragma pack(pop) +#endif //_MSC_VER + +#endif // __DOOMDATA__ diff --git a/components/doom/prboom/doomdef.c b/components/doom/prboom/doomdef.c new file mode 100644 index 0000000..68ad8ed --- /dev/null +++ b/components/doom/prboom/doomdef.c @@ -0,0 +1,45 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * DoomDef - basic defines for DOOM, e.g. Version, game mode + * and skill level, and display parameters. + * + *----------------------------------------------------------------------------- + */ + +#ifdef __GNUG__ +#pragma implementation "doomdef.h" +#endif + +#include "doomdef.h" + +// Location for any defines turned variables. +// None. +int SCREENWIDTH = 320; +int SCREENHEIGHT = 240; diff --git a/components/doom/prboom/doomdef.h b/components/doom/prboom/doomdef.h new file mode 100644 index 0000000..5b6702f --- /dev/null +++ b/components/doom/prboom/doomdef.h @@ -0,0 +1,297 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Internally used data structures for virtually everything, + * key definitions, lots of other stuff. + * + *-----------------------------------------------------------------------------*/ + +#ifndef __DOOMDEF__ +#define __DOOMDEF__ + +/* use config.h if autoconf made one -- josh */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +// This must come first, since it redefines malloc(), free(), etc. -- killough: +#include "z_zone.h" + +#include +#include +#include +#include +#include + +#include "m_swap.h" +#include "version.h" + +// Game mode handling - identify IWAD version +// to handle IWAD dependend animations etc. +typedef enum { + shareware, // DOOM 1 shareware, E1, M9 + registered, // DOOM 1 registered, E3, M27 + commercial, // DOOM 2 retail, E1 M34 (DOOM 2 german edition not handled) + retail, // DOOM 1 retail, E4, M36 + indetermined // Well, no IWAD found. +} GameMode_t; + +// Mission packs - might be useful for TC stuff? +typedef enum { + doom, // DOOM 1 + doom2, // DOOM 2 + pack_tnt, // TNT mission pack + pack_plut, // Plutonia pack + none +} GameMission_t; + +// killough 2/8/98: MAX versions for maximum screen sizes +// allows us to avoid the overhead of dynamic allocation +// when multiple screen sizes are supported + +// proff 08/17/98: Changed for high-res +#define MAX_SCREENWIDTH 320 +#define MAX_SCREENHEIGHT 240 + +// SCREENWIDTH and SCREENHEIGHT define the visible size +// #define SCREENWIDTH 320 +// #define SCREENHEIGHT 240 +extern int SCREENWIDTH; +extern int SCREENHEIGHT; + +// The maximum number of players, multiplayer/networking. +#define MAXPLAYERS 4 + +// phares 5/14/98: +// DOOM Editor Numbers (aka doomednum in mobj_t) + +#define DEN_PLAYER5 4001 +#define DEN_PLAYER6 4002 +#define DEN_PLAYER7 4003 +#define DEN_PLAYER8 4004 + +// State updates, number of tics / second. +#define TICRATE 35 + +// The current state of the game: whether we are playing, gazing +// at the intermission screen, the game final animation, or a demo. + +typedef enum { + GS_LEVEL = 0, + GS_INTERMISSION, + GS_FINALE, + GS_DEMOSCREEN, + GS_UNKNOWN = -1, +} gamestate_t; + +// +// Difficulty/skill settings/filters. +// +// These are Thing flags + +// Skill flags. +#define MTF_EASY 1 +#define MTF_NORMAL 2 +#define MTF_HARD 4 +// Deaf monsters/do not react to sound. +#define MTF_AMBUSH 8 + +/* killough 11/98 */ +#define MTF_NOTSINGLE 16 +#define MTF_NOTDM 32 +#define MTF_NOTCOOP 64 +#define MTF_FRIEND 128 +#define MTF_RESERVED 256 + +typedef enum { + sk_none=-1, //jff 3/24/98 create unpicked skill setting + sk_baby=0, + sk_easy, + sk_medium, + sk_hard, + sk_nightmare +} skill_t; + +// +// Key cards. +// + +typedef enum { + it_bluecard, + it_yellowcard, + it_redcard, + it_blueskull, + it_yellowskull, + it_redskull, + NUMCARDS +} card_t; + +// The defined weapons, including a marker +// indicating user has not changed weapon. +typedef enum { + wp_fist, + wp_pistol, + wp_shotgun, + wp_chaingun, + wp_missile, + wp_plasma, + wp_bfg, + wp_chainsaw, + wp_supershotgun, + + NUMWEAPONS, + wp_nochange // No pending weapon change. +} weapontype_t; + +// Ammunition types defined. +typedef enum { + am_clip, // Pistol / chaingun ammo. + am_shell, // Shotgun / double barreled shotgun. + am_cell, // Plasma rifle, BFG. + am_misl, // Missile launcher. + NUMAMMO, + am_noammo // Unlimited for chainsaw / fist. +} ammotype_t; + +// Power up artifacts. +typedef enum { + pw_invulnerability, + pw_strength, + pw_invisibility, + pw_ironfeet, + pw_allmap, + pw_infrared, + NUMPOWERS +} powertype_t; + +// Power up durations (how many seconds till expiration). +typedef enum { + INVULNTICS = (30*TICRATE), + INVISTICS = (60*TICRATE), + INFRATICS = (120*TICRATE), + IRONTICS = (60*TICRATE) +} powerduration_t; + +// DOOM keyboard definition. +// This is the stuff configured by Setup.Exe. +// Most key data are simple ascii (uppercased). + +#define KEYD_RIGHTARROW 0xae +#define KEYD_LEFTARROW 0xac +#define KEYD_UPARROW 0xad +#define KEYD_DOWNARROW 0xaf +#define KEYD_ESCAPE 27 +#define KEYD_ENTER 13 +#define KEYD_TAB 9 +#define KEYD_F1 (0x80+0x3b) +#define KEYD_F2 (0x80+0x3c) +#define KEYD_F3 (0x80+0x3d) +#define KEYD_F4 (0x80+0x3e) +#define KEYD_F5 (0x80+0x3f) +#define KEYD_F6 (0x80+0x40) +#define KEYD_F7 (0x80+0x41) +#define KEYD_F8 (0x80+0x42) +#define KEYD_F9 (0x80+0x43) +#define KEYD_F10 (0x80+0x44) +#define KEYD_F11 (0x80+0x57) +#define KEYD_F12 (0x80+0x58) +#define KEYD_BACKSPACE 127 +#define KEYD_PAUSE 0xff +#define KEYD_EQUALS 0x3d +#define KEYD_MINUS 0x2d +#define KEYD_RSHIFT (0x80+0x36) +#define KEYD_RCTRL (0x80+0x1d) +#define KEYD_RALT (0x80+0x38) +#define KEYD_LALT KEYD_RALT +#define KEYD_CAPSLOCK 0xba // phares + +// phares 3/2/98: +#define KEYD_INSERT 0xd2 +#define KEYD_HOME 0xc7 +#define KEYD_PAGEUP 0xc9 +#define KEYD_PAGEDOWN 0xd1 +#define KEYD_DEL 0xc8 +#define KEYD_END 0xcf +#define KEYD_SCROLLLOCK 0xc6 +#define KEYD_SPACEBAR 0x20 +// phares 3/2/98 + +#define KEYD_NUMLOCK 0xC5 // killough 3/6/98 + +// cph - Add the numeric keypad keys, as suggested by krose 4/22/99: +// The way numbers are assigned to keys is a mess, but it's too late to +// change that easily. At least these additions are don neatly. +// Codes 0x100-0x200 are reserved for number pad + +#define KEYD_KEYPAD0 (0x100 + '0') +#define KEYD_KEYPAD1 (0x100 + '1') +#define KEYD_KEYPAD2 (0x100 + '2') +#define KEYD_KEYPAD3 (0x100 + '3') +#define KEYD_KEYPAD4 (0x100 + '4') +#define KEYD_KEYPAD5 (0x100 + '5') +#define KEYD_KEYPAD6 (0x100 + '6') +#define KEYD_KEYPAD7 (0x100 + '7') +#define KEYD_KEYPAD8 (0x100 + '8') +#define KEYD_KEYPAD9 (0x100 + '9') +#define KEYD_KEYPADENTER (0x100 + KEYD_ENTER) +#define KEYD_KEYPADDIVIDE (0x100 + '/') +#define KEYD_KEYPADMULTIPLY (0x100 + '*') +#define KEYD_KEYPADMINUS (0x100 + '-') +#define KEYD_KEYPADPLUS (0x100 + '+') +#define KEYD_KEYPADPERIOD (0x100 + '.') + +// phares 4/19/98: +// Defines Setup Screen groups that config variables appear in. +// Used when resetting the defaults for every item in a Setup group. + +typedef enum { + ss_none, + ss_keys, + ss_weap, + ss_stat, + ss_auto, + ss_enem, + ss_mess, + // ss_chat, + ss_gen, /* killough 10/98 */ + ss_comp, /* killough 10/98 */ + ss_max +} ss_types; + +// phares 3/20/98: +// +// Player friction is variable, based on controlling +// linedefs. More friction can create mud, sludge, +// magnetized floors, etc. Less friction can create ice. + +#define MORE_FRICTION_MOMENTUM 15000 // mud factor based on momentum +#define ORIG_FRICTION 0xE800 // original value +#define ORIG_FRICTION_FACTOR 2048 // original value + +#endif // __DOOMDEF__ diff --git a/components/doom/prboom/doomstat.c b/components/doom/prboom/doomstat.c new file mode 100644 index 0000000..1b66ef7 --- /dev/null +++ b/components/doom/prboom/doomstat.c @@ -0,0 +1,105 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Put all global state variables here. + * + *----------------------------------------------------------------------------- + */ + +#ifdef __GNUG__ +#pragma implementation "doomstat.h" +#endif +#include "doomstat.h" + +// Game Mode - identify IWAD as shareware, retail etc. +GameMode_t gamemode = indetermined; +GameMission_t gamemission = doom; + +// Set if homebrew PWAD stuff has been added. +boolean modifiedgame; + +//----------------------------------------------------------------------------- + +// CPhipps - compatibility vars +complevel_t compatibility_level, default_compatibility_level; + +int comp[COMP_TOTAL], default_comp[COMP_TOTAL]; // killough 10/98 + +// v1.1-like pitched sounds +int pitched_sounds; // killough + +int default_translucency; // config file says // phares +boolean general_translucency; // true if translucency is ok // phares + +int demo_insurance, default_demo_insurance; // killough 1/16/98 + +int allow_pushers = 1; // MT_PUSH Things // phares 3/10/98 +int default_allow_pushers; // killough 3/1/98: make local to each game + +int variable_friction = 1; // ice & mud // phares 3/10/98 +int default_variable_friction; // killough 3/1/98: make local to each game + +int weapon_recoil; // weapon recoil // phares +int default_weapon_recoil; // killough 3/1/98: make local to each game + +int player_bobbing; // whether player bobs or not // phares 2/25/98 +int default_player_bobbing; // killough 3/1/98: make local to each game + +int monsters_remember; // killough 3/1/98 +int default_monsters_remember; + +int monster_infighting=1; // killough 7/19/98: monster<=>monster attacks +int default_monster_infighting=1; + +int monster_friction=1; // killough 10/98: monsters affected by friction +int default_monster_friction=1; + +#ifdef DOGS +int dogs, default_dogs; // killough 7/19/98: Marine's best friend :) +int dog_jumping, default_dog_jumping; // killough 10/98 +#endif + +// killough 8/8/98: distance friends tend to move towards players +int distfriend = 128, default_distfriend = 128; + +// killough 9/8/98: whether monsters are allowed to strafe or retreat +int monster_backing, default_monster_backing; + +// killough 9/9/98: whether monsters are able to avoid hazards (e.g. crushers) +int monster_avoid_hazards, default_monster_avoid_hazards; + +// killough 9/9/98: whether monsters help friends +int help_friends, default_help_friends; + +int flashing_hom; // killough 10/98 + +int doom_weapon_toggles; // killough 10/98 + +int monkeys, default_monkeys; + diff --git a/components/doom/prboom/doomstat.h b/components/doom/prboom/doomstat.h new file mode 100644 index 0000000..cc18838 --- /dev/null +++ b/components/doom/prboom/doomstat.h @@ -0,0 +1,322 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2006 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * All the global variables that store the internal state. + * Theoretically speaking, the internal state of the engine + * should be found by looking at the variables collected + * here, and every relevant module will have to include + * this header file. + * In practice, things are a bit messy. + * + *-----------------------------------------------------------------------------*/ + +#ifndef __D_STATE__ +#define __D_STATE__ + +// We need the playr data structure as well. +#include "d_player.h" + +#ifdef __GNUG__ +#pragma interface +#endif + +// ------------------------ +// Command line parameters. +// + +extern boolean nomonsters; // checkparm of -nomonsters +extern boolean respawnparm; // checkparm of -respawn +extern boolean fastparm; // checkparm of -fast +extern boolean devparm; // DEBUG: launched with -devparm + +// ----------------------------------------------------- +// Game Mode - identify IWAD as shareware, retail etc. +// + +extern GameMode_t gamemode; +extern GameMission_t gamemission; + +// Set if homebrew PWAD stuff has been added. +extern boolean modifiedgame; + +// CPhipps - new compatibility handling +extern complevel_t compatibility_level, default_compatibility_level; + +// CPhipps - old compatibility testing flags aliased to new handling +#define compatibility (compatibility_level<=boom_compatibility_compatibility) +#define demo_compatibility (compatibility_level < boom_compatibility_compatibility) +#define mbf_features (compatibility_level>=mbf_compatibility) + +// v1.1-like pitched sounds +extern int pitched_sounds; // killough + +extern int default_translucency; // config file says // phares +extern boolean general_translucency; // true if translucency is ok // phares + +extern int demo_insurance, default_demo_insurance; // killough 4/5/98 + +// ------------------------------------------- +// killough 10/98: compatibility vector + +enum { + comp_telefrag, + comp_dropoff, + comp_vile, + comp_pain, + comp_skull, + comp_blazing, + comp_doorlight, + comp_model, + comp_god, + comp_falloff, + comp_floors, + comp_skymap, + comp_pursuit, + comp_doorstuck, + comp_staylift, + comp_zombie, + comp_stairs, + comp_infcheat, + comp_zerotags, + comp_moveblock, + comp_respawn, /* cph - this is the inverse of comp_respawnfix from eternity */ + comp_sound, + comp_666, + comp_soul, + comp_maskedanim, + COMP_NUM, /* cph - should be last in sequence */ + COMP_TOTAL=32 // Some extra room for additional variables +}; + +extern int comp[COMP_TOTAL], default_comp[COMP_TOTAL]; + +// ------------------------------------------- +// Selected skill type, map etc. +// + +// Defaults for menu, methinks. +extern skill_t startskill; +extern int startepisode; +extern int startmap; + +extern boolean autostart; + +// Selected by user. +extern skill_t gameskill; +extern int gameepisode; +extern int gamemap; + +// Nightmare mode flag, single player. +extern int respawnmonsters; + +// Netgame? Only true if >1 player. +extern int netgame; + +// Flag: true only if started as net deathmatch. +// An enum might handle altdeath/cooperative better. +extern int deathmatch; + +// ------------------------------------------ +// Internal parameters for sound rendering. +// These have been taken from the DOS version, +// but are not (yet) supported with Linux +// (e.g. no sound volume adjustment with menu. + +// These are not used, but should be (menu). +// From m_menu.c: +// Sound FX volume has default, 0 - 15 +// Music volume has default, 0 - 15 +// These are multiplied by 8. +extern int snd_SfxVolume; // maximum volume for sound +extern int snd_MusicVolume; // maximum volume for music + +// ------------------------- +// Status flags for refresh. +// + +enum automapmode_e { + am_active = 1, // currently shown + am_overlay= 2, // covers the screen, i.e. not overlay mode + am_rotate = 4, // rotates to the player facing direction + am_follow = 8, // keep the player centred + am_grid =16, // show grid +}; +extern enum automapmode_e automapmode; // Mode that the automap is in + +extern int menuactive; // Menu overlayed? +extern int paused; // Game Pause? +extern boolean nodrawers; +extern boolean noblit; + +// This one is related to the 3-screen display mode. +// ANG90 = left side, ANG270 = right +extern int viewangleoffset; + +// Player taking events, and displaying. +extern int consoleplayer; +extern int displayplayer; + +// ------------------------------------- +// Scores, rating. +// Statistics on a given map, for intermission. +// +extern int totalkills, totallive; +extern int totalitems; +extern int totalsecret; + +// Timer, for scores. +extern int basetic; /* killough 9/29/98: levelstarttic, adjusted */ +extern int leveltime; // tics in game play for par + +// -------------------------------------- +// DEMO playback/recording related stuff. + +extern boolean usergame; +extern boolean demoplayback; +extern boolean demorecording; +extern int demover; + +// Quit after playing a demo from cmdline. +extern boolean singledemo; +// Print timing information after quitting. killough +extern boolean timingdemo; +// Run tick clock at fastest speed possible while playing demo. killough +extern boolean fastdemo; + +extern gamestate_t gamestate; + +//----------------------------- +// Internal parameters, fixed. +// These are set by the engine, and not changed +// according to user inputs. Partly load from +// WAD, partly set at startup time. + +extern int gametic; + + +// Bookkeeping on players - state. +extern player_t players[MAXPLAYERS]; + +// Alive? Disconnected? +extern boolean playeringame[MAXPLAYERS]; +extern boolean realplayeringame[MAXPLAYERS]; + +extern mapthing_t *deathmatchstarts; // killough +extern size_t num_deathmatchstarts; // killough + +extern mapthing_t *deathmatch_p; + +// Player spawn spots. +extern mapthing_t playerstarts[]; + +// Intermission stats. +// Parameters for world map / intermission. +extern wbstartstruct_t wminfo; + +//----------------------------------------- +// Internal parameters, used for engine. +// + +// if true, load all graphics at level load +extern int precache; + +// wipegamestate can be set to -1 +// to force a wipe on the next draw +extern gamestate_t wipegamestate; + +extern int mouseSensitivity_horiz; // killough +extern int mouseSensitivity_vert; + +// debug flag to cancel adaptiveness +extern boolean singletics; + +extern int bodyqueslot; + +// Needed to store the number of the dummy sky flat. +// Used for rendering, as well as tracking projectiles etc. + +extern int skyflatnum; + +extern int maketic; + +// Networking and tick handling related. +#define BACKUPTICS 12 + +extern ticcmd_t netcmds[][BACKUPTICS]; +extern int ticdup; + +//----------------------------------------------------------------------------- + +extern int allow_pushers; // MT_PUSH Things // phares 3/10/98 +extern int default_allow_pushers; + +extern int variable_friction; // ice & mud // phares 3/10/98 +extern int default_variable_friction; + +extern int monsters_remember; // killough 3/1/98 +extern int default_monsters_remember; + +extern int weapon_recoil; // weapon recoil // phares +extern int default_weapon_recoil; + +extern int player_bobbing; // whether player bobs or not // phares 2/25/98 +extern int default_player_bobbing; // killough 3/1/98: make local to each game + +#ifdef DOGS +extern int dogs, default_dogs; // killough 7/19/98: Marine's best friend :) +extern int dog_jumping, default_dog_jumping; // killough 10/98 +#endif + +/* killough 8/8/98: distance friendly monsters tend to stay from player */ +extern int distfriend, default_distfriend; + +/* killough 9/8/98: whether monsters are allowed to strafe or retreat */ +extern int monster_backing, default_monster_backing; + +/* killough 9/9/98: whether monsters intelligently avoid hazards */ +extern int monster_avoid_hazards, default_monster_avoid_hazards; + +/* killough 10/98: whether monsters are affected by friction */ +extern int monster_friction, default_monster_friction; + +/* killough 9/9/98: whether monsters help friends */ +extern int help_friends, default_help_friends; + +extern int flashing_hom; // killough 10/98 + +extern int doom_weapon_toggles; // killough 10/98 + +/* killough 7/19/98: whether monsters should fight against each other */ +extern int monster_infighting, default_monster_infighting; + +extern int monkeys, default_monkeys; + +extern int HelperThing; // type of thing to use for helper + +#endif diff --git a/components/doom/prboom/doomtype.h b/components/doom/prboom/doomtype.h new file mode 100644 index 0000000..c886410 --- /dev/null +++ b/components/doom/prboom/doomtype.h @@ -0,0 +1,104 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2006 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Simple basic typedefs, isolated here to make it easier + * separating modules. + * + *-----------------------------------------------------------------------------*/ + +#ifndef __DOOMTYPE__ +#define __DOOMTYPE__ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include + +// RG: using `bool` crashes. I fixed many places that used `boolean` as an int but I must have missed one +// typedef bool boolean; +typedef unsigned int boolean; +typedef uint8_t byte; + +typedef int64_t int_64_t; +typedef uint64_t uint_64_t; +#define LONGLONG(num) (uint_64_t)num ## ll + +//e6y +#ifndef MAX +#define MAX(a,b) ((a)>(b)?(a):(b)) +#endif +#ifndef MIN +#define MIN(a,b) ((a)<(b)?(a):(b)) +#endif + +#undef PATH_MAX +#define PATH_MAX 512 + +#define CONSTFUNC __attribute__((const)) +#define PUREFUNC __attribute__((pure)) +#define NORETURN __attribute__ ((noreturn)) + +/* cph - move compatibility levels here so we can use them in d_server.c */ +typedef enum { + doom_12_compatibility, /* Doom v1.2 */ + doom_1666_compatibility, /* Doom v1.666 */ + doom2_19_compatibility, /* Doom & Doom 2 v1.9 */ + ultdoom_compatibility, /* Doom 2 v1.9 */ + finaldoom_compatibility, /* Final & Ultimate Doom v1.9, and Doom95 */ + dosdoom_compatibility, /* Early dosdoom & tasdoom */ + tasdoom_compatibility, /* Early dosdoom & tasdoom */ + boom_compatibility_compatibility, /* Boom's compatibility mode */ + boom_201_compatibility, /* Compatible with Boom v2.01 */ + boom_202_compatibility, /* Compatible with Boom v2.01 */ + lxdoom_1_compatibility, /* LxDoom v1.3.2+ */ + mbf_compatibility, /* MBF */ + prboom_1_compatibility, /* PrBoom 2.03beta? */ + prboom_2_compatibility, /* PrBoom 2.1.0-2.1.1 */ + prboom_3_compatibility, /* PrBoom 2.2.x */ + prboom_4_compatibility, /* PrBoom 2.3.x */ + prboom_5_compatibility, /* PrBoom 2.4.0 */ + prboom_6_compatibility, /* Latest PrBoom */ + MAX_COMPATIBILITY_LEVEL, /* Must be last entry */ + /* Aliases follow */ + boom_compatibility = boom_201_compatibility, /* Alias used by G_Compatibility */ + best_compatibility = prboom_6_compatibility, +} complevel_t; + +/* cph - from v_video.h, needed by gl_struct.h */ +enum patch_translation_e { + VPT_NONE = 0, // Normal + VPT_FLIP = 1, // Flip image horizontally + VPT_TRANS = 2, // Translate image via a translation table + VPT_STRETCH = 4, // Stretch to compensate for high-res +}; + +#endif diff --git a/components/doom/prboom/dstrings.c b/components/doom/prboom/dstrings.c new file mode 100644 index 0000000..4e27ea5 --- /dev/null +++ b/components/doom/prboom/dstrings.c @@ -0,0 +1,85 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Globally defined strings. + * + *----------------------------------------------------------------------------- + */ + +#ifdef __GNUG__ +#pragma implementation "dstrings.h" +#endif +#include "dstrings.h" + + +// killough 1/18/98: remove hardcoded limit, add const: +const char *const endmsg[]= +{ + // DOOM1 + QUITMSG, + "please don't leave, there's more\ndemons to toast!", + "let's beat it -- this is turning\ninto a bloodbath!", + "i wouldn't leave if i were you.\ndos is much worse.", + "you're trying to say you like dos\nbetter than me, right?", + "don't leave yet -- there's a\ndemon around that corner!", + "ya know, next time you come in here\ni'm gonna toast ya.", + "go ahead and leave. see if i care.", // 1/15/98 killough + + // QuitDOOM II messages + "you want to quit?\nthen, thou hast lost an eighth!", + "don't go now, there's a \ndimensional shambler waiting\nat the dos prompt!", + "get outta here and go back\nto your boring programs.", + "if i were your boss, i'd \n deathmatch ya in a minute!", + "look, bud. you leave now\nand you forfeit your body count!", + "just leave. when you come\nback, i'll be waiting with a bat.", + "you're lucky i don't smack\nyou for thinking about leaving.", // 1/15/98 killough + + // FinalDOOM? + +// Note that these ending "bad taste" strings were commented out +// in the original id code as the #else case of an #if 1 +// Obviously they were internal playthings before the release of +// DOOM2 and were not intended for public use. +// +// Following messages commented out for now. Bad taste. // phares + +// "fuck you, pussy!\nget the fuck out!", +// "you quit and i'll jizz\nin your cystholes!", +// "if you leave, i'll make\nthe lord drink my jizz.", +// "hey, ron! can we say\n'fuck' in the game?", +// "i'd leave: this is just\nmore monsters and levels.\nwhat a load.", +// "suck it down, asshole!\nyou're a fucking wimp!", +// "don't quit now! we're \nstill spending your money!", + + // Internal debug. Different style, too. + "THIS IS NO MESSAGE!\nPage intentionally left blank.", // 1/15/98 killough +}; + +// killough 1/18/98: remove hardcoded limit and replace with var (silly hack): +const size_t NUM_QUITMESSAGES = sizeof(endmsg)/sizeof(*endmsg) - 1; diff --git a/components/doom/prboom/dstrings.h b/components/doom/prboom/dstrings.h new file mode 100644 index 0000000..abb77f8 --- /dev/null +++ b/components/doom/prboom/dstrings.h @@ -0,0 +1,80 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * DOOM strings, by language. + * Note: In BOOM, some new strings hav ebeen defined that are + * not found in the French version. A better approach is + * to create a BEX text-replacement file for other + * languages since any language can be supported that way + * without recompiling the program. + * + *-----------------------------------------------------------------------------*/ + +#ifndef __DSTRINGS__ +#define __DSTRINGS__ + +/* All important printed strings. + * Language selection (message strings). + * Use -DFRENCH etc. + */ + +#ifdef FRENCH +#include "d_french.h" +#else +#include "d_englsh.h" +#endif + +/* Note this is not externally modifiable through DEH/BEX + * Misc. other strings. + * #define SAVEGAMENAME "boomsav" * killough 3/22/98 * + * Ty 05/04/98 - replaced with a modifiable string, see d_deh.c + */ + +/* + * File locations, + * relative to current position. + * Path names are OS-sensitive. + */ +#define DEVMAPS "devmaps" +#define DEVDATA "devdata" + + +/* Not done in french? + * QuitDOOM messages * + * killough 1/18/98: + * replace hardcoded limit with extern var (silly hack, I know) + */ + +#include + +extern const size_t NUM_QUITMESSAGES; /* Calculated in dstrings.c */ + +extern const char* const endmsg[]; /* killough 1/18/98 const added */ + +#endif diff --git a/components/doom/prboom/f_finale.c b/components/doom/prboom/f_finale.c new file mode 100644 index 0000000..d03438e --- /dev/null +++ b/components/doom/prboom/f_finale.c @@ -0,0 +1,668 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Game completion, final screen animation. + * + *----------------------------------------------------------------------------- + */ + +#include "doomstat.h" +#include "d_event.h" +#include "v_video.h" +#include "w_wad.h" +#include "s_sound.h" +#include "sounds.h" +#include "d_deh.h" // Ty 03/22/98 - externalizations +#include "f_finale.h" // CPhipps - hmm... + +// Stage of animation: +// 0 = text, 1 = art screen, 2 = character cast +static int finalestage; // cph - +static int finalecount; // made static +static const char* finaletext; // cph - +static const char* finaleflat; // made static const + +// defines for the end mission display text // phares + +#define TEXTSPEED 3 // original value // phares +#define TEXTWAIT 250 // original value // phares +#define NEWTEXTSPEED 0.01f // new value // phares +#define NEWTEXTWAIT 1000 // new value // phares + +// CPhipps - removed the old finale screen text message strings; +// they were commented out for ages already +// Ty 03/22/98 - ... the new s_WHATEVER extern variables are used +// in the code below instead. + +void F_StartCast (void); +void F_CastTicker (void); +boolean F_CastResponder (event_t *ev); +void F_CastDrawer (void); + +void WI_checkForAccelerate(void); // killough 3/28/98: used to +extern int acceleratestage; // accelerate intermission screens +static int midstage; // whether we're in "mid-stage" + +// +// F_StartFinale +// +void F_StartFinale (void) +{ + gameaction = ga_nothing; + gamestate = GS_FINALE; + automapmode &= ~am_active; + + // killough 3/28/98: clear accelerative text flags + acceleratestage = midstage = 0; + + // Okay - IWAD dependend stuff. + // This has been changed severly, and + // some stuff might have changed in the process. + switch ( gamemode ) + { + // DOOM 1 - E1, E3 or E4, but each nine missions + case shareware: + case registered: + case retail: + { + S_ChangeMusic(mus_victor, true); + + switch (gameepisode) + { + case 1: + finaleflat = bgflatE1; // Ty 03/30/98 - new externalized bg flats + finaletext = s_E1TEXT; // Ty 03/23/98 - Was e1text variable. + break; + case 2: + finaleflat = bgflatE2; + finaletext = s_E2TEXT; // Ty 03/23/98 - Same stuff for each + break; + case 3: + finaleflat = bgflatE3; + finaletext = s_E3TEXT; + break; + case 4: + finaleflat = bgflatE4; + finaletext = s_E4TEXT; + break; + default: + // Ouch. + break; + } + break; + } + + // DOOM II and missions packs with E1, M34 + case commercial: + { + S_ChangeMusic(mus_read_m, true); + + // Ty 08/27/98 - added the gamemission logic + switch (gamemap) + { + case 6: + finaleflat = bgflat06; + finaletext = (gamemission==pack_tnt) ? s_T1TEXT : + (gamemission==pack_plut) ? s_P1TEXT : s_C1TEXT; + break; + case 11: + finaleflat = bgflat11; + finaletext = (gamemission==pack_tnt) ? s_T2TEXT : + (gamemission==pack_plut) ? s_P2TEXT : s_C2TEXT; + break; + case 20: + finaleflat = bgflat20; + finaletext = (gamemission==pack_tnt) ? s_T3TEXT : + (gamemission==pack_plut) ? s_P3TEXT : s_C3TEXT; + break; + case 30: + finaleflat = bgflat30; + finaletext = (gamemission==pack_tnt) ? s_T4TEXT : + (gamemission==pack_plut) ? s_P4TEXT : s_C4TEXT; + break; + case 15: + finaleflat = bgflat15; + finaletext = (gamemission==pack_tnt) ? s_T5TEXT : + (gamemission==pack_plut) ? s_P5TEXT : s_C5TEXT; + break; + case 31: + finaleflat = bgflat31; + finaletext = (gamemission==pack_tnt) ? s_T6TEXT : + (gamemission==pack_plut) ? s_P6TEXT : s_C6TEXT; + break; + default: + // Ouch. + break; + } + break; + // Ty 08/27/98 - end gamemission logic + } + + // Indeterminate. + default: // Ty 03/30/98 - not externalized + S_ChangeMusic(mus_read_m, true); + finaleflat = "F_SKY1"; // Not used anywhere else. + finaletext = s_C1TEXT; // FIXME - other text, music? + break; + } + + finalestage = 0; + finalecount = 0; +} + + + +boolean F_Responder (event_t *event) +{ + if (finalestage == 2) + return F_CastResponder (event); + + return false; +} + +// Get_TextSpeed() returns the value of the text display speed // phares +// Rewritten to allow user-directed acceleration -- killough 3/28/98 + +static float Get_TextSpeed(void) +{ + return midstage ? NEWTEXTSPEED : (midstage=acceleratestage) ? + acceleratestage=0, NEWTEXTSPEED : TEXTSPEED; +} + + +// +// F_Ticker +// +// killough 3/28/98: almost totally rewritten, to use +// player-directed acceleration instead of constant delays. +// Now the player can accelerate the text display by using +// the fire/use keys while it is being printed. The delay +// automatically responds to the user, and gives enough +// time to read. +// +// killough 5/10/98: add back v1.9 demo compatibility +// + +void F_Ticker(void) +{ + int i; + if (!demo_compatibility) + WI_checkForAccelerate(); // killough 3/28/98: check for acceleration + else + if (gamemode == commercial && finalecount > 50) // check for skipping + for (i=0; i strlen(finaletext)*speed + + (midstage ? NEWTEXTWAIT : TEXTWAIT) || + (midstage && acceleratestage)) { + if (gamemode != commercial) // Doom 1 / Ultimate Doom episode end + { // with enough time, it's automatic + finalecount = 0; + finalestage = 1; + wipegamestate = -1; // force a wipe + if (gameepisode == 3) + S_StartMusic(mus_bunny); + } + else // you must press a button to continue in Doom 2 + if (!demo_compatibility && midstage) + { + next_level: + if (gamemap == 30) + F_StartCast(); // cast of Doom 2 characters + else + gameaction = ga_worlddone; // next level, e.g. MAP07 + } + } + } +} + +// +// F_TextWrite +// +// This program displays the background and text at end-mission // phares +// text time. It draws both repeatedly so that other displays, // | +// like the main menu, can be drawn over it dynamically and // V +// erased dynamically. The TEXTSPEED constant is changed into +// the Get_TextSpeed function so that the speed of writing the // ^ +// text can be increased, and there's still time to read what's // | +// written. // phares +// CPhipps - reformatted + +#include "hu_stuff.h" +extern patchnum_t hu_font[HU_FONTSIZE]; + + +static void F_TextWrite (void) +{ + V_DrawBackground(finaleflat, 0); + { // draw some of the text onto the screen + int cx = 10; + int cy = 10; + const char* ch = finaletext; // CPhipps - const + int count = (int)((float)(finalecount - 10)/Get_TextSpeed()); // phares + int w; + + if (count < 0) + count = 0; + + for ( ; count ; count-- ) { + int c = *ch++; + + if (!c) + break; + if (c == '\n') { + cx = 10; + cy += 11; + continue; + } + + c = toupper(c) - HU_FONTSTART; + if (c < 0 || c> HU_FONTSIZE) { + cx += 4; + continue; + } + + w = hu_font[c].width; + if (cx+w > SCREENWIDTH) + break; + // CPhipps - patch drawing updated + V_DrawNumPatch(cx, cy, 0, hu_font[c].lumpnum, CR_DEFAULT, VPT_STRETCH); + cx+=w; + } + } +} + +// +// Final DOOM 2 animation +// Casting by id Software. +// in order of appearance +// +typedef struct +{ + const char **name; // CPhipps - const** + mobjtype_t type; +} castinfo_t; + +#define MAX_CASTORDER 18 /* Ty - hard coded for now */ +static const castinfo_t castorder[] = { // CPhipps - static const, initialised here + { &s_CC_ZOMBIE, MT_POSSESSED }, + { &s_CC_SHOTGUN, MT_SHOTGUY }, + { &s_CC_HEAVY, MT_CHAINGUY }, + { &s_CC_IMP, MT_TROOP }, + { &s_CC_DEMON, MT_SERGEANT }, + { &s_CC_LOST, MT_SKULL }, + { &s_CC_CACO, MT_HEAD }, + { &s_CC_HELL, MT_KNIGHT }, + { &s_CC_BARON, MT_BRUISER }, + { &s_CC_ARACH, MT_BABY }, + { &s_CC_PAIN, MT_PAIN }, + { &s_CC_REVEN, MT_UNDEAD }, + { &s_CC_MANCU, MT_FATSO }, + { &s_CC_ARCH, MT_VILE }, + { &s_CC_SPIDER, MT_SPIDER }, + { &s_CC_CYBER, MT_CYBORG }, + { &s_CC_HERO, MT_PLAYER }, + { NULL, 0} + }; + +int castnum; +int casttics; +state_t* caststate; +boolean castdeath; +int castframes; +int castonmelee; +boolean castattacking; + + +// +// F_StartCast +// + +void F_StartCast (void) +{ + wipegamestate = -1; // force a screen wipe + castnum = 0; + caststate = &states[mobjinfo[castorder[castnum].type].seestate]; + casttics = caststate->tics; + castdeath = false; + finalestage = 2; + castframes = 0; + castonmelee = 0; + castattacking = false; + S_ChangeMusic(mus_evil, true); +} + + +// +// F_CastTicker +// +void F_CastTicker (void) +{ + int st; + int sfx; + + if (--casttics > 0) + return; // not time to change state yet + + if (caststate->tics == -1 || caststate->nextstate == S_NULL) + { + // switch from deathstate to next monster + castnum++; + castdeath = false; + if (castorder[castnum].name == NULL) + castnum = 0; + if (mobjinfo[castorder[castnum].type].seesound) + S_StartSound (NULL, mobjinfo[castorder[castnum].type].seesound); + caststate = &states[mobjinfo[castorder[castnum].type].seestate]; + castframes = 0; + } + else + { + // just advance to next state in animation + if (caststate == &states[S_PLAY_ATK1]) + goto stopattack; // Oh, gross hack! + st = caststate->nextstate; + caststate = &states[st]; + castframes++; + + // sound hacks.... + switch (st) + { + case S_PLAY_ATK1: sfx = sfx_dshtgn; break; + case S_POSS_ATK2: sfx = sfx_pistol; break; + case S_SPOS_ATK2: sfx = sfx_shotgn; break; + case S_VILE_ATK2: sfx = sfx_vilatk; break; + case S_SKEL_FIST2: sfx = sfx_skeswg; break; + case S_SKEL_FIST4: sfx = sfx_skepch; break; + case S_SKEL_MISS2: sfx = sfx_skeatk; break; + case S_FATT_ATK8: + case S_FATT_ATK5: + case S_FATT_ATK2: sfx = sfx_firsht; break; + case S_CPOS_ATK2: + case S_CPOS_ATK3: + case S_CPOS_ATK4: sfx = sfx_shotgn; break; + case S_TROO_ATK3: sfx = sfx_claw; break; + case S_SARG_ATK2: sfx = sfx_sgtatk; break; + case S_BOSS_ATK2: + case S_BOS2_ATK2: + case S_HEAD_ATK2: sfx = sfx_firsht; break; + case S_SKULL_ATK2: sfx = sfx_sklatk; break; + case S_SPID_ATK2: + case S_SPID_ATK3: sfx = sfx_shotgn; break; + case S_BSPI_ATK2: sfx = sfx_plasma; break; + case S_CYBER_ATK2: + case S_CYBER_ATK4: + case S_CYBER_ATK6: sfx = sfx_rlaunc; break; + case S_PAIN_ATK3: sfx = sfx_sklatk; break; + default: sfx = 0; break; + } + + if (sfx) + S_StartSound (NULL, sfx); + } + + if (castframes == 12) + { + // go into attack frame + castattacking = true; + if (castonmelee) + caststate=&states[mobjinfo[castorder[castnum].type].meleestate]; + else + caststate=&states[mobjinfo[castorder[castnum].type].missilestate]; + castonmelee ^= 1; + if (caststate == &states[S_NULL]) + { + if (castonmelee) + caststate= + &states[mobjinfo[castorder[castnum].type].meleestate]; + else + caststate= + &states[mobjinfo[castorder[castnum].type].missilestate]; + } + } + + if (castattacking) + { + if (castframes == 24 + || caststate == &states[mobjinfo[castorder[castnum].type].seestate] ) + { + stopattack: + castattacking = false; + castframes = 0; + caststate = &states[mobjinfo[castorder[castnum].type].seestate]; + } + } + + casttics = caststate->tics; + if (casttics == -1) + casttics = 15; +} + + +// +// F_CastResponder +// + +boolean F_CastResponder (event_t* ev) +{ + if (ev->type != ev_keydown) + return false; + + if (castdeath) + return true; // already in dying frames + + // go into death frame + castdeath = true; + caststate = &states[mobjinfo[castorder[castnum].type].deathstate]; + casttics = caststate->tics; + castframes = 0; + castattacking = false; + if (mobjinfo[castorder[castnum].type].deathsound) + S_StartSound (NULL, mobjinfo[castorder[castnum].type].deathsound); + + return true; +} + + +static void F_CastPrint (const char* text) // CPhipps - static, const char* +{ + const char* ch; // CPhipps - const + int c; + int cx; + int w; + int width; + + // find width + ch = text; + width = 0; + + while (ch) + { + c = *ch++; + if (!c) + break; + c = toupper(c) - HU_FONTSTART; + if (c < 0 || c> HU_FONTSIZE) + { + width += 4; + continue; + } + + w = hu_font[c].width; + width += w; + } + + // draw it + cx = 160-width/2; + ch = text; + while (ch) + { + c = *ch++; + if (!c) + break; + c = toupper(c) - HU_FONTSTART; + if (c < 0 || c> HU_FONTSIZE) + { + cx += 4; + continue; + } + + w = hu_font[c].width; + // CPhipps - patch drawing updated + V_DrawNumPatch(cx, 180, 0, hu_font[c].lumpnum, CR_DEFAULT, VPT_STRETCH); + cx+=w; + } +} + + +// +// F_CastDrawer +// + +void F_CastDrawer (void) +{ + spritedef_t* sprdef; + spriteframe_t* sprframe; + int lump; + boolean flip; + + // erase the entire screen to a background + // CPhipps - patch drawing updated + V_DrawNamePatch(0,0,0, bgcastcall, CR_DEFAULT, VPT_STRETCH); // Ty 03/30/98 bg texture extern + + F_CastPrint (*(castorder[castnum].name)); + + // draw the current frame in the middle of the screen + sprdef = &sprites[caststate->sprite]; + sprframe = &sprdef->spriteframes[ caststate->frame & FF_FRAMEMASK]; + lump = sprframe->lump[0]; + flip = (boolean)sprframe->flip[0]; + + // CPhipps - patch drawing updated + V_DrawNumPatch(160, 170, 0, lump+firstspritelump, CR_DEFAULT, + VPT_STRETCH | (flip ? VPT_FLIP : 0)); +} + +// +// F_BunnyScroll +// +static const char pfub2[] = { "PFUB2" }; +static const char pfub1[] = { "PFUB1" }; + +static void F_BunnyScroll (void) +{ + char name[10]; + int stage; + static int laststage; + + { + int scrolled = 320 - (finalecount-230)/2; + if (scrolled <= 0) { + V_DrawNamePatch(0, 0, 0, pfub2, CR_DEFAULT, VPT_STRETCH); + } else if (scrolled >= 320) { + V_DrawNamePatch(0, 0, 0, pfub1, CR_DEFAULT, VPT_STRETCH); + } else { + V_DrawNamePatch(320-scrolled, 0, 0, pfub1, CR_DEFAULT, VPT_STRETCH); + V_DrawNamePatch(-scrolled, 0, 0, pfub2, CR_DEFAULT, VPT_STRETCH); + } + } + + if (finalecount < 1130) + return; + if (finalecount < 1180) + { + // CPhipps - patch drawing updated + V_DrawNamePatch((320-13*8)/2, (200-8*8)/2,0, "END0", CR_DEFAULT, VPT_STRETCH); + laststage = 0; + return; + } + + stage = (finalecount-1180) / 5; + if (stage > 6) + stage = 6; + if (stage > laststage) + { + S_StartSound (NULL, sfx_pistol); + laststage = stage; + } + + sprintf(name, "END%i", stage); + // CPhipps - patch drawing updated + V_DrawNamePatch((320-13*8)/2, (200-8*8)/2, 0, name, CR_DEFAULT, VPT_STRETCH); +} + + +// +// F_Drawer +// +void F_Drawer (void) +{ + if (finalestage == 2) + { + F_CastDrawer (); + return; + } + + if (!finalestage) + F_TextWrite (); + else + { + switch (gameepisode) + { + // CPhipps - patch drawing updated + case 1: + if ( gamemode == retail ) + V_DrawNamePatch(0, 0, 0, "CREDIT", CR_DEFAULT, VPT_STRETCH); + else + V_DrawNamePatch(0, 0, 0, "HELP2", CR_DEFAULT, VPT_STRETCH); + break; + case 2: + V_DrawNamePatch(0, 0, 0, "VICTORY2", CR_DEFAULT, VPT_STRETCH); + break; + case 3: + F_BunnyScroll (); + break; + case 4: + V_DrawNamePatch(0, 0, 0, "ENDPIC", CR_DEFAULT, VPT_STRETCH); + break; + } + } +} diff --git a/components/doom/prboom/f_finale.h b/components/doom/prboom/f_finale.h new file mode 100644 index 0000000..6214f38 --- /dev/null +++ b/components/doom/prboom/f_finale.h @@ -0,0 +1,56 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Related to f_finale.c, which is called at the end of a level + * + *-----------------------------------------------------------------------------*/ + + +#ifndef __F_FINALE__ +#define __F_FINALE__ + +#include "doomtype.h" +#include "d_event.h" + +/* + * FINALE + */ + +/* Called by main loop. */ +boolean F_Responder (event_t* ev); + +/* Called by main loop. */ +void F_Ticker (void); + +/* Called by main loop. */ +void F_Drawer (void); + +void F_StartFinale (void); + +#endif diff --git a/components/doom/prboom/f_wipe.c b/components/doom/prboom/f_wipe.c new file mode 100644 index 0000000..fc3ac1d --- /dev/null +++ b/components/doom/prboom/f_wipe.c @@ -0,0 +1,202 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Mission begin melt/wipe screen special effect. + * + *----------------------------------------------------------------------------- + */ + + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "z_zone.h" +#include "doomdef.h" +#include "i_video.h" +#include "v_video.h" +#include "m_random.h" +#include "f_wipe.h" + +// +// SCREEN WIPE PACKAGE +// + +// Parts re-written to support true-color video modes. Column-major +// formatting removed. - POPE + +// CPhipps - macros for the source and destination screens +#define SRC_SCR 2 +#define DEST_SCR 3 + +static screeninfo_t wipe_scr_start; +static screeninfo_t wipe_scr_end; +static screeninfo_t wipe_scr; + +static int y_lookup[MAX_SCREENWIDTH]; + + +static int wipe_initMelt(int ticks) +{ + int i; + + // copy start screen to main screen + for(i=0;i not ready to scroll yet) + y_lookup[0] = -(M_Random()%16); + for (i=1;i 0) + y_lookup[i] = 0; + else + if (y_lookup[i] == -16) + y_lookup[i] = -15; + } + return 0; +} + +static int wipe_doMelt(int ticks) +{ + boolean done = true; + int i; + const int depth = V_GetPixelDepth(); + + while (ticks--) { + for (i=0;i<(SCREENWIDTH);i++) { + if (y_lookup[i]<0) { + y_lookup[i]++; + done = false; + continue; + } + if (y_lookup[i] < SCREENHEIGHT) { + byte *s, *d; + int j, k, dy; + + /* cph 2001/07/29 - + * The original melt rate was 8 pixels/sec, i.e. 25 frames to melt + * the whole screen, so make the melt rate depend on SCREENHEIGHT + * so it takes no longer in high res + */ + dy = (y_lookup[i] < 16) ? y_lookup[i]+1 : SCREENHEIGHT/25; + if (y_lookup[i]+dy >= SCREENHEIGHT) + dy = SCREENHEIGHT - y_lookup[i]; + + s = wipe_scr_end.data + (y_lookup[i]*wipe_scr_end.byte_pitch+(i*depth)); + d = wipe_scr.data + (y_lookup[i]*wipe_scr.byte_pitch+(i*depth)); + for (j=dy;j;j--) { + for (k=0; k +#include +#include +#ifdef _MSC_VER +#define F_OK 0 /* Check for file existence */ +#define W_OK 2 /* Check for write permission */ +#define R_OK 4 /* Check for read permission */ +#include +#else +#include +#endif +#include + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "doomstat.h" +#include "d_net.h" +#include "f_finale.h" +#include "m_argv.h" +#include "m_misc.h" +#include "m_menu.h" +#include "m_random.h" +#include "p_setup.h" +#include "p_saveg.h" +#include "p_tick.h" +#include "p_map.h" +#include "d_main.h" +#include "wi_stuff.h" +#include "hu_stuff.h" +#include "st_stuff.h" +#include "am_map.h" +#include "w_wad.h" +#include "r_main.h" +#include "r_draw.h" +#include "p_map.h" +#include "s_sound.h" +#include "dstrings.h" +#include "sounds.h" +#include "r_data.h" +#include "r_sky.h" +#include "d_deh.h" // Ty 3/27/98 deh declarations +#include "p_inter.h" +#include "g_game.h" +#include "lprintf.h" +#include "i_main.h" +#include "i_system.h" +#include "r_demo.h" +#include "r_fps.h" + +#define SAVEGAMESIZE 0x20000 +#define SAVESTRINGSIZE 24 + +static size_t savegamesize = SAVEGAMESIZE; // killough +static boolean netdemo; +static const byte *demobuffer; /* cph - only used for playback */ +static int demolength; // check for overrun (missing DEMOMARKER) +static FILE *demofp; /* cph - record straight to file */ +static const byte *demo_p; +static short consistancy[MAXPLAYERS][BACKUPTICS]; + +gameaction_t gameaction; +gamestate_t gamestate; +skill_t gameskill; +int respawnmonsters; +int gameepisode; +int gamemap; +int paused; +// CPhipps - moved *_loadgame vars here +static boolean forced_loadgame = false; +static boolean command_loadgame = false; + +boolean usergame; // ok to save / end game +boolean timingdemo; // if true, exit with report on completion +boolean fastdemo; // if true, run at full speed -- killough +boolean nodrawers; // for comparative timing purposes +boolean noblit; // for comparative timing purposes +int starttime; // for comparative timing purposes +int deathmatch; // only if started as net death +int netgame; // only true if packets are broadcast +boolean playeringame[MAXPLAYERS]; +player_t players[MAXPLAYERS]; +int consoleplayer; // player taking events and displaying +int displayplayer; // view being displayed +int gametic; +int basetic; /* killough 9/29/98: for demo sync */ +int totalkills, totallive, totalitems, totalsecret; // for intermission +boolean demorecording; +boolean demoplayback; +int demover; +boolean singledemo; // quit after playing a demo from cmdline +wbstartstruct_t wminfo; // parms for world map / intermission +boolean haswolflevels = false;// jff 4/18/98 wolf levels present +static byte *savebuffer; // CPhipps - static +int autorun = false; // always running? // phares +int totalleveltimes; // CPhipps - total time for all completed levels +int longtics; + +// +// controls (have defaults) +// + +int key_right; +int key_left; +int key_up; +int key_down; +int key_menu_right; // phares 3/7/98 +int key_menu_left; // | +int key_menu_up; // V +int key_menu_down; +int key_strafeleft; +int key_straferight; +int key_fire; +int key_use; +int key_strafe; +int key_speed; +int key_escape = KEYD_ESCAPE; // phares 4/13/98 +int key_savegame; // phares +int key_loadgame; // | +int key_autorun; // V +int key_reverse; +int key_zoomin; +int key_zoomout; +int key_lastmessage; +int key_chat; +int key_backspace; +int key_enter; +int key_map_right; +int key_map_left; +int key_map_up; +int key_map_down; +int key_map_zoomin; +int key_map_zoomout; +int key_map; +int key_map_gobig; +int key_map_follow; +int key_map_mark; +int key_map_clear; +int key_map_grid; +int key_map_overlay; // cph - map overlay +int key_map_rotate; // cph - map rotation +int key_help = KEYD_F1; // phares 4/13/98 +int key_soundvolume; +int key_hud; +int key_quicksave; +int key_endgame; +int key_messages; +int key_quickload; +int key_quit; +int key_gamma; +int key_spy; +int key_pause; +int key_setup; +int destination_keys[MAXPLAYERS]; +int key_weapontoggle; +int key_weapon1; +int key_weapon2; +int key_weapon3; +int key_weapon4; +int key_weapon5; +int key_weapon6; +int key_weapon7; // ^ +int key_weapon8; // | +int key_weapon9; // phares + +int mousebfire; +int mousebstrafe; +int mousebforward; +int joybfire; +int joybstrafe; +int joybuse; +int joybspeed; + +#define MAXPLMOVE (forwardmove[1]) +#define TURBOTHRESHOLD 0x32 +#define SLOWTURNTICS 6 +#define QUICKREVERSE (short)32768 // 180 degree reverse // phares +#define NUMKEYS 512 + +fixed_t forwardmove[2] = {0x19, 0x32}; +fixed_t sidemove[2] = {0x18, 0x28}; +fixed_t angleturn[3] = {640, 1280, 320}; // + slow turn + +// CPhipps - made lots of key/button state vars static +static byte gamekeydown[NUMKEYS]; +static int turnheld; // for accelerative turning + +// static boolean mousearray[4]; +// static boolean *mousebuttons = &mousearray[1]; // allow [-1] + +// mouse values are used once +// static int mousex; +// static int mousey; +// static int dclicktime; +// static int dclickstate; +// static int dclicks; +// static int dclicktime2; +// static int dclickstate2; +// static int dclicks2; + +// joystick values are repeated +static int joyxmove; +static int joyymove; +static byte joyarray[5]; +static byte *joybuttons = &joyarray[1]; // allow [-1] + +// Game events info +static buttoncode_t special_event; // Event triggered by local player, to send +static byte savegameslot; // Slot to load if gameaction == ga_loadgame +char savedescription[SAVEDESCLEN]; // Description to save in savegame if gameaction == ga_savegame + +//jff 3/24/98 define defaultskill here +int defaultskill; //note 1-based + +// killough 2/8/98: make corpse queue variable in size +int bodyqueslot, bodyquesize; // killough 2/8/98 +mobj_t **bodyque = 0; // phares 8/10/98 + +static void G_DoSaveGame (boolean menu); +static const byte* G_ReadDemoHeader(const byte* demo_p, size_t size, boolean failonerror); + +// +// G_BuildTiccmd +// Builds a ticcmd from all of the available inputs +// or reads it from the demo buffer. +// If recording a demo, write it out +// +static inline signed char fudgef(signed char b) +{ + static int c; + if (!b || !demo_compatibility || longtics) return b; + if (++c & 0x1f) return b; + b |= 1; if (b>2) b-=2; + return b; +} + +static inline signed short fudgea(signed short b) +{ + if (!b || !demo_compatibility || !longtics) return b; + b |= 1; if (b>2) b-=2; + return b; +} + + +void G_BuildTiccmd(ticcmd_t* cmd) +{ + boolean strafe; + int speed; + int tspeed; + int forward; + int side; + int newweapon; // phares + /* cphipps - remove needless I_BaseTiccmd call, just set the ticcmd to zero */ + memset(cmd,0,sizeof*cmd); + cmd->consistancy = consistancy[consoleplayer][maketic%BACKUPTICS]; + + strafe = gamekeydown[key_strafe] || joybuttons[joybstrafe]; + //e6y: the "RUN" key inverts the autorun state + speed = (gamekeydown[key_speed] || joybuttons[joybspeed] ? !autorun : autorun); // phares + + forward = side = 0; + + // use two stage accelerative turning + // on the keyboard and joystick + if (joyxmove < 0 || joyxmove > 0 || + gamekeydown[key_right] || gamekeydown[key_left]) + turnheld += ticdup; + else + turnheld = 0; + + if (turnheld < SLOWTURNTICS) + tspeed = 2; // slow turn + else + tspeed = speed; + + // turn 180 degrees in one keystroke? // phares + // | + if (gamekeydown[key_reverse]) // V + { + cmd->angleturn += QUICKREVERSE; // ^ + gamekeydown[key_reverse] = false; // | + } // phares + + // let movement keys cancel each other out + + if (strafe) + { + if (gamekeydown[key_right]) + side += sidemove[speed]; + if (gamekeydown[key_left]) + side -= sidemove[speed]; + if (joyxmove > 0) + side += sidemove[speed]; + if (joyxmove < 0) + side -= sidemove[speed]; + } + else + { + if (gamekeydown[key_right]) + cmd->angleturn -= angleturn[tspeed]; + if (gamekeydown[key_left]) + cmd->angleturn += angleturn[tspeed]; + if (joyxmove > 0) + cmd->angleturn -= angleturn[tspeed]; + if (joyxmove < 0) + cmd->angleturn += angleturn[tspeed]; + } + + if (gamekeydown[key_up]) + forward += forwardmove[speed]; + if (gamekeydown[key_down]) + forward -= forwardmove[speed]; + if (joyymove < 0) + forward += forwardmove[speed]; + if (joyymove > 0) + forward -= forwardmove[speed]; + if (gamekeydown[key_straferight]) + side += sidemove[speed]; + if (gamekeydown[key_strafeleft]) + side -= sidemove[speed]; + + // buttons + cmd->chatchar = HU_dequeueChatChar(); + + if (gamekeydown[key_fire] || joybuttons[joybfire]) + cmd->buttons |= BT_ATTACK; + + if (gamekeydown[key_use] || joybuttons[joybuse]) + { + cmd->buttons |= BT_USE; + // clear double clicks if hit use button + // dclicks = 0; + } + + // Toggle between the top 2 favorite weapons. // phares + // If not currently aiming one of these, switch to // phares + // the favorite. Only switch if you possess the weapon. // phares + + // killough 3/22/98: + // + // Perform automatic weapons switch here rather than in p_pspr.c, + // except in demo_compatibility mode. + // + // killough 3/26/98, 4/2/98: fix autoswitch when no weapons are left + + if ((!demo_compatibility && players[consoleplayer].attackdown && // killough + !P_CheckAmmo(&players[consoleplayer])) || gamekeydown[key_weapontoggle]) + newweapon = P_SwitchWeapon(&players[consoleplayer]); // phares + else + { // phares 02/26/98: Added gamemode checks + newweapon = + gamekeydown[key_weapon1] ? wp_fist : // killough 5/2/98: reformatted + gamekeydown[key_weapon2] ? wp_pistol : + gamekeydown[key_weapon3] ? wp_shotgun : + gamekeydown[key_weapon4] ? wp_chaingun : + gamekeydown[key_weapon5] ? wp_missile : + gamekeydown[key_weapon6] && gamemode != shareware ? wp_plasma : + gamekeydown[key_weapon7] && gamemode != shareware ? wp_bfg : + gamekeydown[key_weapon8] ? wp_chainsaw : + (!demo_compatibility && gamekeydown[key_weapon9] && gamemode == commercial) ? wp_supershotgun : + wp_nochange; + + // killough 3/22/98: For network and demo consistency with the + // new weapons preferences, we must do the weapons switches here + // instead of in p_user.c. But for old demos we must do it in + // p_user.c according to the old rules. Therefore demo_compatibility + // determines where the weapons switch is made. + + // killough 2/8/98: + // Allow user to switch to fist even if they have chainsaw. + // Switch to fist or chainsaw based on preferences. + // Switch to shotgun or SSG based on preferences. + + if (!demo_compatibility) + { + const player_t *player = &players[consoleplayer]; + + // only select chainsaw from '1' if it's owned, it's + // not already in use, and the player prefers it or + // the fist is already in use, or the player does not + // have the berserker strength. + + if (newweapon==wp_fist && player->weaponowned[wp_chainsaw] && + player->readyweapon!=wp_chainsaw && + (player->readyweapon==wp_fist || + !player->powers[pw_strength] || + P_WeaponPreferred(wp_chainsaw, wp_fist))) + newweapon = wp_chainsaw; + + // Select SSG from '3' only if it's owned and the player + // does not have a shotgun, or if the shotgun is already + // in use, or if the SSG is not already in use and the + // player prefers it. + + if (newweapon == wp_shotgun && gamemode == commercial && + player->weaponowned[wp_supershotgun] && + (!player->weaponowned[wp_shotgun] || + player->readyweapon == wp_shotgun || + (player->readyweapon != wp_supershotgun && + P_WeaponPreferred(wp_supershotgun, wp_shotgun)))) + newweapon = wp_supershotgun; + } + // killough 2/8/98, 3/22/98 -- end of weapon selection changes + } + + if (newweapon != wp_nochange) + { + cmd->buttons |= BT_CHANGE; + cmd->buttons |= newweapon< MAXPLMOVE) + forward = MAXPLMOVE; + else if (forward < -MAXPLMOVE) + forward = -MAXPLMOVE; + if (side > MAXPLMOVE) + side = MAXPLMOVE; + else if (side < -MAXPLMOVE) + side = -MAXPLMOVE; + + cmd->forwardmove += fudgef((signed char)forward); + cmd->sidemove += side; + cmd->angleturn = fudgea(cmd->angleturn); + + // CPhipps - special events (game new/load/save/pause) + if (special_event & BT_SPECIAL) { + cmd->buttons = special_event; + special_event = 0; + } +} + +// +// G_RestartLevel +// + +void G_RestartLevel(void) +{ + special_event = BT_SPECIAL | (BTS_RESTARTLEVEL & BT_SPECIALMASK); +} + +// +// G_DoLoadLevel +// + +static void G_DoLoadLevel (void) +{ + int i; + + // Set the sky map. + // First thing, we have a dummy sky texture name, + // a flat. The data is in the WAD only because + // we look for an actual index, instead of simply + // setting one. + + skyflatnum = R_FlatNumForName ( SKYFLATNAME ); + + // DOOM determines the sky texture to be used + // depending on the current episode, and the game version. + if (gamemode == commercial) + // || gamemode == pack_tnt //jff 3/27/98 sorry guys pack_tnt,pack_plut + // || gamemode == pack_plut) //aren't gamemodes, this was matching retail + { + skytexture = R_TextureNumForName ("SKY3"); + if (gamemap < 12) + skytexture = R_TextureNumForName ("SKY1"); + else + if (gamemap < 21) + skytexture = R_TextureNumForName ("SKY2"); + } + else //jff 3/27/98 and lets not forget about DOOM and Ultimate DOOM huh? + switch (gameepisode) + { + case 1: + skytexture = R_TextureNumForName ("SKY1"); + break; + case 2: + skytexture = R_TextureNumForName ("SKY2"); + break; + case 3: + skytexture = R_TextureNumForName ("SKY3"); + break; + case 4: // Special Edition sky + skytexture = R_TextureNumForName ("SKY4"); + break; + }//jff 3/27/98 end sky setting fix + + /* cph 2006/07/31 - took out unused levelstarttic variable */ + + if (!demo_compatibility && !mbf_features) // killough 9/29/98 + basetic = gametic; + + if (wipegamestate == GS_LEVEL) + wipegamestate = -1; // force a wipe + + gamestate = GS_LEVEL; + + for (i=0 ; idata1 == key_spy && netgame && (demoplayback || !deathmatch) && + gamestate == GS_LEVEL) + { + if (ev->type == ev_keyup) + gamekeydown[key_spy] = false; + if (ev->type == ev_keydown && !gamekeydown[key_spy]) + { + gamekeydown[key_spy] = true; + do // spy mode + if (++displayplayer >= MAXPLAYERS) + displayplayer = 0; + while (!playeringame[displayplayer] && displayplayer!=consoleplayer); + + ST_Start(); // killough 3/7/98: switch status bar views too + HU_Start(); + S_UpdateSounds(players[displayplayer].mo); + R_ActivateSectorInterpolations(); + R_SmoothPlaying_Reset(NULL); + } + return true; + } + + // any other key pops up menu if in demos + // + // killough 8/2/98: enable automap in -timedemo demos + // + // killough 9/29/98: make any key pop up menu regardless of + // which kind of demo, and allow other events during playback + + if (gameaction == ga_nothing && (demoplayback || gamestate == GS_DEMOSCREEN)) + { + // killough 9/29/98: allow user to pause demos during playback + if (ev->type == ev_keydown && ev->data1 == key_pause) + { + if (paused ^= 2) + S_PauseSound(); + else + S_ResumeSound(); + return true; + } + + // killough 10/98: + // Don't pop up menu, if paused in middle + // of demo playback, or if automap active. + // Don't suck up keys, which may be cheats + + return gamestate == GS_DEMOSCREEN && + !(paused & 2) && !(automapmode & am_active) && + ((ev->type == ev_keydown) || + (ev->type == ev_mouse && ev->data1) || + (ev->type == ev_joystick && ev->data1)) ? + M_StartControlPanel(), true : false; + } + + if (gamestate == GS_FINALE && F_Responder(ev)) + return true; // finale ate the event + + switch (ev->type) + { + case ev_keydown: + if (ev->data1 == key_pause) // phares + { + special_event = BT_SPECIAL | (BTS_PAUSE & BT_SPECIALMASK); + return true; + } + if (ev->data1 data1] = true; + return true; // eat key down events + + case ev_keyup: + if (ev->data1 data1] = false; + return false; // always let key up events filter down +#if 0 + case ev_mouse: + mousebuttons[0] = ev->data1 & 1; + mousebuttons[1] = ev->data1 & 2; + mousebuttons[2] = ev->data1 & 4; + /* + * bmead@surfree.com + * Modified by Barry Mead after adding vastly more resolution + * to the Mouse Sensitivity Slider in the options menu 1-9-2000 + * Removed the mouseSensitivity "*4" to allow more low end + * sensitivity resolution especially for lsdoom users. + */ + mousex += (ev->data2*(mouseSensitivity_horiz))/10; /* killough */ + mousey += (ev->data3*(mouseSensitivity_vert))/10; /*Mead rm *4 */ + return true; // eat events +#endif + case ev_joystick: + joybuttons[0] = ev->data1 & 1; + joybuttons[1] = ev->data1 & 2; + joybuttons[2] = ev->data1 & 4; + joybuttons[3] = ev->data1 & 8; + joyxmove = ev->data2; + joyymove = ev->data3; + return true; // eat events + + default: + return false; + } +} + +// +// G_Ticker +// Make ticcmd_ts for the players. +// + +void G_Ticker (void) +{ + int i; + static gamestate_t prevgamestate; + + // CPhipps - player colour changing + if (!demoplayback && mapcolor_plyr[consoleplayer] != mapcolor_me) { + // Changed my multiplayer colour - Inform the whole game +#ifdef HAVE_NET + int net_cl = LONG(mapcolor_me); + D_NetSendMisc(nm_plcolour, sizeof(net_cl), &net_cl); +#endif + G_ChangedPlayerColour(consoleplayer, mapcolor_me); + } + P_MapStart(); + // do player reborns if needed + for (i=0 ; iforwardmove > TURBOTHRESHOLD && + !(gametic&31) && ((gametic>>5)&3) == i ) + { + extern char *player_names[]; + /* cph - don't use sprintf, use doom_printf */ + doom_printf ("%s is turbo!", player_names[i]); + } + + if (netgame && !netdemo && !(gametic%ticdup) ) + { + if (gametic > BACKUPTICS + && consistancy[i][buf] != cmd->consistancy) + I_Error("G_Ticker: Consistency failure (%i should be %i)", + cmd->consistancy, consistancy[i][buf]); + if (players[i].mo) + consistancy[i][buf] = players[i].mo->x; + else + consistancy[i][buf] = 0; // killough 2/14/98 + } + } + } + + // check for special buttons + for (i=0; i>BTS_SAVESHIFT; + gameaction = ga_savegame; + break; + + // CPhipps - remote loadgame request + case BTS_LOADGAME: + savegameslot = + (players[i].cmd.buttons & BTS_SAVEMASK)>>BTS_SAVESHIFT; + gameaction = ga_loadgame; + forced_loadgame = netgame; // Force if a netgame + command_loadgame = false; + break; + + // CPhipps - Restart the level + case BTS_RESTARTLEVEL: + if (demoplayback || (compatibility_level < lxdoom_1_compatibility)) + break; // CPhipps - Ignore in demos or old games + gameaction = ga_loadlevel; + break; + } + players[i].cmd.buttons = 0; + } + } + } + } + + // cph - if the gamestate changed, we may need to clean up the old gamestate + if (gamestate != prevgamestate) { + switch (prevgamestate) { + case GS_LEVEL: + // This causes crashes at level end - Neil Stevens + // The crash is because the sounds aren't stopped before freeing them + // the following is a possible fix + // This fix does avoid the crash wowever, with this fix in, the exit + // switch sound is cut off + // S_Stop(); + // Z_FreeTags(PU_LEVEL, PU_PURGELEVEL-1); + break; + case GS_INTERMISSION: + WI_End(); + default: + break; + } + prevgamestate = gamestate; + } + + // e6y + // do nothing if a pause has been pressed during playback + // pausing during intermission can cause desynchs without that + if (paused & 2 && gamestate != GS_LEVEL) + return; + + // do main actions + switch (gamestate) + { + case GS_LEVEL: + P_Ticker (); + ST_Ticker (); + AM_Ticker (); + HU_Ticker (); + break; + + case GS_INTERMISSION: + WI_Ticker (); + break; + + case GS_FINALE: + F_Ticker (); + break; + + case GS_DEMOSCREEN: + D_PageTicker (); + break; + + default: + break; + } +} + +// +// PLAYER STRUCTURE FUNCTIONS +// also see P_SpawnPlayer in P_Things +// + +// +// G_PlayerFinishLevel +// Can when a player completes a level. +// + +static void G_PlayerFinishLevel(int player) +{ + player_t *p = &players[player]; + memset(p->powers, 0, sizeof p->powers); + memset(p->cards, 0, sizeof p->cards); + p->mo = NULL; // cph - this is allocated PU_LEVEL so it's gone + p->extralight = 0; // cancel gun flashes + p->fixedcolormap = 0; // cancel ir gogles + p->damagecount = 0; // no palette changes + p->bonuscount = 0; +} + +// CPhipps - G_SetPlayerColour +// Player colours stuff +// +// G_SetPlayerColour + +#include "r_draw.h" + +void G_ChangedPlayerColour(int pn, int cl) +{ + int i; + + if (!netgame) return; + + mapcolor_plyr[pn] = cl; + + // Rebuild colour translation tables accordingly + R_InitTranslationTables(); + // Change translations on existing player mobj's + for (i=0; iflags &= ~MF_TRANSLATION; + players[i].mo->flags |= playernumtotrans[i] << MF_TRANSSHIFT; + } + } +} + +// +// G_PlayerReborn +// Called after a player dies +// almost everything is cleared and initialized +// + +void G_PlayerReborn (int player) +{ + player_t *p; + int i; + int frags[MAXPLAYERS]; + int killcount; + int itemcount; + int secretcount; + + memcpy (frags, players[player].frags, sizeof frags); + killcount = players[player].killcount; + itemcount = players[player].itemcount; + secretcount = players[player].secretcount; + + p = &players[player]; + + // killough 3/10/98,3/21/98: preserve cheats across idclev + { + int cheats = p->cheats; + memset (p, 0, sizeof(*p)); + p->cheats = cheats; + } + + memcpy(players[player].frags, frags, sizeof(players[player].frags)); + players[player].killcount = killcount; + players[player].itemcount = itemcount; + players[player].secretcount = secretcount; + + p->usedown = p->attackdown = true; // don't do anything immediately + p->playerstate = PST_LIVE; + p->health = initial_health; // Ty 03/12/98 - use dehacked values + p->readyweapon = p->pendingweapon = wp_pistol; + p->weaponowned[wp_fist] = true; + p->weaponowned[wp_pistol] = true; + p->ammo[am_clip] = initial_bullets; // Ty 03/12/98 - use dehacked values + + for (i=0 ; imaxammo[i] = maxammo[i]; +} + +// +// G_CheckSpot +// Returns false if the player cannot be respawned +// at the given mapthing_t spot +// because something is occupying it +// + +static boolean G_CheckSpot(int playernum, mapthing_t *mthing) +{ + fixed_t x,y; + subsector_t *ss; + int i; + + if (!players[playernum].mo) + { + // first spawn of level, before corpses + for (i=0 ; ix == mthing->x << FRACBITS + && players[i].mo->y == mthing->y << FRACBITS) + return false; + return true; + } + + x = mthing->x << FRACBITS; + y = mthing->y << FRACBITS; + + // killough 4/2/98: fix bug where P_CheckPosition() uses a non-solid + // corpse to detect collisions with other players in DM starts + // + // Old code: + // if (!P_CheckPosition (players[playernum].mo, x, y)) + // return false; + + players[playernum].mo->flags |= MF_SOLID; + i = P_CheckPosition(players[playernum].mo, x, y); + players[playernum].mo->flags &= ~MF_SOLID; + if (!i) + return false; + + // flush an old corpse if needed + // killough 2/8/98: make corpse queue have an adjustable limit + // killough 8/1/98: Fix bugs causing strange crashes + + if (bodyquesize > 0) + { + static int queuesize; + if (queuesize < bodyquesize) + { + bodyque = realloc(bodyque, bodyquesize*sizeof*bodyque); + memset(bodyque+queuesize, 0, + (bodyquesize-queuesize)*sizeof*bodyque); + queuesize = bodyquesize; + } + if (bodyqueslot >= bodyquesize) + P_RemoveMobj(bodyque[bodyqueslot % bodyquesize]); + bodyque[bodyqueslot++ % bodyquesize] = players[playernum].mo; + } + else + if (!bodyquesize) + P_RemoveMobj(players[playernum].mo); + + // spawn a teleport fog + ss = R_PointInSubsector (x,y); + { // Teleport fog at respawn point + fixed_t xa,ya; + int an; + mobj_t *mo; + +/* BUG: an can end up negative, because mthing->angle is (signed) short. + * We have to emulate original Doom's behaviour, deferencing past the start + * of the array, into the previous array (finetangent) */ + an = ( ANG45 * ((signed)mthing->angle/45) ) >> ANGLETOFINESHIFT; + xa = finecosine[an]; + ya = finesine[an]; + + if (compatibility_level <= finaldoom_compatibility || compatibility_level == prboom_4_compatibility) + switch (an) { + case -4096: xa = finetangent[2048]; // finecosine[-4096] + ya = finetangent[0]; // finesine[-4096] + break; + case -3072: xa = finetangent[3072]; // finecosine[-3072] + ya = finetangent[1024]; // finesine[-3072] + break; + case -2048: xa = finesine[0]; // finecosine[-2048] + ya = finetangent[2048]; // finesine[-2048] + break; + case -1024: xa = finesine[1024]; // finecosine[-1024] + ya = finetangent[3072]; // finesine[-1024] + break; + case 1024: + case 2048: + case 3072: + case 4096: + case 0: break; /* correct angles set above */ + default: I_Error("G_CheckSpot: unexpected angle %d\n",an); + } + + mo = P_SpawnMobj(x+20*xa, y+20*ya, ss->sector->floorheight, MT_TFOG); + + if (players[consoleplayer].viewz != 1) + S_StartSound(mo, sfx_telept); // don't start sound on first frame + } + + return true; +} + + +// G_DeathMatchSpawnPlayer +// Spawns a player at one of the random death match spots +// called at level load and each death +// +void G_DeathMatchSpawnPlayer (int playernum) +{ + int j, selections = deathmatch_p - deathmatchstarts; + + if (selections < MAXPLAYERS) + I_Error("G_DeathMatchSpawnPlayer: Only %i deathmatch spots, %d required", + selections, MAXPLAYERS); + + for (j=0 ; j<20 ; j++) + { + int i = P_Random(pr_dmspawn) % selections; + if (G_CheckSpot (playernum, &deathmatchstarts[i]) ) + { + deathmatchstarts[i].type = playernum+1; + P_SpawnPlayer (playernum, &deathmatchstarts[i]); + return; + } + } + + // no good spot, so the player will probably get stuck + P_SpawnPlayer (playernum, &playerstarts[playernum]); +} + +// +// G_DoReborn +// + +void G_DoReborn (int playernum) +{ + if (!netgame) + gameaction = ga_loadlevel; // reload the level from scratch + else + { // respawn at the start + int i; + + // first dissasociate the corpse + players[playernum].mo->player = NULL; + + // spawn at random spot if in death match + if (deathmatch) + { + G_DeathMatchSpawnPlayer (playernum); + return; + } + + if (G_CheckSpot (playernum, &playerstarts[playernum]) ) + { + P_SpawnPlayer (playernum, &playerstarts[playernum]); + return; + } + + // try to spawn at one of the other players spots + for (i=0 ; i" when the player exits the current map + if (nodrawers && (demoplayback || timingdemo)) { + if (gamemode == commercial) + lprintf(LO_INFO, "FINISHED: MAP%02d\n", gamemap); + else + lprintf(LO_INFO, "FINISHED: E%dM%d\n", gameepisode, gamemap); + } + + WI_Start (&wminfo); +} + +// +// G_WorldDone +// + +void G_WorldDone (void) +{ + gameaction = ga_worlddone; + + if (secretexit) + players[consoleplayer].didsecret = true; + + if (gamemode == commercial) + { + switch (gamemap) + { + case 15: + case 31: + if (!secretexit) + break; + /* fallthrough */ + case 6: + case 11: + case 20: + case 30: + F_StartFinale (); + break; + } + } + else if (gamemap == 8) + gameaction = ga_victory; // cph - after ExM8 summary screen, show victory stuff +} + +void G_DoWorldDone (void) +{ + idmusnum = -1; //jff 3/17/98 allow new level's music to be loaded + gamestate = GS_LEVEL; + gamemap = wminfo.next+1; + G_DoLoadLevel(); + gameaction = ga_nothing; + AM_clearMarks(); //jff 4/12/98 clear any marks on the automap +} + +// killough 2/28/98: A ridiculously large number +// of players, the most you'll ever need in a demo +// or savegame. This is used to prevent problems, in +// case more players in a game are supported later. + +#define MIN_MAXPLAYERS 32 + +extern boolean setsizeneeded; + +//CPhipps - savename variable redundant + +/* killough 12/98: + * This function returns a signature for the current wad. + * It is used to distinguish between wads, for the purposes + * of savegame compatibility warnings, and options lookups. + */ + +static uint_64_t G_UpdateSignature(uint_64_t s, const char *name) +{ + int i, lump = W_CheckNumForName(name); + if (lump != -1 && (i = lump+10) < numlumps) + do + { + int size = W_LumpLength(i); + const byte *p = W_CacheLumpNum(i); + while (size--) + s <<= 1, s += *p++; + W_UnlockLumpNum(i); + } + while (--i > lump); + return s; +} + +static uint_64_t G_Signature(void) +{ + static uint_64_t s = 0; + static boolean computed = false; + char name[9]; + int episode, map; + + if (!computed) { + computed = true; + if (gamemode == commercial) + for (map = haswolflevels ? 32 : 30; map; map--) + sprintf(name, "map%02d", map), s = G_UpdateSignature(s, name); + else + for (episode = gamemode==retail ? 4 : + gamemode==shareware ? 1 : 3; episode; episode--) + for (map = 9; map; map--) + sprintf(name, "E%dM%d", episode, map), s = G_UpdateSignature(s, name); + } + return s; +} + +// +// killough 5/15/98: add forced loadgames, which allow user to override checks +// + +void G_ForcedLoadGame(void) +{ + // CPhipps - net loadgames are always forced, so we only reach here + // in single player + gameaction = ga_loadgame; + forced_loadgame = true; +} + +// killough 3/16/98: add slot info +// killough 5/15/98: add command-line +void G_LoadGame(int slot, boolean command) +{ + lprintf(LO_INFO, "G_LoadGame: slot %d, command %d\n", slot, command); + if (!demoplayback && !command) { + // CPhipps - handle savegame filename in G_DoLoadGame + // - Delay load so it can be communicated in net game + // - store info in special_event + special_event = BT_SPECIAL | (BTS_LOADGAME & BT_SPECIALMASK) | + ((slot << BTS_SAVESHIFT) & BTS_SAVEMASK); + forced_loadgame = netgame; // CPhipps - always force load netgames + } else { + // Do the old thing, immediate load + gameaction = ga_loadgame; + forced_loadgame = false; + savegameslot = slot; + demoplayback = false; + // Don't stay in netgame state if loading single player save + // while watching multiplayer demo + netgame = false; + } + command_loadgame = command; + R_SmoothPlaying_Reset(NULL); // e6y +} + +// killough 5/15/98: +// Consistency Error when attempting to load savegame. + +static void G_LoadGameErr(const char *msg) +{ + Z_Free(savebuffer); // Free the savegame buffer + M_ForcedLoadGame(msg); // Print message asking for 'Y' to force + if (command_loadgame) // If this was a command-line -loadgame + { + D_StartTitle(); // Start the title screen + gamestate = GS_DEMOSCREEN; // And set the game state accordingly + } +} + +// CPhipps - size of version header +#define VERSIONSIZE 16 + +const char * comp_lev_str[MAX_COMPATIBILITY_LEVEL] = +{ "doom v1.2", "doom v1.666", "doom/doom2 v1.9", "ultimate doom", "final doom", + "dosdoom compatibility", "tasdoom compatibility", "\"boom compatibility\"", "boom v2.01", "boom v2.02", "lxdoom v1.3.2+", + "MBF", "PrBoom 2.03beta", "PrBoom v2.1.0-2.1.1", "PrBoom v2.1.2-v2.2.6", + "PrBoom v2.3.x", "PrBoom 2.4.0", "Current PrBoom" }; + +// comp_options_by_version removed - see G_Compatibility + +static byte map_old_comp_levels[] = +{ 0, 1, 2, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }; + +static const struct { + int comp_level; + const char* ver_printf; + int version; +} version_headers[] = { + /* cph - we don't need a new version_header for prboom_3_comp/v2.1.1, since + * the file format is unchanged. */ + { prboom_3_compatibility, "PrBoom %d", 210}, + { prboom_5_compatibility, "PrBoom %d", 211}, + { prboom_6_compatibility, "PrBoom %d", 212} +}; + +static const size_t num_version_headers = sizeof(version_headers) / sizeof(version_headers[0]); + +void G_DoLoadGame(void) +{ + lprintf(LO_INFO, "G_DoLoadGame... \n"); + int length, i; + // CPhipps - do savegame filename stuff here + char name[PATH_MAX+1]; // killough 3/22/98 + int savegame_compatibility = -1; + + G_SaveGameName(name,sizeof(name),savegameslot, demoplayback); + gameaction = ga_nothing; + + length = M_ReadFile(name, &savebuffer); + if (length<=0) + I_Error("Couldn't read file %s: %s", name, "(Unknown Error)"); + save_p = savebuffer + SAVESTRINGSIZE; + + // CPhipps - read the description field, compare with supported ones + for (i=0; (size_t)i= prboom_4_compatibility) ? *save_p : savegame_compatibility; + if (savegame_compatibility < prboom_6_compatibility) + compatibility_level = map_old_comp_levels[compatibility_level]; + save_p++; + + gameskill = *save_p++; + gameepisode = *save_p++; + gamemap = *save_p++; + + for (i=0 ; i= prboom_2_compatibility) { + memcpy(&totalleveltimes, save_p, sizeof totalleveltimes); + save_p += sizeof totalleveltimes; + } + else totalleveltimes = 0; + + // killough 11/98: load revenant tracer state + basetic = gametic - *save_p++; + + // dearchive all the modifications + P_MapStart(); + P_UnArchivePlayers (); + P_UnArchiveWorld (); + P_UnArchiveThinkers (); + P_UnArchiveSpecials (); + P_UnArchiveRNG (); // killough 1/18/98: load RNG information + P_UnArchiveMap (); // killough 1/22/98: load automap information + P_MapEnd(); + R_SmoothPlaying_Reset(NULL); // e6y + + if (*save_p != 0xe6) + I_Error ("G_DoLoadGame: Bad savegame"); + + // done + Z_Free (savebuffer); + + if (setsizeneeded) + R_ExecuteSetViewSize (); + + // draw the pattern into the back screen + R_FillBackScreen (); + + /* killough 12/98: support -recordfrom and -loadgame -playdemo */ + if (!command_loadgame) + singledemo = false; /* Clear singledemo flag if loading from menu */ + else + if (singledemo) { + gameaction = ga_loadgame; /* Mark that we're loading a game before demo */ + G_DoPlayDemo(); /* This will detect it and won't reinit level */ + } else /* Command line + record means it's a recordfrom */ + if (demorecording) + G_BeginRecording(); +} + +// +// G_SaveGame +// Called by the menu task. +// Description is a 24 byte text string +// + +void G_SaveGame(int slot, char *description) +{ + strcpy(savedescription, description); + if (demoplayback) { + /* cph - We're doing a user-initiated save game while a demo is + * running so, go outside normal mechanisms + */ + savegameslot = slot; + G_DoSaveGame(true); + } + // CPhipps - store info in special_event + special_event = BT_SPECIAL | (BTS_SAVEGAME & BT_SPECIALMASK) | + ((slot << BTS_SAVESHIFT) & BTS_SAVEMASK); +#ifdef HAVE_NET + D_NetSendMisc(nm_savegamename, strlen(savedescription)+1, savedescription); +#endif +} + +// Check for overrun and realloc if necessary -- Lee Killough 1/22/98 +void (CheckSaveGame)(size_t size, const char* file, int line) +{ + size_t pos = save_p - savebuffer; + +#ifdef RANGECHECK + /* cph 2006/08/07 - after-the-fact sanity checking of CheckSaveGame calls */ + static size_t prev_check; + static const char* prevf; + static int prevl; + + if (pos > prev_check) + I_Error("CheckSaveGame at %s:%d called for insufficient buffer (%u < %u)", prevf, prevl, prev_check, pos); + prev_check = size + pos; + prevf = file; + prevl = line; +#endif + + size += 1024; // breathing room + if (pos+size > savegamesize) + save_p = (savebuffer = realloc(savebuffer, + savegamesize += (size+1023) & ~1023)) + pos; +} + +/* killough 3/22/98: form savegame name in one location + * (previously code was scattered around in multiple places) + * cph - Avoid possible buffer overflow problems by passing + * size to this function and using snprintf */ + +void G_SaveGameName(char *name, size_t size, int slot, boolean demoplayback) +{ + snprintf(name, size, "%s/sav%d-%d.dsg", basesavegame, gamemission, slot); +} + +static void G_DoSaveGame (boolean menu) +{ + lprintf(LO_INFO, "G_DoSaveGame... \n"); + + char name[PATH_MAX+1]; + char name2[VERSIONSIZE]; + char *description; + int length, i; + + gameaction = ga_nothing; // cph - cancel savegame at top of this function, + // in case later problems cause a premature exit + + G_SaveGameName(name,sizeof(name),savegameslot, demoplayback && !menu); + + description = savedescription; + + save_p = savebuffer = malloc(savegamesize); + + CheckSaveGame(SAVESTRINGSIZE+VERSIONSIZE+sizeof(uint_64_t)); + memcpy (save_p, description, SAVESTRINGSIZE); + save_p += SAVESTRINGSIZE; + memset (name2,0,sizeof(name2)); + + // CPhipps - scan for the version header + for (i=0; (size_t)i= prboom_2_compatibility) { + memcpy(save_p, &totalleveltimes, sizeof totalleveltimes); + save_p += sizeof totalleveltimes; + } + else totalleveltimes = 0; + + // killough 11/98: save revenant tracer state + *save_p++ = (gametic-basetic) & 255; + + // killough 3/22/98: add Z_CheckHeap after each call to ensure consistency + Z_CheckHeap(); + P_ArchivePlayers(); + Z_CheckHeap(); + + // phares 9/13/98: Move mobj_t->index out of P_ArchiveThinkers so the + // indices can be used by P_ArchiveWorld when the sectors are saved. + // This is so we can save the index of the mobj_t of the thinker that + // caused a sound, referenced by sector_t->soundtarget. + P_ThinkerToIndex(); + + P_ArchiveWorld(); + Z_CheckHeap(); + P_ArchiveThinkers(); + + // phares 9/13/98: Move index->mobj_t out of P_ArchiveThinkers, simply + // for symmetry with the P_ThinkerToIndex call above. + + P_IndexToThinker(); + + Z_CheckHeap(); + P_ArchiveSpecials(); + P_ArchiveRNG(); // killough 1/18/98: save RNG information + Z_CheckHeap(); + P_ArchiveMap(); // killough 1/22/98: save automap information + + *save_p++ = 0xe6; // consistancy marker + + length = save_p - savebuffer; + + Z_CheckHeap(); + doom_printf( "%s", M_WriteFile(name, savebuffer, length) + ? s_GGSAVED /* Ty - externalised */ + : "Game save failed!"); // CPhipps - not externalised + + free(savebuffer); // killough + savebuffer = save_p = NULL; + + savedescription[0] = 0; +} + +static skill_t d_skill; +static int d_episode; +static int d_map; + +void G_DeferedInitNew(skill_t skill, int episode, int map) +{ + d_skill = skill; + d_episode = episode; + d_map = map; + gameaction = ga_newgame; +} + +/* cph - + * G_Compatibility + * + * Initialises the comp[] array based on the compatibility_level + * For reference, MBF did: + * for (i=0; i < COMP_TOTAL; i++) + * comp[i] = compatibility; + * + * Instead, we have a lookup table showing at what version a fix was + * introduced, and made optional (replaces comp_options_by_version) + */ + +void G_Compatibility(void) +{ + static const struct { + complevel_t fix; // level at which fix/change was introduced + complevel_t opt; // level at which fix/change was made optional + } levels[] = { + // comp_telefrag - monsters used to telefrag only on MAP30, now they do it for spawners only + { mbf_compatibility, mbf_compatibility }, + // comp_dropoff - MBF encourages things to drop off of overhangs + { mbf_compatibility, mbf_compatibility }, + // comp_vile - original Doom archville bugs like ghosts + { boom_compatibility, mbf_compatibility }, + // comp_pain - original Doom limits Pain Elementals from spawning too many skulls + { boom_compatibility, mbf_compatibility }, + // comp_skull - original Doom let skulls be spit through walls by Pain Elementals + { boom_compatibility, mbf_compatibility }, + // comp_blazing - original Doom duplicated blazing door sound + { boom_compatibility, mbf_compatibility }, + // e6y: "Tagged doors don't trigger special lighting" handled wrong + // http://sourceforge.net/tracker/index.php?func=detail&aid=1411400&group_id=148658&atid=772943 + // comp_doorlight - MBF made door lighting changes more gradual + { boom_compatibility, mbf_compatibility }, + // comp_model - improvements to the game physics + { boom_compatibility, mbf_compatibility }, + // comp_god - fixes to God mode + { boom_compatibility, mbf_compatibility }, + // comp_falloff - MBF encourages things to drop off of overhangs + { mbf_compatibility, mbf_compatibility }, + // comp_floors - fixes for moving floors bugs + { boom_compatibility_compatibility, mbf_compatibility }, + // comp_skymap + { boom_compatibility, mbf_compatibility }, + // comp_pursuit - MBF AI change, limited pursuit? + { mbf_compatibility, mbf_compatibility }, + // comp_doorstuck - monsters stuck in doors fix + { boom_202_compatibility, mbf_compatibility }, + // comp_staylift - MBF AI change, monsters try to stay on lifts + { mbf_compatibility, mbf_compatibility }, + // comp_zombie - prevent dead players triggering stuff + { lxdoom_1_compatibility, mbf_compatibility }, + // comp_stairs - see p_floor.c + { boom_compatibility_compatibility, mbf_compatibility }, + // comp_infcheat - FIXME + { mbf_compatibility, mbf_compatibility }, + // comp_zerotags - allow zero tags in wads */ + { boom_compatibility, mbf_compatibility }, + // comp_moveblock - enables keygrab and mancubi shots going thru walls + { lxdoom_1_compatibility, prboom_2_compatibility }, + // comp_respawn - objects which aren't on the map at game start respawn at (0,0) + { prboom_2_compatibility, prboom_2_compatibility }, + // comp_sound - see s_sound.c + { boom_compatibility_compatibility, prboom_3_compatibility }, + // comp_666 - enables tag 666 in non-ExM8 levels + { ultdoom_compatibility, prboom_4_compatibility }, + // comp_soul - enables lost souls bouncing (see P_ZMovement) + { prboom_4_compatibility, prboom_4_compatibility }, + // comp_maskedanim - 2s mid textures don't animate + { doom_1666_compatibility, prboom_4_compatibility }, + }; + int i; + + if (sizeof(levels)/sizeof(*levels) != COMP_NUM) + I_Error("G_Compatibility: consistency error"); + + for (i = 0; i < sizeof(levels)/sizeof(*levels); i++) + if (compatibility_level < levels[i].opt) + comp[i] = (compatibility_level < levels[i].fix); + + if (!mbf_features) { + monster_infighting = 1; + monster_backing = 0; + monster_avoid_hazards = 0; + monster_friction = 0; + help_friends = 0; + +#ifdef DOGS + dogs = 0; + dog_jumping = 0; +#endif + + monkeys = 0; + } +} + +#ifdef DOGS +/* killough 7/19/98: Marine's best friend :) */ +static int G_GetHelpers(void) +{ + int j = M_CheckParm ("-dog"); + + if (!j) + j = M_CheckParm ("-dogs"); + return j ? j+1 < myargc ? atoi(myargv[j+1]) : 1 : default_dogs; +} +#endif + +// killough 3/1/98: function to reload all the default parameter +// settings before a new game begins + +void G_ReloadDefaults(void) +{ + // killough 3/1/98: Initialize options based on config file + // (allows functions above to load different values for demos + // and savegames without messing up defaults). + + weapon_recoil = default_weapon_recoil; // weapon recoil + + player_bobbing = default_player_bobbing; // whether player bobs or not + + /* cph 2007/06/31 - for some reason, the default_* of the next 2 vars was never implemented */ + variable_friction = default_variable_friction; + allow_pushers = default_allow_pushers; + + + monsters_remember = default_monsters_remember; // remember former enemies + + monster_infighting = default_monster_infighting; // killough 7/19/98 + +#ifdef DOGS + dogs = netgame ? 0 : G_GetHelpers(); // killough 7/19/98 + dog_jumping = default_dog_jumping; +#endif + + distfriend = default_distfriend; // killough 8/8/98 + + monster_backing = default_monster_backing; // killough 9/8/98 + + monster_avoid_hazards = default_monster_avoid_hazards; // killough 9/9/98 + + monster_friction = default_monster_friction; // killough 10/98 + + help_friends = default_help_friends; // killough 9/9/98 + + monkeys = default_monkeys; + + // jff 1/24/98 reset play mode to command line spec'd version + // killough 3/1/98: moved to here + respawnparm = clrespawnparm; + fastparm = clfastparm; + nomonsters = clnomonsters; + + //jff 3/24/98 set startskill from defaultskill in config file, unless + // it has already been set by a -skill parameter + if (startskill==sk_none) + startskill = (skill_t)(defaultskill-1); + + demoplayback = false; + singledemo = false; // killough 9/29/98: don't stop after 1 demo + netdemo = false; + + // killough 2/21/98: + memset(playeringame+1, 0, sizeof(*playeringame)*(MAXPLAYERS-1)); + + consoleplayer = 0; + + compatibility_level = default_compatibility_level; + { + int i = M_CheckParm("-complevel"); + if (i && (1+i) < myargc) { + int l = atoi(myargv[i+1]);; + if (l >= -1) compatibility_level = l; + } + } + if (compatibility_level == -1) + compatibility_level = best_compatibility; + + if (mbf_features) + memcpy(comp, default_comp, sizeof comp); + G_Compatibility(); + + // killough 3/31/98, 4/5/98: demo sync insurance + demo_insurance = default_demo_insurance == 1; + + rngseed += (rand() % 100) + gametic; // CPhipps +} + +void G_DoNewGame (void) +{ + G_ReloadDefaults(); // killough 3/1/98 + netgame = false; // killough 3/29/98 + deathmatch = false; + G_InitNew (d_skill, d_episode, d_map); + gameaction = ga_nothing; + + //jff 4/26/98 wake up the status bar in case were coming out of a DM demo + ST_Start(); +} + +// killough 4/10/98: New function to fix bug which caused Doom +// lockups when idclev was used in conjunction with -fast. + +void G_SetFastParms(int fast_pending) +{ + static int fast = 0; // remembers fast state + int i; + if (fast != fast_pending) { /* only change if necessary */ + if ((fast = fast_pending)) + { + for (i=S_SARG_RUN1; i<=S_SARG_PAIN2; i++) + if (states[i].tics != 1 || demo_compatibility) // killough 4/10/98 + states[i].tics >>= 1; // don't change 1->0 since it causes cycles + mobjinfo[MT_BRUISERSHOT].speed = 20*FRACUNIT; + mobjinfo[MT_HEADSHOT].speed = 20*FRACUNIT; + mobjinfo[MT_TROOPSHOT].speed = 20*FRACUNIT; + } + else + { + for (i=S_SARG_RUN1; i<=S_SARG_PAIN2; i++) + states[i].tics <<= 1; + mobjinfo[MT_BRUISERSHOT].speed = 15*FRACUNIT; + mobjinfo[MT_HEADSHOT].speed = 10*FRACUNIT; + mobjinfo[MT_TROOPSHOT].speed = 10*FRACUNIT; + } + } +} + +// +// G_InitNew +// Can be called by the startup code or the menu task, +// consoleplayer, displayplayer, playeringame[] should be set. +// + +void G_InitNew(skill_t skill, int episode, int map) +{ + int i; + + if (paused) + { + paused = false; + S_ResumeSound(); + } + + if (skill > sk_nightmare) + skill = sk_nightmare; + + episode %= 100; + + if (episode < 1 || gamemode == shareware) { + episode = 1; + } + else { + // Check if the episode exists + char episodename[8]; + sprintf(episodename, "M_EPI%d", episode); + if (W_CheckNumForName(episodename) == -1) { + lprintf(LO_WARN, "G_InitNew: Invalid episode selected: %s\n", episodename); + episode = 1; + } + } + + if (map < 1) + map = 1; + if (map > 9 && gamemode != commercial) + map = 9; + + G_SetFastParms(fastparm || skill == sk_nightmare); // killough 4/10/98 + + M_ClearRandom(); + + respawnmonsters = skill == sk_nightmare || respawnparm; + + // force players to be initialized upon first level load + for (i=0 ; i demobuffer + demolength) + { + lprintf(LO_WARN, "G_ReadDemoTiccmd: missing DEMOMARKER\n"); + G_CheckDemoStatus(); + } + else + { + cmd->forwardmove = ((signed char)*demo_p++); + cmd->sidemove = ((signed char)*demo_p++); + if (!longtics) { + cmd->angleturn = ((unsigned char)(at = *demo_p++))<<8; + } else { + unsigned int lowbyte = (unsigned char)*demo_p++; + cmd->angleturn = (((signed int)(*demo_p++))<<8) + lowbyte; + } + cmd->buttons = (unsigned char)*demo_p++; + // e6y: ability to play tasdoom demos directly + if (compatibility_level == tasdoom_compatibility) + { + signed char k = cmd->forwardmove; + cmd->forwardmove = cmd->sidemove; + cmd->sidemove = (signed char)at; + cmd->angleturn = ((unsigned char)cmd->buttons)<<8; + cmd->buttons = (byte)k; + } + } +} + +/* Demo limits removed -- killough + * cph - record straight to file + */ +void G_WriteDemoTiccmd (ticcmd_t* cmd) +{ + char buf[5]; + char *p = buf; + + *p++ = cmd->forwardmove; + *p++ = cmd->sidemove; + if (!longtics) { + *p++ = (cmd->angleturn+128)>>8; + } else { + signed short a = cmd->angleturn; + *p++ = a & 0xff; + *p++ = (a >> 8) & 0xff; + } + *p++ = cmd->buttons; + if (!demofp || fwrite(buf, p-buf, 1, demofp) != 1) + I_Error("G_WriteDemoTiccmd: error writing demo"); + + /* cph - alias demo_p to it so we can read it back */ + demo_p = (byte*)buf; + G_ReadDemoTiccmd (cmd); // make SURE it is exactly the same +} + +// +// G_RecordDemo +// + +void G_RecordDemo (const char* name) +{ + char demoname[PATH_MAX]; + usergame = false; + AddDefaultExtension(strcpy(demoname, name), ".lmp"); // 1/18/98 killough + demorecording = true; + /* cph - Record demos straight to file + * If file already exists, try to continue existing demo + */ + if (access(demoname, F_OK)) { + demofp = fopen(demoname, "wb"); + } else { + demofp = fopen(demoname, "r+"); + if (demofp) { + int slot = -1; + int rc = 0; + int bytes_per_tic; + const byte* pos; + + { /* Read the demo header for options etc */ + byte buf[200]; + size_t len = fread(buf, 1, sizeof(buf), demofp); + pos = G_ReadDemoHeader(buf, len, false); + if (pos) + { + fseek(demofp, pos - buf, SEEK_SET); + } + } + bytes_per_tic = longtics ? 5 : 4; + if (pos) + { + /* Now read the demo to find the last save slot */ + do { + byte buf[5]; + + rc = fread(buf, 1, bytes_per_tic, demofp); + if (buf[0] == DEMOMARKER) break; + if (buf[bytes_per_tic-1] & BT_SPECIAL) + if ((buf[bytes_per_tic-1] & BT_SPECIALMASK) == BTS_SAVEGAME) + slot = (buf[bytes_per_tic-1] & BTS_SAVEMASK)>>BTS_SAVESHIFT; + } while (rc == bytes_per_tic); + } + if (slot == -1) I_Error("G_RecordDemo: No save in demo, can't continue"); + + /* Return to the last save position, and load the relevant savegame */ + fseek(demofp, -rc, SEEK_CUR); + G_LoadGame(slot, false); + autostart = false; + } + } + if (!demofp) I_Error("G_RecordDemo: failed to open %s", name); +} + +// These functions are used to read and write game-specific options in demos +// and savegames so that demo sync is preserved and savegame restoration is +// complete. Not all options (for example "compatibility"), however, should +// be loaded and saved here. It is extremely important to use the same +// positions as before for the variables, so if one becomes obsolete, the +// byte(s) should still be skipped over or padded with 0's. +// Lee Killough 3/1/98 + +byte *G_WriteOptions(byte *demo_p) +{ + byte *target = demo_p + GAME_OPTION_SIZE; + + *demo_p++ = monsters_remember; // part of monster AI + + *demo_p++ = variable_friction; // ice & mud + + *demo_p++ = weapon_recoil; // weapon recoil + + *demo_p++ = allow_pushers; // MT_PUSH Things + + *demo_p++ = 0; + + *demo_p++ = player_bobbing; // whether player bobs or not + + // killough 3/6/98: add parameters to savegame, move around some in demos + *demo_p++ = respawnparm; + *demo_p++ = fastparm; + *demo_p++ = nomonsters; + + *demo_p++ = demo_insurance; // killough 3/31/98 + + // killough 3/26/98: Added rngseed. 3/31/98: moved here + *demo_p++ = (byte)((rngseed >> 24) & 0xff); + *demo_p++ = (byte)((rngseed >> 16) & 0xff); + *demo_p++ = (byte)((rngseed >> 8) & 0xff); + *demo_p++ = (byte)( rngseed & 0xff); + + // Options new to v2.03 begin here + + *demo_p++ = monster_infighting; // killough 7/19/98 + +#ifdef DOGS + *demo_p++ = dogs; // killough 7/19/98 +#else + *demo_p++ = 0; +#endif + + *demo_p++ = 0; + *demo_p++ = 0; + + *demo_p++ = (distfriend >> 8) & 0xff; // killough 8/8/98 + *demo_p++ = distfriend & 0xff; // killough 8/8/98 + + *demo_p++ = monster_backing; // killough 9/8/98 + + *demo_p++ = monster_avoid_hazards; // killough 9/9/98 + + *demo_p++ = monster_friction; // killough 10/98 + + *demo_p++ = help_friends; // killough 9/9/98 + +#ifdef DOGS + *demo_p++ = dog_jumping; +#else + *demo_p++ = 0; +#endif + + *demo_p++ = monkeys; + + { // killough 10/98: a compatibility vector now + int i; + for (i=0; i < COMP_TOTAL; i++) + *demo_p++ = comp[i] != 0; + } + + *demo_p++ = 0; // forceOldBsp + + //---------------- + // Padding at end + //---------------- + while (demo_p < target) + *demo_p++ = 0; + + if (demo_p != target) + I_Error("G_WriteOptions: GAME_OPTION_SIZE is too small"); + + return target; +} + +/* Same, but read instead of write + * cph - const byte*'s + */ + +const byte *G_ReadOptions(const byte *demo_p) +{ + const byte *target = demo_p + GAME_OPTION_SIZE; + + monsters_remember = *demo_p++; + + variable_friction = *demo_p; // ice & mud + demo_p++; + + weapon_recoil = *demo_p; // weapon recoil + demo_p++; + + allow_pushers = *demo_p; // MT_PUSH Things + demo_p++; + + demo_p++; + + player_bobbing = *demo_p; // whether player bobs or not + demo_p++; + + // killough 3/6/98: add parameters to savegame, move from demo + respawnparm = *demo_p++; + fastparm = *demo_p++; + nomonsters = *demo_p++; + + demo_insurance = *demo_p++; // killough 3/31/98 + + // killough 3/26/98: Added rngseed to demos; 3/31/98: moved here + + rngseed = *demo_p++ & 0xff; + rngseed <<= 8; + rngseed += *demo_p++ & 0xff; + rngseed <<= 8; + rngseed += *demo_p++ & 0xff; + rngseed <<= 8; + rngseed += *demo_p++ & 0xff; + + // Options new to v2.03 + if (mbf_features) + { + monster_infighting = *demo_p++; // killough 7/19/98 + +#ifdef DOGS + dogs = *demo_p++; // killough 7/19/98 +#else + demo_p++; +#endif + + demo_p += 2; + + distfriend = *demo_p++ << 8; // killough 8/8/98 + distfriend+= *demo_p++; + + monster_backing = *demo_p++; // killough 9/8/98 + + monster_avoid_hazards = *demo_p++; // killough 9/9/98 + + monster_friction = *demo_p++; // killough 10/98 + + help_friends = *demo_p++; // killough 9/9/98 + +#ifdef DOGS + dog_jumping = *demo_p++; // killough 10/98 +#else + demo_p++; +#endif + + monkeys = *demo_p++; + + { // killough 10/98: a compatibility vector now + int i; + for (i=0; i < COMP_TOTAL; i++) + comp[i] = *demo_p++; + } + + demo_p++; // forceOldBsp + } + else /* defaults for versions <= 2.02 */ + { + /* G_Compatibility will set these */ + } + + G_Compatibility(); + return target; +} + +void G_BeginRecording (void) +{ + int i; + byte demostart[1000]; + byte *demo_p = demostart; + longtics = 0; + + /* cph - 3 demo record formats supported: MBF+, BOOM, and Doom v1.9 */ + if (mbf_features) { + { /* Write version code into demo */ + unsigned char v = 0; + switch(compatibility_level) { + case mbf_compatibility: v = 203; break; // e6y: Bug in MBF compatibility mode fixed + case prboom_2_compatibility: v = 210; break; + case prboom_3_compatibility: v = 211; break; + case prboom_4_compatibility: v = 212; break; + case prboom_5_compatibility: v = 213; break; + case prboom_6_compatibility: + v = 214; + longtics = 1; + break; + default: + break; + } + *demo_p++ = v; + } + + // signature + *demo_p++ = 0x1d; + *demo_p++ = 'M'; + *demo_p++ = 'B'; + *demo_p++ = 'F'; + *demo_p++ = 0xe6; + *demo_p++ = '\0'; + + /* killough 2/22/98: save compatibility flag in new demos + * cph - FIXME? MBF demos will always be not in compat. mode */ + *demo_p++ = 0; + + *demo_p++ = gameskill; + *demo_p++ = gameepisode; + *demo_p++ = gamemap; + *demo_p++ = deathmatch; + *demo_p++ = consoleplayer; + + demo_p = G_WriteOptions(demo_p); // killough 3/1/98: Save game options + + for (i=0 ; i boom_compatibility_compatibility) { + byte v = 0, c = 0; /* Nominally, version and compatibility bits */ + switch (compatibility_level) { + case boom_compatibility_compatibility: v = 202, c = 1; break; + case boom_201_compatibility: v = 201; c = 0; break; + case boom_202_compatibility: v = 202, c = 0; break; + default: I_Error("G_BeginRecording: Boom compatibility level unrecognised?"); + } + *demo_p++ = v; + + // signature + *demo_p++ = 0x1d; + *demo_p++ = 'B'; + *demo_p++ = 'o'; + *demo_p++ = 'o'; + *demo_p++ = 'm'; + *demo_p++ = 0xe6; + + /* CPhipps - save compatibility level in demos */ + *demo_p++ = c; + + *demo_p++ = gameskill; + *demo_p++ = gameepisode; + *demo_p++ = gamemap; + *demo_p++ = deathmatch; + *demo_p++ = consoleplayer; + + demo_p = G_WriteOptions(demo_p); // killough 3/1/98: Save game options + + for (i=0 ; i=0) + return lev; + } + } + if (ver < 107) return doom_1666_compatibility; + if (gamemode == retail) return ultdoom_compatibility; + if (gamemission >= pack_tnt) return finaldoom_compatibility; + return doom2_19_compatibility; +} + +//e6y: Check for overrun +static boolean CheckForOverrun(const byte *start_p, const byte *current_p, size_t maxsize, size_t size, boolean failonerror) +{ + size_t pos = current_p - start_p; + if (pos + size > maxsize) + { + if (failonerror) + I_Error("G_ReadDemoHeader: wrong demo header\n"); + else + return true; + } + return false; +} + +static const byte* G_ReadDemoHeader(const byte *demo_p, size_t size, boolean failonerror) +{ + skill_t skill; + int i, episode, map; + + // e6y + // The local variable should be used instead of demobuffer, + // because demobuffer can be uninitialized + const byte *header_p = demo_p; + + basetic = gametic; // killough 9/29/98 + + // killough 2/22/98, 2/28/98: autodetect old demos and act accordingly. + // Old demos turn on demo_compatibility => compatibility; new demos load + // compatibility flag, and other flags as well, as a part of the demo. + + //e6y: check for overrun + if (CheckForOverrun(header_p, demo_p, size, 1, failonerror)) + return NULL; + + demover = *demo_p++; + longtics = 0; + + // e6y + // Handling of unrecognized demo formats + // Versions up to 1.2 use a 7-byte header - first byte is a skill level. + // Versions after 1.2 use a 13-byte header - first byte is a demoversion. + // BOOM's demoversion starts from 200 + if (!((demover >= 0 && demover <= 4) || + (demover >= 104 && demover <= 111) || + (demover >= 200 && demover <= 214))) + { + I_Error("G_ReadDemoHeader: Unknown demo format %d.", demover); + } + + if (demover < 200) // Autodetect old demos + { + if (demover >= 111) longtics = 1; + + // killough 3/2/98: force these variables to be 0 in demo_compatibility + + variable_friction = 0; + + weapon_recoil = 0; + + allow_pushers = 0; + + monster_infighting = 1; // killough 7/19/98 + +#ifdef DOGS + dogs = 0; // killough 7/19/98 + dog_jumping = 0; // killough 10/98 +#endif + + monster_backing = 0; // killough 9/8/98 + + monster_avoid_hazards = 0; // killough 9/9/98 + + monster_friction = 0; // killough 10/98 + help_friends = 0; // killough 9/9/98 + monkeys = 0; + + // killough 3/6/98: rearrange to fix savegame bugs (moved fastparm, + // respawnparm, nomonsters flags to G_LoadOptions()/G_SaveOptions()) + + if ((skill=demover) >= 100) // For demos from versions >= 1.4 + { + //e6y: check for overrun + if (CheckForOverrun(header_p, demo_p, size, 8, failonerror)) + return NULL; + + compatibility_level = G_GetOriginalDoomCompatLevel(demover); + skill = *demo_p++; + episode = *demo_p++; + map = *demo_p++; + deathmatch = *demo_p++; + respawnparm = *demo_p++; + fastparm = *demo_p++; + nomonsters = *demo_p++; + consoleplayer = *demo_p++; + } + else + { + //e6y: check for overrun + if (CheckForOverrun(header_p, demo_p, size, 2, failonerror)) + return NULL; + + compatibility_level = doom_12_compatibility; + episode = *demo_p++; + map = *demo_p++; + deathmatch = respawnparm = fastparm = + nomonsters = consoleplayer = 0; + } + G_Compatibility(); + } + else // new versions of demos + { + demo_p += 6; // skip signature; + switch (demover) { + case 200: /* BOOM */ + case 201: + //e6y: check for overrun + if (CheckForOverrun(header_p, demo_p, size, 1, failonerror)) + return NULL; + + if (!*demo_p++) + compatibility_level = boom_201_compatibility; + else + compatibility_level = boom_compatibility_compatibility; + break; + case 202: + //e6y: check for overrun + if (CheckForOverrun(header_p, demo_p, size, 1, failonerror)) + return NULL; + + if (!*demo_p++) + compatibility_level = boom_202_compatibility; + else + compatibility_level = boom_compatibility_compatibility; + break; + case 203: + /* LxDoom or MBF - determine from signature + * cph - load compatibility level */ + switch (*(header_p + 2)) { + case 'B': /* LxDoom */ + /* cph - DEMOSYNC - LxDoom demos recorded in compatibility modes support dropped */ + compatibility_level = lxdoom_1_compatibility; + break; + case 'M': + compatibility_level = mbf_compatibility; + demo_p++; + break; + } + break; + case 210: + compatibility_level = prboom_2_compatibility; + demo_p++; + break; + case 211: + compatibility_level = prboom_3_compatibility; + demo_p++; + break; + case 212: + compatibility_level = prboom_4_compatibility; + demo_p++; + break; + case 213: + compatibility_level = prboom_5_compatibility; + demo_p++; + break; + case 214: + compatibility_level = prboom_6_compatibility; + longtics = 1; + demo_p++; + break; + } + //e6y: check for overrun + if (CheckForOverrun(header_p, demo_p, size, 5, failonerror)) + return NULL; + + skill = *demo_p++; + episode = *demo_p++; + map = *demo_p++; + deathmatch = *demo_p++; + consoleplayer = *demo_p++; + + //e6y: check for overrun + if (CheckForOverrun(header_p, demo_p, size, GAME_OPTION_SIZE, failonerror)) + return NULL; + + demo_p = G_ReadOptions(demo_p); // killough 3/1/98: Read game options + + if (demover == 200) // killough 6/3/98: partially fix v2.00 demos + demo_p += 256-GAME_OPTION_SIZE; + } + + if (sizeof(comp_lev_str)/sizeof(comp_lev_str[0]) != MAX_COMPATIBILITY_LEVEL) + I_Error("G_ReadDemoHeader: compatibility level strings incomplete"); + lprintf(LO_INFO, "G_DoPlayDemo: playing demo with %s compatibility\n", + comp_lev_str[compatibility_level]); + + if (demo_compatibility) // only 4 players can exist in old demos + { + //e6y: check for overrun + if (CheckForOverrun(header_p, demo_p, size, 4, failonerror)) + return NULL; + + for (i=0; i<4; i++) // intentionally hard-coded 4 -- killough + playeringame[i] = *demo_p++; + for (;i < MAXPLAYERS; i++) + playeringame[i] = 0; + } + else + { + //e6y: check for overrun + if (CheckForOverrun(header_p, demo_p, size, MAXPLAYERS, failonerror)) + return NULL; + + for (i=0 ; i < MAXPLAYERS; i++) + playeringame[i] = *demo_p++; + demo_p += MIN_MAXPLAYERS - MAXPLAYERS; + } + + if (playeringame[1]) + { + netgame = true; + netdemo = true; + } + + if (gameaction != ga_loadgame) { /* killough 12/98: support -loadgame */ + G_InitNew(skill, episode, map); + } + + for (i=0; imessage=... and so I've added this dprintf. +// +// killough 3/6/98: Made limit static to allow z_zone functions to call +// this function, without calling realloc(), which seems to cause problems. + +#define MAX_MESSAGE_SIZE 1024 + +// CPhipps - renamed to doom_printf to avoid name collision with glibc +void doom_printf(const char *s, ...) +{ + static char msg[MAX_MESSAGE_SIZE]; + va_list v; + va_start(v,s); + vsnprintf(msg,sizeof(msg),s,v); /* print message in buffer */ + va_end(v); + players[consoleplayer].message = msg; // set new message +} diff --git a/components/doom/prboom/g_game.h b/components/doom/prboom/g_game.h new file mode 100644 index 0000000..29bc33b --- /dev/null +++ b/components/doom/prboom/g_game.h @@ -0,0 +1,175 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: Main game control interface. + *-----------------------------------------------------------------------------*/ + +#ifndef __G_GAME__ +#define __G_GAME__ + +#include "doomdef.h" +#include "d_event.h" +#include "d_ticcmd.h" + +// +// GAME +// + +// killough 5/2/98: number of bytes reserved for saving options +#define GAME_OPTION_SIZE 64 + +boolean G_Responder(event_t *ev); +boolean G_CheckDemoStatus(void); +void G_DeathMatchSpawnPlayer(int playernum); +void G_InitNew(skill_t skill, int episode, int map); +void G_DeferedInitNew(skill_t skill, int episode, int map); +void G_DeferedPlayDemo(const char *demo); // CPhipps - const +void G_LoadGame(int slot, boolean is_command); // killough 5/15/98 +void G_ForcedLoadGame(void); // killough 5/15/98: forced loadgames +void G_DoLoadGame(void); +void G_SaveGame(int slot, char *description); // Called by M_Responder. +void G_BeginRecording(void); +// CPhipps - const on these string params +void G_RecordDemo(const char *name); // Only called by startup code. +void G_ExitLevel(void); +void G_SecretExitLevel(void); +void G_WorldDone(void); +void G_EndGame(void); /* cph - make m_menu.c call a G_* function for this */ +void G_Ticker(void); +void G_ReloadDefaults(void); // killough 3/1/98: loads game defaults +void G_SaveGameName(char *, size_t, int, boolean); /* killough 3/22/98: sets savegame filename */ +void G_SetFastParms(int); // killough 4/10/98: sets -fast parameters +void G_DoNewGame(void); +void G_DoReborn(int playernum); +void G_DoPlayDemo(void); +void G_DoCompleted(void); +void G_ReadDemoTiccmd(ticcmd_t *cmd); +void G_WriteDemoTiccmd(ticcmd_t *cmd); +void G_DoWorldDone(void); +void G_Compatibility(void); +const byte *G_ReadOptions(const byte *demo_p); /* killough 3/1/98 - cph: const byte* */ +byte *G_WriteOptions(byte *demo_p); // killough 3/1/98 +void G_PlayerReborn(int player); +void G_RestartLevel(void); // CPhipps - menu involked level restart +void G_DoVictory(void); +void G_BuildTiccmd (ticcmd_t* cmd); // CPhipps - move decl to header +void G_ChangedPlayerColour(int pn, int cl); // CPhipps - On-the-fly player colour changing +void G_MakeSpecialEvent(buttoncode_t bc, ...); /* cph - new event stuff */ + +// killough 1/18/98: Doom-style printf; killough 4/25/98: add gcc attributes +// CPhipps - renames to doom_printf to avoid name collision with glibc +void doom_printf(const char *, ...) __attribute__((format(printf,1,2))); + +// killough 5/2/98: moved from m_misc.c: + +extern int key_right; +extern int key_left; +extern int key_up; +extern int key_down; +extern int key_menu_right; // phares 3/7/98 +extern int key_menu_left; // | +extern int key_menu_up; // V +extern int key_menu_down; +extern int key_strafeleft; +extern int key_straferight; + +extern int key_fire; +extern int key_use; +extern int key_strafe; +extern int key_speed; +extern int key_escape; // phares +extern int key_savegame; // | +extern int key_loadgame; // V +extern int key_autorun; +extern int key_reverse; +extern int key_zoomin; +extern int key_zoomout; +extern int key_lastmessage; +extern int key_chat; +extern int key_backspace; +extern int key_enter; +extern int key_help; +extern int key_soundvolume; +extern int key_hud; +extern int key_quicksave; +extern int key_endgame; +extern int key_messages; +extern int key_quickload; +extern int key_quit; +extern int key_gamma; +extern int key_spy; +extern int key_pause; +extern int key_setup; +extern int key_forward; +extern int key_leftturn; +extern int key_rightturn; +extern int key_backward; +extern int key_weapontoggle; +extern int key_weapon1; +extern int key_weapon2; +extern int key_weapon3; +extern int key_weapon4; +extern int key_weapon5; +extern int key_weapon6; +extern int key_weapon7; +extern int key_weapon8; +extern int key_weapon9; +extern int destination_keys[MAXPLAYERS]; +extern int key_map_right; +extern int key_map_left; +extern int key_map_up; +extern int key_map_down; +extern int key_map_zoomin; +extern int key_map_zoomout; +extern int key_map; +extern int key_map_gobig; +extern int key_map_follow; +extern int key_map_mark; // ^ +extern int key_map_clear; // | +extern int key_map_grid; // phares +extern int key_map_rotate; // cph - map rotation +extern int key_map_overlay;// cph - map overlay +extern int autorun; // always running? // phares + +extern int defaultskill; //jff 3/24/98 default skill +extern boolean haswolflevels; //jff 4/18/98 wolf levels present + +extern int bodyquesize; // killough 2/8/98: adustable corpse limit + +// killough 5/2/98: moved from d_deh.c: +// Par times (new item with BOOM) - from g_game.c +extern int pars[4][10]; // hardcoded array size +extern int cpars[32]; // hardcoded array size +// CPhipps - Make savedesciption visible in wider scope +#define SAVEDESCLEN 32 +extern char savedescription[SAVEDESCLEN]; // Description to save in savegame + +/* cph - compatibility level strings */ +extern const char * comp_lev_str[]; + +#endif diff --git a/components/doom/prboom/hu_lib.c b/components/doom/prboom/hu_lib.c new file mode 100644 index 0000000..e34d206 --- /dev/null +++ b/components/doom/prboom/hu_lib.c @@ -0,0 +1,746 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: heads-up text and input code + * + *----------------------------------------------------------------------------- + */ + +#include "doomdef.h" +#include "doomstat.h" +#include "v_video.h" +#include "m_swap.h" +#include "hu_lib.h" +#include "hu_stuff.h" +#include "r_main.h" +#include "r_draw.h" + +// boolean : whether the screen is always erased +#define noterased viewwindowx + +extern int key_backspace; // phares +extern int key_enter; // phares + + +//////////////////////////////////////////////////////// +// +// Basic text line widget +// +//////////////////////////////////////////////////////// + +// +// HUlib_clearTextLine() +// +// Blank the internal text line in a hu_textline_t widget +// +// Passed a hu_textline_t, returns nothing +// +void HUlib_clearTextLine(hu_textline_t* t) +{ + t->linelen = // killough 1/23 98: support multiple lines + t->len = 0; + t->l[0] = 0; + t->needsupdate = true; +} + +// +// HUlib_initTextLine() +// +// Initialize a hu_textline_t widget. Set the position, font, start char +// of the font, and color range to be used. +// +// Passed a hu_textline_t, and the values used to initialize +// Returns nothing +// +void HUlib_initTextLine(hu_textline_t* t, int x, int y, + const patchnum_t* f, int sc, int cm ) + //jff 2/16/98 add color range parameter +{ + t->x = x; + t->y = y; + t->f = f; + t->sc = sc; + t->cm = cm; + HUlib_clearTextLine(t); +} + +// +// HUlib_addCharToTextLine() +// +// Adds a character at the end of the text line in a hu_textline_t widget +// +// Passed the hu_textline_t and the char to add +// Returns false if already at length limit, true if the character added +// +boolean HUlib_addCharToTextLine +( hu_textline_t* t, + char ch ) +{ + // killough 1/23/98 -- support multiple lines + if (t->linelen == HU_MAXLINELENGTH) + return false; + else + { + t->linelen++; + if (ch == '\n') + t->linelen=0; + + t->l[t->len++] = ch; + t->l[t->len] = 0; + t->needsupdate = 4; + return true; + } + +} + +// +// HUlib_delCharFromTextLine() +// +// Deletes a character at the end of the text line in a hu_textline_t widget +// +// Passed the hu_textline_t +// Returns false if already empty, true if the character deleted +// +static boolean HUlib_delCharFromTextLine(hu_textline_t* t) +{ + if (!t->len) return false; + else + { + t->l[--t->len] = 0; + t->needsupdate = 4; + return true; + } +} + +// +// HUlib_drawTextLine() +// +// Draws a hu_textline_t widget +// +// Passed the hu_textline_t and flag whether to draw a cursor +// Returns nothing +// +void HUlib_drawTextLine +( hu_textline_t* l, + boolean drawcursor ) +{ + + int i; + int w; + int x; + unsigned char c; + int oc = l->cm; //jff 2/17/98 remember default color + int y = l->y; // killough 1/18/98 -- support multiple lines + + // draw the new stuff + x = l->x; + for (i=0;ilen;i++) + { + c = toupper(l->l[i]); //jff insure were not getting a cheap toupper conv. + + if (c=='\n') // killough 1/18/98 -- support multiple lines + x=0,y+=8; + else if (c=='\t') // killough 1/23/98 -- support tab stops + x=x-x%80+80; + else if (c=='\x1b') //jff 2/17/98 escape code for color change + { //jff 3/26/98 changed to actual escape char + if (++ilen) + if (l->l[i]>='0' && l->l[i]<='9') + l->cm = l->l[i]-'0'; + } + else if (c != ' ' && c >= l->sc && c <= 127) + { + w = l->f[c - l->sc].width; + if (x+w > SCREENWIDTH) + break; + // killough 1/18/98 -- support multiple lines: + // CPhipps - patch drawing updated + V_DrawNumPatch(x, y, FG, l->f[c - l->sc].lumpnum, l->cm, VPT_TRANS | VPT_STRETCH); + x += w; + } + else + { + x += 4; + if (x >= SCREENWIDTH) + break; + } + } + l->cm = oc; //jff 2/17/98 restore original color + + // draw the cursor if requested + if (drawcursor && x + l->f['_' - l->sc].width <= SCREENWIDTH) + { + // killough 1/18/98 -- support multiple lines + // CPhipps - patch drawing updated + V_DrawNumPatch(x, y, FG, l->f['_' - l->sc].lumpnum, CR_DEFAULT, VPT_NONE | VPT_STRETCH); + } +} + +// +// HUlib_eraseTextLine() +// +// Erases a hu_textline_t widget when screen border is behind text +// Sorta called by HU_Erase and just better darn get things straight +// +// Passed the hu_textline_t +// Returns nothing +// +void HUlib_eraseTextLine(hu_textline_t* l) +{ + int lh; + int y; + + // Only erases when NOT in automap and the screen is reduced, + // and the text must either need updating or refreshing + // (because of a recent change back from the automap) + + if (!(automapmode & am_active) && viewwindowx && l->needsupdate) + { + lh = l->f[0].height + 1; + for (y=l->y; yy+lh ; y++) + { + if (y < viewwindowy || y >= viewwindowy + viewheight) + R_VideoErase(0, y, SCREENWIDTH); // erase entire line + else + { + // erase left border + R_VideoErase(0, y, viewwindowx); + // erase right border + R_VideoErase(viewwindowx + viewwidth, y, viewwindowx); + } + } + } + + if (l->needsupdate) l->needsupdate--; +} + +//////////////////////////////////////////////////////// +// +// Player message widget (up to 4 lines of text) +// +//////////////////////////////////////////////////////// + +// +// HUlib_initSText() +// +// Initialize a hu_stext_t widget. Set the position, number of lines, font, +// start char of the font, and color range to be used, and whether enabled. +// +// Passed a hu_stext_t, and the values used to initialize +// Returns nothing +// +void HUlib_initSText +( hu_stext_t* s, + int x, + int y, + int h, + const patchnum_t* font, + int startchar, + int cm, //jff 2/16/98 add color range parameter + boolean* on ) +{ + + int i; + + s->h = h; + s->on = on; + s->laston = true; + s->cl = 0; + for (i=0;il[i], + x, + y - i*(font[0].height+1), + font, + startchar, + cm + ); +} + +// +// HUlib_addLineToSText() +// +// Adds a blank line to a hu_stext_t widget +// +// Passed a hu_stext_t +// Returns nothing +// +static void HUlib_addLineToSText(hu_stext_t* s) +{ + + int i; + + // add a clear line + if (++s->cl == s->h) + s->cl = 0; + HUlib_clearTextLine(&s->l[s->cl]); + + // everything needs updating + for (i=0 ; ih ; i++) + s->l[i].needsupdate = 4; + +} + +// +// HUlib_addMessageToSText() +// +// Adds a message line with prefix to a hu_stext_t widget +// +// Passed a hu_stext_t, the prefix string, and a message string +// Returns nothing +// +void HUlib_addMessageToSText(hu_stext_t* s, const char* prefix, const char* msg) +{ + HUlib_addLineToSText(s); + if (prefix) + while (*prefix) + HUlib_addCharToTextLine(&s->l[s->cl], *(prefix++)); + + while (*msg) + HUlib_addCharToTextLine(&s->l[s->cl], *(msg++)); +} + +// +// HUlib_drawSText() +// +// Displays a hu_stext_t widget +// +// Passed a hu_stext_t +// Returns nothing +// +void HUlib_drawSText(hu_stext_t* s) +{ + int i, idx; + hu_textline_t *l; + + if (!*s->on) + return; // if not on, don't draw + + // draw everything + for (i=0 ; ih ; i++) + { + idx = s->cl - i; + if (idx < 0) + idx += s->h; // handle queue of lines + + l = &s->l[idx]; + + // need a decision made here on whether to skip the draw + HUlib_drawTextLine(l, false); // no cursor, please + } +} + +// +// HUlib_eraseSText() +// +// Erases a hu_stext_t widget, when the screen is not fullsize +// +// Passed a hu_stext_t +// Returns nothing +// +void HUlib_eraseSText(hu_stext_t* s) +{ + int i; + + for (i=0 ; ih ; i++) + { + if (s->laston && !*s->on) + s->l[i].needsupdate = 4; + HUlib_eraseTextLine(&s->l[i]); + } + s->laston = *s->on; +} + +//////////////////////////////////////////////////////// +// +// Scrolling message review widget +// +// jff added 2/26/98 +// +//////////////////////////////////////////////////////// + +// +// HUlib_initMText() +// +// Initialize a hu_mtext_t widget. Set the position, width, number of lines, +// font, start char of the font, color range, background font, and whether +// enabled. +// +// Passed a hu_mtext_t, and the values used to initialize +// Returns nothing +// +void HUlib_initMText(hu_mtext_t *m, int x, int y, int w, int h, + const patchnum_t* font, int startchar, int cm, + const patchnum_t* bgfont, boolean *on) +{ + int i; + + m->nl = 0; + m->nr = 0; + m->cl = -1; //jff 4/28/98 prepare for pre-increment + m->x = x; + m->y = y; + m->w = w; + m->h = h; + m->bg = bgfont; + m->on = on; + for (i=0;il[i], + x, + y + (hud_list_bgon? i+1 : i)*HU_REFRESHSPACING, + font, + startchar, + cm + ); + } +} + +// +// HUlib_addLineToMText() +// +// Adds a blank line to a hu_mtext_t widget +// +// Passed a hu_mtext_t +// Returns nothing +// +static void HUlib_addLineToMText(hu_mtext_t* m) +{ + // add a clear line + if (++m->cl == hud_msg_lines) + m->cl = 0; + HUlib_clearTextLine(&m->l[m->cl]); + + if (m->nlnl++; + + // needs updating + m->l[m->cl].needsupdate = 4; +} + +// +// HUlib_addMessageToMText() +// +// Adds a message line with prefix to a hu_mtext_t widget +// +// Passed a hu_mtext_t, the prefix string, and a message string +// Returns nothing +// +void HUlib_addMessageToMText(hu_mtext_t* m, const char* prefix, const char* msg) +{ + HUlib_addLineToMText(m); + if (prefix) + while (*prefix) + HUlib_addCharToTextLine(&m->l[m->cl], *(prefix++)); + + while (*msg) + HUlib_addCharToTextLine(&m->l[m->cl], *(msg++)); +} + +// +// HUlib_drawMBg() +// +// Draws a background box which the message display review widget can +// display over +// +// Passed position, width, height, and the background patches +// Returns nothing +// +void HUlib_drawMBg +( int x, + int y, + int w, + int h, + const patchnum_t* bgp +) +{ + int xs = bgp[0].width; + int ys = bgp[0].height; + int i,j; + + // CPhipps - patch drawing updated + // top rows + V_DrawNumPatch(x, y, FG, bgp[0].lumpnum, CR_DEFAULT, VPT_STRETCH); // ul + for (j=x+xs;jon) + return; // if not on, don't draw + + // draw everything + if (hud_list_bgon) + HUlib_drawMBg(m->x,m->y,m->w,m->h,m->bg); + // y = m->y + HU_REFRESHSPACING; + for (i=0 ; inl ; i++) + { + idx = m->cl - i; + if (idx < 0) + idx += m->nl; // handle queue of lines + + l = &m->l[idx]; + if (hud_list_bgon) + { + l->x = m->x + 4; + l->y = m->y + (i+1)*HU_REFRESHSPACING; + } + else + { + l->x = m->x; + l->y = m->y + i*HU_REFRESHSPACING; + } + + // need a decision made here on whether to skip the draw + HUlib_drawTextLine(l, false); // no cursor, please + } +} + +// +// HUlib_eraseMBg() +// +// Erases background behind hu_mtext_t widget, when the screen is not fullsize +// +// Passed a hu_mtext_t +// Returns nothing +// +static void HUlib_eraseMBg(hu_mtext_t* m) +{ + int lh; + int y; + + // Only erases when NOT in automap and the screen is reduced, + // and the text must either need updating or refreshing + // (because of a recent change back from the automap) + + if (!(automapmode & am_active) && viewwindowx) + { + lh = m->l[0].f[0].height + 1; + for (y=m->y; yy+lh*(hud_msg_lines+2) ; y++) + { + if (y < viewwindowy || y >= viewwindowy + viewheight) + R_VideoErase(0, y, SCREENWIDTH); // erase entire line + else + { + // erase left border + R_VideoErase(0, y, viewwindowx); + // erase right border + R_VideoErase(viewwindowx + viewwidth, y, viewwindowx); + + } + } + } +} + +// +// HUlib_eraseMText() +// +// Erases a hu_mtext_t widget, when the screen is not fullsize +// +// Passed a hu_mtext_t +// Returns nothing +// +void HUlib_eraseMText(hu_mtext_t* m) +{ + int i; + + if (hud_list_bgon) + HUlib_eraseMBg(m); + + for (i=0 ; i< m->nl ; i++) + { + m->l[i].needsupdate = 4; + HUlib_eraseTextLine(&m->l[i]); + } +} + +//////////////////////////////////////////////////////// +// +// Interactive text entry widget +// +//////////////////////////////////////////////////////// + +// +// HUlib_initIText() +// +// Initialize a hu_itext_t widget. Set the position, font, +// start char of the font, color range, and whether enabled. +// +// Passed a hu_itext_t, and the values used to initialize +// Returns nothing +// +void HUlib_initIText +( hu_itext_t* it, + int x, + int y, + const patchnum_t* font, + int startchar, + int cm, //jff 2/16/98 add color range parameter + boolean* on ) +{ + it->lm = 0; // default left margin is start of text + it->on = on; + it->laston = true; + HUlib_initTextLine(&it->l, x, y, font, startchar, cm); +} + +// The following deletion routines adhere to the left margin restriction + +// +// HUlib_delCharFromIText() +// +// Deletes a character at the end of the text line in a hu_itext_t widget +// +// Passed the hu_itext_t +// Returns nothing +// +static void HUlib_delCharFromIText(hu_itext_t* it) +{ + if (it->l.len != it->lm) + HUlib_delCharFromTextLine(&it->l); +} + +// +// HUlib_resetIText() +// +// Deletes all characters from a hu_itext_t widget +// Resets left margin as well +// +// Passed the hu_itext_t +// Returns nothing +// +void HUlib_resetIText(hu_itext_t* it) +{ + it->lm = 0; + HUlib_clearTextLine(&it->l); +} + +// +// HUlib_addPrefixToIText() +// +// Adds a prefix string passed to a hu_itext_t widget +// Sets left margin to length of string added +// +// Passed the hu_itext_t and the prefix string +// Returns nothing +// +void HUlib_addPrefixToIText +( hu_itext_t* it, + char* str ) +{ + while (*str) + HUlib_addCharToTextLine(&it->l, *(str++)); + it->lm = it->l.len; +} + +// +// HUlib_keyInIText() +// +// Wrapper function for handling general keyed input. +// +// Passed the hu_itext_t and the char input +// Returns true if it ate the key +// +boolean HUlib_keyInIText +( hu_itext_t* it, + unsigned char ch ) +{ + + if (ch >= ' ' && ch <= '_') + HUlib_addCharToTextLine(&it->l, (char) ch); + else if (ch == key_backspace) // phares + HUlib_delCharFromIText(it); + else if (ch != key_enter) // phares + return false; // did not eat key + + return true; // ate the key +} + +// +// HUlib_drawIText() +// +// Displays a hu_itext_t widget +// +// Passed the hu_itext_t +// Returns nothing +// +void HUlib_drawIText(hu_itext_t* it) +{ + hu_textline_t *l = &it->l; + + if (!*it->on) + return; + HUlib_drawTextLine(l, true); // draw the line w/ cursor +} + +// +// HUlib_eraseIText() +// +// Erases a hu_itext_t widget when the screen is not fullsize +// +// Passed the hu_itext_t +// Returns nothing +// +void HUlib_eraseIText(hu_itext_t* it) +{ + if (it->laston && !*it->on) + it->l.needsupdate = 4; + HUlib_eraseTextLine(&it->l); + it->laston = *it->on; +} diff --git a/components/doom/prboom/hu_lib.h b/components/doom/prboom/hu_lib.h new file mode 100644 index 0000000..b8efd36 --- /dev/null +++ b/components/doom/prboom/hu_lib.h @@ -0,0 +1,247 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: none + * + *-----------------------------------------------------------------------------*/ + +#ifndef __HULIB__ +#define __HULIB__ + +// We are referring to patches. +#include "r_defs.h" +#include "v_video.h" //jff 2/16/52 include color range defs + + +/* background and foreground screen numbers + * different from other modules. */ +#define BG 1 +#define FG 0 + +/* font stuff + * #define HU_CHARERASE KEYD_BACKSPACE / not used / phares + */ + +#define HU_MAXLINES 4 +#define HU_MAXLINELENGTH 80 +#define HU_REFRESHSPACING 8 /*jff 2/26/98 space lines in text refresh widget*/ +/*jff 2/26/98 maximum number of messages allowed in refresh list */ +#define HU_MAXMESSAGES 4 + +/* + * Typedefs of widgets + */ + +/* Text Line widget + * (parent of Scrolling Text and Input Text widgets) */ +typedef struct +{ + // left-justified position of scrolling text window + int x; + int y; + + const patchnum_t* f; // font + int sc; // start character + //const char *cr; //jff 2/16/52 output color range + // Proff - Made this an int again. Needed for OpenGL + int cm; //jff 2/16/52 output color range + + // killough 1/23/98: Support multiple lines: + #define MAXLINES 2 + + int linelen; + char l[HU_MAXLINELENGTH*MAXLINES+1]; // line of text + int len; // current line length + + // whether this line needs to be udpated + int needsupdate; + +} hu_textline_t; + + + +// Scrolling Text window widget +// (child of Text Line widget) +typedef struct +{ + hu_textline_t l[HU_MAXLINES]; // text lines to draw + int h; // height in lines + int cl; // current line number + + // pointer to boolean stating whether to update window + boolean* on; + boolean laston; // last value of *->on. + +} hu_stext_t; + +//jff 2/26/98 new widget to display last hud_msg_lines of messages +// Message refresh window widget +typedef struct +{ + hu_textline_t l[HU_MAXMESSAGES]; // text lines to draw + int nl; // height in lines + int nr; // total height in rows + int cl; // current line number + + int x,y,w,h; // window position and size + const patchnum_t *bg; // patches for background + + // pointer to boolean stating whether to update window + boolean* on; + boolean laston; // last value of *->on. + +} hu_mtext_t; + + + +// Input Text Line widget +// (child of Text Line widget) +typedef struct +{ + hu_textline_t l; // text line to input on + + // left margin past which I am not to delete characters + int lm; + + // pointer to boolean stating whether to update window + boolean* on; + boolean laston; // last value of *->on; + +} hu_itext_t; + + +// +// Widget creation, access, and update routines +// + +// +// textline code +// + +// clear a line of text +void HUlib_clearTextLine(hu_textline_t *t); + +void HUlib_initTextLine +( + hu_textline_t *t, + int x, + int y, + const patchnum_t *f, + int sc, + int cm //jff 2/16/98 add color range parameter +); + +// returns success +boolean HUlib_addCharToTextLine(hu_textline_t *t, char ch); + +// draws tline +void HUlib_drawTextLine(hu_textline_t *l, boolean drawcursor); + +// erases text line +void HUlib_eraseTextLine(hu_textline_t *l); + + +// +// Scrolling Text window widget routines +// + +// initialize an stext widget +void HUlib_initSText +( hu_stext_t* s, + int x, + int y, + int h, + const patchnum_t* font, + int startchar, + int cm, //jff 2/16/98 add color range parameter + boolean* on ); + +// add a text message to an stext widget +void HUlib_addMessageToSText(hu_stext_t* s, const char* prefix, const char* msg); + +// draws stext +void HUlib_drawSText(hu_stext_t* s); + +// erases all stext lines +void HUlib_eraseSText(hu_stext_t* s); + +//jff 2/26/98 message refresh widget +// initialize refresh text widget +void HUlib_initMText(hu_mtext_t *m, int x, int y, int w, int h, const patchnum_t* font, + int startchar, int cm, const patchnum_t* bgfont, boolean *on); + +//jff 2/26/98 message refresh widget +// add a text message to refresh text widget +void HUlib_addMessageToMText(hu_mtext_t* m, const char* prefix, const char* msg); + +//jff 2/26/98 new routine to display a background on which +// the list of last hud_msg_lines are displayed +void HUlib_drawMBg +( int x, + int y, + int w, + int h, + const patchnum_t* bgp +); + +//jff 2/26/98 message refresh widget +// draws mtext +void HUlib_drawMText(hu_mtext_t* m); + +//jff 4/28/98 erases behind message list +void HUlib_eraseMText(hu_mtext_t* m); + +// Input Text Line widget routines +void HUlib_initIText +( hu_itext_t* it, + int x, + int y, + const patchnum_t* font, + int startchar, + int cm, //jff 2/16/98 add color range parameter + boolean* on ); + +// resets line and left margin +void HUlib_resetIText(hu_itext_t* it); + +// left of left-margin +void HUlib_addPrefixToIText +( hu_itext_t* it, + char* str ); + +// whether eaten +boolean HUlib_keyInIText +( hu_itext_t* it, + unsigned char ch ); + +void HUlib_drawIText(hu_itext_t* it); + +// erases all itext lines +void HUlib_eraseIText(hu_itext_t* it); + +#endif diff --git a/components/doom/prboom/hu_stuff.c b/components/doom/prboom/hu_stuff.c new file mode 100644 index 0000000..02de590 --- /dev/null +++ b/components/doom/prboom/hu_stuff.c @@ -0,0 +1,1592 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: Heads-up displays + * + *----------------------------------------------------------------------------- + */ + +// killough 5/3/98: remove unnecessary headers + +#include "doomstat.h" +#include "hu_stuff.h" +#include "hu_lib.h" +#include "st_stuff.h" /* jff 2/16/98 need loc of status bar */ +#include "w_wad.h" +#include "s_sound.h" +#include "dstrings.h" +#include "sounds.h" +#include "d_deh.h" /* Ty 03/27/98 - externalization of mapnamesx arrays */ +#include "g_game.h" +#include "r_main.h" + +// global heads up display controls + +int hud_active; //jff 2/17/98 controls heads-up display mode +int hud_displayed; //jff 2/23/98 turns heads-up display on/off +int hud_nosecrets; //jff 2/18/98 allows secrets line to be disabled in HUD +int hud_distributed; //jff 3/4/98 display HUD in different places on screen +int hud_graph_keys=1; //jff 3/7/98 display HUD keys as graphics + +// +// Locally used constants, shortcuts. +// +// Ty 03/28/98 - +// These four shortcuts modifed to reflect char ** of mapnamesx[] +#define HU_TITLE (*mapnames[(gameepisode-1)*9+gamemap-1]) +#define HU_TITLE2 (*mapnames2[gamemap-1]) +#define HU_TITLEP (*mapnamesp[gamemap-1]) +#define HU_TITLET (*mapnamest[gamemap-1]) +#define HU_TITLEHEIGHT 1 +#define HU_TITLEX 0 +//jff 2/16/98 change 167 to ST_Y-1 +// CPhipps - changed to ST_TY +// proff - changed to 200-ST_HEIGHT for stretching +#define HU_TITLEY ((200-ST_HEIGHT) - 1 - hu_font[0].height) + +//jff 2/16/98 add coord text widget coordinates +// proff - changed to SCREENWIDTH to 320 for stretching +#define HU_COORDX (320 - 13*hu_font2['A'-HU_FONTSTART].width) +//jff 3/3/98 split coord widget into three lines in upper right of screen +#define HU_COORDX_Y (1 + 0*hu_font['A'-HU_FONTSTART].height) +#define HU_COORDY_Y (2 + 1*hu_font['A'-HU_FONTSTART].height) +#define HU_COORDZ_Y (3 + 2*hu_font['A'-HU_FONTSTART].height) + +//jff 2/16/98 add ammo, health, armor widgets, 2/22/98 less gap +#define HU_GAPY 8 +#define HU_HUDHEIGHT (6*HU_GAPY) +#define HU_HUDX 2 +#define HU_HUDY (200-HU_HUDHEIGHT-1) +#define HU_MONSECX (HU_HUDX) +#define HU_MONSECY (HU_HUDY+0*HU_GAPY) +#define HU_KEYSX (HU_HUDX) +//jff 3/7/98 add offset for graphic key widget +#define HU_KEYSGX (HU_HUDX+4*hu_font2['A'-HU_FONTSTART].width) +#define HU_KEYSY (HU_HUDY+1*HU_GAPY) +#define HU_WEAPX (HU_HUDX) +#define HU_WEAPY (HU_HUDY+2*HU_GAPY) +#define HU_AMMOX (HU_HUDX) +#define HU_AMMOY (HU_HUDY+3*HU_GAPY) +#define HU_HEALTHX (HU_HUDX) +#define HU_HEALTHY (HU_HUDY+4*HU_GAPY) +#define HU_ARMORX (HU_HUDX) +#define HU_ARMORY (HU_HUDY+5*HU_GAPY) + +//jff 3/4/98 distributed HUD positions +#define HU_HUDX_LL 2 +#define HU_HUDY_LL (200-2*HU_GAPY-1) +// proff/nicolas 09/20/98: Changed for high-res +#define HU_HUDX_LR (320-120) +#define HU_HUDY_LR (200-2*HU_GAPY-1) +// proff/nicolas 09/20/98: Changed for high-res +#define HU_HUDX_UR (320-96) +#define HU_HUDY_UR 2 +#define HU_MONSECX_D (HU_HUDX_LL) +#define HU_MONSECY_D (HU_HUDY_LL+0*HU_GAPY) +#define HU_KEYSX_D (HU_HUDX_LL) +#define HU_KEYSGX_D (HU_HUDX_LL+4*hu_font2['A'-HU_FONTSTART].width) +#define HU_KEYSY_D (HU_HUDY_LL+1*HU_GAPY) +#define HU_WEAPX_D (HU_HUDX_LR) +#define HU_WEAPY_D (HU_HUDY_LR+0*HU_GAPY) +#define HU_AMMOX_D (HU_HUDX_LR) +#define HU_AMMOY_D (HU_HUDY_LR+1*HU_GAPY) +#define HU_HEALTHX_D (HU_HUDX_UR) +#define HU_HEALTHY_D (HU_HUDY_UR+0*HU_GAPY) +#define HU_ARMORX_D (HU_HUDX_UR) +#define HU_ARMORY_D (HU_HUDY_UR+1*HU_GAPY) + +//#define HU_INPUTTOGGLE 't' // not used // phares +#define HU_INPUTX HU_MSGX +#define HU_INPUTY (HU_MSGY + HU_MSGHEIGHT*(hu_font[0].height) +1) +#define HU_INPUTWIDTH 64 +#define HU_INPUTHEIGHT 1 + +#define key_alt KEYD_RALT +#define key_shift KEYD_RSHIFT + +const char* chat_macros[] = +// Ty 03/27/98 - *not* externalized +// CPhipps - const char* +{ + HUSTR_CHATMACRO0, + HUSTR_CHATMACRO1, + HUSTR_CHATMACRO2, + HUSTR_CHATMACRO3, + HUSTR_CHATMACRO4, + HUSTR_CHATMACRO5, + HUSTR_CHATMACRO6, + HUSTR_CHATMACRO7, + HUSTR_CHATMACRO8, + HUSTR_CHATMACRO9 +}; + +const char* player_names[] = +// Ty 03/27/98 - *not* externalized +// CPhipps - const char* +{ + HUSTR_PLRGREEN, + HUSTR_PLRINDIGO, + HUSTR_PLRBROWN, + HUSTR_PLRRED +}; + +//jff 3/17/98 translate player colmap to text color ranges +int plyrcoltran[MAXPLAYERS]={CR_GREEN,CR_GRAY,CR_BROWN,CR_RED}; + +char chat_char; // remove later. +static player_t* plr; + +// font sets +patchnum_t hu_font[HU_FONTSIZE]; +patchnum_t hu_font2[HU_FONTSIZE]; +patchnum_t hu_fontk[HU_FONTSIZE];//jff 3/7/98 added for graphic key indicators +patchnum_t hu_msgbg[9]; //jff 2/26/98 add patches for message background + +// widgets +static hu_textline_t w_title; +static hu_stext_t w_message; +static hu_itext_t w_chat; +static hu_itext_t w_inputbuffer[MAXPLAYERS]; +static hu_textline_t w_coordx; //jff 2/16/98 new coord widget for automap +static hu_textline_t w_coordy; //jff 3/3/98 split coord widgets automap +static hu_textline_t w_coordz; //jff 3/3/98 split coord widgets automap +static hu_textline_t w_ammo; //jff 2/16/98 new ammo widget for hud +static hu_textline_t w_health; //jff 2/16/98 new health widget for hud +static hu_textline_t w_armor; //jff 2/16/98 new armor widget for hud +static hu_textline_t w_weapon; //jff 2/16/98 new weapon widget for hud +static hu_textline_t w_keys; //jff 2/16/98 new keys widget for hud +static hu_textline_t w_gkeys; //jff 3/7/98 graphic keys widget for hud +static hu_textline_t w_monsec; //jff 2/16/98 new kill/secret widget for hud +static hu_mtext_t w_rtext; //jff 2/26/98 text message refresh widget + +static boolean always_off = false; +static char chat_dest[MAXPLAYERS]; +boolean chat_on; +static boolean message_on; +static boolean message_list; //2/26/98 enable showing list of messages +boolean message_dontfuckwithme; +static boolean message_nottobefuckedwith; +static int message_counter; +extern int showMessages; +extern boolean automapactive; +static boolean headsupactive = false; + +//jff 2/16/98 hud supported automap colors added +int hudcolor_titl; // color range of automap level title +int hudcolor_xyco; // color range of new coords on automap +//jff 2/16/98 hud text colors, controls added +int hudcolor_mesg; // color range of scrolling messages +int hudcolor_chat; // color range of chat lines +int hud_msg_lines; // number of message lines in window +//jff 2/26/98 hud text colors, controls added +int hudcolor_list; // list of messages color +int hud_list_bgon; // enable for solid window background for message list + +//jff 2/16/98 initialization strings for ammo, health, armor widgets +static char hud_coordstrx[32]; +static char hud_coordstry[32]; +static char hud_coordstrz[32]; +static char hud_ammostr[80]; +static char hud_healthstr[80]; +static char hud_armorstr[80]; +static char hud_weapstr[80]; +static char hud_keysstr[80]; +static char hud_gkeysstr[80]; //jff 3/7/98 add support for graphic key display +static char hud_monsecstr[80]; + +// +// Builtin map names. +// The actual names can be found in DStrings.h. +// +// Ty 03/27/98 - externalized map name arrays - now in d_deh.c +// and converted to arrays of pointers to char * +// See modified HUTITLEx macros +extern char **mapnames[]; +extern char **mapnames2[]; +extern char **mapnamesp[]; +extern char **mapnamest[]; + +int map_point_coordinates; + +// key tables +// jff 5/10/98 french support removed, +// as it was not being used and couldn't be easily tested +// +const char* shiftxform; + +const char english_shiftxform[] = +{ + 0, + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, + ' ', '!', '"', '#', '$', '%', '&', + '"', // shift-' + '(', ')', '*', '+', + '<', // shift-, + '_', // shift-- + '>', // shift-. + '?', // shift-/ + ')', // shift-0 + '!', // shift-1 + '@', // shift-2 + '#', // shift-3 + '$', // shift-4 + '%', // shift-5 + '^', // shift-6 + '&', // shift-7 + '*', // shift-8 + '(', // shift-9 + ':', + ':', // shift-; + '<', + '+', // shift-= + '>', '?', '@', + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', + 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', + '[', // shift-[ + '!', // shift-backslash - OH MY GOD DOES WATCOM SUCK + ']', // shift-] + '"', '_', + '\'', // shift-` + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', + 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', + '{', '|', '}', '~', 127 +}; + +// +// HU_Init() +// +// Initialize the heads-up display, text that overwrites the primary display +// +// Passed nothing, returns nothing +// +void HU_Init(void) +{ + + int i; + int j; + char buffer[9]; + + shiftxform = english_shiftxform; + + // load the heads-up font + j = HU_FONTSTART; + for (i=0;i122) + { + sprintf(buffer, "STBR%.3d",j); + R_SetPatchNum(&hu_font2[i], buffer); + R_SetPatchNum(&hu_font[i], buffer); + } + else + hu_font[i] = hu_font[0]; //jff 2/16/98 account for gap + } + + // CPhipps - load patches for message background + for (i=0; i<9; i++) { + sprintf(buffer, "BOX%c%c", "UCL"[i/3], "LCR"[i%3]); + R_SetPatchNum(&hu_msgbg[i], buffer); + } + + // CPhipps - load patches for keys and double keys + for (i=0; i<6; i++) { + sprintf(buffer, "STKEYS%d", i); + R_SetPatchNum(&hu_fontk[i], buffer); + } +} + +// +// HU_Stop() +// +// Make the heads-up displays inactive +// +// Passed nothing, returns nothing +// +static void HU_Stop(void) +{ + headsupactive = false; +} + +// +// HU_Start(void) +// +// Create and initialize the heads-up widgets, software machines to +// maintain, update, and display information over the primary display +// +// This routine must be called after any change to the heads up configuration +// in order for the changes to take effect in the actual displays +// +// Passed nothing, returns nothing +// +void HU_Start(void) +{ + + int i; + const char* s; /* cph - const */ + + if (headsupactive) // stop before starting + HU_Stop(); + + plr = &players[displayplayer]; // killough 3/7/98 + message_on = false; + message_dontfuckwithme = false; + message_nottobefuckedwith = false; + chat_on = false; + + // create the message widget + // messages to player in upper-left of screen + HUlib_initSText + ( + &w_message, + HU_MSGX, + HU_MSGY, + HU_MSGHEIGHT, + hu_font, + HU_FONTSTART, + hudcolor_mesg, + &message_on + ); + + //jff 2/16/98 added some HUD widgets + // create the map title widget - map title display in lower left of automap + HUlib_initTextLine + ( + &w_title, + HU_TITLEX, + HU_TITLEY, + hu_font, + HU_FONTSTART, + hudcolor_titl + ); + + // create the hud health widget + // bargraph and number for amount of health, + // lower left or upper right of screen + HUlib_initTextLine + ( + &w_health, + hud_distributed? HU_HEALTHX_D : HU_HEALTHX, //3/4/98 distribute + hud_distributed? HU_HEALTHY_D : HU_HEALTHY, + hu_font2, + HU_FONTSTART, + CR_GREEN + ); + + // create the hud armor widget + // bargraph and number for amount of armor, + // lower left or upper right of screen + HUlib_initTextLine + ( + &w_armor, + hud_distributed? HU_ARMORX_D : HU_ARMORX, //3/4/98 distribute + hud_distributed? HU_ARMORY_D : HU_ARMORY, + hu_font2, + HU_FONTSTART, + CR_GREEN + ); + + // create the hud ammo widget + // bargraph and number for amount of ammo for current weapon, + // lower left or lower right of screen + HUlib_initTextLine + ( + &w_ammo, + hud_distributed? HU_AMMOX_D : HU_AMMOX, //3/4/98 distribute + hud_distributed? HU_AMMOY_D : HU_AMMOY, + hu_font2, + HU_FONTSTART, + CR_GOLD + ); + + // create the hud weapons widget + // list of numbers of weapons possessed + // lower left or lower right of screen + HUlib_initTextLine + ( + &w_weapon, + hud_distributed? HU_WEAPX_D : HU_WEAPX, //3/4/98 distribute + hud_distributed? HU_WEAPY_D : HU_WEAPY, + hu_font2, + HU_FONTSTART, + CR_GRAY + ); + + // create the hud keys widget + // display of key letters possessed + // lower left of screen + HUlib_initTextLine + ( + &w_keys, + hud_distributed? HU_KEYSX_D : HU_KEYSX, //3/4/98 distribute + hud_distributed? HU_KEYSY_D : HU_KEYSY, + hu_font2, + HU_FONTSTART, + CR_GRAY + ); + + // create the hud graphic keys widget + // display of key graphics possessed + // lower left of screen + HUlib_initTextLine + ( + &w_gkeys, + hud_distributed? HU_KEYSGX_D : HU_KEYSGX, //3/4/98 distribute + hud_distributed? HU_KEYSY_D : HU_KEYSY, + hu_fontk, + HU_FONTSTART, + CR_RED + ); + + // create the hud monster/secret widget + // totals and current values for kills, items, secrets + // lower left of screen + HUlib_initTextLine + ( + &w_monsec, + hud_distributed? HU_MONSECX_D : HU_MONSECX, //3/4/98 distribute + hud_distributed? HU_MONSECY_D : HU_MONSECY, + hu_font2, + HU_FONTSTART, + CR_GRAY + ); + + // create the hud text refresh widget + // scrolling display of last hud_msg_lines messages received + if (hud_msg_lines>HU_MAXMESSAGES) + hud_msg_lines=HU_MAXMESSAGES; + //jff 4/21/98 if setup has disabled message list while active, turn it off + message_list = hud_msg_lines > 1; //jff 8/8/98 initialize both ways + //jff 2/26/98 add the text refresh widget initialization + HUlib_initMText + ( + &w_rtext, + 0, + 0, + 320, +// SCREENWIDTH, + (hud_msg_lines+2)*HU_REFRESHSPACING, + hu_font, + HU_FONTSTART, + hudcolor_list, + hu_msgbg, + &message_list + ); + + // initialize the automap's level title widget + if (gamestate == GS_LEVEL) /* cph - stop SEGV here when not in level */ + switch (gamemode) + { + case shareware: + case registered: + case retail: + s = HU_TITLE; + break; + + case commercial: + default: // Ty 08/27/98 - modified to check mission for TNT/Plutonia + s = (gamemission==pack_tnt) ? HU_TITLET : + (gamemission==pack_plut) ? HU_TITLEP : HU_TITLE2; + break; + } else s = ""; + while (*s) + HUlib_addCharToTextLine(&w_title, *(s++)); + + // create the automaps coordinate widget + // jff 3/3/98 split coord widget into three lines: x,y,z + // jff 2/16/98 added + HUlib_initTextLine + ( + &w_coordx, + HU_COORDX, + HU_COORDX_Y, + hu_font, + HU_FONTSTART, + hudcolor_xyco + ); + HUlib_initTextLine + ( + &w_coordy, + HU_COORDX, + HU_COORDY_Y, + hu_font, + HU_FONTSTART, + hudcolor_xyco + ); + HUlib_initTextLine + ( + &w_coordz, + HU_COORDX, + HU_COORDZ_Y, + hu_font, + HU_FONTSTART, + hudcolor_xyco + ); + + // initialize the automaps coordinate widget + //jff 3/3/98 split coordstr widget into 3 parts + if (map_point_coordinates) + { + sprintf(hud_coordstrx,"X: %-5d",0); //jff 2/22/98 added z + s = hud_coordstrx; + while (*s) + HUlib_addCharToTextLine(&w_coordx, *(s++)); + sprintf(hud_coordstry,"Y: %-5d",0); //jff 3/3/98 split x,y,z + s = hud_coordstry; + while (*s) + HUlib_addCharToTextLine(&w_coordy, *(s++)); + sprintf(hud_coordstrz,"Z: %-5d",0); //jff 3/3/98 split x,y,z + s = hud_coordstrz; + while (*s) + HUlib_addCharToTextLine(&w_coordz, *(s++)); + } + + //jff 2/16/98 initialize ammo widget + strcpy(hud_ammostr,"AMM "); + s = hud_ammostr; + while (*s) + HUlib_addCharToTextLine(&w_ammo, *(s++)); + + //jff 2/16/98 initialize health widget + strcpy(hud_healthstr,"HEL "); + s = hud_healthstr; + while (*s) + HUlib_addCharToTextLine(&w_health, *(s++)); + + //jff 2/16/98 initialize armor widget + strcpy(hud_armorstr,"ARM "); + s = hud_armorstr; + while (*s) + HUlib_addCharToTextLine(&w_armor, *(s++)); + + //jff 2/17/98 initialize weapons widget + strcpy(hud_weapstr,"WEA "); + s = hud_weapstr; + while (*s) + HUlib_addCharToTextLine(&w_weapon, *(s++)); + + //jff 2/17/98 initialize keys widget + if (!deathmatch) //jff 3/17/98 show frags in deathmatch mode + strcpy(hud_keysstr,"KEY "); + else + strcpy(hud_keysstr,"FRG "); + s = hud_keysstr; + while (*s) + HUlib_addCharToTextLine(&w_keys, *(s++)); + + //jff 2/17/98 initialize graphic keys widget + strcpy(hud_gkeysstr," "); + s = hud_gkeysstr; + while (*s) + HUlib_addCharToTextLine(&w_gkeys, *(s++)); + + //jff 2/17/98 initialize kills/items/secret widget + strcpy(hud_monsecstr,"STS "); + s = hud_monsecstr; + while (*s) + HUlib_addCharToTextLine(&w_monsec, *(s++)); + + // create the chat widget + HUlib_initIText + ( + &w_chat, + HU_INPUTX, + HU_INPUTY, + hu_font, + HU_FONTSTART, + hudcolor_chat, + &chat_on + ); + + // create the inputbuffer widgets, one per player + for (i=0 ; imo->x)>>FRACBITS); + HUlib_clearTextLine(&w_coordx); + s = hud_coordstrx; + while (*s) + HUlib_addCharToTextLine(&w_coordx, *(s++)); + HUlib_drawTextLine(&w_coordx, false); + + //jff 3/3/98 split coord display into x,y,z lines + // y-coord + sprintf(hud_coordstry,"Y: %-5d", (plr->mo->y)>>FRACBITS); + HUlib_clearTextLine(&w_coordy); + s = hud_coordstry; + while (*s) + HUlib_addCharToTextLine(&w_coordy, *(s++)); + HUlib_drawTextLine(&w_coordy, false); + + //jff 3/3/98 split coord display into x,y,z lines + //jff 2/22/98 added z + // z-coord + sprintf(hud_coordstrz,"Z: %-5d", (plr->mo->z)>>FRACBITS); + HUlib_clearTextLine(&w_coordz); + s = hud_coordstrz; + while (*s) + HUlib_addCharToTextLine(&w_coordz, *(s++)); + HUlib_drawTextLine(&w_coordz, false); + } + } + + // draw the weapon/health/ammo/armor/kills/keys displays if optioned + //jff 2/17/98 allow new hud stuff to be turned off + // killough 2/21/98: really allow new hud stuff to be turned off COMPLETELY + if + ( + hud_active>0 && // hud optioned on + hud_displayed && // hud on from fullscreen key + viewheight==SCREENHEIGHT && // fullscreen mode is active + !(automapmode & am_active) // automap is not active + ) + { + doit = !(gametic&1); //jff 3/4/98 speed update up for slow systems + if (doit) //jff 8/7/98 update every time, avoid lag in update + { + HU_MoveHud(); // insure HUD display coords are correct + + // do the hud ammo display + // clear the widgets internal line + HUlib_clearTextLine(&w_ammo); + strcpy(hud_ammostr,"AMM "); + if (weaponinfo[plr->readyweapon].ammo == am_noammo) + { // special case for weapon with no ammo selected - blank bargraph + N/A + strcat(hud_ammostr,"\x7f\x7f\x7f\x7f\x7f\x7f\x7f N/A"); + w_ammo.cm = CR_GRAY; + } + else + { + int ammo = plr->ammo[weaponinfo[plr->readyweapon].ammo]; + int fullammo = plr->maxammo[weaponinfo[plr->readyweapon].ammo]; + int ammopct = (100*ammo)/fullammo; + int ammobars = ammopct/4; + + // build the numeric amount init string + sprintf(ammostr,"%d/%d",ammo,fullammo); + // build the bargraph string + // full bargraph chars + for (i=4;i<4+ammobars/4;) + hud_ammostr[i++] = 123; + // plus one last character with 0,1,2,3 bars + switch(ammobars%4) + { + case 0: + break; + case 1: + hud_ammostr[i++] = 126; + break; + case 2: + hud_ammostr[i++] = 125; + break; + case 3: + hud_ammostr[i++] = 124; + break; + } + // pad string with blank bar characters + while(i<4+7) + hud_ammostr[i++] = 127; + hud_ammostr[i] = '\0'; + strcat(hud_ammostr,ammostr); + + // set the display color from the percentage of total ammo held + if (ammopcthealth; + int healthbars = health>100? 25 : health/4; + + // clear the widgets internal line + HUlib_clearTextLine(&w_health); + + // build the numeric amount init string + sprintf(healthstr,"%3d",health); + // build the bargraph string + // full bargraph chars + for (i=4;i<4+healthbars/4;) + hud_healthstr[i++] = 123; + // plus one last character with 0,1,2,3 bars + switch(healthbars%4) + { + case 0: + break; + case 1: + hud_healthstr[i++] = 126; + break; + case 2: + hud_healthstr[i++] = 125; + break; + case 3: + hud_healthstr[i++] = 124; + break; + } + // pad string with blank bar characters + while(i<4+7) + hud_healthstr[i++] = 127; + hud_healthstr[i] = '\0'; + strcat(hud_healthstr,healthstr); + + // set the display color from the amount of health posessed + if (healtharmorpoints; + int armorbars = armor>100? 25 : armor/4; + + // clear the widgets internal line + HUlib_clearTextLine(&w_armor); + // build the numeric amount init string + sprintf(armorstr,"%3d",armor); + // build the bargraph string + // full bargraph chars + for (i=4;i<4+armorbars/4;) + hud_armorstr[i++] = 123; + // plus one last character with 0,1,2,3 bars + switch(armorbars%4) + { + case 0: + break; + case 1: + hud_armorstr[i++] = 126; + break; + case 2: + hud_armorstr[i++] = 125; + break; + case 3: + hud_armorstr[i++] = 124; + break; + } + // pad string with blank bar characters + while(i<4+7) + hud_armorstr[i++] = 127; + hud_armorstr[i] = '\0'; + strcat(hud_armorstr,armorstr); + + // set the display color from the amount of armor posessed + if (armor=wp_plasma && w!=wp_chainsaw) + ok=0; + break; + case retail: + case registered: + if (w>=wp_supershotgun) + ok=0; + break; + default: + case commercial: + break; + } + if (!ok) continue; + + ammo = plr->ammo[weaponinfo[w].ammo]; + fullammo = plr->maxammo[weaponinfo[w].ammo]; + ammopct=0; + + // skip weapons not currently posessed + if (!plr->weaponowned[w]) + continue; + + ammopct = fullammo? (100*ammo)/fullammo : 100; + + // display each weapon number in a color related to the ammo for it + hud_weapstr[i++] = '\x1b'; //jff 3/26/98 use ESC not '\' for paths + if (weaponinfo[w].ammo==am_noammo) //jff 3/14/98 show berserk on HUD + hud_weapstr[i++] = plr->powers[pw_strength]? '0'+CR_GREEN : '0'+CR_GRAY; + else if (ammopct1) + { + int k; + + hud_keysstr[4] = '\0'; //jff 3/7/98 make sure deleted keys go away + //jff add case for graphic key display + if (!deathmatch && hud_graph_keys) + { + i=0; + hud_gkeysstr[i] = '\0'; //jff 3/7/98 init graphic keys widget string + // build text string whose characters call out graphic keys from fontk + for (k=0;k<6;k++) + { + // skip keys not possessed + if (!plr->cards[k]) + continue; + + hud_gkeysstr[i++] = '!'+k; // key number plus '!' is char for key + hud_gkeysstr[i++] = ' '; // spacing + hud_gkeysstr[i++] = ' '; + } + hud_gkeysstr[i]='\0'; + } + else // not possible in current code, unless deathmatching, + { + i=4; + hud_keysstr[i] = '\0'; //jff 3/7/98 make sure deleted keys go away + + // if deathmatch, build string showing top four frag counts + if (deathmatch) //jff 3/17/98 show frags, not keys, in deathmatch + { + int top1=-999,top2=-999,top3=-999,top4=-999; + int idx1=-1,idx2=-1,idx3=-1,idx4=-1; + int fragcount,m; + char numbuf[32]; + + // scan thru players + for (k=0;ktop1) + { + top4=top3; top3=top2; top2 = top1; top1=fragcount; + idx4=idx3; idx3=idx2; idx2 = idx1; idx1=k; + } + else if (fragcount>top2) + { + top4=top3; top3=top2; top2=fragcount; + idx4=idx3; idx3=idx2; idx2=k; + } + else if (fragcount>top3) + { + top4=top3; top3=fragcount; + idx4=idx3; idx3=k; + } + else if (fragcount>top4) + { + top4=fragcount; + idx4=k; + } + } + // if the biggest number exists, put it in the init string + if (idx1>-1) + { + sprintf(numbuf,"%5d",top1); + // make frag count in player's color via escape code + hud_keysstr[i++] = '\x1b'; //jff 3/26/98 use ESC not '\' for paths + hud_keysstr[i++] = '0'+plyrcoltran[idx1&3]; + s = numbuf; + while (*s) + hud_keysstr[i++] = *(s++); + } + // if the second biggest number exists, put it in the init string + if (idx2>-1) + { + sprintf(numbuf,"%5d",top2); + // make frag count in player's color via escape code + hud_keysstr[i++] = '\x1b'; //jff 3/26/98 use ESC not '\' for paths + hud_keysstr[i++] = '0'+plyrcoltran[idx2&3]; + s = numbuf; + while (*s) + hud_keysstr[i++] = *(s++); + } + // if the third biggest number exists, put it in the init string + if (idx3>-1) + { + sprintf(numbuf,"%5d",top3); + // make frag count in player's color via escape code + hud_keysstr[i++] = '\x1b'; //jff 3/26/98 use ESC not '\' for paths + hud_keysstr[i++] = '0'+plyrcoltran[idx3&3]; + s = numbuf; + while (*s) + hud_keysstr[i++] = *(s++); + } + // if the fourth biggest number exists, put it in the init string + if (idx4>-1) + { + sprintf(numbuf,"%5d",top4); + // make frag count in player's color via escape code + hud_keysstr[i++] = '\x1b'; //jff 3/26/98 use ESC not '\' for paths + hud_keysstr[i++] = '0'+plyrcoltran[idx4&3]; + s = numbuf; + while (*s) + hud_keysstr[i++] = *(s++); + } + hud_keysstr[i] = '\0'; + } //jff 3/17/98 end of deathmatch clause + else // build alphabetical key display (not used currently) + { + // scan the keys + for (k=0;k<6;k++) + { + // skip any not possessed by the displayed player's stats + if (!plr->cards[k]) + continue; + + // use color escapes to make text in key's color + hud_keysstr[i++] = '\x1b'; //jff 3/26/98 use ESC not '\' for paths + switch(k) + { + case 0: + hud_keysstr[i++] = '0'+CR_BLUE; + hud_keysstr[i++] = 'B'; + hud_keysstr[i++] = 'C'; + hud_keysstr[i++] = ' '; + break; + case 1: + hud_keysstr[i++] = '0'+CR_GOLD; + hud_keysstr[i++] = 'Y'; + hud_keysstr[i++] = 'C'; + hud_keysstr[i++] = ' '; + break; + case 2: + hud_keysstr[i++] = '0'+CR_RED; + hud_keysstr[i++] = 'R'; + hud_keysstr[i++] = 'C'; + hud_keysstr[i++] = ' '; + break; + case 3: + hud_keysstr[i++] = '0'+CR_BLUE; + hud_keysstr[i++] = 'B'; + hud_keysstr[i++] = 'S'; + hud_keysstr[i++] = ' '; + break; + case 4: + hud_keysstr[i++] = '0'+CR_GOLD; + hud_keysstr[i++] = 'Y'; + hud_keysstr[i++] = 'S'; + hud_keysstr[i++] = ' '; + break; + case 5: + hud_keysstr[i++] = '0'+CR_RED; + hud_keysstr[i++] = 'R'; + hud_keysstr[i++] = 'S'; + hud_keysstr[i++] = ' '; + break; + } + hud_keysstr[i]='\0'; + } + } + } + } + // display the keys/frags line each frame + if (hud_active>1) + { + HUlib_clearTextLine(&w_keys); // clear the widget strings + HUlib_clearTextLine(&w_gkeys); + + // transfer the built string (frags or key title) to the widget + s = hud_keysstr; //jff 3/7/98 display key titles/key text or frags + while (*s) + HUlib_addCharToTextLine(&w_keys, *(s++)); + HUlib_drawTextLine(&w_keys, false); + + //jff 3/17/98 show graphic keys in non-DM only + if (!deathmatch) //jff 3/7/98 display graphic keys + { + // transfer the graphic key text to the widget + s = hud_gkeysstr; + while (*s) + HUlib_addCharToTextLine(&w_gkeys, *(s++)); + // display the widget + HUlib_drawTextLine(&w_gkeys, false); + } + } + + // display the hud kills/items/secret display if optioned + if (!hud_nosecrets) + { + if (hud_active>1 && doit) + { + // clear the internal widget text buffer + HUlib_clearTextLine(&w_monsec); + //jff 3/26/98 use ESC not '\' for paths + // build the init string with fixed colors + sprintf( + hud_monsecstr, + "STS \x1b\x36K \x1b\x33%d \x1b\x36M \x1b\x33%d \x1b\x37I \x1b\x33%d/%d \x1b\x35S \x1b\x33%d/%d", + plr->killcount,totallive, + plr->itemcount,totalitems, + plr->secretcount,totalsecret + ); + // transfer the init string to the widget + s = hud_monsecstr; + while (*s) + HUlib_addCharToTextLine(&w_monsec, *(s++)); + } + // display the kills/items/secrets each frame, if optioned + if (hud_active>1) + HUlib_drawTextLine(&w_monsec, false); + } + } + + //jff 3/4/98 display last to give priority + HU_Erase(); // jff 4/24/98 Erase current lines before drawing current + // needed when screen not fullsize + + //jff 4/21/98 if setup has disabled message list while active, turn it off + if (hud_msg_lines<=1) + message_list = false; + + // if the message review not enabled, show the standard message widget + if (!message_list) + HUlib_drawSText(&w_message); + + // if the message review is enabled show the scrolling message review + if (hud_msg_lines>1 && message_list) + HUlib_drawMText(&w_rtext); + + // display the interactive buffer for chat entry + HUlib_drawIText(&w_chat); +} + +// +// HU_Erase() +// +// Erase hud display lines that can be trashed by small screen display +// +// Passed nothing, returns nothing +// +void HU_Erase(void) +{ + // erase the message display or the message review display + if (!message_list) + HUlib_eraseSText(&w_message); + else + HUlib_eraseMText(&w_rtext); + + // erase the interactive text buffer for chat entry + HUlib_eraseIText(&w_chat); + + // erase the automap title + HUlib_eraseTextLine(&w_title); +} + +// +// HU_Ticker() +// +// Update the hud displays once per frame +// +// Passed nothing, returns nothing +// +static boolean bsdown; // Is backspace down? +static int bscounter; + +void HU_Ticker(void) +{ + int i, rc; + char c; + + // tick down message counter if message is up + if (message_counter && !--message_counter) + { + message_on = false; + message_nottobefuckedwith = false; + } + if (bsdown && bscounter++ > 9) { + HUlib_keyInIText(&w_chat, (unsigned char)key_backspace); + bscounter = 8; + } + + // if messages on, or "Messages Off" is being displayed + // this allows the notification of turning messages off to be seen + if (showMessages || message_dontfuckwithme) + { + // display message if necessary + if ((plr->message && !message_nottobefuckedwith) + || (plr->message && message_dontfuckwithme)) + { + //post the message to the message widget + HUlib_addMessageToSText(&w_message, 0, plr->message); + //jff 2/26/98 add message to refresh text widget too + HUlib_addMessageToMText(&w_rtext, 0, plr->message); + + // clear the message to avoid posting multiple times + plr->message = 0; + // note a message is displayed + message_on = true; + // start the message persistence counter + message_counter = HU_MSGTIMEOUT; + // transfer "Messages Off" exception to the "being displayed" variable + message_nottobefuckedwith = message_dontfuckwithme; + // clear the flag that "Messages Off" is being posted + message_dontfuckwithme = 0; + } + } + + // check for incoming chat characters + if (netgame) + { + for (i=0; i= 'a' && c <= 'z') + c = (char) shiftxform[(unsigned char) c]; + rc = HUlib_keyInIText(&w_inputbuffer[i], c); + if (rc && c == KEYD_ENTER) + { + if (w_inputbuffer[i].l.len + && (chat_dest[i] == consoleplayer+1 + || chat_dest[i] == HU_BROADCAST)) + { + HUlib_addMessageToSText(&w_message, + player_names[i], + w_inputbuffer[i].l.l); + + message_nottobefuckedwith = true; + message_on = true; + message_counter = HU_MSGTIMEOUT; + if ( gamemode == commercial ) + S_StartSound(0, sfx_radio); + else + S_StartSound(0, sfx_tink); + } + HUlib_resetIText(&w_inputbuffer[i]); + } + } + players[i].cmd.chatchar = 0; + } + } + } +} + +#define QUEUESIZE 128 + +static char chatchars[QUEUESIZE]; +static int head = 0; +static int tail = 0; + +// +// HU_queueChatChar() +// +// Add an incoming character to the circular chat queue +// +// Passed the character to queue, returns nothing +// +static void HU_queueChatChar(char c) +{ + if (((head + 1) & (QUEUESIZE-1)) == tail) + { + plr->message = HUSTR_MSGU; + } + else + { + chatchars[head] = c; + head = (head + 1) & (QUEUESIZE-1); + } +} + +// +// HU_dequeueChatChar() +// +// Remove the earliest added character from the circular chat queue +// +// Passed nothing, returns the character dequeued +// +char HU_dequeueChatChar(void) +{ + char c; + + if (head != tail) + { + c = chatchars[tail]; + tail = (tail + 1) & (QUEUESIZE-1); + } + else + { + c = 0; + } + return c; +} + +// +// HU_Responder() +// +// Responds to input events that affect the heads up displays +// +// Passed the event to respond to, returns true if the event was handled +// +boolean HU_Responder(event_t *ev) +{ + + static char lastmessage[HU_MAXLINELENGTH+1]; + const char* macromessage; // CPhipps - const char* + boolean eatkey = false; + static boolean shiftdown = false; + static boolean altdown = false; + unsigned char c; + int i; + int numplayers; + + static int num_nobrainers = 0; + + numplayers = 0; + for (i=0 ; idata1 == key_shift) + { + shiftdown = ev->type == ev_keydown; + return false; + } + else if (ev->data1 == key_alt) + { + altdown = ev->type == ev_keydown; + return false; + } + else if (ev->data1 == key_backspace) + { + bsdown = ev->type == ev_keydown; + bscounter = 0; + } + + if (ev->type != ev_keydown) + return false; + + if (!chat_on) + { + if (ev->data1 == key_lastmessage) // phares + { +#ifndef INSTRUMENTED // never turn on message review if INSTRUMENTED defined + if (hud_msg_lines>1) // it posts multi-line messages that will trash + { + if (message_list) HU_Erase(); //jff 4/28/98 erase behind messages + message_list = !message_list; //jff 2/26/98 toggle list of messages + } +#endif + if (!message_list) // if not message list, refresh message + { + message_on = true; + message_counter = HU_MSGTIMEOUT; + } + eatkey = true; + }//jff 2/26/98 no chat if message review is displayed + // killough 10/02/98: no chat if demo playback + // no chat in -solo-net mode + else if (!demoplayback && !message_list && netgame && numplayers > 1) + { + if (ev->data1 == key_chat) + { + eatkey = chat_on = true; + HUlib_resetIText(&w_chat); + HU_queueChatChar(HU_BROADCAST); + } + else if (numplayers > 2) + { + for (i=0; idata1 == destination_keys[i]) + { + if (playeringame[i] && i!=consoleplayer) + { + eatkey = chat_on = true; + HUlib_resetIText(&w_chat); + HU_queueChatChar((char)(i+1)); + break; + } + else if (i == consoleplayer) + { + num_nobrainers++; + if (num_nobrainers < 3) + plr->message = HUSTR_TALKTOSELF1; + else if (num_nobrainers < 6) + plr->message = HUSTR_TALKTOSELF2; + else if (num_nobrainers < 9) + plr->message = HUSTR_TALKTOSELF3; + else if (num_nobrainers < 32) + plr->message = HUSTR_TALKTOSELF4; + else + plr->message = HUSTR_TALKTOSELF5; + } + } + } + } + } + }//jff 2/26/98 no chat functions if message review is displayed + else if (!message_list) + { + c = ev->data1; + // send a macro + if (altdown) + { + c = c - '0'; + if (c > 9) + return false; + macromessage = chat_macros[c]; + + // kill last message with a '\n' + HU_queueChatChar((char)key_enter); // DEBUG!!! // phares + + // send the macro message + while (*macromessage) + HU_queueChatChar(*macromessage++); + HU_queueChatChar((char)key_enter); // phares + + // leave chat mode and notify that it was sent + chat_on = false; + strcpy(lastmessage, chat_macros[c]); + plr->message = lastmessage; + eatkey = true; + } + else + { + if (shiftdown || (c >= 'a' && c <= 'z')) + c = shiftxform[c]; + eatkey = HUlib_keyInIText(&w_chat, c); + if (eatkey) + HU_queueChatChar(c); + + if (c == key_enter) // phares + { + chat_on = false; + if (w_chat.l.len) + { + strcpy(lastmessage, w_chat.l.l); + plr->message = lastmessage; + } + } + else if (c == key_escape) // phares + chat_on = false; + } + } + return eatkey; +} diff --git a/components/doom/prboom/hu_stuff.h b/components/doom/prboom/hu_stuff.h new file mode 100644 index 0000000..e4cbf24 --- /dev/null +++ b/components/doom/prboom/hu_stuff.h @@ -0,0 +1,90 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: Head up display + * + *-----------------------------------------------------------------------------*/ + +#ifndef __HU_STUFF_H__ +#define __HU_STUFF_H__ + +#include "d_event.h" + +/* + * Globally visible constants. + */ +#define HU_FONTSTART '!' /* the first font characters */ +#define HU_FONTEND (0x7f) /*jff 2/16/98 '_' the last font characters */ + +/* Calculate # of glyphs in font. */ +#define HU_FONTSIZE (HU_FONTEND - HU_FONTSTART + 1) + +#define HU_BROADCAST 5 + +/*#define HU_MSGREFRESH KEYD_ENTER phares */ +#define HU_MSGX 0 +#define HU_MSGY 0 +#define HU_MSGWIDTH 64 /* in characters */ +#define HU_MSGHEIGHT 1 /* in lines */ + +#define HU_MSGTIMEOUT (4*TICRATE) + +/* + * Heads up text + */ +void HU_Init(void); +void HU_Start(void); + +boolean HU_Responder(event_t* ev); + +void HU_Ticker(void); +void HU_Drawer(void); +char HU_dequeueChatChar(void); +void HU_Erase(void); +void HU_MoveHud(void); // jff 3/9/98 avoid glitch in HUD display + +/* killough 5/2/98: moved from m_misc.c: */ + +/* jff 2/16/98 hud supported automap colors added */ +extern int hudcolor_titl; /* color range of automap level title */ +extern int hudcolor_xyco; /* color range of new coords on automap */ +/* jff 2/16/98 hud text colors, controls added */ +extern int hudcolor_mesg; /* color range of scrolling messages */ +extern int hudcolor_chat; /* color range of chat lines */ +/* jff 2/26/98 hud message list color and background enable */ +extern int hudcolor_list; /* color of list of past messages */ +extern int hud_list_bgon; /* solid window background for list of messages */ +extern int hud_msg_lines; /* number of message lines in window up to 16 */ +extern int hud_distributed; /* whether hud is all in lower left or distributed */ +/* jff 2/23/98 hud is currently displayed */ +extern int hud_displayed; /* hud is displayed */ +/* jff 2/18/98 hud/status control */ +extern int hud_active; /* hud mode 0=off, 1=small, 2=full */ +extern int hud_nosecrets; /* status does not list secrets/items/kills */ + +#endif diff --git a/components/doom/prboom/i_joy.h b/components/doom/prboom/i_joy.h new file mode 100644 index 0000000..29f19cb --- /dev/null +++ b/components/doom/prboom/i_joy.h @@ -0,0 +1,47 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Joystick interface. + * + *-----------------------------------------------------------------------------*/ + +extern int joybfire; +extern int joybstrafe; +extern int joybuse; +extern int joybspeed; + +extern int joyleft; +extern int joyright; +extern int joyup; +extern int joydown; + +extern int usejoystick; + +void I_InitJoystick(void); +void I_PollJoystick(void); diff --git a/components/doom/prboom/i_main.h b/components/doom/prboom/i_main.h new file mode 100644 index 0000000..cfff7be --- /dev/null +++ b/components/doom/prboom/i_main.h @@ -0,0 +1,42 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * General system functions. Signal related stuff, exit function + * prototypes, and programmable Doom clock. + * + *----------------------------------------------------------------------------- + */ + +#ifndef __I_MAIN__ +#define __I_MAIN__ + +void I_Init(void); +void I_SafeExit(int rc); + +#endif diff --git a/components/doom/prboom/i_network.h b/components/doom/prboom/i_network.h new file mode 100644 index 0000000..532941f --- /dev/null +++ b/components/doom/prboom/i_network.h @@ -0,0 +1,74 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Low level network interface. + *-----------------------------------------------------------------------------*/ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#ifdef USE_SDL_NET + #include "SDL_net.h" + #define UDP_SOCKET UDPsocket + #define UDP_PACKET UDPpacket + #define AF_INET + #define UDP_CHANNEL int + extern UDP_SOCKET udp_socket; +#else + #define UDP_CHANNEL struct sockaddr +#endif + +#ifndef IPPORT_RESERVED + #define IPPORT_RESERVED 1024 +#endif + +void I_InitNetwork(void); +size_t I_GetPacket(packet_header_t* buffer, size_t buflen); +void I_SendPacket(packet_header_t* packet, size_t len); +void I_WaitForPacket(int ms); + +#ifdef USE_SDL_NET +UDP_SOCKET I_Socket(Uint16 port); +int I_ConnectToServer(const char *serv); +UDP_CHANNEL I_RegisterPlayer(IPaddress *ipaddr); +void I_UnRegisterPlayer(UDP_CHANNEL channel); +extern IPaddress sentfrom_addr; +#endif + +#ifdef AF_INET +void I_SendPacketTo(packet_header_t* packet, size_t len, UDP_CHANNEL *to); +void I_SetupSocket(int sock, int port, int family); +void I_PrintAddress(FILE* fp, UDP_CHANNEL *addr); + +extern UDP_CHANNEL sentfrom; +extern int v4socket, v6socket; +#endif + +extern size_t sentbytes, recvdbytes; diff --git a/components/doom/prboom/i_sound.h b/components/doom/prboom/i_sound.h new file mode 100644 index 0000000..71b57c3 --- /dev/null +++ b/components/doom/prboom/i_sound.h @@ -0,0 +1,117 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * System interface, sound. + * + *-----------------------------------------------------------------------------*/ + +#ifndef __I_SOUND__ +#define __I_SOUND__ + +#include "sounds.h" +#include "doomtype.h" + +#define SNDSERV +#undef SNDINTR + +#ifndef SNDSERV +#include "l_soundgen.h" +#endif + +// Init at program start... +void I_InitSound(void); + +// ... shut down and relase at program termination. +void I_ShutdownSound(void); + +// +// SFX I/O +// + +// Initialize channels? +void I_SetChannels(void); + +// Get raw data lump index for sound descriptor. +int I_GetSfxLumpNum (sfxinfo_t *sfxinfo); + +// Starts a sound in a particular sound channel. +int I_StartSound(int id, int channel, int vol, int sep, int pitch, int priority); + +// Stops a sound channel. +void I_StopSound(int handle); + +// Called by S_*() functions +// to see if a channel is still playing. +// Returns 0 if no longer playing, 1 if playing. +bool I_SoundIsPlaying(int handle); + +// Called by m_menu.c to let the quit sound play and quit right after it stops +bool I_AnySoundStillPlaying(void); + +// Updates the volume, separation, +// and pitch of a sound channel. +void I_UpdateSoundParams(int handle, int vol, int sep, int pitch); + +// +// MUSIC I/O +// +void I_InitMusic(void); +void I_ShutdownMusic(void); + +void I_UpdateMusic(void); + +// Volume. +void I_SetMusicVolume(int volume); + +// PAUSE game handling. +void I_PauseSong(int handle); +void I_ResumeSong(int handle); + +// Registers a song handle to song data. +int I_RegisterSong(const void *data, size_t len); + +// Called by anything that wishes to start music. +// plays a song, and when the song is done, +// starts playing it again in an endless loop. +// Horrible thing to do, considering. +void I_PlaySong(int handle, int looping); + +// Stops a song over 3 seconds. +void I_StopSong(int handle); + +// See above (register), then think backwards +void I_UnRegisterSong(int handle); + +// Allegro card support jff 1/18/98 +extern int snd_card; +extern int mus_card; +// CPhipps - put these in config file +extern int snd_samplerate; + +#endif diff --git a/components/doom/prboom/i_system.h b/components/doom/prboom/i_system.h new file mode 100644 index 0000000..3b4731c --- /dev/null +++ b/components/doom/prboom/i_system.h @@ -0,0 +1,47 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * System specific interface stuff. + * + *-----------------------------------------------------------------------------*/ + +#ifndef __I_SYSTEM__ +#define __I_SYSTEM__ + +bool I_StartDisplay(void); +void I_EndDisplay(void); + +int I_GetTimeMS(void); // Clock time +int I_GetTime(void); // Tics +void I_uSleep(unsigned long usecs); + +const char *I_DoomExeDir(void); // killough 2/16/98: path to executable's dir +const char* I_SigString(char* buf, size_t sz, int signum); + +#endif diff --git a/components/doom/prboom/i_video.h b/components/doom/prboom/i_video.h new file mode 100644 index 0000000..02c6c4a --- /dev/null +++ b/components/doom/prboom/i_video.h @@ -0,0 +1,65 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * System specific interface stuff. + * + *-----------------------------------------------------------------------------*/ + +#ifndef __I_VIDEO__ +#define __I_VIDEO__ + +#include "doomtype.h" +#include "v_video.h" + +void I_InitGraphics(void); +void I_UpdateVideoMode(void); +void I_ShutdownGraphics(void); +void I_SetPalette(int pal); /* Takes full 8 bit values. */ +void I_UpdateNoBlit(void); +void I_FinishUpdate(void); + +/* I_StartTic + * Called by D_DoomLoop, + * called before processing each tic in a frame. + * Quick syncronous operations are performed here. + * Can call D_PostEvent. + */ +void I_StartTic(void); + +/* I_StartFrame + * Called by D_DoomLoop, + * called before processing any tics in a frame + * (just after displaying a frame). + * Time consuming syncronous operations + * are performed here (joystick reading). + * Can call D_PostEvent. + */ +void I_StartFrame(void); + +#endif diff --git a/components/doom/prboom/info.c b/components/doom/prboom/info.c new file mode 100644 index 0000000..b66d72c --- /dev/null +++ b/components/doom/prboom/info.c @@ -0,0 +1,4900 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Thing frame/state LUT, + * generated by multigen utilitiy. + * This one is the original DOOM version, preserved. + * BOOM changes include commenting and addition of predefined lumps + * for providing things that aren't in the IWAD without sending a + * separate must-use wad file around with the EXE. + * + *----------------------------------------------------------------------------- + */ + +#include "doomdef.h" +#include "sounds.h" +#include "m_fixed.h" +#include "p_mobj.h" +#include "p_enemy.h" +#include "p_pspr.h" +#include "w_wad.h" + +#ifdef __GNUG__ +#pragma implementation "info.h" +#endif +#include "info.h" + + +// ******************************************************************** +// Sprite names +// ******************************************************************** +// This is the list of sprite 4-character prefixes. They are searched +// through, with a NULL entry terminating the list. In DOOM originally +// this NULL entry was missing, and coincidentally the next thing in +// memory was the dummy state_t[] entry that started with zero bytes. +// killough 1/17/98: add an explicit NULL entry. +// NUMSPRITES is an enum from info.h where all these are listed +// as SPR_xxxx + +const char *sprnames[NUMSPRITES+1] = { + "TROO","SHTG","PUNG","PISG","PISF","SHTF","SHT2","CHGG","CHGF","MISG", + "MISF","SAWG","PLSG","PLSF","BFGG","BFGF","BLUD","PUFF","BAL1","BAL2", + "PLSS","PLSE","MISL","BFS1","BFE1","BFE2","TFOG","IFOG","PLAY","POSS", + "SPOS","VILE","FIRE","FATB","FBXP","SKEL","MANF","FATT","CPOS","SARG", + "HEAD","BAL7","BOSS","BOS2","SKUL","SPID","BSPI","APLS","APBX","CYBR", + "PAIN","SSWV","KEEN","BBRN","BOSF","ARM1","ARM2","BAR1","BEXP","FCAN", + "BON1","BON2","BKEY","RKEY","YKEY","BSKU","RSKU","YSKU","STIM","MEDI", + "SOUL","PINV","PSTR","PINS","MEGA","SUIT","PMAP","PVIS","CLIP","AMMO", + "ROCK","BROK","CELL","CELP","SHEL","SBOX","BPAK","BFUG","MGUN","CSAW", + "LAUN","PLAS","SHOT","SGN2","COLU","SMT2","GOR1","POL2","POL5","POL4", + "POL3","POL1","POL6","GOR2","GOR3","GOR4","GOR5","SMIT","COL1","COL2", + "COL3","COL4","CAND","CBRA","COL6","TRE1","TRE2","ELEC","CEYE","FSKU", + "COL5","TBLU","TGRN","TRED","SMBT","SMGT","SMRT","HDB1","HDB2","HDB3", + "HDB4","HDB5","HDB6","POB1","POB2","BRS1","TLMP","TLP2", + "TNT1", // invisible sprite phares 3/9/98 +#ifdef DOGS + "DOGS", /* killough 7/19/98: Marine's best friend :) */ +#endif + NULL +}; + +// ******************************************************************** +// State or "frame" information +// ******************************************************************** +// Each of the states, otherwise known as "frames", is outlined +// here. The data in each element of the array is the way it is +// initialized, with sprite names identified by their enumerator +// value such as SPR_SHTG. These correlate to the above sprite +// array so don't change them around unless you understand what +// you're doing. +// +// The commented name beginning with S_ at the end of each line +// is there to help figure out where the next-frame pointer is +// pointing. These are also additionally identified in info.h +// as enumerated values. From a change-and-recompile point of +// view this is fairly workable, but it adds a lot to the effort +// when trying to change things externally. See also the d_deh.c +// parts where frame rewiring is done for more details and the +// extended way a BEX file can handle this. + +const state_t rostates[NUMSTATES] = { + {SPR_TROO,0,-1,NULL,S_NULL,0,0}, // S_NULL + {SPR_SHTG,4,0,A_Light0,S_NULL,0,0}, // S_LIGHTDONE + {SPR_PUNG,0,1,A_WeaponReady,S_PUNCH,0,0}, // S_PUNCH + {SPR_PUNG,0,1,A_Lower,S_PUNCHDOWN,0,0}, // S_PUNCHDOWN + {SPR_PUNG,0,1,A_Raise,S_PUNCHUP,0,0}, // S_PUNCHUP + {SPR_PUNG,1,4,NULL,S_PUNCH2,0,0}, // S_PUNCH1 + {SPR_PUNG,2,4,A_Punch,S_PUNCH3,0,0}, // S_PUNCH2 + {SPR_PUNG,3,5,NULL,S_PUNCH4,0,0}, // S_PUNCH3 + {SPR_PUNG,2,4,NULL,S_PUNCH5,0,0}, // S_PUNCH4 + {SPR_PUNG,1,5,A_ReFire,S_PUNCH,0,0}, // S_PUNCH5 + {SPR_PISG,0,1,A_WeaponReady,S_PISTOL,0,0},// S_PISTOL + {SPR_PISG,0,1,A_Lower,S_PISTOLDOWN,0,0}, // S_PISTOLDOWN + {SPR_PISG,0,1,A_Raise,S_PISTOLUP,0,0}, // S_PISTOLUP + {SPR_PISG,0,4,NULL,S_PISTOL2,0,0}, // S_PISTOL1 + {SPR_PISG,1,6,A_FirePistol,S_PISTOL3,0,0},// S_PISTOL2 + {SPR_PISG,2,4,NULL,S_PISTOL4,0,0}, // S_PISTOL3 + {SPR_PISG,1,5,A_ReFire,S_PISTOL,0,0}, // S_PISTOL4 + {SPR_PISF,32768,7,A_Light1,S_LIGHTDONE,0,0}, // S_PISTOLFLASH + {SPR_SHTG,0,1,A_WeaponReady,S_SGUN,0,0}, // S_SGUN + {SPR_SHTG,0,1,A_Lower,S_SGUNDOWN,0,0}, // S_SGUNDOWN + {SPR_SHTG,0,1,A_Raise,S_SGUNUP,0,0}, // S_SGUNUP + {SPR_SHTG,0,3,NULL,S_SGUN2,0,0}, // S_SGUN1 + {SPR_SHTG,0,7,A_FireShotgun,S_SGUN3,0,0}, // S_SGUN2 + {SPR_SHTG,1,5,NULL,S_SGUN4,0,0}, // S_SGUN3 + {SPR_SHTG,2,5,NULL,S_SGUN5,0,0}, // S_SGUN4 + {SPR_SHTG,3,4,NULL,S_SGUN6,0,0}, // S_SGUN5 + {SPR_SHTG,2,5,NULL,S_SGUN7,0,0}, // S_SGUN6 + {SPR_SHTG,1,5,NULL,S_SGUN8,0,0}, // S_SGUN7 + {SPR_SHTG,0,3,NULL,S_SGUN9,0,0}, // S_SGUN8 + {SPR_SHTG,0,7,A_ReFire,S_SGUN,0,0}, // S_SGUN9 + {SPR_SHTF,32768,4,A_Light1,S_SGUNFLASH2,0,0}, // S_SGUNFLASH1 + {SPR_SHTF,32769,3,A_Light2,S_LIGHTDONE,0,0}, // S_SGUNFLASH2 + {SPR_SHT2,0,1,A_WeaponReady,S_DSGUN,0,0}, // S_DSGUN + {SPR_SHT2,0,1,A_Lower,S_DSGUNDOWN,0,0}, // S_DSGUNDOWN + {SPR_SHT2,0,1,A_Raise,S_DSGUNUP,0,0}, // S_DSGUNUP + {SPR_SHT2,0,3,NULL,S_DSGUN2,0,0}, // S_DSGUN1 + {SPR_SHT2,0,7,A_FireShotgun2,S_DSGUN3,0,0}, // S_DSGUN2 + {SPR_SHT2,1,7,NULL,S_DSGUN4,0,0}, // S_DSGUN3 + {SPR_SHT2,2,7,A_CheckReload,S_DSGUN5,0,0}, // S_DSGUN4 + {SPR_SHT2,3,7,A_OpenShotgun2,S_DSGUN6,0,0}, // S_DSGUN5 + {SPR_SHT2,4,7,NULL,S_DSGUN7,0,0}, // S_DSGUN6 + {SPR_SHT2,5,7,A_LoadShotgun2,S_DSGUN8,0,0}, // S_DSGUN7 + {SPR_SHT2,6,6,NULL,S_DSGUN9,0,0}, // S_DSGUN8 + {SPR_SHT2,7,6,A_CloseShotgun2,S_DSGUN10,0,0}, // S_DSGUN9 + {SPR_SHT2,0,5,A_ReFire,S_DSGUN,0,0}, // S_DSGUN10 + {SPR_SHT2,1,7,NULL,S_DSNR2,0,0}, // S_DSNR1 + {SPR_SHT2,0,3,NULL,S_DSGUNDOWN,0,0}, // S_DSNR2 + {SPR_SHT2,32776,5,A_Light1,S_DSGUNFLASH2,0,0}, // S_DSGUNFLASH1 + {SPR_SHT2,32777,4,A_Light2,S_LIGHTDONE,0,0}, // S_DSGUNFLASH2 + {SPR_CHGG,0,1,A_WeaponReady,S_CHAIN,0,0}, // S_CHAIN + {SPR_CHGG,0,1,A_Lower,S_CHAINDOWN,0,0}, // S_CHAINDOWN + {SPR_CHGG,0,1,A_Raise,S_CHAINUP,0,0}, // S_CHAINUP + {SPR_CHGG,0,4,A_FireCGun,S_CHAIN2,0,0}, // S_CHAIN1 + {SPR_CHGG,1,4,A_FireCGun,S_CHAIN3,0,0}, // S_CHAIN2 + {SPR_CHGG,1,0,A_ReFire,S_CHAIN,0,0}, // S_CHAIN3 + {SPR_CHGF,32768,5,A_Light1,S_LIGHTDONE,0,0}, // S_CHAINFLASH1 + {SPR_CHGF,32769,5,A_Light2,S_LIGHTDONE,0,0}, // S_CHAINFLASH2 + {SPR_MISG,0,1,A_WeaponReady,S_MISSILE,0,0}, // S_MISSILE + {SPR_MISG,0,1,A_Lower,S_MISSILEDOWN,0,0}, // S_MISSILEDOWN + {SPR_MISG,0,1,A_Raise,S_MISSILEUP,0,0}, // S_MISSILEUP + {SPR_MISG,1,8,A_GunFlash,S_MISSILE2,0,0}, // S_MISSILE1 + {SPR_MISG,1,12,A_FireMissile,S_MISSILE3,0,0}, // S_MISSILE2 + {SPR_MISG,1,0,A_ReFire,S_MISSILE,0,0}, // S_MISSILE3 + {SPR_MISF,32768,3,A_Light1,S_MISSILEFLASH2,0,0}, // S_MISSILEFLASH1 + {SPR_MISF,32769,4,NULL,S_MISSILEFLASH3,0,0}, // S_MISSILEFLASH2 + {SPR_MISF,32770,4,A_Light2,S_MISSILEFLASH4,0,0}, // S_MISSILEFLASH3 + {SPR_MISF,32771,4,A_Light2,S_LIGHTDONE,0,0}, // S_MISSILEFLASH4 + {SPR_SAWG,2,4,A_WeaponReady,S_SAWB,0,0}, // S_SAW + {SPR_SAWG,3,4,A_WeaponReady,S_SAW,0,0}, // S_SAWB + {SPR_SAWG,2,1,A_Lower,S_SAWDOWN,0,0}, // S_SAWDOWN + {SPR_SAWG,2,1,A_Raise,S_SAWUP,0,0}, // S_SAWUP + {SPR_SAWG,0,4,A_Saw,S_SAW2,0,0}, // S_SAW1 + {SPR_SAWG,1,4,A_Saw,S_SAW3,0,0}, // S_SAW2 + {SPR_SAWG,1,0,A_ReFire,S_SAW,0,0}, // S_SAW3 + {SPR_PLSG,0,1,A_WeaponReady,S_PLASMA,0,0}, // S_PLASMA + {SPR_PLSG,0,1,A_Lower,S_PLASMADOWN,0,0}, // S_PLASMADOWN + {SPR_PLSG,0,1,A_Raise,S_PLASMAUP,0,0}, // S_PLASMAUP + {SPR_PLSG,0,3,A_FirePlasma,S_PLASMA2,0,0}, // S_PLASMA1 + {SPR_PLSG,1,20,A_ReFire,S_PLASMA,0,0}, // S_PLASMA2 + {SPR_PLSF,32768,4,A_Light1,S_LIGHTDONE,0,0}, // S_PLASMAFLASH1 + {SPR_PLSF,32769,4,A_Light1,S_LIGHTDONE,0,0}, // S_PLASMAFLASH2 + {SPR_BFGG,0,1,A_WeaponReady,S_BFG,0,0}, // S_BFG + {SPR_BFGG,0,1,A_Lower,S_BFGDOWN,0,0}, // S_BFGDOWN + {SPR_BFGG,0,1,A_Raise,S_BFGUP,0,0}, // S_BFGUP + {SPR_BFGG,0,20,A_BFGsound,S_BFG2,0,0}, // S_BFG1 + {SPR_BFGG,1,10,A_GunFlash,S_BFG3,0,0}, // S_BFG2 + {SPR_BFGG,1,10,A_FireBFG,S_BFG4,0,0}, // S_BFG3 + {SPR_BFGG,1,20,A_ReFire,S_BFG,0,0}, // S_BFG4 + {SPR_BFGF,32768,11,A_Light1,S_BFGFLASH2,0,0}, // S_BFGFLASH1 + {SPR_BFGF,32769,6,A_Light2,S_LIGHTDONE,0,0}, // S_BFGFLASH2 + {SPR_BLUD,2,8,NULL,S_BLOOD2,0,0}, // S_BLOOD1 + {SPR_BLUD,1,8,NULL,S_BLOOD3,0,0}, // S_BLOOD2 + {SPR_BLUD,0,8,NULL,S_NULL,0,0}, // S_BLOOD3 + {SPR_PUFF,32768,4,NULL,S_PUFF2,0,0}, // S_PUFF1 + {SPR_PUFF,1,4,NULL,S_PUFF3,0,0}, // S_PUFF2 + {SPR_PUFF,2,4,NULL,S_PUFF4,0,0}, // S_PUFF3 + {SPR_PUFF,3,4,NULL,S_NULL,0,0}, // S_PUFF4 + {SPR_BAL1,32768,4,NULL,S_TBALL2,0,0}, // S_TBALL1 + {SPR_BAL1,32769,4,NULL,S_TBALL1,0,0}, // S_TBALL2 + {SPR_BAL1,32770,6,NULL,S_TBALLX2,0,0}, // S_TBALLX1 + {SPR_BAL1,32771,6,NULL,S_TBALLX3,0,0}, // S_TBALLX2 + {SPR_BAL1,32772,6,NULL,S_NULL,0,0}, // S_TBALLX3 + {SPR_BAL2,32768,4,NULL,S_RBALL2,0,0}, // S_RBALL1 + {SPR_BAL2,32769,4,NULL,S_RBALL1,0,0}, // S_RBALL2 + {SPR_BAL2,32770,6,NULL,S_RBALLX2,0,0}, // S_RBALLX1 + {SPR_BAL2,32771,6,NULL,S_RBALLX3,0,0}, // S_RBALLX2 + {SPR_BAL2,32772,6,NULL,S_NULL,0,0}, // S_RBALLX3 + {SPR_PLSS,32768,6,NULL,S_PLASBALL2,0,0}, // S_PLASBALL + {SPR_PLSS,32769,6,NULL,S_PLASBALL,0,0}, // S_PLASBALL2 + {SPR_PLSE,32768,4,NULL,S_PLASEXP2,0,0}, // S_PLASEXP + {SPR_PLSE,32769,4,NULL,S_PLASEXP3,0,0}, // S_PLASEXP2 + {SPR_PLSE,32770,4,NULL,S_PLASEXP4,0,0}, // S_PLASEXP3 + {SPR_PLSE,32771,4,NULL,S_PLASEXP5,0,0}, // S_PLASEXP4 + {SPR_PLSE,32772,4,NULL,S_NULL,0,0}, // S_PLASEXP5 + {SPR_MISL,32768,1,NULL,S_ROCKET,0,0}, // S_ROCKET + {SPR_BFS1,32768,4,NULL,S_BFGSHOT2,0,0}, // S_BFGSHOT + {SPR_BFS1,32769,4,NULL,S_BFGSHOT,0,0}, // S_BFGSHOT2 + {SPR_BFE1,32768,8,NULL,S_BFGLAND2,0,0}, // S_BFGLAND + {SPR_BFE1,32769,8,NULL,S_BFGLAND3,0,0}, // S_BFGLAND2 + {SPR_BFE1,32770,8,A_BFGSpray,S_BFGLAND4,0,0}, // S_BFGLAND3 + {SPR_BFE1,32771,8,NULL,S_BFGLAND5,0,0}, // S_BFGLAND4 + {SPR_BFE1,32772,8,NULL,S_BFGLAND6,0,0}, // S_BFGLAND5 + {SPR_BFE1,32773,8,NULL,S_NULL,0,0}, // S_BFGLAND6 + {SPR_BFE2,32768,8,NULL,S_BFGEXP2,0,0}, // S_BFGEXP + {SPR_BFE2,32769,8,NULL,S_BFGEXP3,0,0}, // S_BFGEXP2 + {SPR_BFE2,32770,8,NULL,S_BFGEXP4,0,0}, // S_BFGEXP3 + {SPR_BFE2,32771,8,NULL,S_NULL,0,0}, // S_BFGEXP4 + {SPR_MISL,32769,8,A_Explode,S_EXPLODE2,0,0}, // S_EXPLODE1 + {SPR_MISL,32770,6,NULL,S_EXPLODE3,0,0}, // S_EXPLODE2 + {SPR_MISL,32771,4,NULL,S_NULL,0,0}, // S_EXPLODE3 + {SPR_TFOG,32768,6,NULL,S_TFOG01,0,0}, // S_TFOG + {SPR_TFOG,32769,6,NULL,S_TFOG02,0,0}, // S_TFOG01 + {SPR_TFOG,32768,6,NULL,S_TFOG2,0,0}, // S_TFOG02 + {SPR_TFOG,32769,6,NULL,S_TFOG3,0,0}, // S_TFOG2 + {SPR_TFOG,32770,6,NULL,S_TFOG4,0,0}, // S_TFOG3 + {SPR_TFOG,32771,6,NULL,S_TFOG5,0,0}, // S_TFOG4 + {SPR_TFOG,32772,6,NULL,S_TFOG6,0,0}, // S_TFOG5 + {SPR_TFOG,32773,6,NULL,S_TFOG7,0,0}, // S_TFOG6 + {SPR_TFOG,32774,6,NULL,S_TFOG8,0,0}, // S_TFOG7 + {SPR_TFOG,32775,6,NULL,S_TFOG9,0,0}, // S_TFOG8 + {SPR_TFOG,32776,6,NULL,S_TFOG10,0,0}, // S_TFOG9 + {SPR_TFOG,32777,6,NULL,S_NULL,0,0}, // S_TFOG10 + {SPR_IFOG,32768,6,NULL,S_IFOG01,0,0}, // S_IFOG + {SPR_IFOG,32769,6,NULL,S_IFOG02,0,0}, // S_IFOG01 + {SPR_IFOG,32768,6,NULL,S_IFOG2,0,0}, // S_IFOG02 + {SPR_IFOG,32769,6,NULL,S_IFOG3,0,0}, // S_IFOG2 + {SPR_IFOG,32770,6,NULL,S_IFOG4,0,0}, // S_IFOG3 + {SPR_IFOG,32771,6,NULL,S_IFOG5,0,0}, // S_IFOG4 + {SPR_IFOG,32772,6,NULL,S_NULL,0,0}, // S_IFOG5 + {SPR_PLAY,0,-1,NULL,S_NULL,0,0}, // S_PLAY + {SPR_PLAY,0,4,NULL,S_PLAY_RUN2,0,0}, // S_PLAY_RUN1 + {SPR_PLAY,1,4,NULL,S_PLAY_RUN3,0,0}, // S_PLAY_RUN2 + {SPR_PLAY,2,4,NULL,S_PLAY_RUN4,0,0}, // S_PLAY_RUN3 + {SPR_PLAY,3,4,NULL,S_PLAY_RUN1,0,0}, // S_PLAY_RUN4 + {SPR_PLAY,4,12,NULL,S_PLAY,0,0}, // S_PLAY_ATK1 + {SPR_PLAY,32773,6,NULL,S_PLAY_ATK1,0,0}, // S_PLAY_ATK2 + {SPR_PLAY,6,4,NULL,S_PLAY_PAIN2,0,0}, // S_PLAY_PAIN + {SPR_PLAY,6,4,A_Pain,S_PLAY,0,0}, // S_PLAY_PAIN2 + {SPR_PLAY,7,10,NULL,S_PLAY_DIE2,0,0}, // S_PLAY_DIE1 + {SPR_PLAY,8,10,A_PlayerScream,S_PLAY_DIE3,0,0}, // S_PLAY_DIE2 + {SPR_PLAY,9,10,A_Fall,S_PLAY_DIE4,0,0}, // S_PLAY_DIE3 + {SPR_PLAY,10,10,NULL,S_PLAY_DIE5,0,0}, // S_PLAY_DIE4 + {SPR_PLAY,11,10,NULL,S_PLAY_DIE6,0,0}, // S_PLAY_DIE5 + {SPR_PLAY,12,10,NULL,S_PLAY_DIE7,0,0}, // S_PLAY_DIE6 + {SPR_PLAY,13,-1,NULL,S_NULL,0,0}, // S_PLAY_DIE7 + {SPR_PLAY,14,5,NULL,S_PLAY_XDIE2,0,0}, // S_PLAY_XDIE1 + {SPR_PLAY,15,5,A_XScream,S_PLAY_XDIE3,0,0}, // S_PLAY_XDIE2 + {SPR_PLAY,16,5,A_Fall,S_PLAY_XDIE4,0,0}, // S_PLAY_XDIE3 + {SPR_PLAY,17,5,NULL,S_PLAY_XDIE5,0,0}, // S_PLAY_XDIE4 + {SPR_PLAY,18,5,NULL,S_PLAY_XDIE6,0,0}, // S_PLAY_XDIE5 + {SPR_PLAY,19,5,NULL,S_PLAY_XDIE7,0,0}, // S_PLAY_XDIE6 + {SPR_PLAY,20,5,NULL,S_PLAY_XDIE8,0,0}, // S_PLAY_XDIE7 + {SPR_PLAY,21,5,NULL,S_PLAY_XDIE9,0,0}, // S_PLAY_XDIE8 + {SPR_PLAY,22,-1,NULL,S_NULL,0,0}, // S_PLAY_XDIE9 + {SPR_POSS,0,10,A_Look,S_POSS_STND2,0,0}, // S_POSS_STND + {SPR_POSS,1,10,A_Look,S_POSS_STND,0,0}, // S_POSS_STND2 + {SPR_POSS,0,4,A_Chase,S_POSS_RUN2,0,0}, // S_POSS_RUN1 + {SPR_POSS,0,4,A_Chase,S_POSS_RUN3,0,0}, // S_POSS_RUN2 + {SPR_POSS,1,4,A_Chase,S_POSS_RUN4,0,0}, // S_POSS_RUN3 + {SPR_POSS,1,4,A_Chase,S_POSS_RUN5,0,0}, // S_POSS_RUN4 + {SPR_POSS,2,4,A_Chase,S_POSS_RUN6,0,0}, // S_POSS_RUN5 + {SPR_POSS,2,4,A_Chase,S_POSS_RUN7,0,0}, // S_POSS_RUN6 + {SPR_POSS,3,4,A_Chase,S_POSS_RUN8,0,0}, // S_POSS_RUN7 + {SPR_POSS,3,4,A_Chase,S_POSS_RUN1,0,0}, // S_POSS_RUN8 + {SPR_POSS,4,10,A_FaceTarget,S_POSS_ATK2,0,0}, // S_POSS_ATK1 + {SPR_POSS,5,8,A_PosAttack,S_POSS_ATK3,0,0}, // S_POSS_ATK2 + {SPR_POSS,4,8,NULL,S_POSS_RUN1,0,0}, // S_POSS_ATK3 + {SPR_POSS,6,3,NULL,S_POSS_PAIN2,0,0}, // S_POSS_PAIN + {SPR_POSS,6,3,A_Pain,S_POSS_RUN1,0,0}, // S_POSS_PAIN2 + {SPR_POSS,7,5,NULL,S_POSS_DIE2,0,0}, // S_POSS_DIE1 + {SPR_POSS,8,5,A_Scream,S_POSS_DIE3,0,0}, // S_POSS_DIE2 + {SPR_POSS,9,5,A_Fall,S_POSS_DIE4,0,0}, // S_POSS_DIE3 + {SPR_POSS,10,5,NULL,S_POSS_DIE5,0,0}, // S_POSS_DIE4 + {SPR_POSS,11,-1,NULL,S_NULL,0,0}, // S_POSS_DIE5 + {SPR_POSS,12,5,NULL,S_POSS_XDIE2,0,0}, // S_POSS_XDIE1 + {SPR_POSS,13,5,A_XScream,S_POSS_XDIE3,0,0}, // S_POSS_XDIE2 + {SPR_POSS,14,5,A_Fall,S_POSS_XDIE4,0,0}, // S_POSS_XDIE3 + {SPR_POSS,15,5,NULL,S_POSS_XDIE5,0,0}, // S_POSS_XDIE4 + {SPR_POSS,16,5,NULL,S_POSS_XDIE6,0,0}, // S_POSS_XDIE5 + {SPR_POSS,17,5,NULL,S_POSS_XDIE7,0,0}, // S_POSS_XDIE6 + {SPR_POSS,18,5,NULL,S_POSS_XDIE8,0,0}, // S_POSS_XDIE7 + {SPR_POSS,19,5,NULL,S_POSS_XDIE9,0,0}, // S_POSS_XDIE8 + {SPR_POSS,20,-1,NULL,S_NULL,0,0}, // S_POSS_XDIE9 + {SPR_POSS,10,5,NULL,S_POSS_RAISE2,0,0}, // S_POSS_RAISE1 + {SPR_POSS,9,5,NULL,S_POSS_RAISE3,0,0}, // S_POSS_RAISE2 + {SPR_POSS,8,5,NULL,S_POSS_RAISE4,0,0}, // S_POSS_RAISE3 + {SPR_POSS,7,5,NULL,S_POSS_RUN1,0,0}, // S_POSS_RAISE4 + {SPR_SPOS,0,10,A_Look,S_SPOS_STND2,0,0}, // S_SPOS_STND + {SPR_SPOS,1,10,A_Look,S_SPOS_STND,0,0}, // S_SPOS_STND2 + {SPR_SPOS,0,3,A_Chase,S_SPOS_RUN2,0,0}, // S_SPOS_RUN1 + {SPR_SPOS,0,3,A_Chase,S_SPOS_RUN3,0,0}, // S_SPOS_RUN2 + {SPR_SPOS,1,3,A_Chase,S_SPOS_RUN4,0,0}, // S_SPOS_RUN3 + {SPR_SPOS,1,3,A_Chase,S_SPOS_RUN5,0,0}, // S_SPOS_RUN4 + {SPR_SPOS,2,3,A_Chase,S_SPOS_RUN6,0,0}, // S_SPOS_RUN5 + {SPR_SPOS,2,3,A_Chase,S_SPOS_RUN7,0,0}, // S_SPOS_RUN6 + {SPR_SPOS,3,3,A_Chase,S_SPOS_RUN8,0,0}, // S_SPOS_RUN7 + {SPR_SPOS,3,3,A_Chase,S_SPOS_RUN1,0,0}, // S_SPOS_RUN8 + {SPR_SPOS,4,10,A_FaceTarget,S_SPOS_ATK2,0,0}, // S_SPOS_ATK1 + {SPR_SPOS,32773,10,A_SPosAttack,S_SPOS_ATK3,0,0}, // S_SPOS_ATK2 + {SPR_SPOS,4,10,NULL,S_SPOS_RUN1,0,0}, // S_SPOS_ATK3 + {SPR_SPOS,6,3,NULL,S_SPOS_PAIN2,0,0}, // S_SPOS_PAIN + {SPR_SPOS,6,3,A_Pain,S_SPOS_RUN1,0,0}, // S_SPOS_PAIN2 + {SPR_SPOS,7,5,NULL,S_SPOS_DIE2,0,0}, // S_SPOS_DIE1 + {SPR_SPOS,8,5,A_Scream,S_SPOS_DIE3,0,0}, // S_SPOS_DIE2 + {SPR_SPOS,9,5,A_Fall,S_SPOS_DIE4,0,0}, // S_SPOS_DIE3 + {SPR_SPOS,10,5,NULL,S_SPOS_DIE5,0,0}, // S_SPOS_DIE4 + {SPR_SPOS,11,-1,NULL,S_NULL,0,0}, // S_SPOS_DIE5 + {SPR_SPOS,12,5,NULL,S_SPOS_XDIE2,0,0}, // S_SPOS_XDIE1 + {SPR_SPOS,13,5,A_XScream,S_SPOS_XDIE3,0,0}, // S_SPOS_XDIE2 + {SPR_SPOS,14,5,A_Fall,S_SPOS_XDIE4,0,0}, // S_SPOS_XDIE3 + {SPR_SPOS,15,5,NULL,S_SPOS_XDIE5,0,0}, // S_SPOS_XDIE4 + {SPR_SPOS,16,5,NULL,S_SPOS_XDIE6,0,0}, // S_SPOS_XDIE5 + {SPR_SPOS,17,5,NULL,S_SPOS_XDIE7,0,0}, // S_SPOS_XDIE6 + {SPR_SPOS,18,5,NULL,S_SPOS_XDIE8,0,0}, // S_SPOS_XDIE7 + {SPR_SPOS,19,5,NULL,S_SPOS_XDIE9,0,0}, // S_SPOS_XDIE8 + {SPR_SPOS,20,-1,NULL,S_NULL,0,0}, // S_SPOS_XDIE9 + {SPR_SPOS,11,5,NULL,S_SPOS_RAISE2,0,0}, // S_SPOS_RAISE1 + {SPR_SPOS,10,5,NULL,S_SPOS_RAISE3,0,0}, // S_SPOS_RAISE2 + {SPR_SPOS,9,5,NULL,S_SPOS_RAISE4,0,0}, // S_SPOS_RAISE3 + {SPR_SPOS,8,5,NULL,S_SPOS_RAISE5,0,0}, // S_SPOS_RAISE4 + {SPR_SPOS,7,5,NULL,S_SPOS_RUN1,0,0}, // S_SPOS_RAISE5 + {SPR_VILE,0,10,A_Look,S_VILE_STND2,0,0}, // S_VILE_STND + {SPR_VILE,1,10,A_Look,S_VILE_STND,0,0}, // S_VILE_STND2 + {SPR_VILE,0,2,A_VileChase,S_VILE_RUN2,0,0}, // S_VILE_RUN1 + {SPR_VILE,0,2,A_VileChase,S_VILE_RUN3,0,0}, // S_VILE_RUN2 + {SPR_VILE,1,2,A_VileChase,S_VILE_RUN4,0,0}, // S_VILE_RUN3 + {SPR_VILE,1,2,A_VileChase,S_VILE_RUN5,0,0}, // S_VILE_RUN4 + {SPR_VILE,2,2,A_VileChase,S_VILE_RUN6,0,0}, // S_VILE_RUN5 + {SPR_VILE,2,2,A_VileChase,S_VILE_RUN7,0,0}, // S_VILE_RUN6 + {SPR_VILE,3,2,A_VileChase,S_VILE_RUN8,0,0}, // S_VILE_RUN7 + {SPR_VILE,3,2,A_VileChase,S_VILE_RUN9,0,0}, // S_VILE_RUN8 + {SPR_VILE,4,2,A_VileChase,S_VILE_RUN10,0,0}, // S_VILE_RUN9 + {SPR_VILE,4,2,A_VileChase,S_VILE_RUN11,0,0}, // S_VILE_RUN10 + {SPR_VILE,5,2,A_VileChase,S_VILE_RUN12,0,0}, // S_VILE_RUN11 + {SPR_VILE,5,2,A_VileChase,S_VILE_RUN1,0,0}, // S_VILE_RUN12 + {SPR_VILE,32774,0,A_VileStart,S_VILE_ATK2,0,0}, // S_VILE_ATK1 + {SPR_VILE,32774,10,A_FaceTarget,S_VILE_ATK3,0,0}, // S_VILE_ATK2 + {SPR_VILE,32775,8,A_VileTarget,S_VILE_ATK4,0,0}, // S_VILE_ATK3 + {SPR_VILE,32776,8,A_FaceTarget,S_VILE_ATK5,0,0}, // S_VILE_ATK4 + {SPR_VILE,32777,8,A_FaceTarget,S_VILE_ATK6,0,0}, // S_VILE_ATK5 + {SPR_VILE,32778,8,A_FaceTarget,S_VILE_ATK7,0,0}, // S_VILE_ATK6 + {SPR_VILE,32779,8,A_FaceTarget,S_VILE_ATK8,0,0}, // S_VILE_ATK7 + {SPR_VILE,32780,8,A_FaceTarget,S_VILE_ATK9,0,0}, // S_VILE_ATK8 + {SPR_VILE,32781,8,A_FaceTarget,S_VILE_ATK10,0,0}, // S_VILE_ATK9 + {SPR_VILE,32782,8,A_VileAttack,S_VILE_ATK11,0,0}, // S_VILE_ATK10 + {SPR_VILE,32783,20,NULL,S_VILE_RUN1,0,0}, // S_VILE_ATK11 + {SPR_VILE,32794,10,NULL,S_VILE_HEAL2,0,0}, // S_VILE_HEAL1 + {SPR_VILE,32795,10,NULL,S_VILE_HEAL3,0,0}, // S_VILE_HEAL2 + {SPR_VILE,32796,10,NULL,S_VILE_RUN1,0,0}, // S_VILE_HEAL3 + {SPR_VILE,16,5,NULL,S_VILE_PAIN2,0,0}, // S_VILE_PAIN + {SPR_VILE,16,5,A_Pain,S_VILE_RUN1,0,0}, // S_VILE_PAIN2 + {SPR_VILE,16,7,NULL,S_VILE_DIE2,0,0}, // S_VILE_DIE1 + {SPR_VILE,17,7,A_Scream,S_VILE_DIE3,0,0}, // S_VILE_DIE2 + {SPR_VILE,18,7,A_Fall,S_VILE_DIE4,0,0}, // S_VILE_DIE3 + {SPR_VILE,19,7,NULL,S_VILE_DIE5,0,0}, // S_VILE_DIE4 + {SPR_VILE,20,7,NULL,S_VILE_DIE6,0,0}, // S_VILE_DIE5 + {SPR_VILE,21,7,NULL,S_VILE_DIE7,0,0}, // S_VILE_DIE6 + {SPR_VILE,22,7,NULL,S_VILE_DIE8,0,0}, // S_VILE_DIE7 + {SPR_VILE,23,5,NULL,S_VILE_DIE9,0,0}, // S_VILE_DIE8 + {SPR_VILE,24,5,NULL,S_VILE_DIE10,0,0}, // S_VILE_DIE9 + {SPR_VILE,25,-1,NULL,S_NULL,0,0}, // S_VILE_DIE10 + {SPR_FIRE,32768,2,A_StartFire,S_FIRE2,0,0}, // S_FIRE1 + {SPR_FIRE,32769,2,A_Fire,S_FIRE3,0,0}, // S_FIRE2 + {SPR_FIRE,32768,2,A_Fire,S_FIRE4,0,0}, // S_FIRE3 + {SPR_FIRE,32769,2,A_Fire,S_FIRE5,0,0}, // S_FIRE4 + {SPR_FIRE,32770,2,A_FireCrackle,S_FIRE6,0,0}, // S_FIRE5 + {SPR_FIRE,32769,2,A_Fire,S_FIRE7,0,0}, // S_FIRE6 + {SPR_FIRE,32770,2,A_Fire,S_FIRE8,0,0}, // S_FIRE7 + {SPR_FIRE,32769,2,A_Fire,S_FIRE9,0,0}, // S_FIRE8 + {SPR_FIRE,32770,2,A_Fire,S_FIRE10,0,0}, // S_FIRE9 + {SPR_FIRE,32771,2,A_Fire,S_FIRE11,0,0}, // S_FIRE10 + {SPR_FIRE,32770,2,A_Fire,S_FIRE12,0,0}, // S_FIRE11 + {SPR_FIRE,32771,2,A_Fire,S_FIRE13,0,0}, // S_FIRE12 + {SPR_FIRE,32770,2,A_Fire,S_FIRE14,0,0}, // S_FIRE13 + {SPR_FIRE,32771,2,A_Fire,S_FIRE15,0,0}, // S_FIRE14 + {SPR_FIRE,32772,2,A_Fire,S_FIRE16,0,0}, // S_FIRE15 + {SPR_FIRE,32771,2,A_Fire,S_FIRE17,0,0}, // S_FIRE16 + {SPR_FIRE,32772,2,A_Fire,S_FIRE18,0,0}, // S_FIRE17 + {SPR_FIRE,32771,2,A_Fire,S_FIRE19,0,0}, // S_FIRE18 + {SPR_FIRE,32772,2,A_FireCrackle,S_FIRE20,0,0}, // S_FIRE19 + {SPR_FIRE,32773,2,A_Fire,S_FIRE21,0,0}, // S_FIRE20 + {SPR_FIRE,32772,2,A_Fire,S_FIRE22,0,0}, // S_FIRE21 + {SPR_FIRE,32773,2,A_Fire,S_FIRE23,0,0}, // S_FIRE22 + {SPR_FIRE,32772,2,A_Fire,S_FIRE24,0,0}, // S_FIRE23 + {SPR_FIRE,32773,2,A_Fire,S_FIRE25,0,0}, // S_FIRE24 + {SPR_FIRE,32774,2,A_Fire,S_FIRE26,0,0}, // S_FIRE25 + {SPR_FIRE,32775,2,A_Fire,S_FIRE27,0,0}, // S_FIRE26 + {SPR_FIRE,32774,2,A_Fire,S_FIRE28,0,0}, // S_FIRE27 + {SPR_FIRE,32775,2,A_Fire,S_FIRE29,0,0}, // S_FIRE28 + {SPR_FIRE,32774,2,A_Fire,S_FIRE30,0,0}, // S_FIRE29 + {SPR_FIRE,32775,2,A_Fire,S_NULL,0,0}, // S_FIRE30 + {SPR_PUFF,1,4,NULL,S_SMOKE2,0,0}, // S_SMOKE1 + {SPR_PUFF,2,4,NULL,S_SMOKE3,0,0}, // S_SMOKE2 + {SPR_PUFF,1,4,NULL,S_SMOKE4,0,0}, // S_SMOKE3 + {SPR_PUFF,2,4,NULL,S_SMOKE5,0,0}, // S_SMOKE4 + {SPR_PUFF,3,4,NULL,S_NULL,0,0}, // S_SMOKE5 + {SPR_FATB,32768,2,A_Tracer,S_TRACER2,0,0}, // S_TRACER + {SPR_FATB,32769,2,A_Tracer,S_TRACER,0,0}, // S_TRACER2 + {SPR_FBXP,32768,8,NULL,S_TRACEEXP2,0,0}, // S_TRACEEXP1 + {SPR_FBXP,32769,6,NULL,S_TRACEEXP3,0,0}, // S_TRACEEXP2 + {SPR_FBXP,32770,4,NULL,S_NULL,0,0}, // S_TRACEEXP3 + {SPR_SKEL,0,10,A_Look,S_SKEL_STND2,0,0}, // S_SKEL_STND + {SPR_SKEL,1,10,A_Look,S_SKEL_STND,0,0}, // S_SKEL_STND2 + {SPR_SKEL,0,2,A_Chase,S_SKEL_RUN2,0,0}, // S_SKEL_RUN1 + {SPR_SKEL,0,2,A_Chase,S_SKEL_RUN3,0,0}, // S_SKEL_RUN2 + {SPR_SKEL,1,2,A_Chase,S_SKEL_RUN4,0,0}, // S_SKEL_RUN3 + {SPR_SKEL,1,2,A_Chase,S_SKEL_RUN5,0,0}, // S_SKEL_RUN4 + {SPR_SKEL,2,2,A_Chase,S_SKEL_RUN6,0,0}, // S_SKEL_RUN5 + {SPR_SKEL,2,2,A_Chase,S_SKEL_RUN7,0,0}, // S_SKEL_RUN6 + {SPR_SKEL,3,2,A_Chase,S_SKEL_RUN8,0,0}, // S_SKEL_RUN7 + {SPR_SKEL,3,2,A_Chase,S_SKEL_RUN9,0,0}, // S_SKEL_RUN8 + {SPR_SKEL,4,2,A_Chase,S_SKEL_RUN10,0,0}, // S_SKEL_RUN9 + {SPR_SKEL,4,2,A_Chase,S_SKEL_RUN11,0,0}, // S_SKEL_RUN10 + {SPR_SKEL,5,2,A_Chase,S_SKEL_RUN12,0,0}, // S_SKEL_RUN11 + {SPR_SKEL,5,2,A_Chase,S_SKEL_RUN1,0,0}, // S_SKEL_RUN12 + {SPR_SKEL,6,0,A_FaceTarget,S_SKEL_FIST2,0,0}, // S_SKEL_FIST1 + {SPR_SKEL,6,6,A_SkelWhoosh,S_SKEL_FIST3,0,0}, // S_SKEL_FIST2 + {SPR_SKEL,7,6,A_FaceTarget,S_SKEL_FIST4,0,0}, // S_SKEL_FIST3 + {SPR_SKEL,8,6,A_SkelFist,S_SKEL_RUN1,0,0}, // S_SKEL_FIST4 + {SPR_SKEL,32777,0,A_FaceTarget,S_SKEL_MISS2,0,0}, // S_SKEL_MISS1 + {SPR_SKEL,32777,10,A_FaceTarget,S_SKEL_MISS3,0,0}, // S_SKEL_MISS2 + {SPR_SKEL,10,10,A_SkelMissile,S_SKEL_MISS4,0,0}, // S_SKEL_MISS3 + {SPR_SKEL,10,10,A_FaceTarget,S_SKEL_RUN1,0,0}, // S_SKEL_MISS4 + {SPR_SKEL,11,5,NULL,S_SKEL_PAIN2,0,0}, // S_SKEL_PAIN + {SPR_SKEL,11,5,A_Pain,S_SKEL_RUN1,0,0}, // S_SKEL_PAIN2 + {SPR_SKEL,11,7,NULL,S_SKEL_DIE2,0,0}, // S_SKEL_DIE1 + {SPR_SKEL,12,7,NULL,S_SKEL_DIE3,0,0}, // S_SKEL_DIE2 + {SPR_SKEL,13,7,A_Scream,S_SKEL_DIE4,0,0}, // S_SKEL_DIE3 + {SPR_SKEL,14,7,A_Fall,S_SKEL_DIE5,0,0}, // S_SKEL_DIE4 + {SPR_SKEL,15,7,NULL,S_SKEL_DIE6,0,0}, // S_SKEL_DIE5 + {SPR_SKEL,16,-1,NULL,S_NULL,0,0}, // S_SKEL_DIE6 + {SPR_SKEL,16,5,NULL,S_SKEL_RAISE2,0,0}, // S_SKEL_RAISE1 + {SPR_SKEL,15,5,NULL,S_SKEL_RAISE3,0,0}, // S_SKEL_RAISE2 + {SPR_SKEL,14,5,NULL,S_SKEL_RAISE4,0,0}, // S_SKEL_RAISE3 + {SPR_SKEL,13,5,NULL,S_SKEL_RAISE5,0,0}, // S_SKEL_RAISE4 + {SPR_SKEL,12,5,NULL,S_SKEL_RAISE6,0,0}, // S_SKEL_RAISE5 + {SPR_SKEL,11,5,NULL,S_SKEL_RUN1,0,0}, // S_SKEL_RAISE6 + {SPR_MANF,32768,4,NULL,S_FATSHOT2,0,0}, // S_FATSHOT1 + {SPR_MANF,32769,4,NULL,S_FATSHOT1,0,0}, // S_FATSHOT2 + {SPR_MISL,32769,8,NULL,S_FATSHOTX2,0,0}, // S_FATSHOTX1 + {SPR_MISL,32770,6,NULL,S_FATSHOTX3,0,0}, // S_FATSHOTX2 + {SPR_MISL,32771,4,NULL,S_NULL,0,0}, // S_FATSHOTX3 + {SPR_FATT,0,15,A_Look,S_FATT_STND2,0,0}, // S_FATT_STND + {SPR_FATT,1,15,A_Look,S_FATT_STND,0,0}, // S_FATT_STND2 + {SPR_FATT,0,4,A_Chase,S_FATT_RUN2,0,0}, // S_FATT_RUN1 + {SPR_FATT,0,4,A_Chase,S_FATT_RUN3,0,0}, // S_FATT_RUN2 + {SPR_FATT,1,4,A_Chase,S_FATT_RUN4,0,0}, // S_FATT_RUN3 + {SPR_FATT,1,4,A_Chase,S_FATT_RUN5,0,0}, // S_FATT_RUN4 + {SPR_FATT,2,4,A_Chase,S_FATT_RUN6,0,0}, // S_FATT_RUN5 + {SPR_FATT,2,4,A_Chase,S_FATT_RUN7,0,0}, // S_FATT_RUN6 + {SPR_FATT,3,4,A_Chase,S_FATT_RUN8,0,0}, // S_FATT_RUN7 + {SPR_FATT,3,4,A_Chase,S_FATT_RUN9,0,0}, // S_FATT_RUN8 + {SPR_FATT,4,4,A_Chase,S_FATT_RUN10,0,0}, // S_FATT_RUN9 + {SPR_FATT,4,4,A_Chase,S_FATT_RUN11,0,0}, // S_FATT_RUN10 + {SPR_FATT,5,4,A_Chase,S_FATT_RUN12,0,0}, // S_FATT_RUN11 + {SPR_FATT,5,4,A_Chase,S_FATT_RUN1,0,0}, // S_FATT_RUN12 + {SPR_FATT,6,20,A_FatRaise,S_FATT_ATK2,0,0}, // S_FATT_ATK1 + {SPR_FATT,32775,10,A_FatAttack1,S_FATT_ATK3,0,0}, // S_FATT_ATK2 + {SPR_FATT,8,5,A_FaceTarget,S_FATT_ATK4,0,0}, // S_FATT_ATK3 + {SPR_FATT,6,5,A_FaceTarget,S_FATT_ATK5,0,0}, // S_FATT_ATK4 + {SPR_FATT,32775,10,A_FatAttack2,S_FATT_ATK6,0,0}, // S_FATT_ATK5 + {SPR_FATT,8,5,A_FaceTarget,S_FATT_ATK7,0,0}, // S_FATT_ATK6 + {SPR_FATT,6,5,A_FaceTarget,S_FATT_ATK8,0,0}, // S_FATT_ATK7 + {SPR_FATT,32775,10,A_FatAttack3,S_FATT_ATK9,0,0}, // S_FATT_ATK8 + {SPR_FATT,8,5,A_FaceTarget,S_FATT_ATK10,0,0}, // S_FATT_ATK9 + {SPR_FATT,6,5,A_FaceTarget,S_FATT_RUN1,0,0}, // S_FATT_ATK10 + {SPR_FATT,9,3,NULL,S_FATT_PAIN2,0,0}, // S_FATT_PAIN + {SPR_FATT,9,3,A_Pain,S_FATT_RUN1,0,0}, // S_FATT_PAIN2 + {SPR_FATT,10,6,NULL,S_FATT_DIE2,0,0}, // S_FATT_DIE1 + {SPR_FATT,11,6,A_Scream,S_FATT_DIE3,0,0}, // S_FATT_DIE2 + {SPR_FATT,12,6,A_Fall,S_FATT_DIE4,0,0}, // S_FATT_DIE3 + {SPR_FATT,13,6,NULL,S_FATT_DIE5,0,0}, // S_FATT_DIE4 + {SPR_FATT,14,6,NULL,S_FATT_DIE6,0,0}, // S_FATT_DIE5 + {SPR_FATT,15,6,NULL,S_FATT_DIE7,0,0}, // S_FATT_DIE6 + {SPR_FATT,16,6,NULL,S_FATT_DIE8,0,0}, // S_FATT_DIE7 + {SPR_FATT,17,6,NULL,S_FATT_DIE9,0,0}, // S_FATT_DIE8 + {SPR_FATT,18,6,NULL,S_FATT_DIE10,0,0}, // S_FATT_DIE9 + {SPR_FATT,19,-1,A_BossDeath,S_NULL,0,0}, // S_FATT_DIE10 + {SPR_FATT,17,5,NULL,S_FATT_RAISE2,0,0}, // S_FATT_RAISE1 + {SPR_FATT,16,5,NULL,S_FATT_RAISE3,0,0}, // S_FATT_RAISE2 + {SPR_FATT,15,5,NULL,S_FATT_RAISE4,0,0}, // S_FATT_RAISE3 + {SPR_FATT,14,5,NULL,S_FATT_RAISE5,0,0}, // S_FATT_RAISE4 + {SPR_FATT,13,5,NULL,S_FATT_RAISE6,0,0}, // S_FATT_RAISE5 + {SPR_FATT,12,5,NULL,S_FATT_RAISE7,0,0}, // S_FATT_RAISE6 + {SPR_FATT,11,5,NULL,S_FATT_RAISE8,0,0}, // S_FATT_RAISE7 + {SPR_FATT,10,5,NULL,S_FATT_RUN1,0,0}, // S_FATT_RAISE8 + {SPR_CPOS,0,10,A_Look,S_CPOS_STND2,0,0}, // S_CPOS_STND + {SPR_CPOS,1,10,A_Look,S_CPOS_STND,0,0}, // S_CPOS_STND2 + {SPR_CPOS,0,3,A_Chase,S_CPOS_RUN2,0,0}, // S_CPOS_RUN1 + {SPR_CPOS,0,3,A_Chase,S_CPOS_RUN3,0,0}, // S_CPOS_RUN2 + {SPR_CPOS,1,3,A_Chase,S_CPOS_RUN4,0,0}, // S_CPOS_RUN3 + {SPR_CPOS,1,3,A_Chase,S_CPOS_RUN5,0,0}, // S_CPOS_RUN4 + {SPR_CPOS,2,3,A_Chase,S_CPOS_RUN6,0,0}, // S_CPOS_RUN5 + {SPR_CPOS,2,3,A_Chase,S_CPOS_RUN7,0,0}, // S_CPOS_RUN6 + {SPR_CPOS,3,3,A_Chase,S_CPOS_RUN8,0,0}, // S_CPOS_RUN7 + {SPR_CPOS,3,3,A_Chase,S_CPOS_RUN1,0,0}, // S_CPOS_RUN8 + {SPR_CPOS,4,10,A_FaceTarget,S_CPOS_ATK2,0,0}, // S_CPOS_ATK1 + {SPR_CPOS,32773,4,A_CPosAttack,S_CPOS_ATK3,0,0}, // S_CPOS_ATK2 + {SPR_CPOS,32772,4,A_CPosAttack,S_CPOS_ATK4,0,0}, // S_CPOS_ATK3 + {SPR_CPOS,5,1,A_CPosRefire,S_CPOS_ATK2,0,0}, // S_CPOS_ATK4 + {SPR_CPOS,6,3,NULL,S_CPOS_PAIN2,0,0}, // S_CPOS_PAIN + {SPR_CPOS,6,3,A_Pain,S_CPOS_RUN1,0,0}, // S_CPOS_PAIN2 + {SPR_CPOS,7,5,NULL,S_CPOS_DIE2,0,0}, // S_CPOS_DIE1 + {SPR_CPOS,8,5,A_Scream,S_CPOS_DIE3,0,0}, // S_CPOS_DIE2 + {SPR_CPOS,9,5,A_Fall,S_CPOS_DIE4,0,0}, // S_CPOS_DIE3 + {SPR_CPOS,10,5,NULL,S_CPOS_DIE5,0,0}, // S_CPOS_DIE4 + {SPR_CPOS,11,5,NULL,S_CPOS_DIE6,0,0}, // S_CPOS_DIE5 + {SPR_CPOS,12,5,NULL,S_CPOS_DIE7,0,0}, // S_CPOS_DIE6 + {SPR_CPOS,13,-1,NULL,S_NULL,0,0}, // S_CPOS_DIE7 + {SPR_CPOS,14,5,NULL,S_CPOS_XDIE2,0,0}, // S_CPOS_XDIE1 + {SPR_CPOS,15,5,A_XScream,S_CPOS_XDIE3,0,0}, // S_CPOS_XDIE2 + {SPR_CPOS,16,5,A_Fall,S_CPOS_XDIE4,0,0}, // S_CPOS_XDIE3 + {SPR_CPOS,17,5,NULL,S_CPOS_XDIE5,0,0}, // S_CPOS_XDIE4 + {SPR_CPOS,18,5,NULL,S_CPOS_XDIE6,0,0}, // S_CPOS_XDIE5 + {SPR_CPOS,19,-1,NULL,S_NULL,0,0}, // S_CPOS_XDIE6 + {SPR_CPOS,13,5,NULL,S_CPOS_RAISE2,0,0}, // S_CPOS_RAISE1 + {SPR_CPOS,12,5,NULL,S_CPOS_RAISE3,0,0}, // S_CPOS_RAISE2 + {SPR_CPOS,11,5,NULL,S_CPOS_RAISE4,0,0}, // S_CPOS_RAISE3 + {SPR_CPOS,10,5,NULL,S_CPOS_RAISE5,0,0}, // S_CPOS_RAISE4 + {SPR_CPOS,9,5,NULL,S_CPOS_RAISE6,0,0}, // S_CPOS_RAISE5 + {SPR_CPOS,8,5,NULL,S_CPOS_RAISE7,0,0}, // S_CPOS_RAISE6 + {SPR_CPOS,7,5,NULL,S_CPOS_RUN1,0,0}, // S_CPOS_RAISE7 + {SPR_TROO,0,10,A_Look,S_TROO_STND2,0,0}, // S_TROO_STND + {SPR_TROO,1,10,A_Look,S_TROO_STND,0,0}, // S_TROO_STND2 + {SPR_TROO,0,3,A_Chase,S_TROO_RUN2,0,0}, // S_TROO_RUN1 + {SPR_TROO,0,3,A_Chase,S_TROO_RUN3,0,0}, // S_TROO_RUN2 + {SPR_TROO,1,3,A_Chase,S_TROO_RUN4,0,0}, // S_TROO_RUN3 + {SPR_TROO,1,3,A_Chase,S_TROO_RUN5,0,0}, // S_TROO_RUN4 + {SPR_TROO,2,3,A_Chase,S_TROO_RUN6,0,0}, // S_TROO_RUN5 + {SPR_TROO,2,3,A_Chase,S_TROO_RUN7,0,0}, // S_TROO_RUN6 + {SPR_TROO,3,3,A_Chase,S_TROO_RUN8,0,0}, // S_TROO_RUN7 + {SPR_TROO,3,3,A_Chase,S_TROO_RUN1,0,0}, // S_TROO_RUN8 + {SPR_TROO,4,8,A_FaceTarget,S_TROO_ATK2,0,0}, // S_TROO_ATK1 + {SPR_TROO,5,8,A_FaceTarget,S_TROO_ATK3,0,0}, // S_TROO_ATK2 + {SPR_TROO,6,6,A_TroopAttack,S_TROO_RUN1,0,0}, // S_TROO_ATK3 + {SPR_TROO,7,2,NULL,S_TROO_PAIN2,0,0}, // S_TROO_PAIN + {SPR_TROO,7,2,A_Pain,S_TROO_RUN1,0,0}, // S_TROO_PAIN2 + {SPR_TROO,8,8,NULL,S_TROO_DIE2,0,0}, // S_TROO_DIE1 + {SPR_TROO,9,8,A_Scream,S_TROO_DIE3,0,0}, // S_TROO_DIE2 + {SPR_TROO,10,6,NULL,S_TROO_DIE4,0,0}, // S_TROO_DIE3 + {SPR_TROO,11,6,A_Fall,S_TROO_DIE5,0,0}, // S_TROO_DIE4 + {SPR_TROO,12,-1,NULL,S_NULL,0,0}, // S_TROO_DIE5 + {SPR_TROO,13,5,NULL,S_TROO_XDIE2,0,0}, // S_TROO_XDIE1 + {SPR_TROO,14,5,A_XScream,S_TROO_XDIE3,0,0}, // S_TROO_XDIE2 + {SPR_TROO,15,5,NULL,S_TROO_XDIE4,0,0}, // S_TROO_XDIE3 + {SPR_TROO,16,5,A_Fall,S_TROO_XDIE5,0,0}, // S_TROO_XDIE4 + {SPR_TROO,17,5,NULL,S_TROO_XDIE6,0,0}, // S_TROO_XDIE5 + {SPR_TROO,18,5,NULL,S_TROO_XDIE7,0,0}, // S_TROO_XDIE6 + {SPR_TROO,19,5,NULL,S_TROO_XDIE8,0,0}, // S_TROO_XDIE7 + {SPR_TROO,20,-1,NULL,S_NULL,0,0}, // S_TROO_XDIE8 + {SPR_TROO,12,8,NULL,S_TROO_RAISE2,0,0}, // S_TROO_RAISE1 + {SPR_TROO,11,8,NULL,S_TROO_RAISE3,0,0}, // S_TROO_RAISE2 + {SPR_TROO,10,6,NULL,S_TROO_RAISE4,0,0}, // S_TROO_RAISE3 + {SPR_TROO,9,6,NULL,S_TROO_RAISE5,0,0}, // S_TROO_RAISE4 + {SPR_TROO,8,6,NULL,S_TROO_RUN1,0,0}, // S_TROO_RAISE5 + {SPR_SARG,0,10,A_Look,S_SARG_STND2,0,0}, // S_SARG_STND + {SPR_SARG,1,10,A_Look,S_SARG_STND,0,0}, // S_SARG_STND2 + {SPR_SARG,0,2,A_Chase,S_SARG_RUN2,0,0}, // S_SARG_RUN1 + {SPR_SARG,0,2,A_Chase,S_SARG_RUN3,0,0}, // S_SARG_RUN2 + {SPR_SARG,1,2,A_Chase,S_SARG_RUN4,0,0}, // S_SARG_RUN3 + {SPR_SARG,1,2,A_Chase,S_SARG_RUN5,0,0}, // S_SARG_RUN4 + {SPR_SARG,2,2,A_Chase,S_SARG_RUN6,0,0}, // S_SARG_RUN5 + {SPR_SARG,2,2,A_Chase,S_SARG_RUN7,0,0}, // S_SARG_RUN6 + {SPR_SARG,3,2,A_Chase,S_SARG_RUN8,0,0}, // S_SARG_RUN7 + {SPR_SARG,3,2,A_Chase,S_SARG_RUN1,0,0}, // S_SARG_RUN8 + {SPR_SARG,4,8,A_FaceTarget,S_SARG_ATK2,0,0}, // S_SARG_ATK1 + {SPR_SARG,5,8,A_FaceTarget,S_SARG_ATK3,0,0}, // S_SARG_ATK2 + {SPR_SARG,6,8,A_SargAttack,S_SARG_RUN1,0,0}, // S_SARG_ATK3 + {SPR_SARG,7,2,NULL,S_SARG_PAIN2,0,0}, // S_SARG_PAIN + {SPR_SARG,7,2,A_Pain,S_SARG_RUN1,0,0}, // S_SARG_PAIN2 + {SPR_SARG,8,8,NULL,S_SARG_DIE2,0,0}, // S_SARG_DIE1 + {SPR_SARG,9,8,A_Scream,S_SARG_DIE3,0,0}, // S_SARG_DIE2 + {SPR_SARG,10,4,NULL,S_SARG_DIE4,0,0}, // S_SARG_DIE3 + {SPR_SARG,11,4,A_Fall,S_SARG_DIE5,0,0}, // S_SARG_DIE4 + {SPR_SARG,12,4,NULL,S_SARG_DIE6,0,0}, // S_SARG_DIE5 + {SPR_SARG,13,-1,NULL,S_NULL,0,0}, // S_SARG_DIE6 + {SPR_SARG,13,5,NULL,S_SARG_RAISE2,0,0}, // S_SARG_RAISE1 + {SPR_SARG,12,5,NULL,S_SARG_RAISE3,0,0}, // S_SARG_RAISE2 + {SPR_SARG,11,5,NULL,S_SARG_RAISE4,0,0}, // S_SARG_RAISE3 + {SPR_SARG,10,5,NULL,S_SARG_RAISE5,0,0}, // S_SARG_RAISE4 + {SPR_SARG,9,5,NULL,S_SARG_RAISE6,0,0}, // S_SARG_RAISE5 + {SPR_SARG,8,5,NULL,S_SARG_RUN1,0,0}, // S_SARG_RAISE6 + {SPR_HEAD,0,10,A_Look,S_HEAD_STND,0,0}, // S_HEAD_STND + {SPR_HEAD,0,3,A_Chase,S_HEAD_RUN1,0,0}, // S_HEAD_RUN1 + {SPR_HEAD,1,5,A_FaceTarget,S_HEAD_ATK2,0,0}, // S_HEAD_ATK1 + {SPR_HEAD,2,5,A_FaceTarget,S_HEAD_ATK3,0,0}, // S_HEAD_ATK2 + {SPR_HEAD,32771,5,A_HeadAttack,S_HEAD_RUN1,0,0}, // S_HEAD_ATK3 + {SPR_HEAD,4,3,NULL,S_HEAD_PAIN2,0,0}, // S_HEAD_PAIN + {SPR_HEAD,4,3,A_Pain,S_HEAD_PAIN3,0,0}, // S_HEAD_PAIN2 + {SPR_HEAD,5,6,NULL,S_HEAD_RUN1,0,0}, // S_HEAD_PAIN3 + {SPR_HEAD,6,8,NULL,S_HEAD_DIE2,0,0}, // S_HEAD_DIE1 + {SPR_HEAD,7,8,A_Scream,S_HEAD_DIE3,0,0}, // S_HEAD_DIE2 + {SPR_HEAD,8,8,NULL,S_HEAD_DIE4,0,0}, // S_HEAD_DIE3 + {SPR_HEAD,9,8,NULL,S_HEAD_DIE5,0,0}, // S_HEAD_DIE4 + {SPR_HEAD,10,8,A_Fall,S_HEAD_DIE6,0,0}, // S_HEAD_DIE5 + {SPR_HEAD,11,-1,NULL,S_NULL,0,0}, // S_HEAD_DIE6 + {SPR_HEAD,11,8,NULL,S_HEAD_RAISE2,0,0}, // S_HEAD_RAISE1 + {SPR_HEAD,10,8,NULL,S_HEAD_RAISE3,0,0}, // S_HEAD_RAISE2 + {SPR_HEAD,9,8,NULL,S_HEAD_RAISE4,0,0}, // S_HEAD_RAISE3 + {SPR_HEAD,8,8,NULL,S_HEAD_RAISE5,0,0}, // S_HEAD_RAISE4 + {SPR_HEAD,7,8,NULL,S_HEAD_RAISE6,0,0}, // S_HEAD_RAISE5 + {SPR_HEAD,6,8,NULL,S_HEAD_RUN1,0,0}, // S_HEAD_RAISE6 + {SPR_BAL7,32768,4,NULL,S_BRBALL2,0,0}, // S_BRBALL1 + {SPR_BAL7,32769,4,NULL,S_BRBALL1,0,0}, // S_BRBALL2 + {SPR_BAL7,32770,6,NULL,S_BRBALLX2,0,0}, // S_BRBALLX1 + {SPR_BAL7,32771,6,NULL,S_BRBALLX3,0,0}, // S_BRBALLX2 + {SPR_BAL7,32772,6,NULL,S_NULL,0,0}, // S_BRBALLX3 + {SPR_BOSS,0,10,A_Look,S_BOSS_STND2,0,0}, // S_BOSS_STND + {SPR_BOSS,1,10,A_Look,S_BOSS_STND,0,0}, // S_BOSS_STND2 + {SPR_BOSS,0,3,A_Chase,S_BOSS_RUN2,0,0}, // S_BOSS_RUN1 + {SPR_BOSS,0,3,A_Chase,S_BOSS_RUN3,0,0}, // S_BOSS_RUN2 + {SPR_BOSS,1,3,A_Chase,S_BOSS_RUN4,0,0}, // S_BOSS_RUN3 + {SPR_BOSS,1,3,A_Chase,S_BOSS_RUN5,0,0}, // S_BOSS_RUN4 + {SPR_BOSS,2,3,A_Chase,S_BOSS_RUN6,0,0}, // S_BOSS_RUN5 + {SPR_BOSS,2,3,A_Chase,S_BOSS_RUN7,0,0}, // S_BOSS_RUN6 + {SPR_BOSS,3,3,A_Chase,S_BOSS_RUN8,0,0}, // S_BOSS_RUN7 + {SPR_BOSS,3,3,A_Chase,S_BOSS_RUN1,0,0}, // S_BOSS_RUN8 + {SPR_BOSS,4,8,A_FaceTarget,S_BOSS_ATK2,0,0}, // S_BOSS_ATK1 + {SPR_BOSS,5,8,A_FaceTarget,S_BOSS_ATK3,0,0}, // S_BOSS_ATK2 + {SPR_BOSS,6,8,A_BruisAttack,S_BOSS_RUN1,0,0}, // S_BOSS_ATK3 + {SPR_BOSS,7,2,NULL,S_BOSS_PAIN2,0,0}, // S_BOSS_PAIN + {SPR_BOSS,7,2,A_Pain,S_BOSS_RUN1,0,0}, // S_BOSS_PAIN2 + {SPR_BOSS,8,8,NULL,S_BOSS_DIE2,0,0}, // S_BOSS_DIE1 + {SPR_BOSS,9,8,A_Scream,S_BOSS_DIE3,0,0}, // S_BOSS_DIE2 + {SPR_BOSS,10,8,NULL,S_BOSS_DIE4,0,0}, // S_BOSS_DIE3 + {SPR_BOSS,11,8,A_Fall,S_BOSS_DIE5,0,0}, // S_BOSS_DIE4 + {SPR_BOSS,12,8,NULL,S_BOSS_DIE6,0,0}, // S_BOSS_DIE5 + {SPR_BOSS,13,8,NULL,S_BOSS_DIE7,0,0}, // S_BOSS_DIE6 + {SPR_BOSS,14,-1,A_BossDeath,S_NULL,0,0}, // S_BOSS_DIE7 + {SPR_BOSS,14,8,NULL,S_BOSS_RAISE2,0,0}, // S_BOSS_RAISE1 + {SPR_BOSS,13,8,NULL,S_BOSS_RAISE3,0,0}, // S_BOSS_RAISE2 + {SPR_BOSS,12,8,NULL,S_BOSS_RAISE4,0,0}, // S_BOSS_RAISE3 + {SPR_BOSS,11,8,NULL,S_BOSS_RAISE5,0,0}, // S_BOSS_RAISE4 + {SPR_BOSS,10,8,NULL,S_BOSS_RAISE6,0,0}, // S_BOSS_RAISE5 + {SPR_BOSS,9,8,NULL,S_BOSS_RAISE7,0,0}, // S_BOSS_RAISE6 + {SPR_BOSS,8,8,NULL,S_BOSS_RUN1,0,0}, // S_BOSS_RAISE7 + {SPR_BOS2,0,10,A_Look,S_BOS2_STND2,0,0}, // S_BOS2_STND + {SPR_BOS2,1,10,A_Look,S_BOS2_STND,0,0}, // S_BOS2_STND2 + {SPR_BOS2,0,3,A_Chase,S_BOS2_RUN2,0,0}, // S_BOS2_RUN1 + {SPR_BOS2,0,3,A_Chase,S_BOS2_RUN3,0,0}, // S_BOS2_RUN2 + {SPR_BOS2,1,3,A_Chase,S_BOS2_RUN4,0,0}, // S_BOS2_RUN3 + {SPR_BOS2,1,3,A_Chase,S_BOS2_RUN5,0,0}, // S_BOS2_RUN4 + {SPR_BOS2,2,3,A_Chase,S_BOS2_RUN6,0,0}, // S_BOS2_RUN5 + {SPR_BOS2,2,3,A_Chase,S_BOS2_RUN7,0,0}, // S_BOS2_RUN6 + {SPR_BOS2,3,3,A_Chase,S_BOS2_RUN8,0,0}, // S_BOS2_RUN7 + {SPR_BOS2,3,3,A_Chase,S_BOS2_RUN1,0,0}, // S_BOS2_RUN8 + {SPR_BOS2,4,8,A_FaceTarget,S_BOS2_ATK2,0,0}, // S_BOS2_ATK1 + {SPR_BOS2,5,8,A_FaceTarget,S_BOS2_ATK3,0,0}, // S_BOS2_ATK2 + {SPR_BOS2,6,8,A_BruisAttack,S_BOS2_RUN1,0,0}, // S_BOS2_ATK3 + {SPR_BOS2,7,2,NULL,S_BOS2_PAIN2,0,0}, // S_BOS2_PAIN + {SPR_BOS2,7,2,A_Pain,S_BOS2_RUN1,0,0}, // S_BOS2_PAIN2 + {SPR_BOS2,8,8,NULL,S_BOS2_DIE2,0,0}, // S_BOS2_DIE1 + {SPR_BOS2,9,8,A_Scream,S_BOS2_DIE3,0,0}, // S_BOS2_DIE2 + {SPR_BOS2,10,8,NULL,S_BOS2_DIE4,0,0}, // S_BOS2_DIE3 + {SPR_BOS2,11,8,A_Fall,S_BOS2_DIE5,0,0}, // S_BOS2_DIE4 + {SPR_BOS2,12,8,NULL,S_BOS2_DIE6,0,0}, // S_BOS2_DIE5 + {SPR_BOS2,13,8,NULL,S_BOS2_DIE7,0,0}, // S_BOS2_DIE6 + {SPR_BOS2,14,-1,NULL,S_NULL,0,0}, // S_BOS2_DIE7 + {SPR_BOS2,14,8,NULL,S_BOS2_RAISE2,0,0}, // S_BOS2_RAISE1 + {SPR_BOS2,13,8,NULL,S_BOS2_RAISE3,0,0}, // S_BOS2_RAISE2 + {SPR_BOS2,12,8,NULL,S_BOS2_RAISE4,0,0}, // S_BOS2_RAISE3 + {SPR_BOS2,11,8,NULL,S_BOS2_RAISE5,0,0}, // S_BOS2_RAISE4 + {SPR_BOS2,10,8,NULL,S_BOS2_RAISE6,0,0}, // S_BOS2_RAISE5 + {SPR_BOS2,9,8,NULL,S_BOS2_RAISE7,0,0}, // S_BOS2_RAISE6 + {SPR_BOS2,8,8,NULL,S_BOS2_RUN1,0,0}, // S_BOS2_RAISE7 + {SPR_SKUL,32768,10,A_Look,S_SKULL_STND2,0,0}, // S_SKULL_STND + {SPR_SKUL,32769,10,A_Look,S_SKULL_STND,0,0}, // S_SKULL_STND2 + {SPR_SKUL,32768,6,A_Chase,S_SKULL_RUN2,0,0}, // S_SKULL_RUN1 + {SPR_SKUL,32769,6,A_Chase,S_SKULL_RUN1,0,0}, // S_SKULL_RUN2 + {SPR_SKUL,32770,10,A_FaceTarget,S_SKULL_ATK2,0,0}, // S_SKULL_ATK1 + {SPR_SKUL,32771,4,A_SkullAttack,S_SKULL_ATK3,0,0}, // S_SKULL_ATK2 + {SPR_SKUL,32770,4,NULL,S_SKULL_ATK4,0,0}, // S_SKULL_ATK3 + {SPR_SKUL,32771,4,NULL,S_SKULL_ATK3,0,0}, // S_SKULL_ATK4 + {SPR_SKUL,32772,3,NULL,S_SKULL_PAIN2,0,0}, // S_SKULL_PAIN + {SPR_SKUL,32772,3,A_Pain,S_SKULL_RUN1,0,0}, // S_SKULL_PAIN2 + {SPR_SKUL,32773,6,NULL,S_SKULL_DIE2,0,0}, // S_SKULL_DIE1 + {SPR_SKUL,32774,6,A_Scream,S_SKULL_DIE3,0,0}, // S_SKULL_DIE2 + {SPR_SKUL,32775,6,NULL,S_SKULL_DIE4,0,0}, // S_SKULL_DIE3 + {SPR_SKUL,32776,6,A_Fall,S_SKULL_DIE5,0,0}, // S_SKULL_DIE4 + {SPR_SKUL,9,6,NULL,S_SKULL_DIE6,0,0}, // S_SKULL_DIE5 + {SPR_SKUL,10,6,NULL,S_NULL,0,0}, // S_SKULL_DIE6 + {SPR_SPID,0,10,A_Look,S_SPID_STND2,0,0}, // S_SPID_STND + {SPR_SPID,1,10,A_Look,S_SPID_STND,0,0}, // S_SPID_STND2 + {SPR_SPID,0,3,A_Metal,S_SPID_RUN2,0,0}, // S_SPID_RUN1 + {SPR_SPID,0,3,A_Chase,S_SPID_RUN3,0,0}, // S_SPID_RUN2 + {SPR_SPID,1,3,A_Chase,S_SPID_RUN4,0,0}, // S_SPID_RUN3 + {SPR_SPID,1,3,A_Chase,S_SPID_RUN5,0,0}, // S_SPID_RUN4 + {SPR_SPID,2,3,A_Metal,S_SPID_RUN6,0,0}, // S_SPID_RUN5 + {SPR_SPID,2,3,A_Chase,S_SPID_RUN7,0,0}, // S_SPID_RUN6 + {SPR_SPID,3,3,A_Chase,S_SPID_RUN8,0,0}, // S_SPID_RUN7 + {SPR_SPID,3,3,A_Chase,S_SPID_RUN9,0,0}, // S_SPID_RUN8 + {SPR_SPID,4,3,A_Metal,S_SPID_RUN10,0,0}, // S_SPID_RUN9 + {SPR_SPID,4,3,A_Chase,S_SPID_RUN11,0,0}, // S_SPID_RUN10 + {SPR_SPID,5,3,A_Chase,S_SPID_RUN12,0,0}, // S_SPID_RUN11 + {SPR_SPID,5,3,A_Chase,S_SPID_RUN1,0,0}, // S_SPID_RUN12 + {SPR_SPID,32768,20,A_FaceTarget,S_SPID_ATK2,0,0}, // S_SPID_ATK1 + {SPR_SPID,32774,4,A_SPosAttack,S_SPID_ATK3,0,0}, // S_SPID_ATK2 + {SPR_SPID,32775,4,A_SPosAttack,S_SPID_ATK4,0,0}, // S_SPID_ATK3 + {SPR_SPID,32775,1,A_SpidRefire,S_SPID_ATK2,0,0}, // S_SPID_ATK4 + {SPR_SPID,8,3,NULL,S_SPID_PAIN2,0,0}, // S_SPID_PAIN + {SPR_SPID,8,3,A_Pain,S_SPID_RUN1,0,0}, // S_SPID_PAIN2 + {SPR_SPID,9,20,A_Scream,S_SPID_DIE2,0,0}, // S_SPID_DIE1 + {SPR_SPID,10,10,A_Fall,S_SPID_DIE3,0,0}, // S_SPID_DIE2 + {SPR_SPID,11,10,NULL,S_SPID_DIE4,0,0}, // S_SPID_DIE3 + {SPR_SPID,12,10,NULL,S_SPID_DIE5,0,0}, // S_SPID_DIE4 + {SPR_SPID,13,10,NULL,S_SPID_DIE6,0,0}, // S_SPID_DIE5 + {SPR_SPID,14,10,NULL,S_SPID_DIE7,0,0}, // S_SPID_DIE6 + {SPR_SPID,15,10,NULL,S_SPID_DIE8,0,0}, // S_SPID_DIE7 + {SPR_SPID,16,10,NULL,S_SPID_DIE9,0,0}, // S_SPID_DIE8 + {SPR_SPID,17,10,NULL,S_SPID_DIE10,0,0}, // S_SPID_DIE9 + {SPR_SPID,18,30,NULL,S_SPID_DIE11,0,0}, // S_SPID_DIE10 + {SPR_SPID,18,-1,A_BossDeath,S_NULL,0,0}, // S_SPID_DIE11 + {SPR_BSPI,0,10,A_Look,S_BSPI_STND2,0,0}, // S_BSPI_STND + {SPR_BSPI,1,10,A_Look,S_BSPI_STND,0,0}, // S_BSPI_STND2 + {SPR_BSPI,0,20,NULL,S_BSPI_RUN1,0,0}, // S_BSPI_SIGHT + {SPR_BSPI,0,3,A_BabyMetal,S_BSPI_RUN2,0,0}, // S_BSPI_RUN1 + {SPR_BSPI,0,3,A_Chase,S_BSPI_RUN3,0,0}, // S_BSPI_RUN2 + {SPR_BSPI,1,3,A_Chase,S_BSPI_RUN4,0,0}, // S_BSPI_RUN3 + {SPR_BSPI,1,3,A_Chase,S_BSPI_RUN5,0,0}, // S_BSPI_RUN4 + {SPR_BSPI,2,3,A_Chase,S_BSPI_RUN6,0,0}, // S_BSPI_RUN5 + {SPR_BSPI,2,3,A_Chase,S_BSPI_RUN7,0,0}, // S_BSPI_RUN6 + {SPR_BSPI,3,3,A_BabyMetal,S_BSPI_RUN8,0,0}, // S_BSPI_RUN7 + {SPR_BSPI,3,3,A_Chase,S_BSPI_RUN9,0,0}, // S_BSPI_RUN8 + {SPR_BSPI,4,3,A_Chase,S_BSPI_RUN10,0,0}, // S_BSPI_RUN9 + {SPR_BSPI,4,3,A_Chase,S_BSPI_RUN11,0,0}, // S_BSPI_RUN10 + {SPR_BSPI,5,3,A_Chase,S_BSPI_RUN12,0,0}, // S_BSPI_RUN11 + {SPR_BSPI,5,3,A_Chase,S_BSPI_RUN1,0,0}, // S_BSPI_RUN12 + {SPR_BSPI,32768,20,A_FaceTarget,S_BSPI_ATK2,0,0}, // S_BSPI_ATK1 + {SPR_BSPI,32774,4,A_BspiAttack,S_BSPI_ATK3,0,0}, // S_BSPI_ATK2 + {SPR_BSPI,32775,4,NULL,S_BSPI_ATK4,0,0}, // S_BSPI_ATK3 + {SPR_BSPI,32775,1,A_SpidRefire,S_BSPI_ATK2,0,0}, // S_BSPI_ATK4 + {SPR_BSPI,8,3,NULL,S_BSPI_PAIN2,0,0}, // S_BSPI_PAIN + {SPR_BSPI,8,3,A_Pain,S_BSPI_RUN1,0,0}, // S_BSPI_PAIN2 + {SPR_BSPI,9,20,A_Scream,S_BSPI_DIE2,0,0}, // S_BSPI_DIE1 + {SPR_BSPI,10,7,A_Fall,S_BSPI_DIE3,0,0}, // S_BSPI_DIE2 + {SPR_BSPI,11,7,NULL,S_BSPI_DIE4,0,0}, // S_BSPI_DIE3 + {SPR_BSPI,12,7,NULL,S_BSPI_DIE5,0,0}, // S_BSPI_DIE4 + {SPR_BSPI,13,7,NULL,S_BSPI_DIE6,0,0}, // S_BSPI_DIE5 + {SPR_BSPI,14,7,NULL,S_BSPI_DIE7,0,0}, // S_BSPI_DIE6 + {SPR_BSPI,15,-1,A_BossDeath,S_NULL,0,0}, // S_BSPI_DIE7 + {SPR_BSPI,15,5,NULL,S_BSPI_RAISE2,0,0}, // S_BSPI_RAISE1 + {SPR_BSPI,14,5,NULL,S_BSPI_RAISE3,0,0}, // S_BSPI_RAISE2 + {SPR_BSPI,13,5,NULL,S_BSPI_RAISE4,0,0}, // S_BSPI_RAISE3 + {SPR_BSPI,12,5,NULL,S_BSPI_RAISE5,0,0}, // S_BSPI_RAISE4 + {SPR_BSPI,11,5,NULL,S_BSPI_RAISE6,0,0}, // S_BSPI_RAISE5 + {SPR_BSPI,10,5,NULL,S_BSPI_RAISE7,0,0}, // S_BSPI_RAISE6 + {SPR_BSPI,9,5,NULL,S_BSPI_RUN1,0,0}, // S_BSPI_RAISE7 + {SPR_APLS,32768,5,NULL,S_ARACH_PLAZ2,0,0}, // S_ARACH_PLAZ + {SPR_APLS,32769,5,NULL,S_ARACH_PLAZ,0,0}, // S_ARACH_PLAZ2 + {SPR_APBX,32768,5,NULL,S_ARACH_PLEX2,0,0}, // S_ARACH_PLEX + {SPR_APBX,32769,5,NULL,S_ARACH_PLEX3,0,0}, // S_ARACH_PLEX2 + {SPR_APBX,32770,5,NULL,S_ARACH_PLEX4,0,0}, // S_ARACH_PLEX3 + {SPR_APBX,32771,5,NULL,S_ARACH_PLEX5,0,0}, // S_ARACH_PLEX4 + {SPR_APBX,32772,5,NULL,S_NULL,0,0}, // S_ARACH_PLEX5 + {SPR_CYBR,0,10,A_Look,S_CYBER_STND2,0,0}, // S_CYBER_STND + {SPR_CYBR,1,10,A_Look,S_CYBER_STND,0,0}, // S_CYBER_STND2 + {SPR_CYBR,0,3,A_Hoof,S_CYBER_RUN2,0,0}, // S_CYBER_RUN1 + {SPR_CYBR,0,3,A_Chase,S_CYBER_RUN3,0,0}, // S_CYBER_RUN2 + {SPR_CYBR,1,3,A_Chase,S_CYBER_RUN4,0,0}, // S_CYBER_RUN3 + {SPR_CYBR,1,3,A_Chase,S_CYBER_RUN5,0,0}, // S_CYBER_RUN4 + {SPR_CYBR,2,3,A_Chase,S_CYBER_RUN6,0,0}, // S_CYBER_RUN5 + {SPR_CYBR,2,3,A_Chase,S_CYBER_RUN7,0,0}, // S_CYBER_RUN6 + {SPR_CYBR,3,3,A_Metal,S_CYBER_RUN8,0,0}, // S_CYBER_RUN7 + {SPR_CYBR,3,3,A_Chase,S_CYBER_RUN1,0,0}, // S_CYBER_RUN8 + {SPR_CYBR,4,6,A_FaceTarget,S_CYBER_ATK2,0,0}, // S_CYBER_ATK1 + {SPR_CYBR,5,12,A_CyberAttack,S_CYBER_ATK3,0,0}, // S_CYBER_ATK2 + {SPR_CYBR,4,12,A_FaceTarget,S_CYBER_ATK4,0,0}, // S_CYBER_ATK3 + {SPR_CYBR,5,12,A_CyberAttack,S_CYBER_ATK5,0,0}, // S_CYBER_ATK4 + {SPR_CYBR,4,12,A_FaceTarget,S_CYBER_ATK6,0,0}, // S_CYBER_ATK5 + {SPR_CYBR,5,12,A_CyberAttack,S_CYBER_RUN1,0,0}, // S_CYBER_ATK6 + {SPR_CYBR,6,10,A_Pain,S_CYBER_RUN1,0,0}, // S_CYBER_PAIN + {SPR_CYBR,7,10,NULL,S_CYBER_DIE2,0,0}, // S_CYBER_DIE1 + {SPR_CYBR,8,10,A_Scream,S_CYBER_DIE3,0,0}, // S_CYBER_DIE2 + {SPR_CYBR,9,10,NULL,S_CYBER_DIE4,0,0}, // S_CYBER_DIE3 + {SPR_CYBR,10,10,NULL,S_CYBER_DIE5,0,0}, // S_CYBER_DIE4 + {SPR_CYBR,11,10,NULL,S_CYBER_DIE6,0,0}, // S_CYBER_DIE5 + {SPR_CYBR,12,10,A_Fall,S_CYBER_DIE7,0,0}, // S_CYBER_DIE6 + {SPR_CYBR,13,10,NULL,S_CYBER_DIE8,0,0}, // S_CYBER_DIE7 + {SPR_CYBR,14,10,NULL,S_CYBER_DIE9,0,0}, // S_CYBER_DIE8 + {SPR_CYBR,15,30,NULL,S_CYBER_DIE10,0,0}, // S_CYBER_DIE9 + {SPR_CYBR,15,-1,A_BossDeath,S_NULL,0,0}, // S_CYBER_DIE10 + {SPR_PAIN,0,10,A_Look,S_PAIN_STND,0,0}, // S_PAIN_STND + {SPR_PAIN,0,3,A_Chase,S_PAIN_RUN2,0,0}, // S_PAIN_RUN1 + {SPR_PAIN,0,3,A_Chase,S_PAIN_RUN3,0,0}, // S_PAIN_RUN2 + {SPR_PAIN,1,3,A_Chase,S_PAIN_RUN4,0,0}, // S_PAIN_RUN3 + {SPR_PAIN,1,3,A_Chase,S_PAIN_RUN5,0,0}, // S_PAIN_RUN4 + {SPR_PAIN,2,3,A_Chase,S_PAIN_RUN6,0,0}, // S_PAIN_RUN5 + {SPR_PAIN,2,3,A_Chase,S_PAIN_RUN1,0,0}, // S_PAIN_RUN6 + {SPR_PAIN,3,5,A_FaceTarget,S_PAIN_ATK2,0,0}, // S_PAIN_ATK1 + {SPR_PAIN,4,5,A_FaceTarget,S_PAIN_ATK3,0,0}, // S_PAIN_ATK2 + {SPR_PAIN,32773,5,A_FaceTarget,S_PAIN_ATK4,0,0}, // S_PAIN_ATK3 + {SPR_PAIN,32773,0,A_PainAttack,S_PAIN_RUN1,0,0}, // S_PAIN_ATK4 + {SPR_PAIN,6,6,NULL,S_PAIN_PAIN2,0,0}, // S_PAIN_PAIN + {SPR_PAIN,6,6,A_Pain,S_PAIN_RUN1,0,0}, // S_PAIN_PAIN2 + {SPR_PAIN,32775,8,NULL,S_PAIN_DIE2,0,0}, // S_PAIN_DIE1 + {SPR_PAIN,32776,8,A_Scream,S_PAIN_DIE3,0,0}, // S_PAIN_DIE2 + {SPR_PAIN,32777,8,NULL,S_PAIN_DIE4,0,0}, // S_PAIN_DIE3 + {SPR_PAIN,32778,8,NULL,S_PAIN_DIE5,0,0}, // S_PAIN_DIE4 + {SPR_PAIN,32779,8,A_PainDie,S_PAIN_DIE6,0,0}, // S_PAIN_DIE5 + {SPR_PAIN,32780,8,NULL,S_NULL,0,0}, // S_PAIN_DIE6 + {SPR_PAIN,12,8,NULL,S_PAIN_RAISE2,0,0}, // S_PAIN_RAISE1 + {SPR_PAIN,11,8,NULL,S_PAIN_RAISE3,0,0}, // S_PAIN_RAISE2 + {SPR_PAIN,10,8,NULL,S_PAIN_RAISE4,0,0}, // S_PAIN_RAISE3 + {SPR_PAIN,9,8,NULL,S_PAIN_RAISE5,0,0}, // S_PAIN_RAISE4 + {SPR_PAIN,8,8,NULL,S_PAIN_RAISE6,0,0}, // S_PAIN_RAISE5 + {SPR_PAIN,7,8,NULL,S_PAIN_RUN1,0,0}, // S_PAIN_RAISE6 + {SPR_SSWV,0,10,A_Look,S_SSWV_STND2,0,0}, // S_SSWV_STND + {SPR_SSWV,1,10,A_Look,S_SSWV_STND,0,0}, // S_SSWV_STND2 + {SPR_SSWV,0,3,A_Chase,S_SSWV_RUN2,0,0}, // S_SSWV_RUN1 + {SPR_SSWV,0,3,A_Chase,S_SSWV_RUN3,0,0}, // S_SSWV_RUN2 + {SPR_SSWV,1,3,A_Chase,S_SSWV_RUN4,0,0}, // S_SSWV_RUN3 + {SPR_SSWV,1,3,A_Chase,S_SSWV_RUN5,0,0}, // S_SSWV_RUN4 + {SPR_SSWV,2,3,A_Chase,S_SSWV_RUN6,0,0}, // S_SSWV_RUN5 + {SPR_SSWV,2,3,A_Chase,S_SSWV_RUN7,0,0}, // S_SSWV_RUN6 + {SPR_SSWV,3,3,A_Chase,S_SSWV_RUN8,0,0}, // S_SSWV_RUN7 + {SPR_SSWV,3,3,A_Chase,S_SSWV_RUN1,0,0}, // S_SSWV_RUN8 + {SPR_SSWV,4,10,A_FaceTarget,S_SSWV_ATK2,0,0}, // S_SSWV_ATK1 + {SPR_SSWV,5,10,A_FaceTarget,S_SSWV_ATK3,0,0}, // S_SSWV_ATK2 + {SPR_SSWV,32774,4,A_CPosAttack,S_SSWV_ATK4,0,0}, // S_SSWV_ATK3 + {SPR_SSWV,5,6,A_FaceTarget,S_SSWV_ATK5,0,0}, // S_SSWV_ATK4 + {SPR_SSWV,32774,4,A_CPosAttack,S_SSWV_ATK6,0,0}, // S_SSWV_ATK5 + {SPR_SSWV,5,1,A_CPosRefire,S_SSWV_ATK2,0,0}, // S_SSWV_ATK6 + {SPR_SSWV,7,3,NULL,S_SSWV_PAIN2,0,0}, // S_SSWV_PAIN + {SPR_SSWV,7,3,A_Pain,S_SSWV_RUN1,0,0}, // S_SSWV_PAIN2 + {SPR_SSWV,8,5,NULL,S_SSWV_DIE2,0,0}, // S_SSWV_DIE1 + {SPR_SSWV,9,5,A_Scream,S_SSWV_DIE3,0,0}, // S_SSWV_DIE2 + {SPR_SSWV,10,5,A_Fall,S_SSWV_DIE4,0,0}, // S_SSWV_DIE3 + {SPR_SSWV,11,5,NULL,S_SSWV_DIE5,0,0}, // S_SSWV_DIE4 + {SPR_SSWV,12,-1,NULL,S_NULL,0,0}, // S_SSWV_DIE5 + {SPR_SSWV,13,5,NULL,S_SSWV_XDIE2,0,0}, // S_SSWV_XDIE1 + {SPR_SSWV,14,5,A_XScream,S_SSWV_XDIE3,0,0}, // S_SSWV_XDIE2 + {SPR_SSWV,15,5,A_Fall,S_SSWV_XDIE4,0,0}, // S_SSWV_XDIE3 + {SPR_SSWV,16,5,NULL,S_SSWV_XDIE5,0,0}, // S_SSWV_XDIE4 + {SPR_SSWV,17,5,NULL,S_SSWV_XDIE6,0,0}, // S_SSWV_XDIE5 + {SPR_SSWV,18,5,NULL,S_SSWV_XDIE7,0,0}, // S_SSWV_XDIE6 + {SPR_SSWV,19,5,NULL,S_SSWV_XDIE8,0,0}, // S_SSWV_XDIE7 + {SPR_SSWV,20,5,NULL,S_SSWV_XDIE9,0,0}, // S_SSWV_XDIE8 + {SPR_SSWV,21,-1,NULL,S_NULL,0,0}, // S_SSWV_XDIE9 + {SPR_SSWV,12,5,NULL,S_SSWV_RAISE2,0,0}, // S_SSWV_RAISE1 + {SPR_SSWV,11,5,NULL,S_SSWV_RAISE3,0,0}, // S_SSWV_RAISE2 + {SPR_SSWV,10,5,NULL,S_SSWV_RAISE4,0,0}, // S_SSWV_RAISE3 + {SPR_SSWV,9,5,NULL,S_SSWV_RAISE5,0,0}, // S_SSWV_RAISE4 + {SPR_SSWV,8,5,NULL,S_SSWV_RUN1,0,0}, // S_SSWV_RAISE5 + {SPR_KEEN,0,-1,NULL,S_KEENSTND,0,0}, // S_KEENSTND + {SPR_KEEN,0,6,NULL,S_COMMKEEN2,0,0}, // S_COMMKEEN + {SPR_KEEN,1,6,NULL,S_COMMKEEN3,0,0}, // S_COMMKEEN2 + {SPR_KEEN,2,6,A_Scream,S_COMMKEEN4,0,0}, // S_COMMKEEN3 + {SPR_KEEN,3,6,NULL,S_COMMKEEN5,0,0}, // S_COMMKEEN4 + {SPR_KEEN,4,6,NULL,S_COMMKEEN6,0,0}, // S_COMMKEEN5 + {SPR_KEEN,5,6,NULL,S_COMMKEEN7,0,0}, // S_COMMKEEN6 + {SPR_KEEN,6,6,NULL,S_COMMKEEN8,0,0}, // S_COMMKEEN7 + {SPR_KEEN,7,6,NULL,S_COMMKEEN9,0,0}, // S_COMMKEEN8 + {SPR_KEEN,8,6,NULL,S_COMMKEEN10,0,0}, // S_COMMKEEN9 + {SPR_KEEN,9,6,NULL,S_COMMKEEN11,0,0}, // S_COMMKEEN10 + {SPR_KEEN,10,6,A_KeenDie,S_COMMKEEN12,0,0},// S_COMMKEEN11 + {SPR_KEEN,11,-1,NULL,S_NULL,0,0}, // S_COMMKEEN12 + {SPR_KEEN,12,4,NULL,S_KEENPAIN2,0,0}, // S_KEENPAIN + {SPR_KEEN,12,8,A_Pain,S_KEENSTND,0,0}, // S_KEENPAIN2 + {SPR_BBRN,0,-1,NULL,S_NULL,0,0}, // S_BRAIN + {SPR_BBRN,1,36,A_BrainPain,S_BRAIN,0,0}, // S_BRAIN_PAIN + {SPR_BBRN,0,100,A_BrainScream,S_BRAIN_DIE2,0,0}, // S_BRAIN_DIE1 + {SPR_BBRN,0,10,NULL,S_BRAIN_DIE3,0,0}, // S_BRAIN_DIE2 + {SPR_BBRN,0,10,NULL,S_BRAIN_DIE4,0,0}, // S_BRAIN_DIE3 + {SPR_BBRN,0,-1,A_BrainDie,S_NULL,0,0}, // S_BRAIN_DIE4 + {SPR_SSWV,0,10,A_Look,S_BRAINEYE,0,0}, // S_BRAINEYE + {SPR_SSWV,0,181,A_BrainAwake,S_BRAINEYE1,0,0}, // S_BRAINEYESEE + {SPR_SSWV,0,150,A_BrainSpit,S_BRAINEYE1,0,0}, // S_BRAINEYE1 + {SPR_BOSF,32768,3,A_SpawnSound,S_SPAWN2,0,0}, // S_SPAWN1 + {SPR_BOSF,32769,3,A_SpawnFly,S_SPAWN3,0,0}, // S_SPAWN2 + {SPR_BOSF,32770,3,A_SpawnFly,S_SPAWN4,0,0}, // S_SPAWN3 + {SPR_BOSF,32771,3,A_SpawnFly,S_SPAWN1,0,0}, // S_SPAWN4 + {SPR_FIRE,32768,4,A_Fire,S_SPAWNFIRE2,0,0}, // S_SPAWNFIRE1 + {SPR_FIRE,32769,4,A_Fire,S_SPAWNFIRE3,0,0}, // S_SPAWNFIRE2 + {SPR_FIRE,32770,4,A_Fire,S_SPAWNFIRE4,0,0}, // S_SPAWNFIRE3 + {SPR_FIRE,32771,4,A_Fire,S_SPAWNFIRE5,0,0}, // S_SPAWNFIRE4 + {SPR_FIRE,32772,4,A_Fire,S_SPAWNFIRE6,0,0}, // S_SPAWNFIRE5 + {SPR_FIRE,32773,4,A_Fire,S_SPAWNFIRE7,0,0}, // S_SPAWNFIRE6 + {SPR_FIRE,32774,4,A_Fire,S_SPAWNFIRE8,0,0}, // S_SPAWNFIRE7 + {SPR_FIRE,32775,4,A_Fire,S_NULL,0,0}, // S_SPAWNFIRE8 + {SPR_MISL,32769,10,NULL,S_BRAINEXPLODE2,0,0}, // S_BRAINEXPLODE1 + {SPR_MISL,32770,10,NULL,S_BRAINEXPLODE3,0,0}, // S_BRAINEXPLODE2 + {SPR_MISL,32771,10,A_BrainExplode,S_NULL,0,0}, // S_BRAINEXPLODE3 + {SPR_ARM1,0,6,NULL,S_ARM1A,0,0}, // S_ARM1 + {SPR_ARM1,32769,7,NULL,S_ARM1,0,0}, // S_ARM1A + {SPR_ARM2,0,6,NULL,S_ARM2A,0,0}, // S_ARM2 + {SPR_ARM2,32769,6,NULL,S_ARM2,0,0}, // S_ARM2A + {SPR_BAR1,0,6,NULL,S_BAR2,0,0}, // S_BAR1 + {SPR_BAR1,1,6,NULL,S_BAR1,0,0}, // S_BAR2 + {SPR_BEXP,32768,5,NULL,S_BEXP2,0,0}, // S_BEXP + {SPR_BEXP,32769,5,A_Scream,S_BEXP3,0,0}, // S_BEXP2 + {SPR_BEXP,32770,5,NULL,S_BEXP4,0,0}, // S_BEXP3 + {SPR_BEXP,32771,10,A_Explode,S_BEXP5,0,0}, // S_BEXP4 + {SPR_BEXP,32772,10,NULL,S_NULL,0,0}, // S_BEXP5 + {SPR_FCAN,32768,4,NULL,S_BBAR2,0,0}, // S_BBAR1 + {SPR_FCAN,32769,4,NULL,S_BBAR3,0,0}, // S_BBAR2 + {SPR_FCAN,32770,4,NULL,S_BBAR1,0,0}, // S_BBAR3 + {SPR_BON1,0,6,NULL,S_BON1A,0,0}, // S_BON1 + {SPR_BON1,1,6,NULL,S_BON1B,0,0}, // S_BON1A + {SPR_BON1,2,6,NULL,S_BON1C,0,0}, // S_BON1B + {SPR_BON1,3,6,NULL,S_BON1D,0,0}, // S_BON1C + {SPR_BON1,2,6,NULL,S_BON1E,0,0}, // S_BON1D + {SPR_BON1,1,6,NULL,S_BON1,0,0}, // S_BON1E + {SPR_BON2,0,6,NULL,S_BON2A,0,0}, // S_BON2 + {SPR_BON2,1,6,NULL,S_BON2B,0,0}, // S_BON2A + {SPR_BON2,2,6,NULL,S_BON2C,0,0}, // S_BON2B + {SPR_BON2,3,6,NULL,S_BON2D,0,0}, // S_BON2C + {SPR_BON2,2,6,NULL,S_BON2E,0,0}, // S_BON2D + {SPR_BON2,1,6,NULL,S_BON2,0,0}, // S_BON2E + {SPR_BKEY,0,10,NULL,S_BKEY2,0,0}, // S_BKEY + {SPR_BKEY,32769,10,NULL,S_BKEY,0,0}, // S_BKEY2 + {SPR_RKEY,0,10,NULL,S_RKEY2,0,0}, // S_RKEY + {SPR_RKEY,32769,10,NULL,S_RKEY,0,0}, // S_RKEY2 + {SPR_YKEY,0,10,NULL,S_YKEY2,0,0}, // S_YKEY + {SPR_YKEY,32769,10,NULL,S_YKEY,0,0}, // S_YKEY2 + {SPR_BSKU,0,10,NULL,S_BSKULL2,0,0}, // S_BSKULL + {SPR_BSKU,32769,10,NULL,S_BSKULL,0,0}, // S_BSKULL2 + {SPR_RSKU,0,10,NULL,S_RSKULL2,0,0}, // S_RSKULL + {SPR_RSKU,32769,10,NULL,S_RSKULL,0,0}, // S_RSKULL2 + {SPR_YSKU,0,10,NULL,S_YSKULL2,0,0}, // S_YSKULL + {SPR_YSKU,32769,10,NULL,S_YSKULL,0,0}, // S_YSKULL2 + {SPR_STIM,0,-1,NULL,S_NULL,0,0}, // S_STIM + {SPR_MEDI,0,-1,NULL,S_NULL,0,0}, // S_MEDI + {SPR_SOUL,32768,6,NULL,S_SOUL2,0,0}, // S_SOUL + {SPR_SOUL,32769,6,NULL,S_SOUL3,0,0}, // S_SOUL2 + {SPR_SOUL,32770,6,NULL,S_SOUL4,0,0}, // S_SOUL3 + {SPR_SOUL,32771,6,NULL,S_SOUL5,0,0}, // S_SOUL4 + {SPR_SOUL,32770,6,NULL,S_SOUL6,0,0}, // S_SOUL5 + {SPR_SOUL,32769,6,NULL,S_SOUL,0,0}, // S_SOUL6 + {SPR_PINV,32768,6,NULL,S_PINV2,0,0}, // S_PINV + {SPR_PINV,32769,6,NULL,S_PINV3,0,0}, // S_PINV2 + {SPR_PINV,32770,6,NULL,S_PINV4,0,0}, // S_PINV3 + {SPR_PINV,32771,6,NULL,S_PINV,0,0}, // S_PINV4 + {SPR_PSTR,32768,-1,NULL,S_NULL,0,0}, // S_PSTR + {SPR_PINS,32768,6,NULL,S_PINS2,0,0}, // S_PINS + {SPR_PINS,32769,6,NULL,S_PINS3,0,0}, // S_PINS2 + {SPR_PINS,32770,6,NULL,S_PINS4,0,0}, // S_PINS3 + {SPR_PINS,32771,6,NULL,S_PINS,0,0}, // S_PINS4 + {SPR_MEGA,32768,6,NULL,S_MEGA2,0,0}, // S_MEGA + {SPR_MEGA,32769,6,NULL,S_MEGA3,0,0}, // S_MEGA2 + {SPR_MEGA,32770,6,NULL,S_MEGA4,0,0}, // S_MEGA3 + {SPR_MEGA,32771,6,NULL,S_MEGA,0,0}, // S_MEGA4 + {SPR_SUIT,32768,-1,NULL,S_NULL,0,0}, // S_SUIT + {SPR_PMAP,32768,6,NULL,S_PMAP2,0,0}, // S_PMAP + {SPR_PMAP,32769,6,NULL,S_PMAP3,0,0}, // S_PMAP2 + {SPR_PMAP,32770,6,NULL,S_PMAP4,0,0}, // S_PMAP3 + {SPR_PMAP,32771,6,NULL,S_PMAP5,0,0}, // S_PMAP4 + {SPR_PMAP,32770,6,NULL,S_PMAP6,0,0}, // S_PMAP5 + {SPR_PMAP,32769,6,NULL,S_PMAP,0,0}, // S_PMAP6 + {SPR_PVIS,32768,6,NULL,S_PVIS2,0,0}, // S_PVIS + {SPR_PVIS,1,6,NULL,S_PVIS,0,0}, // S_PVIS2 + {SPR_CLIP,0,-1,NULL,S_NULL,0,0}, // S_CLIP + {SPR_AMMO,0,-1,NULL,S_NULL,0,0}, // S_AMMO + {SPR_ROCK,0,-1,NULL,S_NULL,0,0}, // S_ROCK + {SPR_BROK,0,-1,NULL,S_NULL,0,0}, // S_BROK + {SPR_CELL,0,-1,NULL,S_NULL,0,0}, // S_CELL + {SPR_CELP,0,-1,NULL,S_NULL,0,0}, // S_CELP + {SPR_SHEL,0,-1,NULL,S_NULL,0,0}, // S_SHEL + {SPR_SBOX,0,-1,NULL,S_NULL,0,0}, // S_SBOX + {SPR_BPAK,0,-1,NULL,S_NULL,0,0}, // S_BPAK + {SPR_BFUG,0,-1,NULL,S_NULL,0,0}, // S_BFUG + {SPR_MGUN,0,-1,NULL,S_NULL,0,0}, // S_MGUN + {SPR_CSAW,0,-1,NULL,S_NULL,0,0}, // S_CSAW + {SPR_LAUN,0,-1,NULL,S_NULL,0,0}, // S_LAUN + {SPR_PLAS,0,-1,NULL,S_NULL,0,0}, // S_PLAS + {SPR_SHOT,0,-1,NULL,S_NULL,0,0}, // S_SHOT + {SPR_SGN2,0,-1,NULL,S_NULL,0,0}, // S_SHOT2 + {SPR_COLU,32768,-1,NULL,S_NULL,0,0}, // S_COLU + {SPR_SMT2,0,-1,NULL,S_NULL,0,0}, // S_STALAG + {SPR_GOR1,0,10,NULL,S_BLOODYTWITCH2,0,0}, // S_BLOODYTWITCH + {SPR_GOR1,1,15,NULL,S_BLOODYTWITCH3,0,0}, // S_BLOODYTWITCH2 + {SPR_GOR1,2,8,NULL,S_BLOODYTWITCH4,0,0}, // S_BLOODYTWITCH3 + {SPR_GOR1,1,6,NULL,S_BLOODYTWITCH,0,0}, // S_BLOODYTWITCH4 + {SPR_PLAY,13,-1,NULL,S_NULL,0,0}, // S_DEADTORSO + {SPR_PLAY,18,-1,NULL,S_NULL,0,0}, // S_DEADBOTTOM + {SPR_POL2,0,-1,NULL,S_NULL,0,0}, // S_HEADSONSTICK + {SPR_POL5,0,-1,NULL,S_NULL,0,0}, // S_GIBS + {SPR_POL4,0,-1,NULL,S_NULL,0,0}, // S_HEADONASTICK + {SPR_POL3,32768,6,NULL,S_HEADCANDLES2,0,0}, // S_HEADCANDLES + {SPR_POL3,32769,6,NULL,S_HEADCANDLES,0,0}, // S_HEADCANDLES2 + {SPR_POL1,0,-1,NULL,S_NULL,0,0}, // S_DEADSTICK + {SPR_POL6,0,6,NULL,S_LIVESTICK2,0,0}, // S_LIVESTICK + {SPR_POL6,1,8,NULL,S_LIVESTICK,0,0}, // S_LIVESTICK2 + {SPR_GOR2,0,-1,NULL,S_NULL,0,0}, // S_MEAT2 + {SPR_GOR3,0,-1,NULL,S_NULL,0,0}, // S_MEAT3 + {SPR_GOR4,0,-1,NULL,S_NULL,0,0}, // S_MEAT4 + {SPR_GOR5,0,-1,NULL,S_NULL,0,0}, // S_MEAT5 + {SPR_SMIT,0,-1,NULL,S_NULL,0,0}, // S_STALAGTITE + {SPR_COL1,0,-1,NULL,S_NULL,0,0}, // S_TALLGRNCOL + {SPR_COL2,0,-1,NULL,S_NULL,0,0}, // S_SHRTGRNCOL + {SPR_COL3,0,-1,NULL,S_NULL,0,0}, // S_TALLREDCOL + {SPR_COL4,0,-1,NULL,S_NULL,0,0}, // S_SHRTREDCOL + {SPR_CAND,32768,-1,NULL,S_NULL,0,0}, // S_CANDLESTIK + {SPR_CBRA,32768,-1,NULL,S_NULL,0,0}, // S_CANDELABRA + {SPR_COL6,0,-1,NULL,S_NULL,0,0}, // S_SKULLCOL + {SPR_TRE1,0,-1,NULL,S_NULL,0,0}, // S_TORCHTREE + {SPR_TRE2,0,-1,NULL,S_NULL,0,0}, // S_BIGTREE + {SPR_ELEC,0,-1,NULL,S_NULL,0,0}, // S_TECHPILLAR + {SPR_CEYE,32768,6,NULL,S_EVILEYE2,0,0}, // S_EVILEYE + {SPR_CEYE,32769,6,NULL,S_EVILEYE3,0,0}, // S_EVILEYE2 + {SPR_CEYE,32770,6,NULL,S_EVILEYE4,0,0}, // S_EVILEYE3 + {SPR_CEYE,32769,6,NULL,S_EVILEYE,0,0}, // S_EVILEYE4 + {SPR_FSKU,32768,6,NULL,S_FLOATSKULL2,0,0}, // S_FLOATSKULL + {SPR_FSKU,32769,6,NULL,S_FLOATSKULL3,0,0}, // S_FLOATSKULL2 + {SPR_FSKU,32770,6,NULL,S_FLOATSKULL,0,0}, // S_FLOATSKULL3 + {SPR_COL5,0,14,NULL,S_HEARTCOL2,0,0}, // S_HEARTCOL + {SPR_COL5,1,14,NULL,S_HEARTCOL,0,0}, // S_HEARTCOL2 + {SPR_TBLU,32768,4,NULL,S_BLUETORCH2,0,0}, // S_BLUETORCH + {SPR_TBLU,32769,4,NULL,S_BLUETORCH3,0,0}, // S_BLUETORCH2 + {SPR_TBLU,32770,4,NULL,S_BLUETORCH4,0,0}, // S_BLUETORCH3 + {SPR_TBLU,32771,4,NULL,S_BLUETORCH,0,0}, // S_BLUETORCH4 + {SPR_TGRN,32768,4,NULL,S_GREENTORCH2,0,0}, // S_GREENTORCH + {SPR_TGRN,32769,4,NULL,S_GREENTORCH3,0,0}, // S_GREENTORCH2 + {SPR_TGRN,32770,4,NULL,S_GREENTORCH4,0,0}, // S_GREENTORCH3 + {SPR_TGRN,32771,4,NULL,S_GREENTORCH,0,0}, // S_GREENTORCH4 + {SPR_TRED,32768,4,NULL,S_REDTORCH2,0,0}, // S_REDTORCH + {SPR_TRED,32769,4,NULL,S_REDTORCH3,0,0}, // S_REDTORCH2 + {SPR_TRED,32770,4,NULL,S_REDTORCH4,0,0}, // S_REDTORCH3 + {SPR_TRED,32771,4,NULL,S_REDTORCH,0,0}, // S_REDTORCH4 + {SPR_SMBT,32768,4,NULL,S_BTORCHSHRT2,0,0}, // S_BTORCHSHRT + {SPR_SMBT,32769,4,NULL,S_BTORCHSHRT3,0,0}, // S_BTORCHSHRT2 + {SPR_SMBT,32770,4,NULL,S_BTORCHSHRT4,0,0}, // S_BTORCHSHRT3 + {SPR_SMBT,32771,4,NULL,S_BTORCHSHRT,0,0}, // S_BTORCHSHRT4 + {SPR_SMGT,32768,4,NULL,S_GTORCHSHRT2,0,0}, // S_GTORCHSHRT + {SPR_SMGT,32769,4,NULL,S_GTORCHSHRT3,0,0}, // S_GTORCHSHRT2 + {SPR_SMGT,32770,4,NULL,S_GTORCHSHRT4,0,0}, // S_GTORCHSHRT3 + {SPR_SMGT,32771,4,NULL,S_GTORCHSHRT,0,0}, // S_GTORCHSHRT4 + {SPR_SMRT,32768,4,NULL,S_RTORCHSHRT2,0,0}, // S_RTORCHSHRT + {SPR_SMRT,32769,4,NULL,S_RTORCHSHRT3,0,0}, // S_RTORCHSHRT2 + {SPR_SMRT,32770,4,NULL,S_RTORCHSHRT4,0,0}, // S_RTORCHSHRT3 + {SPR_SMRT,32771,4,NULL,S_RTORCHSHRT,0,0}, // S_RTORCHSHRT4 + {SPR_HDB1,0,-1,NULL,S_NULL,0,0}, // S_HANGNOGUTS + {SPR_HDB2,0,-1,NULL,S_NULL,0,0}, // S_HANGBNOBRAIN + {SPR_HDB3,0,-1,NULL,S_NULL,0,0}, // S_HANGTLOOKDN + {SPR_HDB4,0,-1,NULL,S_NULL,0,0}, // S_HANGTSKULL + {SPR_HDB5,0,-1,NULL,S_NULL,0,0}, // S_HANGTLOOKUP + {SPR_HDB6,0,-1,NULL,S_NULL,0,0}, // S_HANGTNOBRAIN + {SPR_POB1,0,-1,NULL,S_NULL,0,0}, // S_COLONGIBS + {SPR_POB2,0,-1,NULL,S_NULL,0,0}, // S_SMALLPOOL + {SPR_BRS1,0,-1,NULL,S_NULL,0,0}, // S_BRAINSTEM + {SPR_TLMP,32768,4,NULL,S_TECHLAMP2,0,0}, // S_TECHLAMP + {SPR_TLMP,32769,4,NULL,S_TECHLAMP3,0,0}, // S_TECHLAMP2 + {SPR_TLMP,32770,4,NULL,S_TECHLAMP4,0,0}, // S_TECHLAMP3 + {SPR_TLMP,32771,4,NULL,S_TECHLAMP,0,0}, // S_TECHLAMP4 + {SPR_TLP2,32768,4,NULL,S_TECH2LAMP2,0,0}, // S_TECH2LAMP + {SPR_TLP2,32769,4,NULL,S_TECH2LAMP3,0,0}, // S_TECH2LAMP2 + {SPR_TLP2,32770,4,NULL,S_TECH2LAMP4,0,0}, // S_TECH2LAMP3 + {SPR_TLP2,32771,4,NULL,S_TECH2LAMP,0,0}, // S_TECH2LAMP4 + {SPR_TNT1,0,-1,NULL,S_TNT1,0,0}, // S_TNT1 // phares 3/8/98 + + // killough 8/9/98: grenade + {SPR_MISL,32768,1000,A_Die,S_GRENADE}, // S_GRENADE + + // killough 8/10/98: variable damage explosion + {SPR_MISL,32769,4,A_Scream,S_DETONATE2}, // S_DETONATE + {SPR_MISL,32770,6,A_Detonate,S_DETONATE3}, // S_DETONATE2 + {SPR_MISL,32771,10,NULL,S_NULL}, // S_DETONATE3 + +#ifdef DOGS + // killough 7/19/98: Marine's best friend :) + {SPR_DOGS,0,10,A_Look,S_DOGS_STND2}, // S_DOGS_STND + {SPR_DOGS,1,10,A_Look,S_DOGS_STND}, // S_DOGS_STND2 + {SPR_DOGS,0,2,A_Chase,S_DOGS_RUN2}, // S_DOGS_RUN1 + {SPR_DOGS,0,2,A_Chase,S_DOGS_RUN3}, // S_DOGS_RUN2 + {SPR_DOGS,1,2,A_Chase,S_DOGS_RUN4}, // S_DOGS_RUN3 + {SPR_DOGS,1,2,A_Chase,S_DOGS_RUN5}, // S_DOGS_RUN4 + {SPR_DOGS,2,2,A_Chase,S_DOGS_RUN6}, // S_DOGS_RUN5 + {SPR_DOGS,2,2,A_Chase,S_DOGS_RUN7}, // S_DOGS_RUN6 + {SPR_DOGS,3,2,A_Chase,S_DOGS_RUN8}, // S_DOGS_RUN7 + {SPR_DOGS,3,2,A_Chase,S_DOGS_RUN1}, // S_DOGS_RUN8 + {SPR_DOGS,4,8,A_FaceTarget,S_DOGS_ATK2}, // S_DOGS_ATK1 + {SPR_DOGS,5,8,A_FaceTarget,S_DOGS_ATK3}, // S_DOGS_ATK2 + {SPR_DOGS,6,8,A_SargAttack,S_DOGS_RUN1}, // S_DOGS_ATK3 + {SPR_DOGS,7,2,NULL,S_DOGS_PAIN2}, // S_DOGS_PAIN + {SPR_DOGS,7,2,A_Pain,S_DOGS_RUN1}, // S_DOGS_PAIN2 + {SPR_DOGS,8,8,NULL,S_DOGS_DIE2}, // S_DOGS_DIE1 + {SPR_DOGS,9,8,A_Scream,S_DOGS_DIE3}, // S_DOGS_DIE2 + {SPR_DOGS,10,4,NULL,S_DOGS_DIE4}, // S_DOGS_DIE3 + {SPR_DOGS,11,4,A_Fall,S_DOGS_DIE5}, // S_DOGS_DIE4 + {SPR_DOGS,12,4,NULL,S_DOGS_DIE6}, // S_DOGS_DIE5 + {SPR_DOGS,13,-1,NULL,S_NULL}, // S_DOGS_DIE6 + {SPR_DOGS,13,5,NULL,S_DOGS_RAISE2}, // S_DOGS_RAISE1 + {SPR_DOGS,12,5,NULL,S_DOGS_RAISE3}, // S_DOGS_RAISE2 + {SPR_DOGS,11,5,NULL,S_DOGS_RAISE4}, // S_DOGS_RAISE3 + {SPR_DOGS,10,5,NULL,S_DOGS_RAISE5}, // S_DOGS_RAISE4 + {SPR_DOGS,9,5,NULL,S_DOGS_RAISE6}, // S_DOGS_RAISE5 + {SPR_DOGS,8,5,NULL,S_DOGS_RUN1}, // S_DOGS_RAISE6 +#else + // if dogs are disabled, dummy states are required for dehacked compatibility + {0,0,-1,NULL,S_NULL}, // S_DOGS_STND + {0,0,-1,NULL,S_NULL}, // S_DOGS_STND2 + {0,0,-1,NULL,S_NULL}, // S_DOGS_RUN1 + {0,0,-1,NULL,S_NULL}, // S_DOGS_RUN2 + {0,0,-1,NULL,S_NULL}, // S_DOGS_RUN3 + {0,0,-1,NULL,S_NULL}, // S_DOGS_RUN4 + {0,0,-1,NULL,S_NULL}, // S_DOGS_RUN5 + {0,0,-1,NULL,S_NULL}, // S_DOGS_RUN6 + {0,0,-1,NULL,S_NULL}, // S_DOGS_RUN7 + {0,0,-1,NULL,S_NULL}, // S_DOGS_RUN8 + {0,0,-1,NULL,S_NULL}, // S_DOGS_ATK1 + {0,0,-1,NULL,S_NULL}, // S_DOGS_ATK2 + {0,0,-1,NULL,S_NULL}, // S_DOGS_ATK3 + {0,0,-1,NULL,S_NULL}, // S_DOGS_PAIN + {0,0,-1,NULL,S_NULL}, // S_DOGS_PAIN2 + {0,0,-1,NULL,S_NULL}, // S_DOGS_DIE1 + {0,0,-1,NULL,S_NULL}, // S_DOGS_DIE2 + {0,0,-1,NULL,S_NULL}, // S_DOGS_DIE3 + {0,0,-1,NULL,S_NULL}, // S_DOGS_DIE4 + {0,0,-1,NULL,S_NULL}, // S_DOGS_DIE5 + {0,0,-1,NULL,S_NULL}, // S_DOGS_DIE6 + {0,0,-1,NULL,S_NULL}, // S_DOGS_RAISE1 + {0,0,-1,NULL,S_NULL}, // S_DOGS_RAISE2 + {0,0,-1,NULL,S_NULL}, // S_DOGS_RAISE3 + {0,0,-1,NULL,S_NULL}, // S_DOGS_RAISE4 + {0,0,-1,NULL,S_NULL}, // S_DOGS_RAISE5 + {0,0,-1,NULL,S_NULL}, // S_DOGS_RAISE6 +#endif + + // add dummy beta bfg / lost soul frames for dehacked compatibility + // fixes bug #1576151 (part 2) + {0,0,-1,NULL,S_NULL}, // S_OLDBFG1 + {0,0,-1,NULL,S_NULL}, // S_OLDBFG2 + {0,0,-1,NULL,S_NULL}, // S_OLDBFG3 + {0,0,-1,NULL,S_NULL}, // S_OLDBFG4 + {0,0,-1,NULL,S_NULL}, // S_OLDBFG5 + {0,0,-1,NULL,S_NULL}, // S_OLDBFG6 + {0,0,-1,NULL,S_NULL}, // S_OLDBFG7 + {0,0,-1,NULL,S_NULL}, // S_OLDBFG8 + {0,0,-1,NULL,S_NULL}, // S_OLDBFG9 + {0,0,-1,NULL,S_NULL}, // S_OLDBFG10 + {0,0,-1,NULL,S_NULL}, // S_OLDBFG11 + {0,0,-1,NULL,S_NULL}, // S_OLDBFG12 + {0,0,-1,NULL,S_NULL}, // S_OLDBFG13 + {0,0,-1,NULL,S_NULL}, // S_OLDBFG14 + {0,0,-1,NULL,S_NULL}, // S_OLDBFG15 + {0,0,-1,NULL,S_NULL}, // S_OLDBFG16 + {0,0,-1,NULL,S_NULL}, // S_OLDBFG17 + {0,0,-1,NULL,S_NULL}, // S_OLDBFG18 + {0,0,-1,NULL,S_NULL}, // S_OLDBFG19 + {0,0,-1,NULL,S_NULL}, // S_OLDBFG20 + {0,0,-1,NULL,S_NULL}, // S_OLDBFG21 + {0,0,-1,NULL,S_NULL}, // S_OLDBFG22 + {0,0,-1,NULL,S_NULL}, // S_OLDBFG23 + {0,0,-1,NULL,S_NULL}, // S_OLDBFG24 + {0,0,-1,NULL,S_NULL}, // S_OLDBFG25 + {0,0,-1,NULL,S_NULL}, // S_OLDBFG26 + {0,0,-1,NULL,S_NULL}, // S_OLDBFG27 + {0,0,-1,NULL,S_NULL}, // S_OLDBFG28 + {0,0,-1,NULL,S_NULL}, // S_OLDBFG29 + {0,0,-1,NULL,S_NULL}, // S_OLDBFG30 + {0,0,-1,NULL,S_NULL}, // S_OLDBFG31 + {0,0,-1,NULL,S_NULL}, // S_OLDBFG32 + {0,0,-1,NULL,S_NULL}, // S_OLDBFG33 + {0,0,-1,NULL,S_NULL}, // S_OLDBFG34 + {0,0,-1,NULL,S_NULL}, // S_OLDBFG35 + {0,0,-1,NULL,S_NULL}, // S_OLDBFG36 + {0,0,-1,NULL,S_NULL}, // S_OLDBFG37 + {0,0,-1,NULL,S_NULL}, // S_OLDBFG38 + {0,0,-1,NULL,S_NULL}, // S_OLDBFG39 + {0,0,-1,NULL,S_NULL}, // S_OLDBFG40 + {0,0,-1,NULL,S_NULL}, // S_OLDBFG41 + {0,0,-1,NULL,S_NULL}, // S_OLDBFG42 + {0,0,-1,NULL,S_NULL}, // S_OLDBFG43 + + {0,0,-1,NULL,S_NULL}, // S_PLS1BALL + {0,0,-1,NULL,S_NULL}, // S_PLS1BALL2 + {0,0,-1,NULL,S_NULL}, // S_PLS1EXP + {0,0,-1,NULL,S_NULL}, // S_PLS1EXP2 + {0,0,-1,NULL,S_NULL}, // S_PLS1EXP3 + {0,0,-1,NULL,S_NULL}, // S_PLS1EXP4 + {0,0,-1,NULL,S_NULL}, // S_PLS1EXP5 + + {0,0,-1,NULL,S_NULL}, // S_PLS2BALL + {0,0,-1,NULL,S_NULL}, // S_PLS2BALL2 + {0,0,-1,NULL,S_NULL}, // S_PLS2BALLX1 + {0,0,-1,NULL,S_NULL}, // S_PLS2BALLX2 + {0,0,-1,NULL,S_NULL}, // S_PLS2BALLX3 + + {0,0,-1,NULL,S_NULL}, // S_BON3 + {0,0,-1,NULL,S_NULL}, // S_BON4 + + {0,0,-1,NULL,S_NULL}, // S_BSKUL_STND + {0,0,-1,NULL,S_NULL}, // S_BSKUL_RUN1 + {0,0,-1,NULL,S_NULL}, // S_BSKUL_RUN2 + {0,0,-1,NULL,S_NULL}, // S_BSKUL_RUN3 + {0,0,-1,NULL,S_NULL}, // S_BSKUL_RUN4 + {0,0,-1,NULL,S_NULL}, // S_BSKUL_ATK1 + {0,0,-1,NULL,S_NULL}, // S_BSKUL_ATK2 + {0,0,-1,NULL,S_NULL}, // S_BSKUL_ATK3 + {0,0,-1,NULL,S_NULL}, // S_BSKUL_PAIN1 + {0,0,-1,NULL,S_NULL}, // S_BSKUL_PAIN2 + {0,0,-1,NULL,S_NULL}, // S_BSKUL_PAIN3 + {0,0,-1,NULL,S_NULL}, // S_BSKUL_DIE1 + {0,0,-1,NULL,S_NULL}, // S_BSKUL_DIE2 + {0,0,-1,NULL,S_NULL}, // S_BSKUL_DIE3 + {0,0,-1,NULL,S_NULL}, // S_BSKUL_DIE4 + {0,0,-1,NULL,S_NULL}, // S_BSKUL_DIE5 + {0,0,-1,NULL,S_NULL}, // S_BSKUL_DIE6 + {0,0,-1,NULL,S_NULL}, // S_BSKUL_DIE7 + {0,0,-1,NULL,S_NULL}, // S_BSKUL_DIE8 + + // killough 10/98: mushroom effect + {SPR_MISL,32769,8,A_Mushroom,S_EXPLODE2}, // S_MUSHROOM +}; +state_t *states; + +// ******************************************************************** +// Object "Thing" definitions +// ******************************************************************** +// Now we get to the actual objects and their characteristics. If +// you've seen Dehacked, much of this is where the Bits are set, +// commented below as "flags", as well as where you wire in which +// frames are the beginning frames for near and far attack, death, +// and such. Sounds are hooked in here too, as well as how much +// mass, speed and so forth a Thing has. Everything you ever wanted +// to know... +// +// Like all this other stuff, the MT_* entries are enumerated in info.h +// +// Note that these are all just indices of the elements involved, and +// not real pointers to them. For example, the player's death sequence +// is S_PLAY_DIE1, which just evaluates to the index in the states[] +// array above, which actually knows what happens then and what the +// sprite looks like, if it makes noise or not, etc. +// +// Additional comments about each of the entries are located in info.h +// next to the mobjinfo_t structure definition. +// +// This goes on for the next 3000+ lines... + +mobjinfo_t mobjinfo[NUMMOBJTYPES] = { + { // MT_PLAYER + -1, // doomednum + S_PLAY, // spawnstate + 100, // spawnhealth + S_PLAY_RUN1, // seestate + sfx_None, // seesound + 0, // reactiontime + sfx_None, // attacksound + S_PLAY_PAIN, // painstate + 255, // painchance + sfx_plpain, // painsound + S_NULL, // meleestate + S_PLAY_ATK1, // missilestate + S_PLAY_DIE1, // deathstate + S_PLAY_XDIE1, // xdeathstate + sfx_pldeth, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 56*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SOLID|MF_SHOOTABLE|MF_DROPOFF|MF_PICKUP|MF_NOTDMATCH, // flags + S_NULL // raisestate + }, + + { // MT_POSSESSED + 3004, // doomednum + S_POSS_STND, // spawnstate + 20, // spawnhealth + S_POSS_RUN1, // seestate + sfx_posit1, // seesound + 8, // reactiontime + sfx_pistol, // attacksound + S_POSS_PAIN, // painstate + 200, // painchance + sfx_popain, // painsound + 0, // meleestate + S_POSS_ATK1, // missilestate + S_POSS_DIE1, // deathstate + S_POSS_XDIE1, // xdeathstate + sfx_podth1, // deathsound + 8, // speed + 20*FRACUNIT, // radius + 56*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_posact, // activesound + MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL, // flags + S_POSS_RAISE1 // raisestate + }, + + { // MT_SHOTGUY + 9, // doomednum + S_SPOS_STND, // spawnstate + 30, // spawnhealth + S_SPOS_RUN1, // seestate + sfx_posit2, // seesound + 8, // reactiontime + 0, // attacksound + S_SPOS_PAIN, // painstate + 170, // painchance + sfx_popain, // painsound + 0, // meleestate + S_SPOS_ATK1, // missilestate + S_SPOS_DIE1, // deathstate + S_SPOS_XDIE1, // xdeathstate + sfx_podth2, // deathsound + 8, // speed + 20*FRACUNIT, // radius + 56*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_posact, // activesound + MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL, // flags + S_SPOS_RAISE1 // raisestate + }, + + { // MT_VILE + 64, // doomednum + S_VILE_STND, // spawnstate + 700, // spawnhealth + S_VILE_RUN1, // seestate + sfx_vilsit, // seesound + 8, // reactiontime + 0, // attacksound + S_VILE_PAIN, // painstate + 10, // painchance + sfx_vipain, // painsound + 0, // meleestate + S_VILE_ATK1, // missilestate + S_VILE_DIE1, // deathstate + S_NULL, // xdeathstate + sfx_vildth, // deathsound + 15, // speed + 20*FRACUNIT, // radius + 56*FRACUNIT, // height + 500, // mass + 0, // damage + sfx_vilact, // activesound + MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL, // flags + S_NULL // raisestate + }, + + { // MT_FIRE + -1, // doomednum + S_FIRE1, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_NOBLOCKMAP|MF_NOGRAVITY|MF_TRANSLUCENT, // flags // killough 2/21/98 + S_NULL // raisestate + }, + + { // MT_UNDEAD + 66, // doomednum + S_SKEL_STND, // spawnstate + 300, // spawnhealth + S_SKEL_RUN1, // seestate + sfx_skesit, // seesound + 8, // reactiontime + 0, // attacksound + S_SKEL_PAIN, // painstate + 100, // painchance + sfx_popain, // painsound + S_SKEL_FIST1, // meleestate + S_SKEL_MISS1, // missilestate + S_SKEL_DIE1, // deathstate + S_NULL, // xdeathstate + sfx_skedth, // deathsound + 10, // speed + 20*FRACUNIT, // radius + 56*FRACUNIT, // height + 500, // mass + 0, // damage + sfx_skeact, // activesound + MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL, // flags + S_SKEL_RAISE1 // raisestate + }, + + { // MT_TRACER + -1, // doomednum + S_TRACER, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_skeatk, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_TRACEEXP1, // deathstate + S_NULL, // xdeathstate + sfx_barexp, // deathsound + 10*FRACUNIT, // speed + 11*FRACUNIT, // radius + 8*FRACUNIT, // height + 100, // mass + 10, // damage + sfx_None, // activesound + MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY, // flags + S_NULL // raisestate + }, + + { // MT_SMOKE + -1, // doomednum + S_SMOKE1, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_NOBLOCKMAP|MF_NOGRAVITY|MF_TRANSLUCENT, // flags // phares + S_NULL // raisestate + }, + + { // MT_FATSO + 67, // doomednum + S_FATT_STND, // spawnstate + 600, // spawnhealth + S_FATT_RUN1, // seestate + sfx_mansit, // seesound + 8, // reactiontime + 0, // attacksound + S_FATT_PAIN, // painstate + 80, // painchance + sfx_mnpain, // painsound + 0, // meleestate + S_FATT_ATK1, // missilestate + S_FATT_DIE1, // deathstate + S_NULL, // xdeathstate + sfx_mandth, // deathsound + 8, // speed + 48*FRACUNIT, // radius + 64*FRACUNIT, // height + 1000, // mass + 0, // damage + sfx_posact, // activesound + MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL, // flags + S_FATT_RAISE1 // raisestate + }, + + { // MT_FATSHOT + -1, // doomednum + S_FATSHOT1, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_firsht, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_FATSHOTX1, // deathstate + S_NULL, // xdeathstate + sfx_firxpl, // deathsound + 20*FRACUNIT, // speed + 6*FRACUNIT, // radius + 8*FRACUNIT, // height + 100, // mass + 8, // damage + sfx_None, // activesound + MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY|MF_TRANSLUCENT, // flags \\ killough 2/21/98 + S_NULL // raisestate + }, + + { // MT_CHAINGUY + 65, // doomednum + S_CPOS_STND, // spawnstate + 70, // spawnhealth + S_CPOS_RUN1, // seestate + sfx_posit2, // seesound + 8, // reactiontime + 0, // attacksound + S_CPOS_PAIN, // painstate + 170, // painchance + sfx_popain, // painsound + 0, // meleestate + S_CPOS_ATK1, // missilestate + S_CPOS_DIE1, // deathstate + S_CPOS_XDIE1, // xdeathstate + sfx_podth2, // deathsound + 8, // speed + 20*FRACUNIT, // radius + 56*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_posact, // activesound + MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL, // flags + S_CPOS_RAISE1 // raisestate + }, + + { // MT_TROOP + 3001, // doomednum + S_TROO_STND, // spawnstate + 60, // spawnhealth + S_TROO_RUN1, // seestate + sfx_bgsit1, // seesound + 8, // reactiontime + 0, // attacksound + S_TROO_PAIN, // painstate + 200, // painchance + sfx_popain, // painsound + S_TROO_ATK1, // meleestate + S_TROO_ATK1, // missilestate + S_TROO_DIE1, // deathstate + S_TROO_XDIE1, // xdeathstate + sfx_bgdth1, // deathsound + 8, // speed + 20*FRACUNIT, // radius + 56*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_bgact, // activesound + MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL, // killough |MF_TRANSLUCENT, // flags // phares + S_TROO_RAISE1 // raisestate + }, + + { // MT_SERGEANT + 3002, // doomednum + S_SARG_STND, // spawnstate + 150, // spawnhealth + S_SARG_RUN1, // seestate + sfx_sgtsit, // seesound + 8, // reactiontime + sfx_sgtatk, // attacksound + S_SARG_PAIN, // painstate + 180, // painchance + sfx_dmpain, // painsound + S_SARG_ATK1, // meleestate + 0, // missilestate + S_SARG_DIE1, // deathstate + S_NULL, // xdeathstate + sfx_sgtdth, // deathsound + 10, // speed + 30*FRACUNIT, // radius + 56*FRACUNIT, // height + 400, // mass + 0, // damage + sfx_dmact, // activesound + MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL, // flags + S_SARG_RAISE1 // raisestate + }, + + { // MT_SHADOWS + 58, // doomednum + S_SARG_STND, // spawnstate + 150, // spawnhealth + S_SARG_RUN1, // seestate + sfx_sgtsit, // seesound + 8, // reactiontime + sfx_sgtatk, // attacksound + S_SARG_PAIN, // painstate + 180, // painchance + sfx_dmpain, // painsound + S_SARG_ATK1, // meleestate + 0, // missilestate + S_SARG_DIE1, // deathstate + S_NULL, // xdeathstate + sfx_sgtdth, // deathsound + 10, // speed + 30*FRACUNIT, // radius + 56*FRACUNIT, // height + 400, // mass + 0, // damage + sfx_dmact, // activesound + MF_SOLID|MF_SHOOTABLE|MF_SHADOW|MF_COUNTKILL, // flags + S_SARG_RAISE1 // raisestate + }, + + { // MT_HEAD + 3005, // doomednum + S_HEAD_STND, // spawnstate + 400, // spawnhealth + S_HEAD_RUN1, // seestate + sfx_cacsit, // seesound + 8, // reactiontime + 0, // attacksound + S_HEAD_PAIN, // painstate + 128, // painchance + sfx_dmpain, // painsound + 0, // meleestate + S_HEAD_ATK1, // missilestate + S_HEAD_DIE1, // deathstate + S_NULL, // xdeathstate + sfx_cacdth, // deathsound + 8, // speed + 31*FRACUNIT, // radius + 56*FRACUNIT, // height + 400, // mass + 0, // damage + sfx_dmact, // activesound + MF_SOLID|MF_SHOOTABLE|MF_FLOAT|MF_NOGRAVITY|MF_COUNTKILL, // flags + S_HEAD_RAISE1 // raisestate + }, + + { // MT_BRUISER + 3003, // doomednum + S_BOSS_STND, // spawnstate + 1000, // spawnhealth + S_BOSS_RUN1, // seestate + sfx_brssit, // seesound + 8, // reactiontime + 0, // attacksound + S_BOSS_PAIN, // painstate + 50, // painchance + sfx_dmpain, // painsound + S_BOSS_ATK1, // meleestate + S_BOSS_ATK1, // missilestate + S_BOSS_DIE1, // deathstate + S_NULL, // xdeathstate + sfx_brsdth, // deathsound + 8, // speed + 24*FRACUNIT, // radius + 64*FRACUNIT, // height + 1000, // mass + 0, // damage + sfx_dmact, // activesound + MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL, // flags + S_BOSS_RAISE1 // raisestate + }, + + { // MT_BRUISERSHOT + -1, // doomednum + S_BRBALL1, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_firsht, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_BRBALLX1, // deathstate + S_NULL, // xdeathstate + sfx_firxpl, // deathsound + 15*FRACUNIT, // speed + 6*FRACUNIT, // radius + 8*FRACUNIT, // height + 100, // mass + 8, // damage + sfx_None, // activesound + MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY|MF_TRANSLUCENT, // flags killough 2/21/98 + S_NULL // raisestate + }, + + { // MT_KNIGHT + 69, // doomednum + S_BOS2_STND, // spawnstate + 500, // spawnhealth + S_BOS2_RUN1, // seestate + sfx_kntsit, // seesound + 8, // reactiontime + 0, // attacksound + S_BOS2_PAIN, // painstate + 50, // painchance + sfx_dmpain, // painsound + S_BOS2_ATK1, // meleestate + S_BOS2_ATK1, // missilestate + S_BOS2_DIE1, // deathstate + S_NULL, // xdeathstate + sfx_kntdth, // deathsound + 8, // speed + 24*FRACUNIT, // radius + 64*FRACUNIT, // height + 1000, // mass + 0, // damage + sfx_dmact, // activesound + MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL, // flags + S_BOS2_RAISE1 // raisestate + }, + + { // MT_SKULL + 3006, // doomednum + S_SKULL_STND, // spawnstate + 100, // spawnhealth + S_SKULL_RUN1, // seestate + 0, // seesound + 8, // reactiontime + sfx_sklatk, // attacksound + S_SKULL_PAIN, // painstate + 256, // painchance + sfx_dmpain, // painsound + 0, // meleestate + S_SKULL_ATK1, // missilestate + S_SKULL_DIE1, // deathstate + S_NULL, // xdeathstate + sfx_firxpl, // deathsound + 8, // speed + 16*FRACUNIT, // radius + 56*FRACUNIT, // height + 50, // mass + 3, // damage + sfx_dmact, // activesound + MF_SOLID|MF_SHOOTABLE|MF_FLOAT|MF_NOGRAVITY, // flags + S_NULL // raisestate + }, + + { // MT_SPIDER + 7, // doomednum + S_SPID_STND, // spawnstate + 3000, // spawnhealth + S_SPID_RUN1, // seestate + sfx_spisit, // seesound + 8, // reactiontime + sfx_shotgn, // attacksound + S_SPID_PAIN, // painstate + 40, // painchance + sfx_dmpain, // painsound + 0, // meleestate + S_SPID_ATK1, // missilestate + S_SPID_DIE1, // deathstate + S_NULL, // xdeathstate + sfx_spidth, // deathsound + 12, // speed + 128*FRACUNIT, // radius + 100*FRACUNIT, // height + 1000, // mass + 0, // damage + sfx_dmact, // activesound + MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL, // flags + S_NULL // raisestate + }, + + { // MT_BABY + 68, // doomednum + S_BSPI_STND, // spawnstate + 500, // spawnhealth + S_BSPI_SIGHT, // seestate + sfx_bspsit, // seesound + 8, // reactiontime + 0, // attacksound + S_BSPI_PAIN, // painstate + 128, // painchance + sfx_dmpain, // painsound + 0, // meleestate + S_BSPI_ATK1, // missilestate + S_BSPI_DIE1, // deathstate + S_NULL, // xdeathstate + sfx_bspdth, // deathsound + 12, // speed + 64*FRACUNIT, // radius + 64*FRACUNIT, // height + 600, // mass + 0, // damage + sfx_bspact, // activesound + MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL, // flags + S_BSPI_RAISE1 // raisestate + }, + + { // MT_CYBORG + 16, // doomednum + S_CYBER_STND, // spawnstate + 4000, // spawnhealth + S_CYBER_RUN1, // seestate + sfx_cybsit, // seesound + 8, // reactiontime + 0, // attacksound + S_CYBER_PAIN, // painstate + 20, // painchance + sfx_dmpain, // painsound + 0, // meleestate + S_CYBER_ATK1, // missilestate + S_CYBER_DIE1, // deathstate + S_NULL, // xdeathstate + sfx_cybdth, // deathsound + 16, // speed + 40*FRACUNIT, // radius + 110*FRACUNIT, // height + 1000, // mass + 0, // damage + sfx_dmact, // activesound + MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL, // flags + S_NULL // raisestate + }, + + { // MT_PAIN + 71, // doomednum + S_PAIN_STND, // spawnstate + 400, // spawnhealth + S_PAIN_RUN1, // seestate + sfx_pesit, // seesound + 8, // reactiontime + 0, // attacksound + S_PAIN_PAIN, // painstate + 128, // painchance + sfx_pepain, // painsound + 0, // meleestate + S_PAIN_ATK1, // missilestate + S_PAIN_DIE1, // deathstate + S_NULL, // xdeathstate + sfx_pedth, // deathsound + 8, // speed + 31*FRACUNIT, // radius + 56*FRACUNIT, // height + 400, // mass + 0, // damage + sfx_dmact, // activesound + MF_SOLID|MF_SHOOTABLE|MF_FLOAT|MF_NOGRAVITY|MF_COUNTKILL, // flags + S_PAIN_RAISE1 // raisestate + }, + + { // MT_WOLFSS + 84, // doomednum + S_SSWV_STND, // spawnstate + 50, // spawnhealth + S_SSWV_RUN1, // seestate + sfx_sssit, // seesound + 8, // reactiontime + 0, // attacksound + S_SSWV_PAIN, // painstate + 170, // painchance + sfx_popain, // painsound + 0, // meleestate + S_SSWV_ATK1, // missilestate + S_SSWV_DIE1, // deathstate + S_SSWV_XDIE1, // xdeathstate + sfx_ssdth, // deathsound + 8, // speed + 20*FRACUNIT, // radius + 56*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_posact, // activesound + MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL, // flags + S_SSWV_RAISE1 // raisestate + }, + + { // MT_KEEN + 72, // doomednum + S_KEENSTND, // spawnstate + 100, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_KEENPAIN, // painstate + 256, // painchance + sfx_keenpn, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_COMMKEEN, // deathstate + S_NULL, // xdeathstate + sfx_keendt, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 72*FRACUNIT, // height + 10000000, // mass + 0, // damage + sfx_None, // activesound + MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY|MF_SHOOTABLE|MF_COUNTKILL, // flags + S_NULL // raisestate + }, + + { // MT_BOSSBRAIN + 88, // doomednum + S_BRAIN, // spawnstate + 250, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_BRAIN_PAIN, // painstate + 255, // painchance + sfx_bospn, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_BRAIN_DIE1, // deathstate + S_NULL, // xdeathstate + sfx_bosdth, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 16*FRACUNIT, // height + 10000000, // mass + 0, // damage + sfx_None, // activesound + MF_SOLID|MF_SHOOTABLE, // flags + S_NULL // raisestate + }, + + { // MT_BOSSSPIT + 89, // doomednum + S_BRAINEYE, // spawnstate + 1000, // spawnhealth + S_BRAINEYESEE, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 32*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_NOBLOCKMAP|MF_NOSECTOR, // flags + S_NULL // raisestate + }, + + { // MT_BOSSTARGET + 87, // doomednum + S_NULL, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 32*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_NOBLOCKMAP|MF_NOSECTOR, // flags + S_NULL // raisestate + }, + + { // MT_SPAWNSHOT + -1, // doomednum + S_SPAWN1, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_bospit, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_firxpl, // deathsound + 10*FRACUNIT, // speed + 6*FRACUNIT, // radius + 32*FRACUNIT, // height + 100, // mass + 3, // damage + sfx_None, // activesound + MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY|MF_NOCLIP, // flags + S_NULL // raisestate + }, + + { // MT_SPAWNFIRE + -1, // doomednum + S_SPAWNFIRE1, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_NOBLOCKMAP|MF_NOGRAVITY|MF_TRANSLUCENT, // flags // phares + S_NULL // raisestate + }, + + { // MT_BARREL + 2035, // doomednum + S_BAR1, // spawnstate + 20, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_BEXP, // deathstate + S_NULL, // xdeathstate + sfx_barexp, // deathsound + 0, // speed + 10*FRACUNIT, // radius + 42*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SOLID|MF_SHOOTABLE|MF_NOBLOOD, // flags + S_NULL // raisestate + }, + + { // MT_TROOPSHOT + -1, // doomednum + S_TBALL1, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_firsht, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_TBALLX1, // deathstate + S_NULL, // xdeathstate + sfx_firxpl, // deathsound + 10*FRACUNIT, // speed + 6*FRACUNIT, // radius + 8*FRACUNIT, // height + 100, // mass + 3, // damage + sfx_None, // activesound + MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY|MF_TRANSLUCENT, // flags // phares + S_NULL // raisestate + }, + + { // MT_HEADSHOT + -1, // doomednum + S_RBALL1, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_firsht, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_RBALLX1, // deathstate + S_NULL, // xdeathstate + sfx_firxpl, // deathsound + 10*FRACUNIT, // speed + 6*FRACUNIT, // radius + 8*FRACUNIT, // height + 100, // mass + 5, // damage + sfx_None, // activesound + MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY|MF_TRANSLUCENT, // flags // phares, // flags + S_NULL // raisestate + }, + + { // MT_ROCKET + -1, // doomednum + S_ROCKET, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_rlaunc, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_EXPLODE1, // deathstate + S_NULL, // xdeathstate + sfx_barexp, // deathsound + 20*FRACUNIT, // speed + 11*FRACUNIT, // radius + 8*FRACUNIT, // height + 100, // mass + 20, // damage + sfx_None, // activesound + MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY, // flags + S_NULL // raisestate + }, + + { // MT_PLASMA + -1, // doomednum + S_PLASBALL, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_plasma, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_PLASEXP, // deathstate + S_NULL, // xdeathstate + sfx_firxpl, // deathsound + 25*FRACUNIT, // speed + 13*FRACUNIT, // radius + 8*FRACUNIT, // height + 100, // mass + 5, // damage + sfx_None, // activesound + MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY|MF_TRANSLUCENT, // flags // phares + S_NULL // raisestate + }, + + { // MT_BFG + -1, // doomednum + S_BFGSHOT, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + 0, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_BFGLAND, // deathstate + S_NULL, // xdeathstate + sfx_rxplod, // deathsound + 25*FRACUNIT, // speed + 13*FRACUNIT, // radius + 8*FRACUNIT, // height + 100, // mass + 100, // damage + sfx_None, // activesound + MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY|MF_TRANSLUCENT, // flags // phares + S_NULL // raisestate + }, + + { // MT_ARACHPLAZ + -1, // doomednum + S_ARACH_PLAZ, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_plasma, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_ARACH_PLEX, // deathstate + S_NULL, // xdeathstate + sfx_firxpl, // deathsound + 25*FRACUNIT, // speed + 13*FRACUNIT, // radius + 8*FRACUNIT, // height + 100, // mass + 5, // damage + sfx_None, // activesound + MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY|MF_TRANSLUCENT, // flags // phares + S_NULL // raisestate + }, + + { // MT_PUFF + -1, // doomednum + S_PUFF1, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_NOBLOCKMAP|MF_NOGRAVITY|MF_TRANSLUCENT, // flags // phares + S_NULL // raisestate + }, + + { // MT_BLOOD + -1, // doomednum + S_BLOOD1, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_NOBLOCKMAP, // flags + S_NULL // raisestate + }, + + { // MT_TFOG + -1, // doomednum + S_TFOG, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_NOBLOCKMAP|MF_NOGRAVITY|MF_TRANSLUCENT, // flags // phares + S_NULL // raisestate + }, + + { // MT_IFOG + -1, // doomednum + S_IFOG, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_NOBLOCKMAP|MF_NOGRAVITY|MF_TRANSLUCENT, // flags // phares + S_NULL // raisestate + }, + + { // MT_TELEPORTMAN + 14, // doomednum + S_NULL, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_NOBLOCKMAP|MF_NOSECTOR, // flags + S_NULL // raisestate + }, + + { // MT_EXTRABFG + -1, // doomednum + S_BFGEXP, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_NOBLOCKMAP|MF_NOGRAVITY, // flags + S_NULL // raisestate + }, + + { // MT_MISC0 + 2018, // doomednum + S_ARM1, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL, // flags + S_NULL // raisestate + }, + + { // MT_MISC1 + 2019, // doomednum + S_ARM2, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL, // flags + S_NULL // raisestate + }, + + { // MT_MISC2 + 2014, // doomednum + S_BON1, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL|MF_COUNTITEM, // flags + S_NULL // raisestate + }, + + { // MT_MISC3 + 2015, // doomednum + S_BON2, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL|MF_COUNTITEM, // flags + S_NULL // raisestate + }, + + { // MT_MISC4 + 5, // doomednum + S_BKEY, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL|MF_NOTDMATCH, // flags + S_NULL // raisestate + }, + + { // MT_MISC5 + 13, // doomednum + S_RKEY, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL|MF_NOTDMATCH, // flags + S_NULL // raisestate + }, + + { // MT_MISC6 + 6, // doomednum + S_YKEY, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL|MF_NOTDMATCH, // flags + S_NULL // raisestate + }, + + { // MT_MISC7 + 39, // doomednum + S_YSKULL, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL|MF_NOTDMATCH, // flags + S_NULL // raisestate + }, + + { // MT_MISC8 + 38, // doomednum + S_RSKULL, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL|MF_NOTDMATCH, // flags + S_NULL // raisestate + }, + + { // MT_MISC9 + 40, // doomednum + S_BSKULL, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL|MF_NOTDMATCH, // flags + S_NULL // raisestate + }, + + { // MT_MISC10 + 2011, // doomednum + S_STIM, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL, // flags + S_NULL // raisestate + }, + + { // MT_MISC11 + 2012, // doomednum + S_MEDI, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL, // flags + S_NULL // raisestate + }, + + { // MT_MISC12 + 2013, // doomednum + S_SOUL, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL|MF_COUNTITEM|MF_TRANSLUCENT, // flags // killough 2/21/98 + S_NULL // raisestate + }, + + { // MT_INV + 2022, // doomednum + S_PINV, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL|MF_COUNTITEM|MF_TRANSLUCENT, // flags // killough 2/21/98 + S_NULL // raisestate + }, + + { // MT_MISC13 + 2023, // doomednum + S_PSTR, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL|MF_COUNTITEM, // flags + S_NULL // raisestate + }, + + { // MT_INS + 2024, // doomednum + S_PINS, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL|MF_COUNTITEM|MF_TRANSLUCENT, // flags // killough 2/21/98 + S_NULL // raisestate + }, + + { // MT_MISC14 + 2025, // doomednum + S_SUIT, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL, // flags + S_NULL // raisestate + }, + + { // MT_MISC15 + 2026, // doomednum + S_PMAP, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL|MF_COUNTITEM, // flags + S_NULL // raisestate + }, + + { // MT_MISC16 + 2045, // doomednum + S_PVIS, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL|MF_COUNTITEM, // flags + S_NULL // raisestate + }, + + { // MT_MEGA + 83, // doomednum + S_MEGA, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL|MF_COUNTITEM|MF_TRANSLUCENT, // flags // killough 2/21/98 + S_NULL // raisestate + }, + + { // MT_CLIP + 2007, // doomednum + S_CLIP, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL, // flags + S_NULL // raisestate + }, + + { // MT_MISC17 + 2048, // doomednum + S_AMMO, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL, // flags + S_NULL // raisestate + }, + + { // MT_MISC18 + 2010, // doomednum + S_ROCK, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL, // flags + S_NULL // raisestate + }, + + { // MT_MISC19 + 2046, // doomednum + S_BROK, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL, // flags + S_NULL // raisestate + }, + + { // MT_MISC20 + 2047, // doomednum + S_CELL, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL, // flags + S_NULL // raisestate + }, + + { // MT_MISC21 + 17, // doomednum + S_CELP, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL, // flags + S_NULL // raisestate + }, + + { // MT_MISC22 + 2008, // doomednum + S_SHEL, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL, // flags + S_NULL // raisestate + }, + + { // MT_MISC23 + 2049, // doomednum + S_SBOX, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL, // flags + S_NULL // raisestate + }, + + { // MT_MISC24 + 8, // doomednum + S_BPAK, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL, // flags + S_NULL // raisestate + }, + + { // MT_MISC25 + 2006, // doomednum + S_BFUG, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL, // flags + S_NULL // raisestate + }, + + { // MT_CHAINGUN + 2002, // doomednum + S_MGUN, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL, // flags + S_NULL // raisestate + }, + + { // MT_MISC26 + 2005, // doomednum + S_CSAW, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL, // flags + S_NULL // raisestate + }, + + { // MT_MISC27 + 2003, // doomednum + S_LAUN, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL, // flags + S_NULL // raisestate + }, + + { // MT_MISC28 + 2004, // doomednum + S_PLAS, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL, // flags + S_NULL // raisestate + }, + + { // MT_SHOTGUN + 2001, // doomednum + S_SHOT, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL, // flags + S_NULL // raisestate + }, + + { // MT_SUPERSHOTGUN + 82, // doomednum + S_SHOT2, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL, // flags + S_NULL // raisestate + }, + + { // MT_MISC29 + 85, // doomednum + S_TECHLAMP, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SOLID, // flags + S_NULL // raisestate + }, + + { // MT_MISC30 + 86, // doomednum + S_TECH2LAMP, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SOLID, // flags + S_NULL // raisestate + }, + + { // MT_MISC31 + 2028, // doomednum + S_COLU, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SOLID, // flags + S_NULL // raisestate + }, + + { // MT_MISC32 + 30, // doomednum + S_TALLGRNCOL, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SOLID, // flags + S_NULL // raisestate + }, + + { // MT_MISC33 + 31, // doomednum + S_SHRTGRNCOL, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SOLID, // flags + S_NULL // raisestate + }, + + { // MT_MISC34 + 32, // doomednum + S_TALLREDCOL, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SOLID, // flags + S_NULL // raisestate + }, + + { // MT_MISC35 + 33, // doomednum + S_SHRTREDCOL, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SOLID, // flags + S_NULL // raisestate + }, + + { // MT_MISC36 + 37, // doomednum + S_SKULLCOL, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SOLID, // flags + S_NULL // raisestate + }, + + { // MT_MISC37 + 36, // doomednum + S_HEARTCOL, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SOLID, // flags + S_NULL // raisestate + }, + + { // MT_MISC38 + 41, // doomednum + S_EVILEYE, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SOLID, // flags + S_NULL // raisestate + }, + + { // MT_MISC39 + 42, // doomednum + S_FLOATSKULL, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SOLID, // flags + S_NULL // raisestate + }, + + { // MT_MISC40 + 43, // doomednum + S_TORCHTREE, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SOLID, // flags + S_NULL // raisestate + }, + + { // MT_MISC41 + 44, // doomednum + S_BLUETORCH, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SOLID, // flags + S_NULL // raisestate + }, + + { // MT_MISC42 + 45, // doomednum + S_GREENTORCH, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SOLID, // flags + S_NULL // raisestate + }, + + { // MT_MISC43 + 46, // doomednum + S_REDTORCH, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SOLID, // flags + S_NULL // raisestate + }, + + { // MT_MISC44 + 55, // doomednum + S_BTORCHSHRT, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SOLID, // flags + S_NULL // raisestate + }, + + { // MT_MISC45 + 56, // doomednum + S_GTORCHSHRT, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SOLID, // flags + S_NULL // raisestate + }, + + { // MT_MISC46 + 57, // doomednum + S_RTORCHSHRT, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SOLID, // flags + S_NULL // raisestate + }, + + { // MT_MISC47 + 47, // doomednum + S_STALAGTITE, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SOLID, // flags + S_NULL // raisestate + }, + + { // MT_MISC48 + 48, // doomednum + S_TECHPILLAR, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SOLID, // flags + S_NULL // raisestate + }, + + { // MT_MISC49 + 34, // doomednum + S_CANDLESTIK, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + 0, // flags + S_NULL // raisestate + }, + + { // MT_MISC50 + 35, // doomednum + S_CANDELABRA, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SOLID, // flags + S_NULL // raisestate + }, + + { // MT_MISC51 + 49, // doomednum + S_BLOODYTWITCH, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 68*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY, // flags + S_NULL // raisestate + }, + + { // MT_MISC52 + 50, // doomednum + S_MEAT2, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 84*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY, // flags + S_NULL // raisestate + }, + + { // MT_MISC53 + 51, // doomednum + S_MEAT3, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 84*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY, // flags + S_NULL // raisestate + }, + + { // MT_MISC54 + 52, // doomednum + S_MEAT4, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 68*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY, // flags + S_NULL // raisestate + }, + + { // MT_MISC55 + 53, // doomednum + S_MEAT5, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 52*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY, // flags + S_NULL // raisestate + }, + + { // MT_MISC56 + 59, // doomednum + S_MEAT2, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 84*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPAWNCEILING|MF_NOGRAVITY, // flags + S_NULL // raisestate + }, + + { // MT_MISC57 + 60, // doomednum + S_MEAT4, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 68*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPAWNCEILING|MF_NOGRAVITY, // flags + S_NULL // raisestate + }, + + { // MT_MISC58 + 61, // doomednum + S_MEAT3, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 52*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPAWNCEILING|MF_NOGRAVITY, // flags + S_NULL // raisestate + }, + + { // MT_MISC59 + 62, // doomednum + S_MEAT5, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 52*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPAWNCEILING|MF_NOGRAVITY, // flags + S_NULL // raisestate + }, + + { // MT_MISC60 + 63, // doomednum + S_BLOODYTWITCH, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 68*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SPAWNCEILING|MF_NOGRAVITY, // flags + S_NULL // raisestate + }, + + { // MT_MISC61 + 22, // doomednum + S_HEAD_DIE6, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + 0, // flags + S_NULL // raisestate + }, + + { // MT_MISC62 + 15, // doomednum + S_PLAY_DIE7, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + 0, // flags + S_NULL // raisestate + }, + + { // MT_MISC63 + 18, // doomednum + S_POSS_DIE5, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + 0, // flags + S_NULL // raisestate + }, + + { // MT_MISC64 + 21, // doomednum + S_SARG_DIE6, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + 0, // flags + S_NULL // raisestate + }, + + { // MT_MISC65 + 23, // doomednum + S_SKULL_DIE6, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + 0, // flags + S_NULL // raisestate + }, + + { // MT_MISC66 + 20, // doomednum + S_TROO_DIE5, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + 0, // flags + S_NULL // raisestate + }, + + { // MT_MISC67 + 19, // doomednum + S_SPOS_DIE5, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + 0, // flags + S_NULL // raisestate + }, + + { // MT_MISC68 + 10, // doomednum + S_PLAY_XDIE9, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + 0, // flags + S_NULL // raisestate + }, + + { // MT_MISC69 + 12, // doomednum + S_PLAY_XDIE9, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + 0, // flags + S_NULL // raisestate + }, + + { // MT_MISC70 + 28, // doomednum + S_HEADSONSTICK, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SOLID, // flags + S_NULL // raisestate + }, + + { // MT_MISC71 + 24, // doomednum + S_GIBS, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + 0, // flags + S_NULL // raisestate + }, + + { // MT_MISC72 + 27, // doomednum + S_HEADONASTICK, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SOLID, // flags + S_NULL // raisestate + }, + + { // MT_MISC73 + 29, // doomednum + S_HEADCANDLES, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SOLID, // flags + S_NULL // raisestate + }, + + { // MT_MISC74 + 25, // doomednum + S_DEADSTICK, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SOLID, // flags + S_NULL // raisestate + }, + + { // MT_MISC75 + 26, // doomednum + S_LIVESTICK, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SOLID, // flags + S_NULL // raisestate + }, + + { // MT_MISC76 + 54, // doomednum + S_BIGTREE, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 32*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SOLID, // flags + S_NULL // raisestate + }, + + { // MT_MISC77 + 70, // doomednum + S_BBAR1, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SOLID, // flags + S_NULL // raisestate + }, + + { // MT_MISC78 + 73, // doomednum + S_HANGNOGUTS, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 88*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY, // flags + S_NULL // raisestate + }, + + { // MT_MISC79 + 74, // doomednum + S_HANGBNOBRAIN, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 88*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY, // flags + S_NULL // raisestate + }, + + { // MT_MISC80 + 75, // doomednum + S_HANGTLOOKDN, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 64*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY, // flags + S_NULL // raisestate + }, + + { // MT_MISC81 + 76, // doomednum + S_HANGTSKULL, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 64*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY, // flags + S_NULL // raisestate + }, + + { // MT_MISC82 + 77, // doomednum + S_HANGTLOOKUP, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 64*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY, // flags + S_NULL // raisestate + }, + + { // MT_MISC83 + 78, // doomednum + S_HANGTNOBRAIN, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 64*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY, // flags + S_NULL // raisestate + }, + + { // MT_MISC84 + 79, // doomednum + S_COLONGIBS, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_NOBLOCKMAP, // flags + S_NULL // raisestate + }, + + { // MT_MISC85 + 80, // doomednum + S_SMALLPOOL, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_NOBLOCKMAP, // flags + S_NULL // raisestate + }, + + { // MT_MISC86 + 81, // doomednum + S_BRAINSTEM, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 20*FRACUNIT, // radius + 16*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_None, // activesound + MF_NOBLOCKMAP, // flags + S_NULL // raisestate + }, + + // For use with wind and current effects + { // MT_PUSH // phares + 5001, // doomednum // | //jff 5/11/98 deconflict + S_TNT1, // spawnstate // V // with DOSDoom + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 8, // radius + 8, // height + 10, // mass + 0, // damage + sfx_None, // activesound + MF_NOBLOCKMAP, // flags + S_NULL // raisestate + }, + + // For use with wind and current effects + { // MT_PULL + 5002, // doomednum //jff 5/11/98 deconflict + S_TNT1, // spawnstate // with DOSDoom + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 8, // radius + 8, // height + 10, // mass + 0, // damage + sfx_None, // activesound + MF_NOBLOCKMAP, // flags + S_NULL // raisestate + }, +#ifdef DOGS + // Marine's best friend :) // killough 7/19/98 + { // MT_DOGS + 888, // doomednum + S_DOGS_STND, // spawnstate + 500, // spawnhealth + S_DOGS_RUN1, // seestate + sfx_dgsit, // seesound + 8, // reactiontime + sfx_dgatk, // attacksound + S_DOGS_PAIN, // painstate + 180, // painchance + sfx_dgpain, // painsound + S_DOGS_ATK1, // meleestate + 0, // missilestate + S_DOGS_DIE1, // deathstate + S_NULL, // xdeathstate + sfx_dgdth, // deathsound + 10, // speed + 12*FRACUNIT, // radius + 28*FRACUNIT, // height + 100, // mass + 0, // damage + sfx_dgact, // activesound + MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL, // flags + S_DOGS_RAISE1 // raisestate + }, +#endif +}; diff --git a/components/doom/prboom/info.h b/components/doom/prboom/info.h new file mode 100644 index 0000000..03e51ee --- /dev/null +++ b/components/doom/prboom/info.h @@ -0,0 +1,1501 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Thing frame/state LUT, + * generated by multigen utilitiy. + * This one is the original DOOM version, preserved. + * + *-----------------------------------------------------------------------------*/ + +#ifndef __INFO__ +#define __INFO__ + +/* Needed for action function pointer handling. */ +#include "d_think.h" + +/******************************************************************** + * Sprite name enumeration - must match info.c * + ********************************************************************/ +typedef enum +{ + SPR_TROO, + SPR_SHTG, + SPR_PUNG, + SPR_PISG, + SPR_PISF, + SPR_SHTF, + SPR_SHT2, + SPR_CHGG, + SPR_CHGF, + SPR_MISG, + SPR_MISF, + SPR_SAWG, + SPR_PLSG, + SPR_PLSF, + SPR_BFGG, + SPR_BFGF, + SPR_BLUD, + SPR_PUFF, + SPR_BAL1, + SPR_BAL2, + SPR_PLSS, + SPR_PLSE, + SPR_MISL, + SPR_BFS1, + SPR_BFE1, + SPR_BFE2, + SPR_TFOG, + SPR_IFOG, + SPR_PLAY, + SPR_POSS, + SPR_SPOS, + SPR_VILE, + SPR_FIRE, + SPR_FATB, + SPR_FBXP, + SPR_SKEL, + SPR_MANF, + SPR_FATT, + SPR_CPOS, + SPR_SARG, + SPR_HEAD, + SPR_BAL7, + SPR_BOSS, + SPR_BOS2, + SPR_SKUL, + SPR_SPID, + SPR_BSPI, + SPR_APLS, + SPR_APBX, + SPR_CYBR, + SPR_PAIN, + SPR_SSWV, + SPR_KEEN, + SPR_BBRN, + SPR_BOSF, + SPR_ARM1, + SPR_ARM2, + SPR_BAR1, + SPR_BEXP, + SPR_FCAN, + SPR_BON1, + SPR_BON2, + SPR_BKEY, + SPR_RKEY, + SPR_YKEY, + SPR_BSKU, + SPR_RSKU, + SPR_YSKU, + SPR_STIM, + SPR_MEDI, + SPR_SOUL, + SPR_PINV, + SPR_PSTR, + SPR_PINS, + SPR_MEGA, + SPR_SUIT, + SPR_PMAP, + SPR_PVIS, + SPR_CLIP, + SPR_AMMO, + SPR_ROCK, + SPR_BROK, + SPR_CELL, + SPR_CELP, + SPR_SHEL, + SPR_SBOX, + SPR_BPAK, + SPR_BFUG, + SPR_MGUN, + SPR_CSAW, + SPR_LAUN, + SPR_PLAS, + SPR_SHOT, + SPR_SGN2, + SPR_COLU, + SPR_SMT2, + SPR_GOR1, + SPR_POL2, + SPR_POL5, + SPR_POL4, + SPR_POL3, + SPR_POL1, + SPR_POL6, + SPR_GOR2, + SPR_GOR3, + SPR_GOR4, + SPR_GOR5, + SPR_SMIT, + SPR_COL1, + SPR_COL2, + SPR_COL3, + SPR_COL4, + SPR_CAND, + SPR_CBRA, + SPR_COL6, + SPR_TRE1, + SPR_TRE2, + SPR_ELEC, + SPR_CEYE, + SPR_FSKU, + SPR_COL5, + SPR_TBLU, + SPR_TGRN, + SPR_TRED, + SPR_SMBT, + SPR_SMGT, + SPR_SMRT, + SPR_HDB1, + SPR_HDB2, + SPR_HDB3, + SPR_HDB4, + SPR_HDB5, + SPR_HDB6, + SPR_POB1, + SPR_POB2, + SPR_BRS1, + SPR_TLMP, + SPR_TLP2, + SPR_TNT1, /* add invisible sprite phares 3/8/98 */ + +#ifdef DOGS + SPR_DOGS, /* killough 7/19/98: Marine's best friend :) */ +#endif + + NUMSPRITES /* counter of how many there are */ + +} spritenum_t; + +/******************************************************************** + * States (frames) enumeration -- must match info.c * + ********************************************************************/ + +typedef enum PACKEDATTR +{ + S_NULL, + S_LIGHTDONE, + S_PUNCH, + S_PUNCHDOWN, + S_PUNCHUP, + S_PUNCH1, + S_PUNCH2, + S_PUNCH3, + S_PUNCH4, + S_PUNCH5, + S_PISTOL, + S_PISTOLDOWN, + S_PISTOLUP, + S_PISTOL1, + S_PISTOL2, + S_PISTOL3, + S_PISTOL4, + S_PISTOLFLASH, + S_SGUN, + S_SGUNDOWN, + S_SGUNUP, + S_SGUN1, + S_SGUN2, + S_SGUN3, + S_SGUN4, + S_SGUN5, + S_SGUN6, + S_SGUN7, + S_SGUN8, + S_SGUN9, + S_SGUNFLASH1, + S_SGUNFLASH2, + S_DSGUN, + S_DSGUNDOWN, + S_DSGUNUP, + S_DSGUN1, + S_DSGUN2, + S_DSGUN3, + S_DSGUN4, + S_DSGUN5, + S_DSGUN6, + S_DSGUN7, + S_DSGUN8, + S_DSGUN9, + S_DSGUN10, + S_DSNR1, + S_DSNR2, + S_DSGUNFLASH1, + S_DSGUNFLASH2, + S_CHAIN, + S_CHAINDOWN, + S_CHAINUP, + S_CHAIN1, + S_CHAIN2, + S_CHAIN3, + S_CHAINFLASH1, + S_CHAINFLASH2, + S_MISSILE, + S_MISSILEDOWN, + S_MISSILEUP, + S_MISSILE1, + S_MISSILE2, + S_MISSILE3, + S_MISSILEFLASH1, + S_MISSILEFLASH2, + S_MISSILEFLASH3, + S_MISSILEFLASH4, + S_SAW, + S_SAWB, + S_SAWDOWN, + S_SAWUP, + S_SAW1, + S_SAW2, + S_SAW3, + S_PLASMA, + S_PLASMADOWN, + S_PLASMAUP, + S_PLASMA1, + S_PLASMA2, + S_PLASMAFLASH1, + S_PLASMAFLASH2, + S_BFG, + S_BFGDOWN, + S_BFGUP, + S_BFG1, + S_BFG2, + S_BFG3, + S_BFG4, + S_BFGFLASH1, + S_BFGFLASH2, + S_BLOOD1, + S_BLOOD2, + S_BLOOD3, + S_PUFF1, + S_PUFF2, + S_PUFF3, + S_PUFF4, + S_TBALL1, + S_TBALL2, + S_TBALLX1, + S_TBALLX2, + S_TBALLX3, + S_RBALL1, + S_RBALL2, + S_RBALLX1, + S_RBALLX2, + S_RBALLX3, + S_PLASBALL, + S_PLASBALL2, + S_PLASEXP, + S_PLASEXP2, + S_PLASEXP3, + S_PLASEXP4, + S_PLASEXP5, + S_ROCKET, + S_BFGSHOT, + S_BFGSHOT2, + S_BFGLAND, + S_BFGLAND2, + S_BFGLAND3, + S_BFGLAND4, + S_BFGLAND5, + S_BFGLAND6, + S_BFGEXP, + S_BFGEXP2, + S_BFGEXP3, + S_BFGEXP4, + S_EXPLODE1, + S_EXPLODE2, + S_EXPLODE3, + S_TFOG, + S_TFOG01, + S_TFOG02, + S_TFOG2, + S_TFOG3, + S_TFOG4, + S_TFOG5, + S_TFOG6, + S_TFOG7, + S_TFOG8, + S_TFOG9, + S_TFOG10, + S_IFOG, + S_IFOG01, + S_IFOG02, + S_IFOG2, + S_IFOG3, + S_IFOG4, + S_IFOG5, + S_PLAY, + S_PLAY_RUN1, + S_PLAY_RUN2, + S_PLAY_RUN3, + S_PLAY_RUN4, + S_PLAY_ATK1, + S_PLAY_ATK2, + S_PLAY_PAIN, + S_PLAY_PAIN2, + S_PLAY_DIE1, + S_PLAY_DIE2, + S_PLAY_DIE3, + S_PLAY_DIE4, + S_PLAY_DIE5, + S_PLAY_DIE6, + S_PLAY_DIE7, + S_PLAY_XDIE1, + S_PLAY_XDIE2, + S_PLAY_XDIE3, + S_PLAY_XDIE4, + S_PLAY_XDIE5, + S_PLAY_XDIE6, + S_PLAY_XDIE7, + S_PLAY_XDIE8, + S_PLAY_XDIE9, + S_POSS_STND, + S_POSS_STND2, + S_POSS_RUN1, + S_POSS_RUN2, + S_POSS_RUN3, + S_POSS_RUN4, + S_POSS_RUN5, + S_POSS_RUN6, + S_POSS_RUN7, + S_POSS_RUN8, + S_POSS_ATK1, + S_POSS_ATK2, + S_POSS_ATK3, + S_POSS_PAIN, + S_POSS_PAIN2, + S_POSS_DIE1, + S_POSS_DIE2, + S_POSS_DIE3, + S_POSS_DIE4, + S_POSS_DIE5, + S_POSS_XDIE1, + S_POSS_XDIE2, + S_POSS_XDIE3, + S_POSS_XDIE4, + S_POSS_XDIE5, + S_POSS_XDIE6, + S_POSS_XDIE7, + S_POSS_XDIE8, + S_POSS_XDIE9, + S_POSS_RAISE1, + S_POSS_RAISE2, + S_POSS_RAISE3, + S_POSS_RAISE4, + S_SPOS_STND, + S_SPOS_STND2, + S_SPOS_RUN1, + S_SPOS_RUN2, + S_SPOS_RUN3, + S_SPOS_RUN4, + S_SPOS_RUN5, + S_SPOS_RUN6, + S_SPOS_RUN7, + S_SPOS_RUN8, + S_SPOS_ATK1, + S_SPOS_ATK2, + S_SPOS_ATK3, + S_SPOS_PAIN, + S_SPOS_PAIN2, + S_SPOS_DIE1, + S_SPOS_DIE2, + S_SPOS_DIE3, + S_SPOS_DIE4, + S_SPOS_DIE5, + S_SPOS_XDIE1, + S_SPOS_XDIE2, + S_SPOS_XDIE3, + S_SPOS_XDIE4, + S_SPOS_XDIE5, + S_SPOS_XDIE6, + S_SPOS_XDIE7, + S_SPOS_XDIE8, + S_SPOS_XDIE9, + S_SPOS_RAISE1, + S_SPOS_RAISE2, + S_SPOS_RAISE3, + S_SPOS_RAISE4, + S_SPOS_RAISE5, + S_VILE_STND, + S_VILE_STND2, + S_VILE_RUN1, + S_VILE_RUN2, + S_VILE_RUN3, + S_VILE_RUN4, + S_VILE_RUN5, + S_VILE_RUN6, + S_VILE_RUN7, + S_VILE_RUN8, + S_VILE_RUN9, + S_VILE_RUN10, + S_VILE_RUN11, + S_VILE_RUN12, + S_VILE_ATK1, + S_VILE_ATK2, + S_VILE_ATK3, + S_VILE_ATK4, + S_VILE_ATK5, + S_VILE_ATK6, + S_VILE_ATK7, + S_VILE_ATK8, + S_VILE_ATK9, + S_VILE_ATK10, + S_VILE_ATK11, + S_VILE_HEAL1, + S_VILE_HEAL2, + S_VILE_HEAL3, + S_VILE_PAIN, + S_VILE_PAIN2, + S_VILE_DIE1, + S_VILE_DIE2, + S_VILE_DIE3, + S_VILE_DIE4, + S_VILE_DIE5, + S_VILE_DIE6, + S_VILE_DIE7, + S_VILE_DIE8, + S_VILE_DIE9, + S_VILE_DIE10, + S_FIRE1, + S_FIRE2, + S_FIRE3, + S_FIRE4, + S_FIRE5, + S_FIRE6, + S_FIRE7, + S_FIRE8, + S_FIRE9, + S_FIRE10, + S_FIRE11, + S_FIRE12, + S_FIRE13, + S_FIRE14, + S_FIRE15, + S_FIRE16, + S_FIRE17, + S_FIRE18, + S_FIRE19, + S_FIRE20, + S_FIRE21, + S_FIRE22, + S_FIRE23, + S_FIRE24, + S_FIRE25, + S_FIRE26, + S_FIRE27, + S_FIRE28, + S_FIRE29, + S_FIRE30, + S_SMOKE1, + S_SMOKE2, + S_SMOKE3, + S_SMOKE4, + S_SMOKE5, + S_TRACER, + S_TRACER2, + S_TRACEEXP1, + S_TRACEEXP2, + S_TRACEEXP3, + S_SKEL_STND, + S_SKEL_STND2, + S_SKEL_RUN1, + S_SKEL_RUN2, + S_SKEL_RUN3, + S_SKEL_RUN4, + S_SKEL_RUN5, + S_SKEL_RUN6, + S_SKEL_RUN7, + S_SKEL_RUN8, + S_SKEL_RUN9, + S_SKEL_RUN10, + S_SKEL_RUN11, + S_SKEL_RUN12, + S_SKEL_FIST1, + S_SKEL_FIST2, + S_SKEL_FIST3, + S_SKEL_FIST4, + S_SKEL_MISS1, + S_SKEL_MISS2, + S_SKEL_MISS3, + S_SKEL_MISS4, + S_SKEL_PAIN, + S_SKEL_PAIN2, + S_SKEL_DIE1, + S_SKEL_DIE2, + S_SKEL_DIE3, + S_SKEL_DIE4, + S_SKEL_DIE5, + S_SKEL_DIE6, + S_SKEL_RAISE1, + S_SKEL_RAISE2, + S_SKEL_RAISE3, + S_SKEL_RAISE4, + S_SKEL_RAISE5, + S_SKEL_RAISE6, + S_FATSHOT1, + S_FATSHOT2, + S_FATSHOTX1, + S_FATSHOTX2, + S_FATSHOTX3, + S_FATT_STND, + S_FATT_STND2, + S_FATT_RUN1, + S_FATT_RUN2, + S_FATT_RUN3, + S_FATT_RUN4, + S_FATT_RUN5, + S_FATT_RUN6, + S_FATT_RUN7, + S_FATT_RUN8, + S_FATT_RUN9, + S_FATT_RUN10, + S_FATT_RUN11, + S_FATT_RUN12, + S_FATT_ATK1, + S_FATT_ATK2, + S_FATT_ATK3, + S_FATT_ATK4, + S_FATT_ATK5, + S_FATT_ATK6, + S_FATT_ATK7, + S_FATT_ATK8, + S_FATT_ATK9, + S_FATT_ATK10, + S_FATT_PAIN, + S_FATT_PAIN2, + S_FATT_DIE1, + S_FATT_DIE2, + S_FATT_DIE3, + S_FATT_DIE4, + S_FATT_DIE5, + S_FATT_DIE6, + S_FATT_DIE7, + S_FATT_DIE8, + S_FATT_DIE9, + S_FATT_DIE10, + S_FATT_RAISE1, + S_FATT_RAISE2, + S_FATT_RAISE3, + S_FATT_RAISE4, + S_FATT_RAISE5, + S_FATT_RAISE6, + S_FATT_RAISE7, + S_FATT_RAISE8, + S_CPOS_STND, + S_CPOS_STND2, + S_CPOS_RUN1, + S_CPOS_RUN2, + S_CPOS_RUN3, + S_CPOS_RUN4, + S_CPOS_RUN5, + S_CPOS_RUN6, + S_CPOS_RUN7, + S_CPOS_RUN8, + S_CPOS_ATK1, + S_CPOS_ATK2, + S_CPOS_ATK3, + S_CPOS_ATK4, + S_CPOS_PAIN, + S_CPOS_PAIN2, + S_CPOS_DIE1, + S_CPOS_DIE2, + S_CPOS_DIE3, + S_CPOS_DIE4, + S_CPOS_DIE5, + S_CPOS_DIE6, + S_CPOS_DIE7, + S_CPOS_XDIE1, + S_CPOS_XDIE2, + S_CPOS_XDIE3, + S_CPOS_XDIE4, + S_CPOS_XDIE5, + S_CPOS_XDIE6, + S_CPOS_RAISE1, + S_CPOS_RAISE2, + S_CPOS_RAISE3, + S_CPOS_RAISE4, + S_CPOS_RAISE5, + S_CPOS_RAISE6, + S_CPOS_RAISE7, + S_TROO_STND, + S_TROO_STND2, + S_TROO_RUN1, + S_TROO_RUN2, + S_TROO_RUN3, + S_TROO_RUN4, + S_TROO_RUN5, + S_TROO_RUN6, + S_TROO_RUN7, + S_TROO_RUN8, + S_TROO_ATK1, + S_TROO_ATK2, + S_TROO_ATK3, + S_TROO_PAIN, + S_TROO_PAIN2, + S_TROO_DIE1, + S_TROO_DIE2, + S_TROO_DIE3, + S_TROO_DIE4, + S_TROO_DIE5, + S_TROO_XDIE1, + S_TROO_XDIE2, + S_TROO_XDIE3, + S_TROO_XDIE4, + S_TROO_XDIE5, + S_TROO_XDIE6, + S_TROO_XDIE7, + S_TROO_XDIE8, + S_TROO_RAISE1, + S_TROO_RAISE2, + S_TROO_RAISE3, + S_TROO_RAISE4, + S_TROO_RAISE5, + S_SARG_STND, + S_SARG_STND2, + S_SARG_RUN1, + S_SARG_RUN2, + S_SARG_RUN3, + S_SARG_RUN4, + S_SARG_RUN5, + S_SARG_RUN6, + S_SARG_RUN7, + S_SARG_RUN8, + S_SARG_ATK1, + S_SARG_ATK2, + S_SARG_ATK3, + S_SARG_PAIN, + S_SARG_PAIN2, + S_SARG_DIE1, + S_SARG_DIE2, + S_SARG_DIE3, + S_SARG_DIE4, + S_SARG_DIE5, + S_SARG_DIE6, + S_SARG_RAISE1, + S_SARG_RAISE2, + S_SARG_RAISE3, + S_SARG_RAISE4, + S_SARG_RAISE5, + S_SARG_RAISE6, + S_HEAD_STND, + S_HEAD_RUN1, + S_HEAD_ATK1, + S_HEAD_ATK2, + S_HEAD_ATK3, + S_HEAD_PAIN, + S_HEAD_PAIN2, + S_HEAD_PAIN3, + S_HEAD_DIE1, + S_HEAD_DIE2, + S_HEAD_DIE3, + S_HEAD_DIE4, + S_HEAD_DIE5, + S_HEAD_DIE6, + S_HEAD_RAISE1, + S_HEAD_RAISE2, + S_HEAD_RAISE3, + S_HEAD_RAISE4, + S_HEAD_RAISE5, + S_HEAD_RAISE6, + S_BRBALL1, + S_BRBALL2, + S_BRBALLX1, + S_BRBALLX2, + S_BRBALLX3, + S_BOSS_STND, + S_BOSS_STND2, + S_BOSS_RUN1, + S_BOSS_RUN2, + S_BOSS_RUN3, + S_BOSS_RUN4, + S_BOSS_RUN5, + S_BOSS_RUN6, + S_BOSS_RUN7, + S_BOSS_RUN8, + S_BOSS_ATK1, + S_BOSS_ATK2, + S_BOSS_ATK3, + S_BOSS_PAIN, + S_BOSS_PAIN2, + S_BOSS_DIE1, + S_BOSS_DIE2, + S_BOSS_DIE3, + S_BOSS_DIE4, + S_BOSS_DIE5, + S_BOSS_DIE6, + S_BOSS_DIE7, + S_BOSS_RAISE1, + S_BOSS_RAISE2, + S_BOSS_RAISE3, + S_BOSS_RAISE4, + S_BOSS_RAISE5, + S_BOSS_RAISE6, + S_BOSS_RAISE7, + S_BOS2_STND, + S_BOS2_STND2, + S_BOS2_RUN1, + S_BOS2_RUN2, + S_BOS2_RUN3, + S_BOS2_RUN4, + S_BOS2_RUN5, + S_BOS2_RUN6, + S_BOS2_RUN7, + S_BOS2_RUN8, + S_BOS2_ATK1, + S_BOS2_ATK2, + S_BOS2_ATK3, + S_BOS2_PAIN, + S_BOS2_PAIN2, + S_BOS2_DIE1, + S_BOS2_DIE2, + S_BOS2_DIE3, + S_BOS2_DIE4, + S_BOS2_DIE5, + S_BOS2_DIE6, + S_BOS2_DIE7, + S_BOS2_RAISE1, + S_BOS2_RAISE2, + S_BOS2_RAISE3, + S_BOS2_RAISE4, + S_BOS2_RAISE5, + S_BOS2_RAISE6, + S_BOS2_RAISE7, + S_SKULL_STND, + S_SKULL_STND2, + S_SKULL_RUN1, + S_SKULL_RUN2, + S_SKULL_ATK1, + S_SKULL_ATK2, + S_SKULL_ATK3, + S_SKULL_ATK4, + S_SKULL_PAIN, + S_SKULL_PAIN2, + S_SKULL_DIE1, + S_SKULL_DIE2, + S_SKULL_DIE3, + S_SKULL_DIE4, + S_SKULL_DIE5, + S_SKULL_DIE6, + S_SPID_STND, + S_SPID_STND2, + S_SPID_RUN1, + S_SPID_RUN2, + S_SPID_RUN3, + S_SPID_RUN4, + S_SPID_RUN5, + S_SPID_RUN6, + S_SPID_RUN7, + S_SPID_RUN8, + S_SPID_RUN9, + S_SPID_RUN10, + S_SPID_RUN11, + S_SPID_RUN12, + S_SPID_ATK1, + S_SPID_ATK2, + S_SPID_ATK3, + S_SPID_ATK4, + S_SPID_PAIN, + S_SPID_PAIN2, + S_SPID_DIE1, + S_SPID_DIE2, + S_SPID_DIE3, + S_SPID_DIE4, + S_SPID_DIE5, + S_SPID_DIE6, + S_SPID_DIE7, + S_SPID_DIE8, + S_SPID_DIE9, + S_SPID_DIE10, + S_SPID_DIE11, + S_BSPI_STND, + S_BSPI_STND2, + S_BSPI_SIGHT, + S_BSPI_RUN1, + S_BSPI_RUN2, + S_BSPI_RUN3, + S_BSPI_RUN4, + S_BSPI_RUN5, + S_BSPI_RUN6, + S_BSPI_RUN7, + S_BSPI_RUN8, + S_BSPI_RUN9, + S_BSPI_RUN10, + S_BSPI_RUN11, + S_BSPI_RUN12, + S_BSPI_ATK1, + S_BSPI_ATK2, + S_BSPI_ATK3, + S_BSPI_ATK4, + S_BSPI_PAIN, + S_BSPI_PAIN2, + S_BSPI_DIE1, + S_BSPI_DIE2, + S_BSPI_DIE3, + S_BSPI_DIE4, + S_BSPI_DIE5, + S_BSPI_DIE6, + S_BSPI_DIE7, + S_BSPI_RAISE1, + S_BSPI_RAISE2, + S_BSPI_RAISE3, + S_BSPI_RAISE4, + S_BSPI_RAISE5, + S_BSPI_RAISE6, + S_BSPI_RAISE7, + S_ARACH_PLAZ, + S_ARACH_PLAZ2, + S_ARACH_PLEX, + S_ARACH_PLEX2, + S_ARACH_PLEX3, + S_ARACH_PLEX4, + S_ARACH_PLEX5, + S_CYBER_STND, + S_CYBER_STND2, + S_CYBER_RUN1, + S_CYBER_RUN2, + S_CYBER_RUN3, + S_CYBER_RUN4, + S_CYBER_RUN5, + S_CYBER_RUN6, + S_CYBER_RUN7, + S_CYBER_RUN8, + S_CYBER_ATK1, + S_CYBER_ATK2, + S_CYBER_ATK3, + S_CYBER_ATK4, + S_CYBER_ATK5, + S_CYBER_ATK6, + S_CYBER_PAIN, + S_CYBER_DIE1, + S_CYBER_DIE2, + S_CYBER_DIE3, + S_CYBER_DIE4, + S_CYBER_DIE5, + S_CYBER_DIE6, + S_CYBER_DIE7, + S_CYBER_DIE8, + S_CYBER_DIE9, + S_CYBER_DIE10, + S_PAIN_STND, + S_PAIN_RUN1, + S_PAIN_RUN2, + S_PAIN_RUN3, + S_PAIN_RUN4, + S_PAIN_RUN5, + S_PAIN_RUN6, + S_PAIN_ATK1, + S_PAIN_ATK2, + S_PAIN_ATK3, + S_PAIN_ATK4, + S_PAIN_PAIN, + S_PAIN_PAIN2, + S_PAIN_DIE1, + S_PAIN_DIE2, + S_PAIN_DIE3, + S_PAIN_DIE4, + S_PAIN_DIE5, + S_PAIN_DIE6, + S_PAIN_RAISE1, + S_PAIN_RAISE2, + S_PAIN_RAISE3, + S_PAIN_RAISE4, + S_PAIN_RAISE5, + S_PAIN_RAISE6, + S_SSWV_STND, + S_SSWV_STND2, + S_SSWV_RUN1, + S_SSWV_RUN2, + S_SSWV_RUN3, + S_SSWV_RUN4, + S_SSWV_RUN5, + S_SSWV_RUN6, + S_SSWV_RUN7, + S_SSWV_RUN8, + S_SSWV_ATK1, + S_SSWV_ATK2, + S_SSWV_ATK3, + S_SSWV_ATK4, + S_SSWV_ATK5, + S_SSWV_ATK6, + S_SSWV_PAIN, + S_SSWV_PAIN2, + S_SSWV_DIE1, + S_SSWV_DIE2, + S_SSWV_DIE3, + S_SSWV_DIE4, + S_SSWV_DIE5, + S_SSWV_XDIE1, + S_SSWV_XDIE2, + S_SSWV_XDIE3, + S_SSWV_XDIE4, + S_SSWV_XDIE5, + S_SSWV_XDIE6, + S_SSWV_XDIE7, + S_SSWV_XDIE8, + S_SSWV_XDIE9, + S_SSWV_RAISE1, + S_SSWV_RAISE2, + S_SSWV_RAISE3, + S_SSWV_RAISE4, + S_SSWV_RAISE5, + S_KEENSTND, + S_COMMKEEN, + S_COMMKEEN2, + S_COMMKEEN3, + S_COMMKEEN4, + S_COMMKEEN5, + S_COMMKEEN6, + S_COMMKEEN7, + S_COMMKEEN8, + S_COMMKEEN9, + S_COMMKEEN10, + S_COMMKEEN11, + S_COMMKEEN12, + S_KEENPAIN, + S_KEENPAIN2, + S_BRAIN, + S_BRAIN_PAIN, + S_BRAIN_DIE1, + S_BRAIN_DIE2, + S_BRAIN_DIE3, + S_BRAIN_DIE4, + S_BRAINEYE, + S_BRAINEYESEE, + S_BRAINEYE1, + S_SPAWN1, + S_SPAWN2, + S_SPAWN3, + S_SPAWN4, + S_SPAWNFIRE1, + S_SPAWNFIRE2, + S_SPAWNFIRE3, + S_SPAWNFIRE4, + S_SPAWNFIRE5, + S_SPAWNFIRE6, + S_SPAWNFIRE7, + S_SPAWNFIRE8, + S_BRAINEXPLODE1, + S_BRAINEXPLODE2, + S_BRAINEXPLODE3, + S_ARM1, + S_ARM1A, + S_ARM2, + S_ARM2A, + S_BAR1, + S_BAR2, + S_BEXP, + S_BEXP2, + S_BEXP3, + S_BEXP4, + S_BEXP5, + S_BBAR1, + S_BBAR2, + S_BBAR3, + S_BON1, + S_BON1A, + S_BON1B, + S_BON1C, + S_BON1D, + S_BON1E, + S_BON2, + S_BON2A, + S_BON2B, + S_BON2C, + S_BON2D, + S_BON2E, + S_BKEY, + S_BKEY2, + S_RKEY, + S_RKEY2, + S_YKEY, + S_YKEY2, + S_BSKULL, + S_BSKULL2, + S_RSKULL, + S_RSKULL2, + S_YSKULL, + S_YSKULL2, + S_STIM, + S_MEDI, + S_SOUL, + S_SOUL2, + S_SOUL3, + S_SOUL4, + S_SOUL5, + S_SOUL6, + S_PINV, + S_PINV2, + S_PINV3, + S_PINV4, + S_PSTR, + S_PINS, + S_PINS2, + S_PINS3, + S_PINS4, + S_MEGA, + S_MEGA2, + S_MEGA3, + S_MEGA4, + S_SUIT, + S_PMAP, + S_PMAP2, + S_PMAP3, + S_PMAP4, + S_PMAP5, + S_PMAP6, + S_PVIS, + S_PVIS2, + S_CLIP, + S_AMMO, + S_ROCK, + S_BROK, + S_CELL, + S_CELP, + S_SHEL, + S_SBOX, + S_BPAK, + S_BFUG, + S_MGUN, + S_CSAW, + S_LAUN, + S_PLAS, + S_SHOT, + S_SHOT2, + S_COLU, + S_STALAG, + S_BLOODYTWITCH, + S_BLOODYTWITCH2, + S_BLOODYTWITCH3, + S_BLOODYTWITCH4, + S_DEADTORSO, + S_DEADBOTTOM, + S_HEADSONSTICK, + S_GIBS, + S_HEADONASTICK, + S_HEADCANDLES, + S_HEADCANDLES2, + S_DEADSTICK, + S_LIVESTICK, + S_LIVESTICK2, + S_MEAT2, + S_MEAT3, + S_MEAT4, + S_MEAT5, + S_STALAGTITE, + S_TALLGRNCOL, + S_SHRTGRNCOL, + S_TALLREDCOL, + S_SHRTREDCOL, + S_CANDLESTIK, + S_CANDELABRA, + S_SKULLCOL, + S_TORCHTREE, + S_BIGTREE, + S_TECHPILLAR, + S_EVILEYE, + S_EVILEYE2, + S_EVILEYE3, + S_EVILEYE4, + S_FLOATSKULL, + S_FLOATSKULL2, + S_FLOATSKULL3, + S_HEARTCOL, + S_HEARTCOL2, + S_BLUETORCH, + S_BLUETORCH2, + S_BLUETORCH3, + S_BLUETORCH4, + S_GREENTORCH, + S_GREENTORCH2, + S_GREENTORCH3, + S_GREENTORCH4, + S_REDTORCH, + S_REDTORCH2, + S_REDTORCH3, + S_REDTORCH4, + S_BTORCHSHRT, + S_BTORCHSHRT2, + S_BTORCHSHRT3, + S_BTORCHSHRT4, + S_GTORCHSHRT, + S_GTORCHSHRT2, + S_GTORCHSHRT3, + S_GTORCHSHRT4, + S_RTORCHSHRT, + S_RTORCHSHRT2, + S_RTORCHSHRT3, + S_RTORCHSHRT4, + S_HANGNOGUTS, + S_HANGBNOBRAIN, + S_HANGTLOOKDN, + S_HANGTSKULL, + S_HANGTLOOKUP, + S_HANGTNOBRAIN, + S_COLONGIBS, + S_SMALLPOOL, + S_BRAINSTEM, + S_TECHLAMP, + S_TECHLAMP2, + S_TECHLAMP3, + S_TECHLAMP4, + S_TECH2LAMP, + S_TECH2LAMP2, + S_TECH2LAMP3, + S_TECH2LAMP4, + S_TNT1, /* add state for invisible sprite phares 3/8/98 */ + + S_GRENADE, /* killough 8/9/98: grenade launcher */ + S_DETONATE, /* killough 8/9/98: detonation of objects */ + S_DETONATE2, + S_DETONATE3, + + // always count dog states, even if dogs are disabled + S_DOGS_STND, /* killough 7/19/98: Marine's best friend :) */ + S_DOGS_STND2, + S_DOGS_RUN1, + S_DOGS_RUN2, + S_DOGS_RUN3, + S_DOGS_RUN4, + S_DOGS_RUN5, + S_DOGS_RUN6, + S_DOGS_RUN7, + S_DOGS_RUN8, + S_DOGS_ATK1, + S_DOGS_ATK2, + S_DOGS_ATK3, + S_DOGS_PAIN, + S_DOGS_PAIN2, + S_DOGS_DIE1, + S_DOGS_DIE2, + S_DOGS_DIE3, + S_DOGS_DIE4, + S_DOGS_DIE5, + S_DOGS_DIE6, + S_DOGS_RAISE1, + S_DOGS_RAISE2, + S_DOGS_RAISE3, + S_DOGS_RAISE4, + S_DOGS_RAISE5, + S_DOGS_RAISE6, + + // add dummy beta bfg / lost soul frames for dehacked compatibility + // fixes bug #1576151 (part 2) + S_OLDBFG1, // killough 7/11/98: the old BFG's 43 firing frames + S_OLDBFG42 = S_OLDBFG1+41, + S_OLDBFG43, + + S_PLS1BALL, // killough 7/19/98: first plasma fireball in the beta + S_PLS1BALL2, + S_PLS1EXP, + S_PLS1EXP2, + S_PLS1EXP3, + S_PLS1EXP4, + S_PLS1EXP5, + + S_PLS2BALL, // killough 7/19/98: second plasma fireball in the beta + S_PLS2BALL2, + S_PLS2BALLX1, + S_PLS2BALLX2, + S_PLS2BALLX3, + S_BON3, // killough 7/11/98: evil sceptre in beta version + S_BON4, // killough 7/11/98: unholy bible in beta version + + // killough 10/98: beta lost souls were different from their modern cousins + S_BSKUL_STND, + S_BSKUL_RUN1, + S_BSKUL_RUN2, + S_BSKUL_RUN3, + S_BSKUL_RUN4, + S_BSKUL_ATK1, + S_BSKUL_ATK2, + S_BSKUL_ATK3, + S_BSKUL_PAIN1, + S_BSKUL_PAIN2, + S_BSKUL_PAIN3, + S_BSKUL_DIE1, + S_BSKUL_DIE2, + S_BSKUL_DIE3, + S_BSKUL_DIE4, + S_BSKUL_DIE5, + S_BSKUL_DIE6, + S_BSKUL_DIE7, + S_BSKUL_DIE8, + + S_MUSHROOM, /* killough 10/98: mushroom explosion effect */ + + NUMSTATES /* Counter of how many there are */ + +} statenum_t; + +/******************************************************************** + * Definition of the state (frames) structure * + ********************************************************************/ +typedef struct +{ + spritenum_t sprite; /* sprite number to show */ + long frame; /* which frame/subframe of the sprite is shown */ + long tics; /* number of gametics this frame should last */ + actionf_t action; /* code pointer to function for action if any */ + statenum_t nextstate; /* linked list pointer to next state or zero */ + byte misc1, misc2; /* apparently never used in DOOM (RG: was long)*/ +} state_t; + +/* these are in info.c */ +extern state_t *states; +extern const state_t rostates[NUMSTATES]; +extern const char *sprnames[]; /* 1/17/98 killough - CPhipps - const */ + +/******************************************************************** + * Thing enumeration -- must match info.c * + ******************************************************************** + * Note that many of these are generically named for the ornamentals + */ + +typedef enum +{ + MT_PLAYER, + MT_POSSESSED, + MT_SHOTGUY, + MT_VILE, + MT_FIRE, + MT_UNDEAD, + MT_TRACER, + MT_SMOKE, + MT_FATSO, + MT_FATSHOT, + MT_CHAINGUY, + MT_TROOP, + MT_SERGEANT, + MT_SHADOWS, + MT_HEAD, + MT_BRUISER, + MT_BRUISERSHOT, + MT_KNIGHT, + MT_SKULL, + MT_SPIDER, + MT_BABY, + MT_CYBORG, + MT_PAIN, + MT_WOLFSS, + MT_KEEN, + MT_BOSSBRAIN, + MT_BOSSSPIT, + MT_BOSSTARGET, + MT_SPAWNSHOT, + MT_SPAWNFIRE, + MT_BARREL, + MT_TROOPSHOT, + MT_HEADSHOT, + MT_ROCKET, + MT_PLASMA, + MT_BFG, + MT_ARACHPLAZ, + MT_PUFF, + MT_BLOOD, + MT_TFOG, + MT_IFOG, + MT_TELEPORTMAN, + MT_EXTRABFG, + MT_MISC0, + MT_MISC1, + MT_MISC2, + MT_MISC3, + MT_MISC4, + MT_MISC5, + MT_MISC6, + MT_MISC7, + MT_MISC8, + MT_MISC9, + MT_MISC10, + MT_MISC11, + MT_MISC12, + MT_INV, + MT_MISC13, + MT_INS, + MT_MISC14, + MT_MISC15, + MT_MISC16, + MT_MEGA, + MT_CLIP, + MT_MISC17, + MT_MISC18, + MT_MISC19, + MT_MISC20, + MT_MISC21, + MT_MISC22, + MT_MISC23, + MT_MISC24, + MT_MISC25, + MT_CHAINGUN, + MT_MISC26, + MT_MISC27, + MT_MISC28, + MT_SHOTGUN, + MT_SUPERSHOTGUN, + MT_MISC29, + MT_MISC30, + MT_MISC31, + MT_MISC32, + MT_MISC33, + MT_MISC34, + MT_MISC35, + MT_MISC36, + MT_MISC37, + MT_MISC38, + MT_MISC39, + MT_MISC40, + MT_MISC41, + MT_MISC42, + MT_MISC43, + MT_MISC44, + MT_MISC45, + MT_MISC46, + MT_MISC47, + MT_MISC48, + MT_MISC49, + MT_MISC50, + MT_MISC51, + MT_MISC52, + MT_MISC53, + MT_MISC54, + MT_MISC55, + MT_MISC56, + MT_MISC57, + MT_MISC58, + MT_MISC59, + MT_MISC60, + MT_MISC61, + MT_MISC62, + MT_MISC63, + MT_MISC64, + MT_MISC65, + MT_MISC66, + MT_MISC67, + MT_MISC68, + MT_MISC69, + MT_MISC70, + MT_MISC71, + MT_MISC72, + MT_MISC73, + MT_MISC74, + MT_MISC75, + MT_MISC76, + MT_MISC77, + MT_MISC78, + MT_MISC79, + MT_MISC80, + MT_MISC81, + MT_MISC82, + MT_MISC83, + MT_MISC84, + MT_MISC85, + MT_MISC86, + MT_PUSH, /* controls push source - phares */ + MT_PULL, /* controls pull source - phares 3/20/98 */ + +#ifdef DOGS + MT_DOGS, /* killough 7/19/98: Marine's best friend */ +#endif + + /* proff 11/22/98: Andy Baker's stealth monsters (next 12) + * cph - moved below the MBF stuff, no need to displace them */ + MT_STEALTHBABY, + MT_STEALTHVILE, + MT_STEALTHBRUISER, + MT_STEALTHHEAD, + MT_STEALTHCHAINGUY, + MT_STEALTHSERGEANT, + MT_STEALTHKNIGHT, + MT_STEALTHIMP, + MT_STEALTHFATSO, + MT_STEALTHUNDEAD, + MT_STEALTHSHOTGUY, + MT_STEALTHZOMBIE, + + NUMMOBJTYPES // Counter of how many there are +} mobjtype_t; + +/******************************************************************** + * Definition of the Thing structure + ********************************************************************/ +/* Note that these are only indices to the state, sound, etc. arrays + * and not actual pointers. Most can be set to zero if the action or + * sound doesn't apply (like lamps generally don't attack or whistle). + */ + +// RG: Everything below used to be int, changed for short for lower memory usage +// It might overflow when using deh, I'm not sure... Change back if strange bugs! +typedef struct +{ + short doomednum; /* Thing number used in id's editor, and now + probably by every other editor too */ + short spawnstate; /* The state (frame) index when this Thing is + first created */ + short spawnhealth; /* The initial hit points for this Thing */ + short seestate; /* The state when it sees you or wakes up */ + short seesound; /* The sound it makes when waking */ + short reactiontime; /* How many tics it waits after it wakes up + before it will start to attack, in normal + skills (halved for nightmare) */ + short attacksound; /* The sound it makes when it attacks */ + short painstate; /* The state to indicate pain */ + short painchance; /* A number that is checked against a random + number 0-255 to see if the Thing is supposed + to go to its painstate or not. Note this + has absolutely nothing to do with the chance + it will get hurt, just the chance of it + reacting visibly. */ + short painsound; /* The sound it emits when it feels pain */ + short meleestate; /* Melee==close attack */ + short missilestate; /* What states to use when it's in the air, if + in fact it is ever used as a missile */ + short deathstate; /* What state begins the death sequence */ + short xdeathstate; /* What state begins the horrible death sequence + like when a rocket takes out a trooper */ + short deathsound; /* The death sound. See also A_Scream() in + p_enemy.c for some tweaking that goes on + for certain monsters */ + int speed; /* How fast it moves. Too fast and it can miss + collision logic. */ + int radius; /* An often incorrect radius */ + int height; /* An often incorrect height, used only to see + if a monster can enter a sector */ + int mass; /* How much an impact will move it. Cacodemons + seem to retreat when shot because they have + very little mass and are moved by impact */ + short damage; /* If this is a missile, how much does it hurt? */ + short activesound; /* What sound it makes wandering around, once + in a while. Chance is 3/256 it will. */ + uint_64_t flags; /* Bit masks for lots of things. See p_mobj.h */ + short raisestate; /* The first state for an Archvile or respawn + resurrection. Zero means it won't come + back to life. */ +} mobjinfo_t; + +/* See p_mobj_h for addition more technical info */ +extern mobjinfo_t mobjinfo[NUMMOBJTYPES]; + +#endif diff --git a/components/doom/prboom/lprintf.c b/components/doom/prboom/lprintf.c new file mode 100644 index 0000000..19e5672 --- /dev/null +++ b/components/doom/prboom/lprintf.c @@ -0,0 +1,95 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Provides a logical console output routine that allows what is + * output to console normally and when output is redirected to + * be controlled.. + * + *-----------------------------------------------------------------------------*/ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#ifdef RETRO_GO +#include +#endif + +#include +#include +#include +#include "doomtype.h" +#include "doomdef.h" +#include "lprintf.h" +#include "i_main.h" +#include "m_argv.h" + +int cons_output_mask = -1; /* all output enabled */ + + +void lprintf(OutputLevels lvl, const char *s, ...) +{ + if (lvl & cons_output_mask) + { + va_list arg; + va_start(arg, s); +#ifdef RETRO_GO + rg_system_vlog(RG_LOG_PRINTF, NULL, s, arg); +#else + vprintf(s, arg); +#endif + // vprintf(s, arg); + va_end(arg); + } +} + + +/* + * I_Error + * + * cphipps - moved out of i_* headers, to minimise source files that depend on + * the low-level headers. All this does is print the error, then call the + * low-level safe exit function. + * killough 3/20/98: add const + */ + +void I_Error(const char *error, ...) +{ + va_list arg; + va_start(arg, error); +#ifdef RETRO_GO + char buffer[256]; + vsnprintf(buffer, sizeof(buffer), error, arg); + RG_PANIC(buffer); +#else + vprintf(error, arg); + abort(); +#endif + va_end(arg); +} diff --git a/components/doom/prboom/lprintf.h b/components/doom/prboom/lprintf.h new file mode 100644 index 0000000..300ed8b --- /dev/null +++ b/components/doom/prboom/lprintf.h @@ -0,0 +1,53 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Declarations etc. for logical console output + * + *-----------------------------------------------------------------------------*/ + +#ifndef __LPRINTF__ +#define __LPRINTF__ + +typedef enum /* Logical output levels */ +{ + LO_INFO=1, /* One of these is used in each physical output */ + LO_CONFIRM=2, /* call. Which are output, or echoed to console */ + LO_WARN=4, /* if output redirected is determined by the */ + LO_ERROR=8, /* global masks: cons_output_mask,cons_error_mask. */ + LO_FATAL=16, + LO_DEBUG=32, + LO_ALWAYS=64, +} OutputLevels; + +void lprintf(OutputLevels pri, const char *fmt, ...) __attribute__((format(printf,2,3))); +void I_Error(const char *error, ...) __attribute__((format(printf,1,2))); + +extern int cons_output_mask; + +#endif diff --git a/components/doom/prboom/m_argv.c b/components/doom/prboom/m_argv.c new file mode 100644 index 0000000..9392840 --- /dev/null +++ b/components/doom/prboom/m_argv.c @@ -0,0 +1,58 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Some argument handling. + * + *-----------------------------------------------------------------------------*/ + +#include +// CPhipps - include the correct header +#include "doomtype.h" +#include "m_argv.h" + +int myargc; +const char * const * myargv; // CPhipps - not sure if ANSI C allows you to +// modify contents of argv, but I can't imagine it does. + +// +// M_CheckParm +// Checks for the given parameter +// in the program's command line arguments. +// Returns the argument number (1 to argc-1) +// or 0 if not present +// + +int M_CheckParm(const char *check) +{ + signed int i = myargc; + while (--i>0) + if (!strcasecmp(check, myargv[i])) + return i; + return 0; +} diff --git a/components/doom/prboom/m_argv.h b/components/doom/prboom/m_argv.h new file mode 100644 index 0000000..5340c15 --- /dev/null +++ b/components/doom/prboom/m_argv.h @@ -0,0 +1,47 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Argument handling. + * + *-----------------------------------------------------------------------------*/ + + +#ifndef __M_ARGV__ +#define __M_ARGV__ + +/* + * MISC + */ +extern int myargc; +extern const char * const * myargv; /* CPhipps - const * const * */ + +/* Returns the position of the given parameter in the arg list (0 if not found). */ +int M_CheckParm(const char *check); + +#endif diff --git a/components/doom/prboom/m_bbox.c b/components/doom/prboom/m_bbox.c new file mode 100644 index 0000000..f2097ce --- /dev/null +++ b/components/doom/prboom/m_bbox.c @@ -0,0 +1,58 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Main loop menu stuff. + * Random number LUT. + * Default Config File. + * PCX Screenshots. + * + *-----------------------------------------------------------------------------*/ + +#ifdef __GNUG__ +#pragma implementation "m_bbox.h" +#endif +#include "m_bbox.h" + +void M_ClearBox (fixed_t *box) +{ + box[BOXTOP] = box[BOXRIGHT] = INT_MIN; + box[BOXBOTTOM] = box[BOXLEFT] = INT_MAX; +} + +void M_AddToBox(fixed_t* box,fixed_t x,fixed_t y) + { + if (xbox[BOXRIGHT]) + box[BOXRIGHT] = x; + if (ybox[BOXTOP]) + box[BOXTOP] = y; + } diff --git a/components/doom/prboom/m_bbox.h b/components/doom/prboom/m_bbox.h new file mode 100644 index 0000000..5c2f2df --- /dev/null +++ b/components/doom/prboom/m_bbox.h @@ -0,0 +1,56 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Simple bounding box datatype and functions. + * + *-----------------------------------------------------------------------------*/ + + +#ifndef __M_BBOX__ +#define __M_BBOX__ + +#include +#include "m_fixed.h" + +/* Bounding box coordinate storage. */ +enum +{ + BOXTOP, + BOXBOTTOM, + BOXLEFT, + BOXRIGHT +}; /* bbox coordinates */ + +/* Bounding box functions. */ + +void M_ClearBox(fixed_t* box); + +void M_AddToBox(fixed_t* box,fixed_t x,fixed_t y); + +#endif diff --git a/components/doom/prboom/m_cheat.c b/components/doom/prboom/m_cheat.c new file mode 100644 index 0000000..ef716e1 --- /dev/null +++ b/components/doom/prboom/m_cheat.c @@ -0,0 +1,745 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2002 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Cheat sequence checking. + * + *-----------------------------------------------------------------------------*/ + +#include "doomstat.h" +#include "g_game.h" +#include "r_data.h" +#include "p_inter.h" +#include "p_tick.h" +#include "m_cheat.h" +#include "m_argv.h" +#include "s_sound.h" +#include "sounds.h" +#include "dstrings.h" +#include "r_main.h" +#include "p_map.h" +#include "d_deh.h" // Ty 03/27/98 - externalized strings +/* cph 2006/07/23 - needs direct access to thinkercap */ +#include "p_tick.h" + +#define plyr (players+consoleplayer) /* the console player */ + +//----------------------------------------------------------------------------- +// +// CHEAT SEQUENCE PACKAGE +// +//----------------------------------------------------------------------------- + +static void cheat_mus(); +static void cheat_choppers(); +static void cheat_god(); +static void cheat_fa(); +static void cheat_k(); +static void cheat_kfa(); +static void cheat_noclip(); +static void cheat_pw(); +static void cheat_behold(); +static void cheat_clev(); +static void cheat_mypos(); +static void cheat_rate(); +static void cheat_comp(); +static void cheat_friction(); +static void cheat_pushers(); +static void cheat_tnttran(); +static void cheat_massacre(); +static void cheat_ddt(); +static void cheat_hom(); +static void cheat_fast(); +static void cheat_tntkey(); +static void cheat_tntkeyx(); +static void cheat_tntkeyxx(); +static void cheat_tntweap(); +static void cheat_tntweapx(); +static void cheat_tntammo(); +static void cheat_tntammox(); +static void cheat_smart(); +static void cheat_pitch(); +static void cheat_megaarmour(); +static void cheat_health(); + +//----------------------------------------------------------------------------- +// +// List of cheat codes, functions, and special argument indicators. +// +// The first argument is the cheat code. +// +// The second argument is its DEH name, or NULL if it's not supported by -deh. +// +// The third argument is a combination of the bitmasks: +// {always, not_dm, not_coop, not_net, not_menu, not_demo, not_deh}, +// which excludes the cheat during certain modes of play. +// +// The fourth argument is the handler function. +// +// The fifth argument is passed to the handler function if it's non-negative; +// if negative, then its negative indicates the number of extra characters +// expected after the cheat code, which are passed to the handler function +// via a pointer to a buffer (after folding any letters to lowercase). +// +//----------------------------------------------------------------------------- + +struct cheat_s cheat[] = { + {"idmus", "Change music", always, + cheat_mus, -2}, + + {"idchoppers", "Chainsaw", not_net | not_demo, + cheat_choppers }, + + {"iddqd", "God mode", not_net | not_demo, + cheat_god }, + +#if 0 + {"idk", NULL, not_net | not_demo | not_deh, + cheat_k }, // The most controversial cheat code in Doom history!!! +#endif + + {"idkfa", "Ammo & Keys", not_net | not_demo, + cheat_kfa }, + + {"idfa", "Ammo", not_net | not_demo, + cheat_fa }, + + {"idspispopd", "No Clipping 1", not_net | not_demo, + cheat_noclip }, + + {"idclip", "No Clipping 2", not_net | not_demo, + cheat_noclip }, + + {"idbeholdh", "Invincibility", not_net | not_demo, + cheat_health }, + + {"idbeholdm", "Invincibility", not_net | not_demo, + cheat_megaarmour }, + + {"idbeholdv", "Invincibility", not_net | not_demo, + cheat_pw, pw_invulnerability }, + + {"idbeholds", "Berserk", not_net | not_demo, + cheat_pw, pw_strength }, + + {"idbeholdi", "Invisibility", not_net | not_demo, + cheat_pw, pw_invisibility }, + + {"idbeholdr", "Radiation Suit", not_net | not_demo, + cheat_pw, pw_ironfeet }, + + {"idbeholda", "Auto-map", not_dm, + cheat_pw, pw_allmap }, + + {"idbeholdl", "Lite-Amp Goggles", not_dm, + cheat_pw, pw_infrared }, + + {"idbehold", "BEHOLD menu", not_dm, + cheat_behold }, + + {"idclev", "Level Warp", not_net | not_demo | not_menu, + cheat_clev, -2}, + + {"idmypos", "Player Position", not_dm, + cheat_mypos }, + + {"idrate", "Frame rate", 0, + cheat_rate }, + + {"tntcomp", NULL, not_net | not_demo, + cheat_comp }, // phares + + {"tntem", NULL, not_net | not_demo, + cheat_massacre }, // jff 2/01/98 kill all monsters + + {"iddt", "Map cheat", not_dm, + cheat_ddt }, // killough 2/07/98: moved from am_map.c + + {"tnthom", NULL, always, + cheat_hom }, // killough 2/07/98: HOM autodetector + + {"tntkey", NULL, not_net | not_demo, + cheat_tntkey }, // killough 2/16/98: generalized key cheats + + {"tntkeyr", NULL, not_net | not_demo, + cheat_tntkeyx }, + + {"tntkeyy", NULL, not_net | not_demo, + cheat_tntkeyx }, + + {"tntkeyb", NULL, not_net | not_demo, + cheat_tntkeyx }, + + {"tntkeyrc", NULL, not_net | not_demo, + cheat_tntkeyxx, it_redcard }, + + {"tntkeyyc", NULL, not_net | not_demo, + cheat_tntkeyxx, it_yellowcard }, + + {"tntkeybc", NULL, not_net | not_demo, + cheat_tntkeyxx, it_bluecard }, + + {"tntkeyrs", NULL, not_net | not_demo, + cheat_tntkeyxx, it_redskull }, + + {"tntkeyys", NULL, not_net | not_demo, + cheat_tntkeyxx, it_yellowskull}, + + {"tntkeybs", NULL, not_net | not_demo, + cheat_tntkeyxx, it_blueskull }, // killough 2/16/98: end generalized keys + + {"tntka", NULL, not_net | not_demo, + cheat_k }, // Ty 04/11/98 - Added TNTKA + + {"tntweap", NULL, not_net | not_demo, + cheat_tntweap }, // killough 2/16/98: generalized weapon cheats + + {"tntweap", NULL, not_net | not_demo, + cheat_tntweapx, -1}, + + {"tntammo", NULL, not_net | not_demo, + cheat_tntammo }, + + {"tntammo", NULL, not_net | not_demo, + cheat_tntammox, -1}, // killough 2/16/98: end generalized weapons + + {"tnttran", NULL, always, + cheat_tnttran }, // invoke translucency // phares + + {"tntsmart", NULL, not_net | not_demo, + cheat_smart}, // killough 2/21/98: smart monster toggle + + {"tntpitch", NULL, always, + cheat_pitch}, // killough 2/21/98: pitched sound toggle + + // killough 2/21/98: reduce RSI injury by adding simpler alias sequences: + {"tntran", NULL, always, + cheat_tnttran }, // killough 2/21/98: same as tnttran + + {"tntamo", NULL, not_net | not_demo, + cheat_tntammo }, // killough 2/21/98: same as tntammo + + {"tntamo", NULL, not_net | not_demo, + cheat_tntammox, -1}, // killough 2/21/98: same as tntammo + + {"tntfast", NULL, not_net | not_demo, + cheat_fast }, // killough 3/6/98: -fast toggle + + {"tntice", NULL, not_net | not_demo, + cheat_friction }, // phares 3/10/98: toggle variable friction effects + + {"tntpush", NULL, not_net | not_demo, + cheat_pushers }, // phares 3/10/98: toggle pushers + + {NULL} // end-of-list marker +}; + +//----------------------------------------------------------------------------- + +static void cheat_mus(buf) +char buf[3]; +{ + int musnum; + + //jff 3/20/98 note: this cheat allowed in netgame/demorecord + + //jff 3/17/98 avoid musnum being negative and crashing + if (!isdigit(buf[0]) || !isdigit(buf[1])) + return; + + plyr->message = s_STSTR_MUS; // Ty 03/27/98 - externalized + + if (gamemode == commercial) + { + musnum = mus_runnin + (buf[0]-'0')*10 + buf[1]-'0' - 1; + + //jff 4/11/98 prevent IDMUS00 in DOOMII and IDMUS36 or greater + if (musnum < mus_runnin || ((buf[0]-'0')*10 + buf[1]-'0') > 35) + plyr->message = s_STSTR_NOMUS; // Ty 03/27/98 - externalized + else + { + S_ChangeMusic(musnum, 1); + idmusnum = musnum; //jff 3/17/98 remember idmus number for restore + } + } + else + { + musnum = mus_e1m1 + (buf[0]-'1')*9 + (buf[1]-'1'); + + //jff 4/11/98 prevent IDMUS0x IDMUSx0 in DOOMI and greater than introa + if (buf[0] < '1' || buf[1] < '1' || ((buf[0]-'1')*9 + buf[1]-'1') > 31) + plyr->message = s_STSTR_NOMUS; // Ty 03/27/98 - externalized + else + { + S_ChangeMusic(musnum, 1); + idmusnum = musnum; //jff 3/17/98 remember idmus number for restore + } + } +} + +// 'choppers' invulnerability & chainsaw +static void cheat_choppers() +{ + plyr->weaponowned[wp_chainsaw] = true; + plyr->powers[pw_invulnerability] = true; + plyr->message = s_STSTR_CHOPPERS; // Ty 03/27/98 - externalized +} + +static void cheat_god() +{ // 'dqd' cheat for toggleable god mode + plyr->cheats ^= CF_GODMODE; + if (plyr->cheats & CF_GODMODE) + { + if (plyr->mo) + plyr->mo->health = god_health; // Ty 03/09/98 - deh + + plyr->health = god_health; + plyr->message = s_STSTR_DQDON; // Ty 03/27/98 - externalized + } + else + plyr->message = s_STSTR_DQDOFF; // Ty 03/27/98 - externalized +} + +// CPhipps - new health and armour cheat codes +static void cheat_health() +{ + if (!(plyr->cheats & CF_GODMODE)) { + if (plyr->mo) + plyr->mo->health = mega_health; + plyr->health = mega_health; + plyr->message = s_STSTR_BEHOLDX; // Ty 03/27/98 - externalized + } +} + +static void cheat_megaarmour() +{ + plyr->armorpoints = idfa_armor; // Ty 03/09/98 - deh + plyr->armortype = idfa_armor_class; // Ty 03/09/98 - deh + plyr->message = s_STSTR_BEHOLDX; // Ty 03/27/98 - externalized +} + +static void cheat_fa() +{ + int i; + + if (!plyr->backpack) + { + for (i=0 ; imaxammo[i] *= 2; + plyr->backpack = true; + } + + plyr->armorpoints = idfa_armor; // Ty 03/09/98 - deh + plyr->armortype = idfa_armor_class; // Ty 03/09/98 - deh + + // You can't own weapons that aren't in the game // phares 02/27/98 + for (i=0;iweaponowned[i] = true; + + for (i=0;iammo[i] = plyr->maxammo[i]; + + plyr->message = s_STSTR_FAADDED; +} + +static void cheat_k() +{ + int i; + for (i=0;icards[i]) // only print message if at least one key added + { // however, caller may overwrite message anyway + plyr->cards[i] = true; + plyr->message = "Keys Added"; + } +} + +static void cheat_kfa() +{ + cheat_k(); + cheat_fa(); + plyr->message = STSTR_KFAADDED; +} + +static void cheat_noclip() +{ + // Simplified, accepting both "noclip" and "idspispopd". + // no clipping mode cheat + + plyr->message = (plyr->cheats ^= CF_NOCLIP) & CF_NOCLIP ? + s_STSTR_NCON : s_STSTR_NCOFF; // Ty 03/27/98 - externalized +} + +// 'behold?' power-up cheats (modified for infinite duration -- killough) +static void cheat_pw(int pw) +{ + if (plyr->powers[pw]) + plyr->powers[pw] = pw!=pw_strength && pw!=pw_allmap; // killough + else + { + P_GivePower(plyr, pw); + if (pw != pw_strength) + plyr->powers[pw] = -1; // infinite duration -- killough + } + plyr->message = s_STSTR_BEHOLDX; // Ty 03/27/98 - externalized +} + +// 'behold' power-up menu +static void cheat_behold() +{ + plyr->message = s_STSTR_BEHOLD; // Ty 03/27/98 - externalized +} + +// 'clev' change-level cheat +static void cheat_clev(char buf[3]) +{ + int epsd, map; + + if (gamemode == commercial) + { + epsd = 1; //jff was 0, but espd is 1-based + map = (buf[0] - '0')*10 + buf[1] - '0'; + } + else + { + epsd = buf[0] - '0'; + map = buf[1] - '0'; + } + + // Catch invalid maps. + if (epsd < 1 || map < 1 || // Ohmygod - this is not going to work. + (gamemode == retail && (epsd > 4 || map > 9 )) || + (gamemode == registered && (epsd > 3 || map > 9 )) || + (gamemode == shareware && (epsd > 1 || map > 9 )) || + (gamemode == commercial && (epsd > 1 || map > 32 )) ) //jff no 33 and 34 + return; //8/14/98 allowed + + // So be it. + + idmusnum = -1; //jff 3/17/98 revert to normal level music on IDCLEV + + plyr->message = s_STSTR_CLEV; // Ty 03/27/98 - externalized + + G_DeferedInitNew(gameskill, epsd, map); +} + +// 'mypos' for player position +// killough 2/7/98: simplified using dprintf and made output more user-friendly +static void cheat_mypos() +{ + doom_printf("Position (%d,%d,%d)\tAngle %-.0f", + players[consoleplayer].mo->x >> FRACBITS, + players[consoleplayer].mo->y >> FRACBITS, + players[consoleplayer].mo->z >> FRACBITS, + players[consoleplayer].mo->angle * (90.0/ANG90)); +} + +// cph - cheat to toggle frame rate/rendering stats display +static void cheat_rate() +{ + rendering_stats ^= 1; + plyr->message = ""; +} + +// compatibility cheat + +static void cheat_comp() +{ + // CPhipps - modified for new compatibility system + compatibility_level++; compatibility_level %= MAX_COMPATIBILITY_LEVEL; + // must call G_Compatibility after changing compatibility_level + // (fixes sf bug number 1558738) + G_Compatibility(); + doom_printf("New compatibility level:\n%s", + comp_lev_str[compatibility_level]); +} + +// variable friction cheat +static void cheat_friction() +{ + plyr->message = // Ty 03/27/98 - *not* externalized + (variable_friction = !variable_friction) ? "Variable Friction enabled" : + "Variable Friction disabled"; +} + + +// Pusher cheat +// phares 3/10/98 +static void cheat_pushers() +{ + plyr->message = // Ty 03/27/98 - *not* externalized + (allow_pushers = !allow_pushers) ? "Pushers enabled" : "Pushers disabled"; +} + +// translucency cheat +static void cheat_tnttran() +{ + plyr->message = // Ty 03/27/98 - *not* externalized + (general_translucency = !general_translucency) ? "Translucency enabled" : + "Translucency disabled"; + + // killough 3/1/98, 4/11/98: cache translucency map on a demand basis + if (general_translucency && !main_tranmap) + R_InitTranMap(0); +} + +static void cheat_massacre() // jff 2/01/98 kill all monsters +{ + // jff 02/01/98 'em' cheat - kill all monsters + // partially taken from Chi's .46 port + // + // killough 2/7/98: cleaned up code and changed to use dprintf; + // fixed lost soul bug (LSs left behind when PEs are killed) + + int killcount=0; + thinker_t *currentthinker = NULL; + extern void A_PainDie(mobj_t *); + + // killough 7/20/98: kill friendly monsters only if no others to kill + uint_64_t mask = MF_FRIEND; + P_MapStart(); + do + while ((currentthinker = P_NextThinker(currentthinker,th_all)) != NULL) + if (currentthinker->function == P_MobjThinker && + !(((mobj_t *) currentthinker)->flags & mask) && // killough 7/20/98 + (((mobj_t *) currentthinker)->flags & MF_COUNTKILL || + ((mobj_t *) currentthinker)->type == MT_SKULL)) + { // killough 3/6/98: kill even if PE is dead + if (((mobj_t *) currentthinker)->health > 0) + { + killcount++; + P_DamageMobj((mobj_t *)currentthinker, NULL, NULL, 10000); + } + if (((mobj_t *) currentthinker)->type == MT_PAIN) + { + A_PainDie((mobj_t *) currentthinker); // killough 2/8/98 + P_SetMobjState ((mobj_t *) currentthinker, S_PAIN_DIE6); + } + } + while (!killcount && mask ? mask=0, 1 : 0); // killough 7/20/98 + P_MapEnd(); + // killough 3/22/98: make more intelligent about plural + // Ty 03/27/98 - string(s) *not* externalized + doom_printf("%d Monster%s Killed", killcount, killcount==1 ? "" : "s"); +} + +// killough 2/7/98: move iddt cheat from am_map.c to here +// killough 3/26/98: emulate Doom better +static void cheat_ddt() +{ + extern int ddt_cheating; + if (automapmode & am_active) + ddt_cheating = (ddt_cheating+1) % 3; +} + +// killough 2/7/98: HOM autodetection +static void cheat_hom() +{ + extern int autodetect_hom; // Ty 03/27/98 - *not* externalized + plyr->message = (autodetect_hom = !autodetect_hom) ? "HOM Detection On" : + "HOM Detection Off"; +} + +// killough 3/6/98: -fast parameter toggle +static void cheat_fast() +{ + plyr->message = (fastparm = !fastparm) ? "Fast Monsters On" : + "Fast Monsters Off"; // Ty 03/27/98 - *not* externalized + G_SetFastParms(fastparm); // killough 4/10/98: set -fast parameter correctly +} + +// killough 2/16/98: keycard/skullkey cheat functions +static void cheat_tntkey() +{ + plyr->message = "Red, Yellow, Blue"; // Ty 03/27/98 - *not* externalized +} + +static void cheat_tntkeyx() +{ + plyr->message = "Card, Skull"; // Ty 03/27/98 - *not* externalized +} + +static void cheat_tntkeyxx(int key) +{ + plyr->message = (plyr->cards[key] = !plyr->cards[key]) ? + "Key Added" : "Key Removed"; // Ty 03/27/98 - *not* externalized +} + +// killough 2/16/98: generalized weapon cheats + +static void cheat_tntweap() +{ // Ty 03/27/98 - *not* externalized + plyr->message = gamemode==commercial ? // killough 2/28/98 + "Weapon number 1-9" : "Weapon number 1-8"; +} + +static void cheat_tntweapx(buf) +char buf[3]; +{ + int w = *buf - '1'; + + if ((w==wp_supershotgun && gamemode!=commercial) || // killough 2/28/98 + ((w==wp_bfg || w==wp_plasma) && gamemode==shareware)) + return; + + if (w==wp_fist) // make '1' apply beserker strength toggle + cheat_pw(pw_strength); + else + if (w >= 0 && w < NUMWEAPONS) { + if ((plyr->weaponowned[w] = !plyr->weaponowned[w])) + plyr->message = "Weapon Added"; // Ty 03/27/98 - *not* externalized + else + { + plyr->message = "Weapon Removed"; // Ty 03/27/98 - *not* externalized + if (w==plyr->readyweapon) // maybe switch if weapon removed + plyr->pendingweapon = P_SwitchWeapon(plyr); + } + } +} + +// killough 2/16/98: generalized ammo cheats +static void cheat_tntammo() +{ + plyr->message = "Ammo 1-4, Backpack"; // Ty 03/27/98 - *not* externalized +} + +static void cheat_tntammox(buf) +char buf[1]; +{ + int a = *buf - '1'; + if (*buf == 'b') // Ty 03/27/98 - strings *not* externalized + if ((plyr->backpack = !plyr->backpack)) + for (plyr->message = "Backpack Added", a=0 ; amaxammo[a] <<= 1; + else + for (plyr->message = "Backpack Removed", a=0 ; aammo[a] > (plyr->maxammo[a] >>= 1)) + plyr->ammo[a] = plyr->maxammo[a]; + } + else + if (a>=0 && amessage = (plyr->ammo[a] = !plyr->ammo[a]) ? + plyr->ammo[a] = plyr->maxammo[a], "Ammo Added" : "Ammo Removed"; + } +} + +static void cheat_smart() +{ + plyr->message = (monsters_remember = !monsters_remember) ? + "Smart Monsters Enabled" : "Smart Monsters Disabled"; +} + +static void cheat_pitch() +{ + plyr->message=(pitched_sounds = !pitched_sounds) ? "Pitch Effects Enabled" : + "Pitch Effects Disabled"; +} + +//----------------------------------------------------------------------------- +// 2/7/98: Cheat detection rewritten by Lee Killough, to avoid +// scrambling and to use a more general table-driven approach. +//----------------------------------------------------------------------------- + +#define CHEAT_ARGS_MAX 8 /* Maximum number of args at end of cheats */ + +boolean M_FindCheats(int key) +{ + static uint_64_t sr; + static char argbuf[CHEAT_ARGS_MAX+1], *arg; + static int init, argsleft, cht; + int i, ret, matchedbefore; + + // If we are expecting arguments to a cheat + // (e.g. idclev), put them in the arg buffer + + if (argsleft) + { + *arg++ = tolower(key); // store key in arg buffer + if (!--argsleft) // if last key in arg list, + cheat[cht].func(argbuf); // process the arg buffer + return 1; // affirmative response + } + + key = tolower(key) - 'a'; + if (key < 0 || key >= 32) // ignore most non-alpha cheat letters + { + sr = 0; // clear shift register + return 0; + } + + if (!init) // initialize aux entries of table + { + init = 1; + for (i=0;cheat[i].cheat;i++) + { + uint_64_t c=0, m=0; + const char *p; + + for (p=cheat[i].cheat; *p; p++) + { + unsigned key = tolower(*p)-'a'; // convert to 0-31 + if (key >= 32) // ignore most non-alpha cheat letters + continue; + c = (c<<5) + key; // shift key into code + m = (m<<5) + 31; // shift 1's into mask + } + cheat[i].code = c; // code for this cheat key + cheat[i].mask = m; // mask for this cheat key + } + } + + sr = (sr<<5) + key; // shift this key into shift register + + for (matchedbefore = ret = i = 0; cheat[i].cheat; i++) + if ((sr & cheat[i].mask) == cheat[i].code && // if match found + !(cheat[i].when & not_dm && deathmatch) && // and if cheat allowed + !(cheat[i].when & not_coop && netgame && !deathmatch) && + !(cheat[i].when & not_demo && (demorecording || demoplayback)) && + !(cheat[i].when & not_menu && menuactive) && + !(cheat[i].when & not_deh && M_CheckParm("-deh"))) { + if (cheat[i].arg < 0) // if additional args are required + { + cht = i; // remember this cheat code + arg = argbuf; // point to start of arg buffer + argsleft = -cheat[i].arg; // number of args expected + ret = 1; // responder has eaten key + } + else + if (!matchedbefore) // allow only one cheat at a time + { + matchedbefore = ret = 1; // responder has eaten key + cheat[i].func(cheat[i].arg); // call cheat handler + } + } + return ret; +} diff --git a/components/doom/prboom/m_cheat.h b/components/doom/prboom/m_cheat.h new file mode 100644 index 0000000..f7bafce --- /dev/null +++ b/components/doom/prboom/m_cheat.h @@ -0,0 +1,58 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Cheat code checking. + * + *-----------------------------------------------------------------------------*/ + +#ifndef __M_CHEAT__ +#define __M_CHEAT__ + +/* killough 4/16/98: Cheat table structure */ + +extern struct cheat_s { + const char * cheat; + const char *const deh_cheat; + enum { + always = 0, + not_dm = 1, + not_coop = 2, + not_demo = 4, + not_menu = 8, + not_deh = 16, + not_net = not_dm | not_coop + } const when; + void (*const func)(); + const int arg; + uint_64_t code, mask; +} cheat[]; + +boolean M_FindCheats(int key); + +#endif diff --git a/components/doom/prboom/m_fixed.h b/components/doom/prboom/m_fixed.h new file mode 100644 index 0000000..239251a --- /dev/null +++ b/components/doom/prboom/m_fixed.h @@ -0,0 +1,223 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Fixed point arithemtics, implementation. + * + *-----------------------------------------------------------------------------*/ + +#ifndef __M_FIXED__ +#define __M_FIXED__ + +#include "config.h" +#include "doomtype.h" + +/* + * Fixed point, 32bit as 16.16. + */ + +#define FRACBITS 16 +#define FRACUNIT (1<> (8*sizeof _t-1); + return (_t^_s)-_s; +} +# endif /* I386_ASM */ +#else /* _MSC_VER */ +#define D_abs(x) ({fixed_t _t = (x), _s = _t >> (8*sizeof _t-1); (_t^_s)-_s;}) +#endif /* _MSC_VER */ + +/* + * Fixed Point Multiplication + */ + +#ifdef I386_ASM +# ifdef _MSC_VER +#pragma warning( disable : 4035 ) +__inline static fixed_t FixedMul(fixed_t a, fixed_t b) +{ +// return (fixed_t)((longlong) a*b >> FRACBITS); + __asm + { + mov eax,a + imul b + shrd eax,edx,16 + } +} +#pragma warning( default : 4035 ) +# else /* _MSC_VER */ +/* killough 5/10/98: In djgpp, use inlined assembly for performance + * CPhipps - made __inline__ to inline, as specified in the gcc docs + * Also made const. Also __asm__ to asm, as in docs. + * Replaced inline asm with Julian's version for Eternity dated 6/7/2001 + */ +inline +static CONSTFUNC fixed_t FixedMul(fixed_t a, fixed_t b) +{ + fixed_t result; + + asm ( + " imull %2 ;" + " shrdl $16,%%edx,%0 ;" + : "=a" (result) /* eax is always the result */ + : "0" (a), /* eax is also first operand */ + "rm" (b) /* second operand can be reg or mem */ + : "%edx", "%cc" /* edx and condition codes clobbered */ + ); + + return result; +} +# endif /* _MSC_VER */ + +#else /* I386_ASM */ + +/* CPhipps - made __inline__ to inline, as specified in the gcc docs + * Also made const */ + +inline static CONSTFUNC fixed_t FixedMul(fixed_t a, fixed_t b) +{ + return (fixed_t)((int_64_t) a*b >> FRACBITS); +} + +#endif /* I386_ASM */ + +/* + * Fixed Point Division + */ + +#ifdef I386_ASM + +# ifdef _MSC_VER +#pragma warning( disable : 4035 ) +__inline static fixed_t FixedDiv(fixed_t a, fixed_t b) +{ + // e6y + // zg is a master of engineer science. + // + // Fixed crash with FixedDiv(-2147483648,x) + // Exception Number : EXCEPTION_INT_OVERFLOW(C0000095) + // + // Some other ports (Eternity, Chocolate) return wrong value instead of MAXINT. + // For example FixedDiv(-2147483648,-30576) should return INT_MAX instead of 307907126 + // 307907126 is truncated correct int64 value: 4602874423 - 2^32 = 307907126 + if ((unsigned)D_abs(a) >> 14 >= (unsigned)D_abs(b)) + return (a^b)<0 ? INT_MIN : INT_MAX; + __asm + { + mov eax,a + mov ebx,b + mov edx,eax + shl eax,16 // proff 11/06/98: Changed from sal to shl, I think + // this is better + sar edx,16 + idiv ebx // This is needed, because when I used 'idiv b' the + // compiler produced wrong code in a different place + } +} +#pragma warning( default : 4035 ) +# else /* _MSC_VER */ +/* killough 5/10/98: In djgpp, use inlined assembly for performance + * killough 9/5/98: optimized to reduce the number of branches + * CPhipps - made __inline__ to inline, as specified in the gcc docs + * Also made const, also __asm__ to asm as in docs. + * Replaced inline asm with Julian's version for Eternity dated 6/7/2001 + */ +inline +static CONSTFUNC fixed_t FixedDiv(fixed_t a, fixed_t b) +{ + //e6y: zg is a master of engineer science + if ((unsigned)D_abs(a) >> 14 < (unsigned)D_abs(b)) + { + fixed_t result; + asm ( + " idivl %3 ;" + : "=a" (result) + : "0" (a<<16), + "d" (a>>16), + "rm" (b) + : "%cc" + ); + return result; + } + return ((a^b)>>31) ^ INT_MAX; +} +# endif /* _MSC_VER */ + +#else /* I386_ASM */ +/* CPhipps - made __inline__ to inline, as specified in the gcc docs + * Also made const */ + +inline static CONSTFUNC fixed_t FixedDiv(fixed_t a, fixed_t b) +{ + return ((unsigned)D_abs(a)>>14) >= (unsigned)D_abs(b) ? ((a^b)>>31) ^ INT_MAX : + (fixed_t)(((int_64_t) a << FRACBITS) / b); +} + +#endif /* I386_ASM */ + +/* CPhipps - + * FixedMod - returns a % b, guaranteeing 0<=a + M_DrawEpisode, // drawing routine -> + 48,63, // x,y + 0 // lastOn +}; + +static menuitem_t NewGameMenu[]= +{ + {1,"M_JKILL", M_ChooseSkill, 'i'}, + {1,"M_ROUGH", M_ChooseSkill, 'h'}, + {1,"M_HURT", M_ChooseSkill, 'h'}, + {1,"M_ULTRA", M_ChooseSkill, 'u'}, + {1,"M_NMARE", M_ChooseSkill, 'n'}, +}; + +static menu_t NewDef = +{ + sizeof(NewGameMenu) / sizeof(menuitem_t), // # of menu items + &EpiDef, // previous menu + NewGameMenu, // menuitem_t -> + M_DrawNewGame, // drawing routine -> + 48,63, // x,y + 2 // lastOn +}; + +static menuitem_t LoadMenue[]= +{ + {1,"", M_LoadSelect,'1'}, + {1,"", M_LoadSelect,'2'}, + {1,"", M_LoadSelect,'3'}, + {1,"", M_LoadSelect,'4'}, + {1,"", M_LoadSelect,'5'}, + {1,"", M_LoadSelect,'6'}, + {1,"", M_LoadSelect,'7'}, + {1,"", M_LoadSelect,'8'}, +}; + +static menu_t LoadDef = +{ + sizeof(LoadMenue) / sizeof(menuitem_t), + &MainDef, + LoadMenue, + M_DrawLoad, + 80,34, + 0 +}; + +static menuitem_t SaveMenu[]= +{ + {1,"", M_SaveSelect,'1'}, + {1,"", M_SaveSelect,'2'}, + {1,"", M_SaveSelect,'3'}, + {1,"", M_SaveSelect,'4'}, + {1,"", M_SaveSelect,'5'}, + {1,"", M_SaveSelect,'6'}, + {1,"", M_SaveSelect,'7'}, + {1,"", M_SaveSelect,'8'}, +}; + +static menu_t SaveDef = +{ + sizeof(SaveMenu) / sizeof(menuitem_t), + &MainDef, + SaveMenu, + M_DrawSave, + 80,34, + 0 +}; + +static menuitem_t OptionsMenu[]= +{ + {1,"M_SETUP", M_Setup, 's'}, + {2,"M_SCRNSZ", M_SizeDisplay,'s'}, + {-1,"",0}, // Display size placeholder + {1,"M_SVOL", M_Sound,'s'}, + {1,":Cheats", M_Cheats, 'e'}, + {1,":Level Select", M_LevelSelect,'s'}, + {1,":Toggle Map", M_ToggleMap, 's'}, + {1,"M_ENDGAM", M_EndGame,'e'}, +}; + +static menu_t OptionsDef = +{ + sizeof(OptionsMenu) / sizeof(menuitem_t), + &MainDef, + OptionsMenu, + M_DrawOptions, + 60,37, + 0 +}; + +static menuitem_t LevelSelectMenu[]= +{ + {1, ":Level 1", M_LevelSelectSelect, '1'}, + {1, ":Level 2", M_LevelSelectSelect, '2'}, + {1, ":Level 3", M_LevelSelectSelect, '3'}, + {1, ":Level 4", M_LevelSelectSelect, '4'}, + {1, ":Level 5", M_LevelSelectSelect, '5'}, + {1, ":Level 6", M_LevelSelectSelect, '6'}, + {1, ":Level 7", M_LevelSelectSelect, '7'}, + {1, ":Level 8", M_LevelSelectSelect, '8'}, + {1, ":Level 9", M_LevelSelectSelect, '9'} +}; + +static menu_t LevelSelectDef = +{ + sizeof(LevelSelectMenu) / sizeof(menuitem_t), + &OptionsDef, + LevelSelectMenu, + M_DrawLevelSelect, + 80, 24, + 0 +}; + +static menuitem_t CheatsMenu[]= +{ + {1, "", M_CheatSelect, '1'}, + {1, "", M_CheatSelect, '2'}, + {1, "", M_CheatSelect, '3'}, + {1, "", M_CheatSelect, '4'}, + {1, "", M_CheatSelect, '5'}, + {1, "", M_CheatSelect, '6'}, + {1, "", M_CheatSelect, '7'}, + {1, "", M_CheatSelect, '8'}, + {1, "", M_CheatSelect, '9'}, +}; + +static menu_t CheatsDef = +{ + sizeof(CheatsMenu) / sizeof(menuitem_t), + &OptionsDef, + CheatsMenu, + M_DrawCheats, + 80, 24, + 0 +}; + +static menuitem_t SoundMenu[]= +{ + {2,"M_SFXVOL",M_SfxVol,'s'}, + {-1,"",0}, + {2,"M_MUSVOL",M_MusicVol,'m'}, + {-1,"",0} +}; + +static menu_t SoundDef = +{ + sizeof(SoundMenu) / sizeof(menuitem_t), + &OptionsDef, + SoundMenu, + M_DrawSound, + 80,48, + 0 +}; + +static menuitem_t SetupMenu[] = +{ + {1,"",M_DoNothing,0} +}; + +static menu_t SetupDef = +{ + 1, + &OptionsDef, + SetupMenu, + M_DrawSetup, + 36,8, + 0 +}; + +static setup_menu_t gen_settings3[] = // General Settings +{ + {"GENERAL",S_SKIP|S_TITLE,m_null,200,G_Y}, + {"Enable Translucency", S_YESNO, m_null, G_X, G_Y + 1*G_H, {"translucency"}, M_Trans}, + {"Translucency filter percentage", S_NUM, m_null, G_X, G_Y + 2*G_H, {"tran_filter_pct"}, M_Trans}, + {"Filter for walls", S_CHOICE, m_null, G_X, G_Y + 3*G_H, {"filter_wall"}, NULL, renderfilters}, + {"Filter for floors/ceilings", S_CHOICE, m_null, G_X, G_Y + 4*G_H, {"filter_floor"}, NULL, renderfilters}, + {"Filter for sprites", S_CHOICE, m_null, G_X, G_Y + 5*G_H, {"filter_sprite"}, NULL, renderfilters}, + {"Filter for patches", S_CHOICE, m_null, G_X, G_Y + 6*G_H, {"filter_patch"}, NULL, renderfilters}, + {"Filter for lighting", S_CHOICE, m_null, G_X, G_Y + 7*G_H, {"filter_z"}, NULL, renderfilters}, + {"Drawing of sprite edges", S_CHOICE, m_null, G_X, G_Y + 8*G_H, {"sprite_edges"}, NULL, edgetypes}, + {"Drawing of patch edges", S_CHOICE, m_null, G_X, G_Y + 9*G_H, {"patch_edges"}, NULL, edgetypes}, + {"Flashing HOM indicator", S_YESNO, m_null, G_X, G_Y + 10*G_H, {"flashing_hom"}}, + {"Maximum number of player corpses", S_NUM|S_PRGWARN, m_null, G_X, G_Y + 11*G_H, {"max_player_corpse"}}, + {"Game speed, percentage of normal", S_NUM|S_PRGWARN, m_null, G_X, G_Y + 12*G_H, {"realtic_clock_rate"}}, + {"Smooth Demo", S_YESNO, m_null, G_X, G_Y + 13*G_H, {"demo_smoothturns"}, M_ChangeDemoSmoothTurns}, + {"Smooth Demo Factor", S_NUM, m_null, G_X, G_Y + 14*G_H, {"demo_smoothturnsfactor"}, M_ChangeDemoSmoothTurns}, + {"Show map secrets only after entering",S_YESNO,m_null,G_X,G_Y+15*G_H, {"map_secret_after"}}, + {"Show map pointer coordinates",S_YESNO,m_null,G_X,G_Y+16*G_H, {"map_point_coord"}}, // killough 10/98 + + {0,S_SKIP|S_END,m_null} +}; + +static setup_menu_t weap_settings1[] = // Weapons Settings screen +{ + {"WEAPONS",S_SKIP|S_TITLE,m_null,200,G_Y}, + {"ENABLE RECOIL", S_YESNO,m_null,G_X, G_Y+1*G_H, {"weapon_recoil"}}, + {"ENABLE BOBBING",S_YESNO,m_null,G_X, G_Y+2*G_H, {"player_bobbing"}}, + + {"1ST CHOICE WEAPON",S_WEAP,m_null,G_X,G_Y+4*G_H, {"weapon_choice_1"}}, + {"2nd CHOICE WEAPON",S_WEAP,m_null,G_X,G_Y+5*G_H, {"weapon_choice_2"}}, + {"3rd CHOICE WEAPON",S_WEAP,m_null,G_X,G_Y+6*G_H, {"weapon_choice_3"}}, + {"4th CHOICE WEAPON",S_WEAP,m_null,G_X,G_Y+7*G_H, {"weapon_choice_4"}}, + {"5th CHOICE WEAPON",S_WEAP,m_null,G_X,G_Y+8*G_H, {"weapon_choice_5"}}, + {"6th CHOICE WEAPON",S_WEAP,m_null,G_X,G_Y+9*G_H, {"weapon_choice_6"}}, + {"7th CHOICE WEAPON",S_WEAP,m_null,G_X,G_Y+10*G_H, {"weapon_choice_7"}}, + {"8th CHOICE WEAPON",S_WEAP,m_null,G_X,G_Y+11*G_H, {"weapon_choice_8"}}, + {"9th CHOICE WEAPON",S_WEAP,m_null,G_X,G_Y+12*G_H, {"weapon_choice_9"}}, + + {"Enable Fist/Chainsaw\n& SG/SSG toggle", S_YESNO, m_null, G_X, G_Y+ 14*G_H, {"doom_weapon_toggles"}}, + + {0,S_SKIP|S_END,m_null} +}; + +static setup_menu_t stat_settings1[] = // Status Bar and HUD Settings screen +{ + {"STATUS BAR" ,S_SKIP|S_TITLE,m_null,200,G_Y}, + {"Use Red Numbers" ,S_YESNO, m_null,G_X,G_Y+ 1*G_H, {"sts_always_red"}}, + {"Gray %" ,S_YESNO, m_null,G_X,G_Y+ 2*G_H, {"sts_pct_always_gray"}}, + {"Single Key Display",S_YESNO, m_null,G_X,G_Y+ 3*G_H, {"sts_traditional_keys"}}, + + {"HEADS-UP DISPLAY" ,S_SKIP|S_TITLE,m_null,200,G_Y+ 5*G_H}, + {"Hide secrets" ,S_YESNO ,m_null,G_X,G_Y+ 6*G_H, {"hud_nosecrets"}}, + {"Message Color During Play", S_CRITEM, m_null, G_X, G_Y + 7*G_H, {"hudcolor_mesg"}}, + {"Chat Message Color", S_CRITEM, m_null, G_X, G_Y + 8*G_H, {"hudcolor_chat"}}, + {"Message Review Color", S_CRITEM, m_null, G_X, G_Y + 9*G_H, {"hudcolor_list"}}, + {"Number of Review Message Lines", S_NUM, m_null, G_X, G_Y + 10*G_H, {"hud_msg_lines"}}, + {"Message Background", S_YESNO, m_null, G_X, G_Y + 11*G_H, {"hud_list_bgon"}}, + + {0,S_SKIP|S_END,m_null} +}; + +static setup_menu_t enem_settings1[] = // Enemy Settings screen +{ + {"ENEMIES" ,S_SKIP|S_TITLE,m_null,200,G_Y}, + {"Monster Infighting When Provoked",S_YESNO,m_null,G_X,G_Y+ 1*G_H, {"monster_infighting"}}, + {"Remember Previous Enemy",S_YESNO,m_null,G_X,G_Y+ 2*G_H, {"monsters_remember"}}, + {"Monster Backing Out",S_YESNO,m_null,G_X,G_Y+ 3*G_H, {"monster_backing"}}, + {"Climb Steep Stairs", S_YESNO,m_null,G_X,G_Y+4*G_H, {"monkeys"}}, + {"Intelligently Avoid Hazards",S_YESNO,m_null,G_X,G_Y+ 5*G_H, {"monster_avoid_hazards"}}, + {"Affected by Friction",S_YESNO,m_null,G_X,G_Y+ 6*G_H, {"monster_friction"}}, + {"Rescue Dying Friends",S_YESNO,m_null,G_X,G_Y+ 7*G_H, {"help_friends"}}, +#ifdef DOGS + {"Number Of Single-Player Helper Dogs",S_NUM|S_LEVWARN,m_null,G_X,G_Y+ 8*G_H, {"player_helpers"}}, + {"Distance Friends Stay Away",S_NUM,m_null,G_X,G_Y+ 9*G_H, {"friend_distance"}}, + {"Allow dogs to jump down",S_YESNO,m_null,G_X,G_Y+ 10*G_H, {"dog_jumping"}}, +#endif + + {0,S_SKIP|S_END,m_null} +}; + +static setup_menu_t comp_settings1[] = // Compatibility Settings screen #1 +{ + {"COMPAT 1/1",S_SKIP|S_TITLE,m_null,200,G_Y}, + {"Any monster can telefrag on MAP30", S_YESNO, m_null, G_X, G_Y + 1*G_H, {"comp_telefrag"}}, + {"Some objects never hang over tall ledges", S_YESNO, m_null, G_X, G_Y + 2*G_H, {"comp_dropoff"}}, + {"Objects don't fall under their own weight", S_YESNO, m_null, G_X, G_Y + 3*G_H, {"comp_falloff"}}, + {"Monsters randomly walk off of moving lifts", S_YESNO, m_null, G_X, G_Y + 4*G_H, {"comp_staylift"}}, + {"Monsters get stuck on doortracks", S_YESNO, m_null, G_X, G_Y + 5*G_H, {"comp_doorstuck"}}, + {"Monsters don't give up pursuit of targets", S_YESNO, m_null, G_X, G_Y + 6*G_H, {"comp_pursuit"}}, + {"Arch-Vile resurrects invincible ghosts", S_YESNO, m_null, G_X, G_Y + 7*G_H, {"comp_vile"}}, + {"Pain Elementals limited to 21 lost souls", S_YESNO, m_null, G_X, G_Y + 8*G_H, {"comp_pain"}}, + {"Lost souls get stuck behind walls", S_YESNO, m_null, G_X, G_Y + 9*G_H, {"comp_skull"}}, + {"Blazing doors make double closing sounds", S_YESNO, m_null, G_X, G_Y + 10*G_H, {"comp_blazing"}}, + {"Tagged doors don't trigger special lighting", S_YESNO, m_null, G_X, G_Y + 11*G_H, {"comp_doorlight"}}, + + {0,S_SKIP|S_END,m_null} +}; + +static setup_menu_t comp_settings2[] = // Compatibility Settings screen #2 +{ + {"COMPAT 2/2",S_SKIP|S_TITLE,m_null,200,G_Y}, + {"Lost souls don't bounce off flat surfaces", S_YESNO, m_null, G_X, G_Y + 1*G_H, {"comp_soul"}}, + {"God mode isn't absolute", S_YESNO, m_null, G_X, G_Y + 2*G_H, {"comp_god"}}, + {"Zombie players can exit levels", S_YESNO, m_null, G_X, G_Y + 4*G_H, {"comp_zombie"}}, + {"Sky is unaffected by invulnerability", S_YESNO, m_null, G_X, G_Y + 5*G_H, {"comp_skymap"}}, + {"Use Doom's stairbuilding method", S_YESNO, m_null, G_X, G_Y + 6*G_H, {"comp_stairs"}}, + {"Use Doom's floor motion behavior", S_YESNO, m_null, G_X, G_Y + 7*G_H, {"comp_floors"}}, + {"Use Doom's movement clipping code", S_YESNO, m_null, G_X, G_Y + 8*G_H, {"comp_moveblock"}}, + {"Use Doom's linedef trigger model", S_YESNO, m_null, G_X, G_Y + 9*G_H, {"comp_model"}}, + {"Linedef effects work with sector tag = 0", S_YESNO, m_null, G_X, G_Y + 10*G_H, {"comp_zerotags"}}, + {"All boss types can trigger tag 666 at ExM8", S_YESNO, m_null, G_X, G_Y + 11*G_H, {"comp_666"}}, + {"2S middle textures do not animate", S_YESNO, m_null, G_X, G_Y + 12*G_H, {"comp_maskedanim"}}, + + {0,S_SKIP|S_END,m_null} +}; + +static setup_menu_t keys_settings1[] = // Key Binding screen strings +{ + {"KEYBOARD 1/2",S_SKIP|S_TITLE,m_null,200,G_Y}, + {"MOVEMENT" ,S_SKIP|S_TITLE,m_null,G_X,G_Y+1*G_H}, + {"FORWARD" ,S_KEY ,m_scrn,G_X,G_Y+2*G_H,{&key_up}}, + {"BACKWARD" ,S_KEY ,m_scrn,G_X,G_Y+3*G_H,{&key_down}}, + {"TURN LEFT" ,S_KEY ,m_scrn,G_X,G_Y+4*G_H,{&key_left}}, + {"TURN RIGHT" ,S_KEY ,m_scrn,G_X,G_Y+5*G_H,{&key_right}}, + {"RUN" ,S_KEY ,m_scrn,G_X,G_Y+6*G_H,{&key_speed}}, + {"STRAFE LEFT" ,S_KEY ,m_scrn,G_X,G_Y+7*G_H,{&key_strafeleft}}, + {"STRAFE RIGHT",S_KEY ,m_scrn,G_X,G_Y+8*G_H,{&key_straferight}}, + {"STRAFE" ,S_KEY ,m_scrn,G_X,G_Y+9*G_H,{&key_strafe}}, + {"AUTORUN" ,S_KEY ,m_scrn,G_X,G_Y+10*G_H,{&key_autorun}}, + {"180 TURN" ,S_KEY ,m_scrn,G_X,G_Y+11*G_H,{&key_reverse}}, + {"USE" ,S_KEY ,m_scrn,G_X,G_Y+12*G_H,{&key_use}}, + + {"WEAPONS" ,S_SKIP|S_TITLE,m_null,G_X,G_Y+13*G_H}, + {"TOGGLE" ,S_KEY ,m_scrn,G_X,G_Y+14*G_H,{&key_weapontoggle}}, + {"FIRE" ,S_KEY ,m_scrn,G_X,G_Y+15*G_H,{&key_fire}}, + + {0,S_SKIP|S_END,m_null} +}; + +static setup_menu_t keys_settings2[] = // Key Binding screen strings +{ + {"KEYBOARD 2/2",S_SKIP|S_TITLE,m_null,200,G_Y}, + {"SCREEN" ,S_SKIP|S_TITLE,m_null,G_X,G_Y+1*G_H}, + {"HELP" ,S_SKIP|S_KEEP ,m_scrn,0 ,0 ,{&key_help}}, + {"MENU" ,S_SKIP|S_KEEP ,m_scrn,0 ,0 ,{&key_escape}}, + {"PAUSE" ,S_KEY ,m_scrn,G_X,G_Y+ 2*G_H,{&key_pause}}, + {"AUTOMAP" ,S_KEY ,m_scrn,G_X,G_Y+ 3*G_H,{&key_map}}, + {"HUD" ,S_KEY ,m_scrn,G_X,G_Y+ 4*G_H,{&key_hud}}, + {"MESSAGES" ,S_KEY ,m_scrn,G_X,G_Y+ 5*G_H,{&key_messages}}, + {"GAMMA FIX" ,S_KEY ,m_scrn,G_X,G_Y+ 6*G_H,{&key_gamma}}, + {"SPY" ,S_KEY ,m_scrn,G_X,G_Y+ 7*G_H,{&key_spy}}, + + {"GAME" ,S_SKIP|S_TITLE,m_null,G_X,G_Y+9*G_H}, + {"SAVE" ,S_KEY ,m_scrn,G_X,G_Y+10*G_H,{&key_savegame}}, + {"LOAD" ,S_KEY ,m_scrn,G_X,G_Y+11*G_H,{&key_loadgame}}, + {"QUICKSAVE" ,S_KEY ,m_scrn,G_X,G_Y+12*G_H,{&key_quicksave}}, + {"QUICKLOAD" ,S_KEY ,m_scrn,G_X,G_Y+13*G_H,{&key_quickload}}, + {"END GAME" ,S_KEY ,m_scrn,G_X,G_Y+14*G_H,{&key_endgame}}, + {"QUIT" ,S_KEY ,m_scrn,G_X,G_Y+15*G_H,{&key_quit}}, + + {0,S_SKIP|S_END,m_null} +}; + +static setup_menu_t helpstrings[] = // HELP screen strings +{ + {"SCREEN" ,S_SKIP|S_TITLE,m_null,KT_X1,KT_Y1}, + {"HELP" ,S_SKIP|S_KEY,m_null,KT_X1,KT_Y1+ 1*8,{&key_help}}, + {"MENU" ,S_SKIP|S_KEY,m_null,KT_X1,KT_Y1+ 2*8,{&key_escape}}, + {"PAUSE" ,S_SKIP|S_KEY,m_null,KT_X1,KT_Y1+ 4*8,{&key_pause}}, + {"AUTOMAP" ,S_SKIP|S_KEY,m_null,KT_X1,KT_Y1+ 5*8,{&key_map}}, + {"SOUND VOLUME",S_SKIP|S_KEY,m_null,KT_X1,KT_Y1+ 6*8,{&key_soundvolume}}, + {"HUD" ,S_SKIP|S_KEY,m_null,KT_X1,KT_Y1+ 7*8,{&key_hud}}, + {"MESSAGES" ,S_SKIP|S_KEY,m_null,KT_X1,KT_Y1+ 8*8,{&key_messages}}, + {"GAMMA FIX" ,S_SKIP|S_KEY,m_null,KT_X1,KT_Y1+ 9*8,{&key_gamma}}, + {"SPY" ,S_SKIP|S_KEY,m_null,KT_X1,KT_Y1+10*8,{&key_spy}}, + {"LARGER VIEW" ,S_SKIP|S_KEY,m_null,KT_X1,KT_Y1+11*8,{&key_zoomin}}, + {"SMALLER VIEW",S_SKIP|S_KEY,m_null,KT_X1,KT_Y1+12*8,{&key_zoomout}}, + + {"AUTOMAP" ,S_SKIP|S_TITLE,m_null,KT_X1,KT_Y2}, + {"FOLLOW MODE" ,S_SKIP|S_KEY,m_null,KT_X1,KT_Y2+ 1*8,{&key_map_follow}}, + {"ZOOM IN" ,S_SKIP|S_KEY,m_null,KT_X1,KT_Y2+ 2*8,{&key_map_zoomin}}, + {"ZOOM OUT" ,S_SKIP|S_KEY,m_null,KT_X1,KT_Y2+ 3*8,{&key_map_zoomout}}, + {"MARK PLACE" ,S_SKIP|S_KEY,m_null,KT_X1,KT_Y2+ 4*8,{&key_map_mark}}, + {"CLEAR MARKS" ,S_SKIP|S_KEY,m_null,KT_X1,KT_Y2+ 5*8,{&key_map_clear}}, + {"FULL/ZOOM" ,S_SKIP|S_KEY,m_null,KT_X1,KT_Y2+ 6*8,{&key_map_gobig}}, + {"GRID" ,S_SKIP|S_KEY,m_null,KT_X1,KT_Y2+ 7*8,{&key_map_grid}}, + + {"WEAPONS" ,S_SKIP|S_TITLE,m_null,KT_X3,KT_Y1}, + {"FIST" ,S_SKIP|S_KEY,m_null,KT_X3,KT_Y1+ 1*8,{&key_weapon1}}, + {"PISTOL" ,S_SKIP|S_KEY,m_null,KT_X3,KT_Y1+ 2*8,{&key_weapon2}}, + {"SHOTGUN" ,S_SKIP|S_KEY,m_null,KT_X3,KT_Y1+ 3*8,{&key_weapon3}}, + {"CHAINGUN" ,S_SKIP|S_KEY,m_null,KT_X3,KT_Y1+ 4*8,{&key_weapon4}}, + {"ROCKET" ,S_SKIP|S_KEY,m_null,KT_X3,KT_Y1+ 5*8,{&key_weapon5}}, + {"PLASMA" ,S_SKIP|S_KEY,m_null,KT_X3,KT_Y1+ 6*8,{&key_weapon6}}, + {"BFG 9000" ,S_SKIP|S_KEY,m_null,KT_X3,KT_Y1+ 7*8,{&key_weapon7}}, + {"CHAINSAW" ,S_SKIP|S_KEY,m_null,KT_X3,KT_Y1+ 8*8,{&key_weapon8}}, + {"SSG" ,S_SKIP|S_KEY,m_null,KT_X3,KT_Y1+ 9*8,{&key_weapon9}}, + {"BEST" ,S_SKIP|S_KEY,m_null,KT_X3,KT_Y1+10*8,{&key_weapontoggle}}, + {"FIRE" ,S_SKIP|S_KEY,m_null,KT_X3,KT_Y1+11*8,{&key_fire}}, + + {"MOVEMENT" ,S_SKIP|S_TITLE,m_null,KT_X3,KT_Y3}, + {"FORWARD" ,S_SKIP|S_KEY,m_null,KT_X3,KT_Y3+ 1*8,{&key_up}}, + {"BACKWARD" ,S_SKIP|S_KEY,m_null,KT_X3,KT_Y3+ 2*8,{&key_down}}, + {"TURN LEFT" ,S_SKIP|S_KEY,m_null,KT_X3,KT_Y3+ 3*8,{&key_left}}, + {"TURN RIGHT" ,S_SKIP|S_KEY,m_null,KT_X3,KT_Y3+ 4*8,{&key_right}}, + {"RUN" ,S_SKIP|S_KEY,m_null,KT_X3,KT_Y3+ 5*8,{&key_speed}}, + {"STRAFE LEFT" ,S_SKIP|S_KEY,m_null,KT_X3,KT_Y3+ 6*8,{&key_strafeleft}}, + {"STRAFE RIGHT",S_SKIP|S_KEY,m_null,KT_X3,KT_Y3+ 7*8,{&key_straferight}}, + {"STRAFE" ,S_SKIP|S_KEY,m_null,KT_X3,KT_Y3+ 8*8,{&key_strafe}}, + {"AUTORUN" ,S_SKIP|S_KEY,m_null,KT_X3,KT_Y3+ 9*8,{&key_autorun}}, + {"180 TURN" ,S_SKIP|S_KEY,m_null,KT_X3,KT_Y3+10*8,{&key_reverse}}, + {"USE" ,S_SKIP|S_KEY,m_null,KT_X3,KT_Y3+11*8,{&key_use}}, + + {"GAME" ,S_SKIP|S_TITLE,m_null,KT_X2,KT_Y1}, + {"SAVE" ,S_SKIP|S_KEY,m_null,KT_X2,KT_Y1+ 1*8,{&key_savegame}}, + {"LOAD" ,S_SKIP|S_KEY,m_null,KT_X2,KT_Y1+ 2*8,{&key_loadgame}}, + {"QUICKSAVE" ,S_SKIP|S_KEY,m_null,KT_X2,KT_Y1+ 3*8,{&key_quicksave}}, + {"END GAME" ,S_SKIP|S_KEY,m_null,KT_X2,KT_Y1+ 4*8,{&key_endgame}}, + {"QUICKLOAD" ,S_SKIP|S_KEY,m_null,KT_X2,KT_Y1+ 5*8,{&key_quickload}}, + {"QUIT" ,S_SKIP|S_KEY,m_null,KT_X2,KT_Y1+ 6*8,{&key_quit}}, + + // Final entry + {0,S_SKIP|S_END,m_null} +}; + +enum {prog, prog_stub, prog_stub1, prog_stub2, adcr}; +enum {cr_prog, cr_stub, cr_adcr}; + +static setup_menu_t cred_settings[] = +{ + {"Programmers",S_SKIP|S_CREDIT|S_LEFTJUST,m_null, CR_X, CR_Y + CR_S*prog + CR_SH*cr_prog}, + {"Florian 'Proff' Schulze",S_SKIP|S_CREDIT|S_LEFTJUST,m_null, CR_X2, CR_Y + CR_S*(prog+1) + CR_SH*cr_prog}, + {"Colin Phipps",S_SKIP|S_CREDIT|S_LEFTJUST,m_null, CR_X2, CR_Y + CR_S*(prog+2) + CR_SH*cr_prog}, + {"Neil Stevens",S_SKIP|S_CREDIT|S_LEFTJUST,m_null, CR_X2, CR_Y + CR_S*(prog+3) + CR_SH*cr_prog}, + {"Andrey Budko",S_SKIP|S_CREDIT|S_LEFTJUST,m_null, CR_X2, CR_Y + CR_S*(prog+4) + CR_SH*cr_prog}, + + {"Additional Credit To",S_SKIP|S_CREDIT|S_LEFTJUST,m_null, CR_X, CR_Y + CR_S*adcr + CR_SH*cr_adcr}, + {"id Software for DOOM",S_SKIP|S_CREDIT|S_LEFTJUST,m_null, CR_X2, CR_Y + CR_S*(adcr+1)+CR_SH*cr_adcr}, + {"TeamTNT for BOOM",S_SKIP|S_CREDIT|S_LEFTJUST,m_null, CR_X2, CR_Y + CR_S*(adcr+2)+CR_SH*cr_adcr}, + {"Lee Killough for MBF",S_SKIP|S_CREDIT|S_LEFTJUST,m_null, CR_X2, CR_Y + CR_S*(adcr+3)+CR_SH*cr_adcr}, + {"The DOSDoom-Team for DOSDOOM",S_SKIP|S_CREDIT|S_LEFTJUST,m_null, CR_X2, CR_Y + CR_S*(adcr+4)+CR_SH*cr_adcr}, + {"Randy Heit for ZDOOM",S_SKIP|S_CREDIT|S_LEFTJUST,m_null, CR_X2, CR_Y + CR_S*(adcr+5)+CR_SH*cr_adcr}, + {"Michael 'Kodak' Ryssen for DOOMGL",S_SKIP|S_CREDIT|S_LEFTJUST,m_null, CR_X2, CR_Y + CR_S*(adcr+6)+CR_SH*cr_adcr}, + {"Jess Haas for lSDLDoom",S_SKIP|S_CREDIT|S_LEFTJUST,m_null, CR_X2, CR_Y + CR_S*(adcr+7) + CR_SH*cr_adcr}, + {"all others who helped (see AUTHORS file)",S_SKIP|S_CREDIT|S_LEFTJUST,m_null, CR_X2, CR_Y + CR_S*(adcr+8)+CR_SH*cr_adcr}, + + // Final entry + {0,S_SKIP|S_END,m_null}, +}; + +static setup_menu_t *setup_screens[] = +{ + gen_settings3, + weap_settings1, + stat_settings1, + enem_settings1, + comp_settings1, + comp_settings2, + keys_settings1, + keys_settings2, + NULL +}; + + +static void M_SetupNextMenu(menu_t *menudef) +{ + currentMenu = menudef; + itemOn = currentMenu->lastOn; +} + +static void M_DrawThermo(int x,int y,int thermWidth,int thermDot ) +{ + /* + *Modification By Barry Mead to allow the Thermometer to have vastly + *larger ranges. (the thermWidth parameter can now have a value as + *large as 200. Modified 1-9-2000 Originally I used it to make + *the sensitivity range for the mouse better. It could however also + *be used to improve the dynamic range of music and sound affect + *volume controls for example. + */ + int horizScaler; //Used to allow more thermo range for mouse sensitivity. + int xx = x; + thermWidth = (thermWidth > 200) ? 200 : thermWidth; //Clamp to 200 max + horizScaler = (thermWidth > 23) ? (200 / thermWidth) : 8; //Dynamic range + V_DrawNamePatch(xx, y, 0, "M_THERML", CR_DEFAULT, VPT_STRETCH); + xx += 8; + for (int i=0;i= HU_FONTSIZE ? SPACEWIDTH : hu_font[c].width; + return w; +} + +static int M_StringHeight(const char* string) +{ + int c, l = 1; + while ((c = *string++)) + if (c == '\n') l++; + return l * hu_font[0].height; +} + +static void M_WriteText(int x,int y,const char* string) +{ + const char *ch = string; + int cx = x; + int cy = y; + int c; + + while ((c = *ch++)) + { + if (c == '\n') { + cx = x; + cy += 12; + continue; + } + + c = toupper(c) - HU_FONTSTART; + if (c < 0 || c>= HU_FONTSIZE) { + cx += 4; + continue; + } + + int w = hu_font[c].width; + if (cx+w > SCREENWIDTH) + break; + V_DrawNumPatch(cx, cy, 0, hu_font[c].lumpnum, CR_DEFAULT, VPT_STRETCH); + cx+=w; + } +} + +static int M_IndexInChoices(const char *str, const char **choices) +{ + int i = 0; + + while (*choices != NULL) { + if (!strcmp(str, *choices)) + return i; + i++; + choices++; + } + return 0; +} + +static void M_UpdateCurrent(default_t* def) +{ + if (def->current) { + if (!(demoplayback || demorecording || netgame)) /* killough 8/15/98 */ + *def->current = *def->location.pi; + else if (*def->current != *def->location.pi) + warn_about_changes(S_LEVWARN); /* killough 8/15/98 */ + } +} + +static void M_DrawString(int cx, int cy, int color, const char* ch) +{ + int c, w; + + while ((c = *ch++)) { + c = toupper(c) - HU_FONTSTART; + if (c < 0 || c> HU_FONTSIZE) + { + cx += SPACEWIDTH; // space + continue; + } + w = hu_font[c].width; + if (cx + w > 320) + break; + + V_DrawNumPatch(cx, cy, 0, hu_font[c].lumpnum, color, VPT_STRETCH | VPT_TRANS); + // The screen is cramped, so trim one unit from each + // character so they butt up against each other. + cx += w - 1; + } +} + +static void M_DrawMenuString(int cx, int cy, int color) +{ + M_DrawString(cx, cy, color, menu_buffer); +} + +static int M_GetKeyString(int c,int offset) +{ + const char* s; + + if (c >= 33 && c <= 126) + { + // The '=', ',', and '.' keys originally meant the shifted + // versions of those keys, but w/o having to shift them in + // the game. Any actions that are mapped to these keys will + // still mean their shifted versions. Could be changed later + // if someone can come up with a better way to deal with them. + + if (c == '=') // probably means the '+' key? + c = '+'; + else if (c == ',') // probably means the '<' key? + c = '<'; + else if (c == '.') // probably means the '>' key? + c = '>'; + menu_buffer[offset++] = c; // Just insert the ascii key + menu_buffer[offset] = 0; + } + else + { + // Retrieve 4-letter (max) string representing the key + + // cph - Keypad keys, general code reorganisation to + // make this smaller and neater. + if ((0x100 <= c) && (c < 0x200)) { + if (c == KEYD_KEYPADENTER) + s = "PADE"; + else { + strcpy(&menu_buffer[offset], "PAD"); + offset+=4; + menu_buffer[offset-1] = c & 0xff; + menu_buffer[offset] = 0; + } + } else if ((KEYD_F1 <= c) && (c < KEYD_F10)) { + menu_buffer[offset++] = 'F'; + menu_buffer[offset++] = '1' + c - KEYD_F1; + menu_buffer[offset] = 0; + } else { + switch(c) { + case KEYD_TAB: s = "TAB"; break; + case KEYD_ENTER: s = "ENTR"; break; + case KEYD_ESCAPE: s = "ESC"; break; + case KEYD_SPACEBAR: s = "SPAC"; break; + case KEYD_BACKSPACE: s = "BACK"; break; + case KEYD_RCTRL: s = "CTRL"; break; + case KEYD_LEFTARROW: s = "LARR"; break; + case KEYD_UPARROW: s = "UARR"; break; + case KEYD_RIGHTARROW: s = "RARR"; break; + case KEYD_DOWNARROW: s = "DARR"; break; + case KEYD_RSHIFT: s = "SHFT"; break; + case KEYD_RALT: s = "ALT"; break; + case KEYD_CAPSLOCK: s = "CAPS"; break; + case KEYD_SCROLLLOCK: s = "SCRL"; break; + case KEYD_HOME: s = "HOME"; break; + case KEYD_PAGEUP: s = "PGUP"; break; + case KEYD_END: s = "END"; break; + case KEYD_PAGEDOWN: s = "PGDN"; break; + case KEYD_INSERT: s = "INST"; break; + case KEYD_DEL: s = "DEL"; break; + case KEYD_F10: s = "F10"; break; + case KEYD_F11: s = "F11"; break; + case KEYD_F12: s = "F12"; break; + case KEYD_PAUSE: s = "PAUS"; break; + default: s = "JUNK"; break; + } + + if (s) { // cph - Slight code change + strcpy(&menu_buffer[offset],s); // string to display + offset += strlen(s); + } + } + } + return offset; +} + +static void M_DrawStringCentered(int cx, int cy, int color, const char* ch) +{ + M_DrawString(cx - M_StringWidth(ch)/2, cy, color, ch); +} + +static void M_DrawItem(const setup_menu_t* s) +{ + const char ResetButtonName[2][8] = {"M_BUTT1","M_BUTT2"}; + int x = s->m_x; + int y = s->m_y; + int flags = s->m_flags; + if (flags & S_RESET) + { + // This item is the reset button + // Draw the 'off' version if this isn't the current menu item + // Draw the blinking version in tune with the blinking skull otherwise + V_DrawNamePatch(x, y, 0, ResetButtonName[(flags & (S_HILITE|S_SELECT)) ? whichSkull : 0], + CR_DEFAULT, VPT_STRETCH); + } + else + { // Draw the item string + char temp[strlen(s->m_text) + 1]; + int w = 0; + int color = + flags & S_SELECT ? CR_SELECT : + flags & S_HILITE ? CR_HILITE : + flags & (S_TITLE|S_NEXT|S_PREV) ? CR_TITLE : CR_ITEM; // killough 10/98 + + /* killough 10/98: + * Enhance to support multiline text separated by newlines. + * This supports multiline items on horizontally-crowded menus. + */ + + memcpy(temp, s->m_text, sizeof(temp)); + for (char *p = temp; (p = strtok(p, "\n")); y += 8, p = NULL) + { /* killough 10/98: support left-justification: */ + strcpy(menu_buffer, p); + if (!(flags & S_LEFTJUST)) + w = M_StringWidth(menu_buffer) + 4; + M_DrawMenuString(x - w, y ,color); + } + } +} + +static void M_DrawSetting(const setup_menu_t* s) +{ + int x = s->m_x, y = s->m_y, flags = s->m_flags, color; + + // Determine color of the text. This may or may not be used later, + // depending on whether the item is a text string or not. + + color = flags & S_SELECT ? CR_SELECT : flags & S_HILITE ? CR_HILITE : CR_SET; + + // Is the item a YES/NO item? + + if (flags & S_YESNO) { + strcpy(menu_buffer,*s->var.def->location.pi ? "YES" : "NO"); + M_DrawMenuString(x,y,color); + return; + } + + // Is the item a simple number? + + if (flags & S_NUM) { + sprintf(menu_buffer,"%d",*s->var.def->location.pi); + M_DrawMenuString(x,y,color); + return; + } + + // Is the item a key binding? + + if (flags & S_KEY) { // Key Binding + // Draw the key bound to the action + if (s->var.m_key) { + M_GetKeyString(*(s->var.m_key), 0); + M_DrawMenuString(x,y,color); + } + return; + } + + // Is the item a weapon number? + // OR, Is the item a colored text string from the Automap? + // + // killough 10/98: removed special code, since the rest of the engine + // already takes care of it, and this code prevented the user from setting + // their overall weapons preferences while playing Doom 1. + // + // killough 11/98: consolidated weapons code with color range code + + if (flags & (S_WEAP|S_CRITEM)) // weapon number or color range + { + sprintf(menu_buffer,"%d", *s->var.def->location.pi); + M_DrawMenuString(x,y, flags & S_CRITEM ? *s->var.def->location.pi : color); + return; + } + + // Is the item a paint chip? + + if (flags & S_COLOR) // Automap paint chip + { + int ch = *s->var.def->location.pi; + // proff 12/6/98: Drawing of colorchips completly changed for hi-res, it now uses a patch + // draw the paint chip + V_FillRect(0, x*SCREENWIDTH/320, (y-1)*SCREENHEIGHT/200, + 8*SCREENWIDTH/320, 8*SCREENHEIGHT/200, + 0); + V_FillRect(0, (x+1)*SCREENWIDTH/320, y*SCREENHEIGHT/200, + 6*SCREENWIDTH/320, 6*SCREENHEIGHT/200, + (byte)ch); + + if (!ch) // don't show this item in automap mode + V_DrawNamePatch(x+1,y,0,"M_PALNO", CR_DEFAULT, VPT_STRETCH); + return; + } + + // Is the item a chat string? + // killough 10/98: or a filename? + + if (flags & S_STRING) { + strcpy(menu_buffer, (char*)*s->var.def->location.ppsz); + M_DrawMenuString(x,y,color); + return; + } + + // Is the item a selection of choices? + + if (flags & S_CHOICE) { + if (s->var.def->type == def_int) { + if (s->selectstrings == NULL) { + sprintf(menu_buffer,"%d",*s->var.def->location.pi); + } else { + strcpy(menu_buffer,s->selectstrings[*s->var.def->location.pi]); + } + } + + if (s->var.def->type == def_str) { + sprintf(menu_buffer,"%s", *s->var.def->location.ppsz); + } + + M_DrawMenuString(x,y,color); + return; + } +} + +static void M_DrawScreenItems(const setup_menu_t* src, int flags) +{ + if (print_warning_about_changes > 0) { /* killough 8/15/98: print warning */ + if (warning_about_changes & S_BADVAL) { + strcpy(menu_buffer, "Value out of Range"); + M_DrawMenuString(100,176,CR_RED); + } else if (warning_about_changes & S_PRGWARN) { + strcpy(menu_buffer, "Warning: Program must be restarted to see changes"); + M_DrawMenuString(3, 176, CR_RED); + } else if (warning_about_changes & S_BADVID) { + strcpy(menu_buffer, "Video mode not supported"); + M_DrawMenuString(80,176,CR_RED); + } else { + strcpy(menu_buffer, "Warning: Changes are pending until next game"); + M_DrawMenuString(18,184,CR_RED); + } + } + + while (!(src->m_flags & S_END)) + { + // See if we're to draw the item description (left-hand part) + if (src->m_flags & S_SHOWDESC) + M_DrawItem(src); + // See if we're to draw the setting (right-hand part) + if (src->m_flags & S_SHOWSET) + M_DrawSetting(src); + src++; + } + + if (flags & S_PREV) + M_DrawItem(&(setup_menu_t){"<- PREV", S_SKIP|S_PREV, m_null, G_PREV, G_PREVNEXT}); + if (flags & S_NEXT) + M_DrawItem(&(setup_menu_t){"NEXT ->", S_SKIP|S_NEXT, m_null, G_NEXT, G_PREVNEXT}); + if (flags & S_RESET) + M_DrawItem(&(setup_menu_t){NULL, S_RESET, m_null, G_RESET_X, G_RESET_Y}); +} + +static void M_DrawDefVerify(void) +{ + // proff 12/6/98: Drawing of verify box changed for hi-res, it now uses a patch + V_DrawNamePatch(VERIFYBOXXORG,VERIFYBOXYORG,0,"M_VBOX",CR_DEFAULT,VPT_STRETCH); + // The blinking messages is keyed off of the blinking of the + // cursor skull. + + if (whichSkull) { // blink the text + strcpy(menu_buffer,"Reset to defaults? (Y or N)"); + M_DrawMenuString(VERIFYBOXXORG+8,VERIFYBOXYORG+8,CR_RED); + } +} + +static void M_DrawInstructions(void) +{ + int flags = setup_screens[current_setup_page][set_menu_itemon].m_flags; + + // There are different instruction messages depending on whether you + // are changing an item or just sitting on it. + + if (setup_select) { + switch (flags & (S_KEY | S_YESNO | S_WEAP | S_NUM | S_COLOR | S_CRITEM | S_CHAT | S_RESET | S_FILE | S_CHOICE)) { + case S_KEY: + M_DrawStringCentered(160, 20, CR_SELECT, "Press key for this action"); + break; + case S_COLOR: + M_DrawStringCentered(160, 20, CR_SELECT, "Select color and press ENTER"); + break; + case S_CHAT: + M_DrawStringCentered(160, 20, CR_SELECT, "Type/edit chat string and Press ENTER"); + break; + case S_FILE: + M_DrawStringCentered(160, 20, CR_SELECT, "Type/edit filename and Press ENTER"); + break; + case S_CRITEM: + case S_WEAP: + case S_NUM: + case S_YESNO: + case S_CHOICE: + M_DrawStringCentered(160, 20, CR_SELECT, "Press left or right to choose"); + break; + case S_RESET: + break; + default: + lprintf(LO_WARN, "Unrecognised menu item type %d", flags); + } + } else { + if (flags & S_RESET) + M_DrawStringCentered(160, 20, CR_HILITE, "Press ENTER key to reset to defaults"); + else + M_DrawStringCentered(160, 20, CR_HILITE, "Press ENTER to Change"); + } +} + +static void M_Trans(void) // To reset translucency after setting it in menu +{ + general_translucency = default_translucency; + if (general_translucency) + R_InitTranMap(0); +} + +static void M_ChangeDemoSmoothTurns(void) +{ + R_SmoothPlaying_Reset(NULL); +} + +static void M_StartMessage(const char* string, void* routine, bool input) +{ + messageLastMenuActive = menuactive; + messageToPrint = 1; + messageString = string; + messageRoutine = routine; + messageNeedsInput = input; + menuactive = true; +} + +static void M_SelectDone(setup_menu_t* ptr) +{ + ptr->m_flags &= ~S_SELECT; + ptr->m_flags |= S_HILITE; + S_StartSound(NULL, sfx_itemup); + setup_select = false; + if (print_warning_about_changes) // killough 8/15/98 + print_warning_about_changes--; +} + +static void M_DrawSetup(void) +{ + inhelpscreens = true; // killough 4/6/98: Force status bar redraw + + V_DrawBackground("FLOOR4_6", 0); // Draw background + V_DrawNamePatch(124, 2, 0, "M_SETUP", CR_DEFAULT, VPT_STRETCH); + M_DrawInstructions(); + + int flags = 0; // S_RESET + if (current_setup_page > 0) flags |= S_PREV; + if (setup_screens[current_setup_page + 1]) flags |= S_NEXT; + M_DrawScreenItems(setup_screens[current_setup_page], flags); + + // If the Reset Button has been selected, an "Are you sure?" message + // is overlayed across everything else. + if (default_verify) + M_DrawDefVerify(); +} + +static void M_Setup(int choice) +{ + M_SetupNextMenu(&SetupDef); + setup_active = true; + setup_select = false; + default_verify = false; + current_setup_page = 0; + set_menu_itemon = 0; + while (setup_screens[current_setup_page][set_menu_itemon++].m_flags & S_SKIP); + setup_screens[current_setup_page][--set_menu_itemon].m_flags |= S_HILITE; +} + +static void M_ResetDefaults(void) +{ + // +} + +static void M_InitDefaults(void) +{ + setup_menu_t **p, *t; + default_t *dp; + + p = setup_screens; + while ((t = *(p++))) + for (; !(t->m_flags & S_END); t++) + if (t->m_flags & S_HASDEFPTR) { + if (!(dp = M_LookupDefault(t->var.name))) + I_Error("M_InitDefaults: Couldn't find config variable %s", t->var.name); + else + t->var.def = dp; + } +} + +static void M_DrawMainMenu(void) +{ + V_DrawNamePatch(94, 2, 0, "M_DOOM", CR_DEFAULT, VPT_STRETCH); +} + +static void M_ReadThis(int choice) +{ + M_SetupNextMenu(&ReadDef1); +} + +static void M_ReadThis2(int choice) +{ + M_SetupNextMenu(&ReadDef2); +} + +static void M_FinishReadThis(int choice) +{ + M_SetupNextMenu(&MainDef); +} + +static void M_FinishHelp(int choice) // killough 10/98 +{ + M_SetupNextMenu(&MainDef); +} + +static void M_DrawReadThis1(void) +{ + inhelpscreens = true; + if (gamemode == shareware) + V_DrawNamePatch(0, 0, 0, "HELP2", CR_DEFAULT, VPT_STRETCH); + else + M_DrawCredits(); +} + +static void M_DrawReadThis2(void) +{ + inhelpscreens = true; + if (gamemode == shareware) + M_DrawCredits(); + else + V_DrawNamePatch(0, 0, 0, "CREDIT", CR_DEFAULT, VPT_STRETCH); +} + +static void M_DrawEpisode(void) +{ + V_DrawNamePatch(54, 38, 0, "M_EPISOD", CR_DEFAULT, VPT_STRETCH); +} + +static void M_Episode(int choice) +{ + if (gamemode == shareware && choice) + { + M_StartMessage(s_SWSTRING,NULL,false); + M_SetupNextMenu(&ReadDef1); + return; + } + epi = choice; + M_SetupNextMenu(&NewDef); +} + +static void M_DrawNewGame(void) +{ + V_DrawNamePatch(96, 14, 0, "M_NEWG", CR_DEFAULT, VPT_STRETCH); + V_DrawNamePatch(54, 38, 0, "M_SKILL",CR_DEFAULT, VPT_STRETCH); +} + +static void M_RestartLevelResponse(int ch) +{ + if (ch != key_enter) + return; + + if (demorecording) + I_SafeExit(0); + + currentMenu->lastOn = itemOn; + M_ClearMenus(); + G_RestartLevel(); +} + +static void M_NewGame(int choice) +{ + if (netgame && !demoplayback) + { + if (compatibility_level < lxdoom_1_compatibility) + M_StartMessage(s_NEWGAME,NULL,false); + else // CPhipps - query restarting the level + M_StartMessage(s_RESTARTLEVEL,M_RestartLevelResponse,true); + } + else if (demorecording) + M_StartMessage("you can't start a new game\nwhile recording a demo!\n\n"PRESSKEY, NULL, false); + else if (gamemode == commercial) + M_SetupNextMenu(&NewDef); + else + M_SetupNextMenu(&EpiDef); +} + +static void M_VerifyNightmare(int ch) +{ + if (ch != key_enter) + return; + + G_DeferedInitNew(sk_nightmare,epi+1,1); + M_ClearMenus(); +} + +static void M_ChooseSkill(int choice) +{ + if (choice == sk_nightmare) + { + M_StartMessage(s_NIGHTMARE, M_VerifyNightmare, true); + return; + } + G_DeferedInitNew(choice, epi+1, 1); + M_ClearMenus(); +} + +static void M_DrawSaveLoadBorder(int x,int y) +{ + V_DrawNamePatch(x-8, y+7, 0, "M_LSLEFT", CR_DEFAULT, VPT_STRETCH); + for (int i = 0 ; i < 24 ; i++, x += 8) + V_DrawNamePatch(x, y+7, 0, "M_LSCNTR", CR_DEFAULT, VPT_STRETCH); + V_DrawNamePatch(x, y+7, 0, "M_LSRGHT", CR_DEFAULT, VPT_STRETCH); +} + +static void M_ReadSaveStrings(void) +{ + for (int i = 0 ; i < 8 ; i++) { + char name[PATH_MAX+1]; + FILE *fp; + + G_SaveGameName(name,sizeof(name),i,false); + + if ((fp = fopen(name, "rb"))) { + fread(&savegamestrings[i], SAVESTRINGSIZE, 1, fp); + //sprintf(&savegamestrings[i], "Slot %d", i); + fclose(fp); + LoadMenue[i].status = 1; + } else { + sprintf(savegamestrings[i], "Slot %d (empty)", i); + LoadMenue[i].status = 0; + } + } +} + +static void M_DrawLoad(void) +{ + V_DrawNamePatch(72 ,LOADGRAPHIC_Y, 0, "M_LOADG", CR_DEFAULT, VPT_STRETCH); + for (int i = 0 ; i < 8 ; i++) { + M_DrawSaveLoadBorder(LoadDef.x,LoadDef.y+LINEHEIGHT*i); + M_WriteText(LoadDef.x,LoadDef.y+LINEHEIGHT*i,savegamestrings[i]); + } +} + +static void M_LoadSelect(int choice) +{ + // CPhipps - Modified so savegame filename is worked out only internal + // to g_game.c, this only passes the slot. + G_LoadGame(choice, false); + M_ClearMenus(); +} + +static void M_VerifyForcedLoadGame(int ch) +{ + if (ch == key_enter) + G_ForcedLoadGame(); + M_ClearMenus(); +} + +void M_ForcedLoadGame(const char *msg) +{ + M_StartMessage(msg, M_VerifyForcedLoadGame, true); // free()'d above +} + +static void M_LoadGame(int choice) +{ + /* killough 5/26/98: exclude during demo recordings + *cph - unless a new demo */ + if (demorecording && (compatibility_level < prboom_2_compatibility)) + { + M_StartMessage("you can't load a game\nwhile recording an old demo!\n\n"PRESSKEY, + NULL, false); // killough 5/26/98: not externalized + return; + } + + M_SetupNextMenu(&LoadDef); + M_ReadSaveStrings(); +} + +static void M_DrawSave(void) +{ + V_DrawNamePatch(72, LOADGRAPHIC_Y, 0, "M_SAVEG", CR_DEFAULT, VPT_STRETCH); + for (int i = 0 ; i < 8 ; i++) + { + M_DrawSaveLoadBorder(LoadDef.x,LoadDef.y+LINEHEIGHT*i); + M_WriteText(LoadDef.x,LoadDef.y+LINEHEIGHT*i,savegamestrings[i]); + } +} + +static void M_DoSave(int slot) +{ + sprintf(savegamestrings[slot], "Slot %d:Episode %d Map %d", slot, gameepisode, gamemap); + G_SaveGame(slot, savegamestrings[slot]); + M_ClearMenus(); + + // PICK QUICKSAVE SLOT YET? + if (quickSaveSlot == -2) + quickSaveSlot = slot; +} + +static void M_SaveSelect(int choice) +{ + saveSlot = choice; + M_DoSave(saveSlot); +} + +static void M_SaveGame(int choice) +{ + // killough 10/6/98: allow savegames during single-player demo playback + if (!usergame && (!demoplayback || netgame)) + { + M_StartMessage(s_SAVEDEAD,NULL,false); + return; + } + + if (gamestate != GS_LEVEL) + return; + + M_SetupNextMenu(&SaveDef); + M_ReadSaveStrings(); +} + +static void M_DrawOptions(void) +{ + V_DrawNamePatch(108, 15, 0, "M_OPTTTL", CR_DEFAULT, VPT_STRETCH); + M_DrawThermo(OptionsDef.x, OptionsDef.y+LINEHEIGHT*2, 9, screenSize); +} + +static void M_Options(int choice) +{ + M_SetupNextMenu(&OptionsDef); +} + +static void M_QuitResponse(int ch) +{ + byte quitsounds[2][8] = { + {sfx_pldeth, sfx_dmpain, sfx_popain, sfx_slop, sfx_telept, sfx_posit1, sfx_posit3, sfx_sgtatk}, + {sfx_vilact, sfx_getpow, sfx_boscub, sfx_slop,sfx_skeswg, sfx_kntdth, sfx_bspact, sfx_sgtatk}, + }; + + if (ch != key_enter) + return; + + if ((!netgame || demoplayback) && !nosfxparm && snd_card) // avoid delay if no sound card + { + S_StartSound(NULL,quitsounds[gamemode == commercial][(gametic>>2)&7]); + + // wait till all sounds stopped or 3 seconds are over + int i = 30; + while (i>0) { + I_uSleep(100000); // CPhipps - don't thrash cpu in this loop + if (!I_AnySoundStillPlaying()) + break; + i--; + } + } + I_SafeExit(0); // killough +} + +static void M_QuitDOOM(int choice) +{ + sprintf(menu_buffer,"%s\n\n%s", endmsg[gametic%(NUM_QUITMESSAGES-1)+1], s_DOSY); + M_StartMessage(menu_buffer,M_QuitResponse,true); +} + +static void M_LevelSelect(int choice) +{ + M_SetupNextMenu(&LevelSelectDef); +} + +static void M_ToggleMap(int choice) +{ + AM_Responder(&(event_t){ev_keydown, key_map}); +} + +static void M_DrawLevelSelect(void) +{ + M_WriteText(72, 12, "Level Select"); +} + +static void M_LevelSelectSelect(int choice) +{ + M_ClearMenus(); + G_DeferedInitNew(gameskill, gameepisode, choice); +} + +static void M_Cheats(int choice) +{ + M_SetupNextMenu(&CheatsDef); +} + +static void M_DrawCheats(void) +{ + M_WriteText(72, 12, "Cheats"); + for (int i = 0; i < CheatsDef.numitems; i++) { + M_DrawSaveLoadBorder(CheatsDef.x, CheatsDef.y + LINEHEIGHT*i); + M_WriteText(CheatsDef.x, CheatsDef.y + LINEHEIGHT*i, cheats_list[i].desc); + } +} + +static void M_CheatSelect(int choice) +{ + const char *code = cheats_list[choice].code; + + for (int i = 0; i < strlen(code); i++) + M_FindCheats(code[i]); +} + +static void M_DrawSound(void) +{ + M_DrawThermo(SoundDef.x, SoundDef.y + LINEHEIGHT*1, 16, snd_SfxVolume); + M_DrawThermo(SoundDef.x, SoundDef.y + LINEHEIGHT*3, 16, snd_MusicVolume); +} + +static void M_Sound(int choice) +{ + M_SetupNextMenu(&SoundDef); +} + +static void M_SfxVol(int choice) +{ + if (choice == 1 && snd_SfxVolume < 15) + snd_SfxVolume++; + if (choice == 0 && snd_SfxVolume > 0) + snd_SfxVolume--; + + S_SetSfxVolume(snd_SfxVolume); +} + +static void M_MusicVol(int choice) +{ + if (choice == 1 && snd_MusicVolume < 15) + snd_MusicVolume++; + if (choice == 0 && snd_MusicVolume > 0) + snd_MusicVolume--; + + S_SetMusicVolume(snd_MusicVolume); +} + +static void M_QuickSaveResponse(int ch) +{ + if (ch == key_enter) { + M_DoSave(quickSaveSlot); + S_StartSound(NULL,sfx_swtchx); + } +} + +static void M_QuickSave(void) +{ + if (!usergame && (!demoplayback || netgame)) { /* killough 10/98 */ + S_StartSound(NULL,sfx_oof); + return; + } + + if (gamestate != GS_LEVEL) + return; + + if (quickSaveSlot < 0) { + M_StartControlPanel(); + M_ReadSaveStrings(); + M_SetupNextMenu(&SaveDef); + quickSaveSlot = -2; // means to pick a slot now + return; + } + sprintf(menu_buffer,s_QSPROMPT,savegamestrings[quickSaveSlot]); + M_StartMessage(menu_buffer,M_QuickSaveResponse,true); +} + +static void M_QuickLoadResponse(int ch) +{ + if (ch == key_enter) { + M_LoadSelect(quickSaveSlot); + S_StartSound(NULL,sfx_swtchx); + } +} + +static void M_QuickLoad(void) +{ + // cph - removed restriction against quickload in a netgame + if (demorecording) { // killough 5/26/98: exclude during demo recordings + M_StartMessage("you can't quickload\nwhile recording a demo!\n\n"PRESSKEY, NULL, false); + return; + } + + if (quickSaveSlot < 0) { + M_StartMessage(s_QSAVESPOT,NULL,false); + return; + } + sprintf(menu_buffer,s_QLPROMPT,savegamestrings[quickSaveSlot]); + M_StartMessage(menu_buffer,M_QuickLoadResponse,true); +} + +static void M_EndGameResponse(int ch) +{ + if (ch != key_enter) + return; + + // killough 5/26/98: make endgame quit if recording or playing back demo + if (demorecording || singledemo) + G_CheckDemoStatus(); + + currentMenu->lastOn = itemOn; + M_ClearMenus (); + D_StartTitle (); +} + +static void M_EndGame(int choice) +{ + if (netgame) + M_StartMessage(s_NETEND,NULL,false); + else + M_StartMessage(s_ENDGAME,M_EndGameResponse,true); +} + +static void M_SizeDisplay(int choice) +{ + switch(choice) { + case 0: + if (screenSize > 0) { + screenblocks--; + screenSize--; + hud_displayed = 0; + } + break; + case 1: + if (screenSize < 8) { + screenblocks++; + screenSize++; + } + else + hud_displayed = !hud_displayed; + break; + } + R_SetViewSize (screenblocks /*, detailLevel obsolete -- killough */); +} + +static void M_DrawHelp (void) +{ + inhelpscreens = true; // killough 10/98 + V_DrawBackground("FLOOR4_6", 0); + M_DrawScreenItems(helpstrings, 0); +} + +static void M_DoNothing(int choice) +{ + // +} + +static void M_ClearMenus(void) +{ + menuactive = 0; + print_warning_about_changes = 0; // killough 8/15/98 + default_verify = 0; // killough 10/98 + + // if (!netgame && usergame && paused) + // sendpause = true; +} + +bool M_Responder(event_t* ev) +{ + int ch = ev->data1; + + // We only care about keydown + if (ev->type != ev_keydown) + return false; + + // Take care of any messages that need input + if (messageToPrint) + { + lprintf(LO_INFO, "M_Responder: message needs input %d\n", messageNeedsInput); + if (messageNeedsInput && !(ch == ' ' || ch == key_enter || ch == key_backspace || ch == key_escape)) + return false; + menuactive = messageLastMenuActive; + messageToPrint = 0; + if (messageRoutine) + messageRoutine(ch); + menuactive = false; + S_StartSound(NULL,sfx_swtchx); + return true; + } + + // If there is no active menu displayed... + + if (!menuactive) + { + if (ch == key_autorun) // Autorun + { + autorun = !autorun; + return true; + } + + if (ch == key_help) // Help key + { + M_StartControlPanel(); + currentMenu = &HelpDef; + itemOn = 0; + S_StartSound(NULL,sfx_swtchn); + return true; + } + + if (ch == key_savegame) // Save Game + { + M_StartControlPanel(); + S_StartSound(NULL,sfx_swtchn); + M_SaveGame(0); + return true; + } + + if (ch == key_loadgame) // Load Game + { + M_StartControlPanel(); + S_StartSound(NULL,sfx_swtchn); + M_LoadGame(0); + return true; + } + + if (ch == key_quicksave) // Quicksave + { + S_StartSound(NULL,sfx_swtchn); + M_QuickSave(); + return true; + } + + if (ch == key_endgame) // End game + { + S_StartSound(NULL,sfx_swtchn); + M_EndGame(0); + return true; + } + + if (ch == key_quickload) // Quickload + { + S_StartSound(NULL,sfx_swtchn); + M_QuickLoad(); + return true; + } + + if (ch == key_quit) // Quit DOOM + { + S_StartSound(NULL,sfx_swtchn); + M_QuitDOOM(0); + return true; + } + + if (ch == key_gamma) // gamma toggle + { + usegamma = (usegamma + 1) % 5; + players[consoleplayer].message = + usegamma == 0 ? s_GAMMALVL0 : + usegamma == 1 ? s_GAMMALVL1 : + usegamma == 2 ? s_GAMMALVL2 : + usegamma == 3 ? s_GAMMALVL3 : + s_GAMMALVL4; + V_SetPalette(0); + return true; + } + + if (ch == key_hud) // heads-up mode + { + if (automapmode & am_active) // jff 2/22/98 + return false; // HUD mode control + if (screenSize<8) // function on default F5 + while (screenSize<8 || !hud_displayed) // make hud visible + M_SizeDisplay(1); // when configuring it + else + { + hud_displayed = 1; //jff 3/3/98 turn hud on + hud_active = (hud_active+1)%3; // cycle hud_active + if (!hud_active) //jff 3/4/98 add distributed + { + hud_distributed = !hud_distributed; // to cycle + HU_MoveHud(); //jff 3/9/98 move it now to avoid glitch + } + } + return true; + } + } + // Pop-up Main menu? + + if (!menuactive) + { + if (ch == key_escape) + { + M_StartControlPanel(); + S_StartSound(NULL,sfx_swtchn); + return true; + } + return false; + } + + + if (setup_active) + { + setup_menu_t *ptr1= &setup_screens[current_setup_page][set_menu_itemon]; + + // Catch the response to the 'reset to default?' verification + if (default_verify) + { + if (ch == key_enter) { + M_ResetDefaults(); + default_verify = false; + M_SelectDone(ptr1); + } + else if (ch == key_escape || ch == key_backspace) { + default_verify = false; + M_SelectDone(ptr1); + } + return true; + } + + // Common processing for some items + + if (setup_select) // changing an entry + { + if (ch == key_escape) // Exit key = no change + { + M_SelectDone(ptr1); // phares 4/17/98 + return true; + } + + if (ptr1->m_flags & S_YESNO) // yes or no setting? + { + if (ch == key_menu_left || ch == key_menu_right) + { + *ptr1->var.def->location.pi = !*ptr1->var.def->location.pi; + if (ptr1->m_flags & (S_LEVWARN | S_PRGWARN)) + warn_about_changes(ptr1->m_flags & (S_LEVWARN | S_PRGWARN)); + else + M_UpdateCurrent(ptr1->var.def); + } + else if (ch == key_enter) + { + if (ptr1->action) + ptr1->action(); + M_SelectDone(ptr1); + } + return true; + } + + if (ptr1->m_flags & (S_CRITEM|S_WEAP)) + { + int value = *ptr1->var.def->location.pi; + + if (ch == key_menu_left) { + value--; + } + if (ch == key_menu_right) { + value++; + } + + if (value < 0 || value > 9) + return true; // ignore + + *ptr1->var.def->location.pi = value; + + if (ch == key_enter) + { + if (ptr1->action) + ptr1->action(); + M_SelectDone(ptr1); + } + return true; + } + + if (ptr1->m_flags & S_NUM) // number? + { + int value = *ptr1->var.def->location.pi; + + if (ch == key_menu_left) { + value--; + } + if (ch == key_menu_right) { + value++; + } + if (value != *ptr1->var.def->location.pi) + { + if ((ptr1->var.def->minvalue != UL && value < ptr1->var.def->minvalue) || + (ptr1->var.def->maxvalue != UL && value > ptr1->var.def->maxvalue)) + warn_about_changes(S_BADVAL); + else { + *ptr1->var.def->location.pi = value; + } + } + + if (ch == key_enter) + { + if (ptr1->m_flags & (S_LEVWARN | S_PRGWARN)) + warn_about_changes(ptr1->m_flags & + (S_LEVWARN | S_PRGWARN)); + else + M_UpdateCurrent(ptr1->var.def); + + if (ptr1->action) // killough 10/98 + ptr1->action(); + + M_SelectDone(ptr1); + } + return true; + } + + if (ptr1->m_flags & S_CHOICE) // selection of choices? + { + if (ch == key_menu_left) + { + if (ptr1->var.def->type == def_int) + { + int value = *ptr1->var.def->location.pi; + value = value - 1; + if ((ptr1->var.def->minvalue != UL && value < ptr1->var.def->minvalue)) + value = ptr1->var.def->minvalue; + if ((ptr1->var.def->maxvalue != UL && value > ptr1->var.def->maxvalue)) + value = ptr1->var.def->maxvalue; + if (*ptr1->var.def->location.pi != value) + S_StartSound(NULL,sfx_pstop); + *ptr1->var.def->location.pi = value; + } + + if (ptr1->var.def->type == def_str) + { + int old_value = M_IndexInChoices(*ptr1->var.def->location.ppsz, ptr1->selectstrings); + int value = old_value - 1; + if (value < 0) + value = 0; + if (old_value != value) + S_StartSound(NULL,sfx_pstop); + *ptr1->var.def->location.ppsz = ptr1->selectstrings[value]; + } + } + else if (ch == key_menu_right) + { + if (ptr1->var.def->type == def_int) + { + int value = *ptr1->var.def->location.pi; + value = value + 1; + if ((ptr1->var.def->minvalue != UL && value < ptr1->var.def->minvalue)) + value = ptr1->var.def->minvalue; + if ((ptr1->var.def->maxvalue != UL && value > ptr1->var.def->maxvalue)) + value = ptr1->var.def->maxvalue; + if (*ptr1->var.def->location.pi != value) + S_StartSound(NULL,sfx_pstop); + *ptr1->var.def->location.pi = value; + } + if (ptr1->var.def->type == def_str) + { + int old_value = M_IndexInChoices(*ptr1->var.def->location.ppsz, ptr1->selectstrings); + int value = old_value + 1; + if (ptr1->selectstrings[value] == NULL) + value = old_value; + if (old_value != value) + S_StartSound(NULL,sfx_pstop); + *ptr1->var.def->location.ppsz = ptr1->selectstrings[value]; + } + } + else if (ch == key_enter) + { + // phares 4/14/98: + // If not in demoplayback, demorecording, or netgame, + // and there's a second variable in var2, set that + // as well + + // killough 8/15/98: add warning messages + + if (ptr1->m_flags & (S_LEVWARN | S_PRGWARN)) + warn_about_changes(ptr1->m_flags & (S_LEVWARN | S_PRGWARN)); + else + M_UpdateCurrent(ptr1->var.def); + + if (ptr1->action) // killough 10/98 + ptr1->action(); + M_SelectDone(ptr1); // phares 4/17/98 + } + return true; + } + } + + // Not changing any items on the Setup screens. See if we're + // navigating the Setup menus or selecting an item to change. + + if (ch == key_menu_down) + { + ptr1->m_flags &= ~S_HILITE; + do { + if (ptr1->m_flags & S_END) + set_menu_itemon = 0; + else + set_menu_itemon++; + ptr1 = &setup_screens[current_setup_page][set_menu_itemon]; + } while (ptr1->m_flags & S_SKIP); + M_SelectDone(ptr1); + return true; + } + else if (ch == key_menu_up) + { + ptr1->m_flags &= ~S_HILITE; + do { + if (set_menu_itemon == 0) { + do { + set_menu_itemon++; + } + while(!(setup_screens[current_setup_page][set_menu_itemon].m_flags & S_END)); + } + set_menu_itemon--; + } + while(setup_screens[current_setup_page][set_menu_itemon].m_flags & S_SKIP); + M_SelectDone(&setup_screens[current_setup_page][set_menu_itemon]); + return true; + } + else if (ch == key_enter) + { + if (ptr1->m_flags & S_RESET) + default_verify = true; + ptr1->m_flags |= S_SELECT; + setup_select = true; + S_StartSound(NULL, sfx_itemup); + return true; + } + else if ((ch == key_escape) || (ch == key_backspace)) + { + if (ch == key_escape) // Clear all menus + M_ClearMenus(); + else if (currentMenu->prevMenu) // key_backspace = return to Setup Menu + { + currentMenu = currentMenu->prevMenu; + itemOn = currentMenu->lastOn; + S_StartSound(NULL,sfx_swtchn); + } + ptr1->m_flags &= ~(S_HILITE|S_SELECT);// phares 4/19/98 + setup_active = false; + default_verify = false; // phares 4/19/98 + HU_Start(); // catch any message changes // phares 4/19/98 + S_StartSound(NULL,sfx_swtchx); + return true; + } + /* Prev/Next screen navigation */ + else if (ch == key_menu_left) + { + if (current_setup_page > 0) + { + ptr1->m_flags &= ~S_HILITE; + current_setup_page--; + set_menu_itemon = 0; + print_warning_about_changes = false; // killough 10/98 + while (setup_screens[current_setup_page][set_menu_itemon++].m_flags&S_SKIP); + setup_screens[current_setup_page][--set_menu_itemon].m_flags |= S_HILITE; + S_StartSound(NULL, sfx_pstop); // killough 10/98 + return true; + } + } + else if (ch == key_menu_right) + { + if (setup_screens[current_setup_page+1]) + { + ptr1->m_flags &= ~S_HILITE; + current_setup_page++; + set_menu_itemon = 0; + print_warning_about_changes = false; // killough 10/98 + while (setup_screens[current_setup_page][set_menu_itemon++].m_flags&S_SKIP); + setup_screens[current_setup_page][--set_menu_itemon].m_flags |= S_HILITE; + S_StartSound(NULL, sfx_pstop); // killough 10/98 + return true; + } + } + } // End of Setup Screen processing + + + + // From here on, these navigation keys are used on the BIG FONT menus + // like the Main Menu. + + if (ch == key_menu_down) + { + do { + if (itemOn+1 > currentMenu->numitems-1) itemOn = 0; + else itemOn++; + S_StartSound(NULL,sfx_pstop); + } while(currentMenu->menuitems[itemOn].status==-1); + return true; + } + else if (ch == key_menu_up) + { + do { + if (!itemOn) itemOn = currentMenu->numitems-1; + else itemOn--; + S_StartSound(NULL,sfx_pstop); + } while(currentMenu->menuitems[itemOn].status==-1); + return true; + } + else if (ch == key_menu_left) + { + if (currentMenu->menuitems[itemOn].routine && currentMenu->menuitems[itemOn].status == 2) + { + S_StartSound(NULL,sfx_stnmov); + currentMenu->menuitems[itemOn].routine(0); + } + return true; + } + else if (ch == key_menu_right) + { + if (currentMenu->menuitems[itemOn].routine && currentMenu->menuitems[itemOn].status == 2) + { + S_StartSound(NULL,sfx_stnmov); + currentMenu->menuitems[itemOn].routine(1); + } + return true; + } + else if (ch == key_enter) + { + if (currentMenu->menuitems[itemOn].routine && currentMenu->menuitems[itemOn].status) + { + currentMenu->lastOn = itemOn; + if (currentMenu->menuitems[itemOn].status == 2) + { + currentMenu->menuitems[itemOn].routine(1); // right arrow + S_StartSound(NULL,sfx_stnmov); + } + else + { + currentMenu->menuitems[itemOn].routine(itemOn); + S_StartSound(NULL,sfx_pistol); + } + } + return true; + } + else if (ch == key_escape) + { + currentMenu->lastOn = itemOn; + M_ClearMenus(); + S_StartSound(NULL,sfx_swtchx); + return true; + } + else if (ch == key_backspace) + { + currentMenu->lastOn = itemOn; + if (currentMenu->prevMenu) + { + currentMenu = currentMenu->prevMenu; + itemOn = currentMenu->lastOn; + S_StartSound(NULL,sfx_swtchn); + } + return true; + } + + return false; +} + +void M_DrawCredits(void) // killough 10/98: credit screen +{ + inhelpscreens = true; + V_DrawBackground(gamemode==shareware ? "CEIL5_1" : "MFLR8_4", 0); + V_DrawNamePatch(115,9,0, "PRBOOM",CR_GOLD, VPT_TRANS | VPT_STRETCH); + M_DrawScreenItems(cred_settings, 0); +} + +void M_StartControlPanel(void) +{ + // intro might call this repeatedly + if (menuactive) + return; + + //jff 3/24/98 make default skill menu choice follow -skill or defaultskill + //from command line or config file + NewDef.lastOn = defaultskill - 1; + default_verify = 0; // killough 10/98 + menuactive = 1; + currentMenu = &MainDef; // JDC + itemOn = currentMenu->lastOn; // JDC + print_warning_about_changes = false; // killough 11/98 +} + +void M_Drawer(void) +{ + inhelpscreens = false; + + // Horiz. & Vertically center string and print it. + // killough 9/29/98: simplified code, removed 40-character width limit + if (messageToPrint) + { + char temp[strlen(messageString) + 1]; + memcpy(temp, messageString, sizeof(temp)); + + int y = 100 - M_StringHeight(messageString)/2; + for (char *p = temp; *p;) + { + char *string = p, c; + while ((c = *p) && *p != '\n') + p++; + *p = 0; + M_WriteText(160 - M_StringWidth(string)/2, y, string); + y += hu_font[0].height; + if ((*p = c)) + p++; + } + } + else if (menuactive) + { + if (currentMenu->routine) + currentMenu->routine(); // call Draw routine + + int x = currentMenu->x; + int y = currentMenu->y; + int max = currentMenu->numitems; + + // DRAW MENU + for (int i=0;imenuitems[i].name[0] == ':') + M_WriteText(x, y + 4, currentMenu->menuitems[i].name + 1); + else if (currentMenu->menuitems[i].name[0]) + V_DrawNamePatch(x, y, 0, currentMenu->menuitems[i].name, CR_DEFAULT, VPT_STRETCH); + y += LINEHEIGHT; + } + + // DRAW SKULL + V_DrawNamePatch(x + SKULLXOFF, currentMenu->y - 5 + itemOn*LINEHEIGHT,0, + whichSkull ? "M_SKULL2" : "M_SKULL1", CR_DEFAULT, VPT_STRETCH); + } +} + +void M_Ticker(void) +{ + if (--skullAnimCounter <= 0) + { + whichSkull ^= 1; + skullAnimCounter = 8; + } +} + +void M_Init(void) +{ + M_InitDefaults(); // killough 11/98 + currentMenu = &MainDef; + menuactive = 0; + itemOn = currentMenu->lastOn; + whichSkull = 0; + skullAnimCounter = 10; + screenSize = screenblocks - 3; + messageToPrint = 0; + messageString = NULL; + messageLastMenuActive = menuactive; + quickSaveSlot = -1; + + // Detect the number of available episodes + for (int i = 0; i < 6; i++) { + if (W_CheckNumForName(EpisodeMenu[i].name) == -1) { + EpiDef.numitems = i; + break; + } + } + + // DOOM 2 has no episodes + if (!EpiDef.numitems || gamemode == commercial) + { + NewDef.prevMenu = &MainDef; + } + + setup_menu_t *src = helpstrings; + while (!(src->m_flags & S_END)) + { + if ((strncmp(src->m_text,"PLASMA",6) == 0) && (gamemode == shareware)) + src->m_flags = S_SKIP; // Don't show setting or item + if ((strncmp(src->m_text,"BFG",3) == 0) && (gamemode == shareware)) + src->m_flags = S_SKIP; // Don't show setting or item + if ((strncmp(src->m_text,"SSG",3) == 0) && (gamemode != commercial)) + src->m_flags = S_SKIP; // Don't show setting or item + src++; + } + + M_ChangeDemoSmoothTurns(); +} diff --git a/components/doom/prboom/m_menu.h b/components/doom/prboom/m_menu.h new file mode 100644 index 0000000..4a73fe7 --- /dev/null +++ b/components/doom/prboom/m_menu.h @@ -0,0 +1,170 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Menu widget stuff, episode selection and such. + * + *-----------------------------------------------------------------------------*/ + +#ifndef __M_MENU__ +#define __M_MENU__ + +#include "d_event.h" + +// +// MENUS +// +// Called by main loop, +// saves config file and calls I_Quit when user exits. +// Even when the menu is not displayed, +// this can resize the view and change game parameters. +// Does all the real work of the menu interaction. + +bool M_Responder (event_t *ev); + +// Called by main loop, +// only used for menu (skull cursor) animation. + +void M_Ticker (void); + +// Called by main loop, +// draws the menus directly into the screen buffer. + +void M_Drawer (void); + +// Called by D_DoomMain, +// loads the config file. + +void M_Init (void); + +// Called by intro code to force menu up upon a keypress, +// does nothing if menu is already up. + +void M_StartControlPanel (void); + +void M_ForcedLoadGame(const char *msg); // killough 5/15/98: forced loadgames + +void M_DrawCredits(void); // killough 11/98 + +/**************************** + * + * The following #defines are for the m_flags field of each item on every + * Setup Screen. They can be OR'ed together where appropriate + */ + +#define S_HILITE 0x1 // Cursor is sitting on this item +#define S_SELECT 0x2 // We're changing this item +#define S_TITLE 0x4 // Title item +#define S_YESNO 0x8 // Yes or No item +#define S_CRITEM 0x10 // Message color +#define S_COLOR 0x20 // Automap color +#define S_CHAT 0x40 // Chat String +#define S_RESET 0x80 // Reset to Defaults Button +#define S_PREV 0x100 // Previous menu exists +#define S_NEXT 0x200 // Next menu exists +#define S_KEY 0x400 // Key Binding +#define S_WEAP 0x800 // Weapon # +#define S_NUM 0x1000 // Numerical item +#define S_SKIP 0x2000 // Cursor can't land here +#define S_KEEP 0x4000 // Don't swap key out +#define S_END 0x8000 // Last item in list (dummy) +#define S_LEVWARN 0x10000// killough 8/30/98: Always warn about pending change +#define S_PRGWARN 0x20000// killough 10/98: Warn about change until next run +#define S_BADVAL 0x40000// killough 10/98: Warn about bad value +#define S_FILE 0x80000// killough 10/98: Filenames +#define S_LEFTJUST 0x100000 // killough 10/98: items which are left-justified +#define S_CREDIT 0x200000 // killough 10/98: credit +#define S_BADVID 0x400000 // killough 12/98: video mode change error +#define S_CHOICE 0x800000 // this item has several values + +/* S_SHOWDESC = the set of items whose description should be displayed + * S_SHOWSET = the set of items whose setting should be displayed + * S_STRING = the set of items whose settings are strings -- killough 10/98: + * S_HASDEFPTR = the set of items whose var field points to default array + */ + +#define S_SHOWDESC (S_TITLE|S_YESNO|S_CRITEM|S_COLOR|S_CHAT|S_RESET|S_PREV|S_NEXT|S_KEY|S_WEAP|S_NUM|S_FILE|S_CREDIT|S_CHOICE) + +#define S_SHOWSET (S_YESNO|S_CRITEM|S_COLOR|S_CHAT|S_KEY|S_WEAP|S_NUM|S_FILE|S_CHOICE) + +#define S_STRING (S_CHAT|S_FILE) + +#define S_HASDEFPTR (S_STRING|S_YESNO|S_NUM|S_WEAP|S_COLOR|S_CRITEM|S_CHOICE) + +/**************************** + * + * The setup_group enum is used to show which 'groups' keys fall into so + * that you can bind a key differently in each 'group'. + */ + +typedef enum { + m_null, // Has no meaning; not applicable + m_scrn, // A key can not be assigned to more than one action + m_map, // in the same group. A key can be assigned to one + m_menu, // action in one group, and another action in another. +} setup_group; + +/**************************** + * + * phares 4/17/98: + * State definition for each item. + * This is the definition of the structure for each setup item. Not all + * fields are used by all items. + * + * A setup screen is defined by an array of these items specific to + * that screen. + * + * killough 11/98: + * + * Restructured to allow simpler table entries, + * and to Xref with defaults[] array in m_misc.c. + * Moved from m_menu.c to m_menu.h so that m_misc.c can use it. + */ + +typedef struct setup_menu_s +{ + const char *m_text; /* text to display */ + int m_flags; /* phares 4/17/98: flag bits S_* (defined above) */ + setup_group m_group; /* Group */ + short m_x; /* screen x position (left is 0) */ + short m_y; /* screen y position (top is 0) */ + + union /* killough 11/98: The first field is a union of several types */ + { + const void *var; /* generic variable */ + int *m_key; /* key value, or 0 if not shown */ + const char *name; /* name */ + struct default_s *def; /* default[] table entry */ + struct setup_menu_s *menu; /* next or prev menu */ + } var; + + void (*action)(void); /* killough 10/98: function to call after changing */ + const char **selectstrings; /* list of strings for choice value */ +} setup_menu_t; + +#endif diff --git a/components/doom/prboom/m_misc.c b/components/doom/prboom/m_misc.c new file mode 100644 index 0000000..a17d887 --- /dev/null +++ b/components/doom/prboom/m_misc.c @@ -0,0 +1,764 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Main loop menu stuff. + * Default Config File. + * PCX Screenshots. + * + *-----------------------------------------------------------------------------*/ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include +#include +#include + +#include "doomstat.h" +#include "m_argv.h" +#include "g_game.h" +#include "m_menu.h" +#include "am_map.h" +#include "w_wad.h" +#include "i_system.h" +#include "i_sound.h" +#include "i_video.h" +#include "v_video.h" +#include "hu_stuff.h" +#include "st_stuff.h" +#include "dstrings.h" +#include "m_misc.h" +#include "s_sound.h" +#include "sounds.h" +#include "i_joy.h" +#include "lprintf.h" +#include "d_main.h" +#include "r_draw.h" +#include "r_demo.h" +#include "r_fps.h" + +/* cph - disk icon not implemented */ +static inline void I_BeginRead(void) {} +static inline void I_EndRead(void) {} + +/* + * M_WriteFile + * + * killough 9/98: rewritten to use stdio and to flash disk icon + */ + +boolean M_WriteFile(char const *name, void *source, int length) +{ + FILE *fp; + + errno = 0; + + if (!(fp = fopen(name, "wb"))) // Try opening file + return 0; // Could not open file for writing + + I_BeginRead(); // Disk icon on + length = fwrite(source, length, 1, fp); // Write data + fclose(fp); + I_EndRead(); // Disk icon off + + if (!length) // Remove partially written file + remove(name); + + return length; +} + +/* + * M_ReadFile + * + * killough 9/98: rewritten to use stdio and to flash disk icon + */ + +int M_ReadFile(char const *name, byte **buffer) +{ + FILE *fp; + + if ((fp = fopen(name, "rb"))) + { + size_t length; + + I_BeginRead(); + fseek(fp, 0, SEEK_END); + length = ftell(fp); + fseek(fp, 0, SEEK_SET); + *buffer = Z_Malloc(length, PU_STATIC, 0); + if (fread(*buffer, 1, length, fp) == length) + { + fclose(fp); + I_EndRead(); + return length; + } + fclose(fp); + } + + /* cph 2002/08/10 - this used to return 0 on error, but that's ambiguous, + * because we could have a legit 0-length file. So make it -1. */ + return -1; +} + +// +// DEFAULTS +// + +int precache = true; /* if true, load all graphics at start */ +int mus_pause_opt; // 0 = kill music, 1 = pause, 2 = continue +int endoom_mode; + +extern int usemouse; +extern int mousebfire; +extern int mousebstrafe; +extern int mousebforward; + +extern int viewwidth; +extern int viewheight; + +extern int realtic_clock_rate; // killough 4/13/98: adjustable timer +extern int tran_filter_pct; // killough 2/21/98 + +extern int screenblocks; +extern int showMessages; + +extern const char* chat_macros[]; + +extern int map_point_coordinates; + +static default_t defaults[] = +{ + {"Misc settings",{NULL},{0},UL,UL,def_none,ss_none}, + {"default_compatibility_level",{(int*)&default_compatibility_level}, + {-1},-1,MAX_COMPATIBILITY_LEVEL-1, + def_int,ss_none}, // compatibility level" - CPhipps + {"realtic_clock_rate",{&realtic_clock_rate},{100},0,UL, + def_int,ss_none}, // percentage of normal speed (35 fps) realtic clock runs at + {"max_player_corpse", {&bodyquesize}, {32},-1,UL, // killough 2/8/98 + def_int,ss_none}, // number of dead bodies in view supported (-1 = no limit) + {"flashing_hom",{&flashing_hom},{0},0,1, + def_bool,ss_none}, // killough 10/98 - enable flashing HOM indicator + {"demo_insurance",{&default_demo_insurance},{2},0,2, // killough 3/31/98 + def_int,ss_none}, // 1=take special steps ensuring demo sync, 2=only during recordings + {"endoom_mode", {&endoom_mode},{5},0,7, // CPhipps - endoom flags + def_hex, ss_none}, // 0, +1 for colours, +2 for non-ascii chars, +4 for skip-last-line + {"level_precache",{(int*)&precache},{1},0,1, + def_bool,ss_none}, // precache level data? + {"demo_smoothturns", {&demo_smoothturns}, {0},0,1, + def_bool,ss_stat}, + {"demo_smoothturnsfactor", {&demo_smoothturnsfactor}, {6},1,SMOOTH_PLAYING_MAXFACTOR, + def_int,ss_stat}, + + {"Game settings",{NULL},{0},UL,UL,def_none,ss_none}, + {"default_skill",{&defaultskill},{3},1,5, // jff 3/24/98 allow default skill setting + def_int,ss_none}, // selects default skill 1=TYTD 2=NTR 3=HMP 4=UV 5=NM + {"weapon_recoil",{&default_weapon_recoil},{0},0,1, + def_bool,ss_weap, &weapon_recoil}, + /* killough 10/98 - toggle between SG/SSG and Fist/Chainsaw */ + {"doom_weapon_toggles",{&doom_weapon_toggles}, {1}, 0, 1, + def_bool, ss_weap }, + {"player_bobbing",{&default_player_bobbing},{1},0,1, // phares 2/25/98 + def_bool,ss_weap, &player_bobbing}, + {"monsters_remember",{&default_monsters_remember},{1},0,1, // killough 3/1/98 + def_bool,ss_enem, &monsters_remember}, + /* MBF AI enhancement options */ + {"monster_infighting",{&default_monster_infighting}, {1}, 0, 1, + def_bool, ss_enem, &monster_infighting}, + {"monster_backing",{&default_monster_backing}, {0}, 0, 1, + def_bool, ss_enem, &monster_backing}, + {"monster_avoid_hazards",{&default_monster_avoid_hazards}, {1}, 0, 1, + def_bool, ss_enem, &monster_avoid_hazards}, + {"monkeys",{&default_monkeys}, {0}, 0, 1, + def_bool, ss_enem, &monkeys}, + {"monster_friction",{&default_monster_friction}, {1}, 0, 1, + def_bool, ss_enem, &monster_friction}, + {"help_friends",{&default_help_friends}, {1}, 0, 1, + def_bool, ss_enem, &help_friends}, + {"allow_pushers",{&default_allow_pushers},{1},0,1, + def_bool,ss_weap, &allow_pushers}, + {"variable_friction",{&default_variable_friction},{1},0,1, + def_bool,ss_weap, &variable_friction}, +#ifdef DOGS + {"player_helpers",{&default_dogs}, {0}, 0, 3, + def_bool, ss_enem }, + {"friend_distance",{&default_distfriend}, {128}, 0, 999, + def_int, ss_enem, &distfriend}, + {"dog_jumping",{&default_dog_jumping}, {1}, 0, 1, + def_bool, ss_enem, &dog_jumping}, +#endif + /* End of MBF AI extras */ + + {"sts_always_red",{&sts_always_red},{1},0,1, // no color changes on status bar + def_bool,ss_stat}, + {"sts_pct_always_gray",{&sts_pct_always_gray},{0},0,1, // 2/23/98 chg default + def_bool,ss_stat}, // makes percent signs on status bar always gray + {"sts_traditional_keys",{&sts_traditional_keys},{0},0,1, // killough 2/28/98 + def_bool,ss_stat}, // disables doubled card and skull key display on status bar + {"show_messages",{&showMessages},{1},0,1, + def_bool,ss_none}, // enables message display + {"autorun",{&autorun},{0},0,1, // killough 3/6/98: preserve autorun across games + def_bool,ss_none}, + + {"Compatibility settings",{NULL},{0},UL,UL,def_none,ss_none}, + {"comp_zombie",{&default_comp[comp_zombie]},{0},0,1,def_bool,ss_comp,&comp[comp_zombie]}, + {"comp_infcheat",{&default_comp[comp_infcheat]},{0},0,1,def_bool,ss_comp,&comp[comp_infcheat]}, + {"comp_stairs",{&default_comp[comp_stairs]},{0},0,1,def_bool,ss_comp,&comp[comp_stairs]}, + {"comp_telefrag",{&default_comp[comp_telefrag]},{0},0,1,def_bool,ss_comp,&comp[comp_telefrag]}, + {"comp_dropoff",{&default_comp[comp_dropoff]},{0},0,1,def_bool,ss_comp,&comp[comp_dropoff]}, + {"comp_falloff",{&default_comp[comp_falloff]},{0},0,1,def_bool,ss_comp,&comp[comp_falloff]}, + {"comp_staylift",{&default_comp[comp_staylift]},{0},0,1,def_bool,ss_comp,&comp[comp_staylift]}, + {"comp_doorstuck",{&default_comp[comp_doorstuck]},{0},0,1,def_bool,ss_comp,&comp[comp_doorstuck]}, + {"comp_pursuit",{&default_comp[comp_pursuit]},{0},0,1,def_bool,ss_comp,&comp[comp_pursuit]}, + {"comp_vile",{&default_comp[comp_vile]},{0},0,1,def_bool,ss_comp,&comp[comp_vile]}, + {"comp_pain",{&default_comp[comp_pain]},{0},0,1,def_bool,ss_comp,&comp[comp_pain]}, + {"comp_skull",{&default_comp[comp_skull]},{0},0,1,def_bool,ss_comp,&comp[comp_skull]}, + {"comp_blazing",{&default_comp[comp_blazing]},{0},0,1,def_bool,ss_comp,&comp[comp_blazing]}, + {"comp_doorlight",{&default_comp[comp_doorlight]},{0},0,1,def_bool,ss_comp,&comp[comp_doorlight]}, + {"comp_god",{&default_comp[comp_god]},{0},0,1,def_bool,ss_comp,&comp[comp_god]}, + {"comp_skymap",{&default_comp[comp_skymap]},{0},0,1,def_bool,ss_comp,&comp[comp_skymap]}, + {"comp_floors",{&default_comp[comp_floors]},{0},0,1,def_bool,ss_comp,&comp[comp_floors]}, + {"comp_model",{&default_comp[comp_model]},{0},0,1,def_bool,ss_comp,&comp[comp_model]}, + {"comp_zerotags",{&default_comp[comp_zerotags]},{0},0,1,def_bool,ss_comp,&comp[comp_zerotags]}, + {"comp_moveblock",{&default_comp[comp_moveblock]},{0},0,1,def_bool,ss_comp,&comp[comp_moveblock]}, + {"comp_sound",{&default_comp[comp_sound]},{0},0,1,def_bool,ss_comp,&comp[comp_sound]}, + {"comp_666",{&default_comp[comp_666]},{0},0,1,def_bool,ss_comp,&comp[comp_666]}, + {"comp_soul",{&default_comp[comp_soul]},{0},0,1,def_bool,ss_comp,&comp[comp_soul]}, + {"comp_maskedanim",{&default_comp[comp_maskedanim]},{0},0,1,def_bool,ss_comp,&comp[comp_maskedanim]}, + + {"Sound settings",{NULL},{0},UL,UL,def_none,ss_none}, + {"sound_card",{&snd_card},{-1},-1,7, // jff 1/18/98 allow Allegro drivers + def_int,ss_none}, // select sounds driver (DOS), -1 is autodetect, 0 is none; in Linux, non-zero enables sound + {"music_card",{&mus_card},{-1},-1,9, // to be set, -1 = autodetect + def_int,ss_none}, // select music driver (DOS), -1 is autodetect, 0 is none"; in Linux, non-zero enables music + {"pitched_sounds",{&pitched_sounds},{0},0,1, // killough 2/21/98 + def_bool,ss_none}, // enables variable pitch in sound effects (from id's original code) + {"samplerate",{&snd_samplerate},{22050},11025,48000, def_int,ss_none}, + {"sfx_volume",{&snd_SfxVolume},{8},0,15, def_int,ss_none}, + {"music_volume",{&snd_MusicVolume},{8},0,15, def_int,ss_none}, + {"mus_pause_opt",{&mus_pause_opt},{2},0,2, // CPhipps - music pausing + def_int, ss_none}, // 0 = kill music when paused, 1 = pause music, 2 = let music continue + {"snd_channels",{&snd_channels},{8},1,32, + def_int,ss_none}, // number of audio events simultaneously // killough + + {"Video settings",{NULL},{0},UL,UL,def_none,ss_none}, +#if 0 + {"videomode",{NULL, &default_videomode},{0,"8"},UL,UL,def_str,ss_none}, + /* 640x480 default resolution */ + {"screen_width",{&desired_screenwidth},{320}, 320, MAX_SCREENWIDTH, + def_int,ss_none}, + {"screen_height",{&desired_screenheight},{240},200,MAX_SCREENHEIGHT, + def_int,ss_none}, + {"use_fullscreen",{&use_fullscreen},{1},0,1, /* proff 21/05/2000 */ + def_bool,ss_none}, +#ifndef DISABLE_DOUBLEBUFFER + {"use_doublebuffer",{&use_doublebuffer},{1},0,1, // proff 2001-7-4 + def_bool,ss_none}, // enable doublebuffer to avoid display tearing (fullscreen) +#endif +#endif + {"translucency",{&default_translucency},{1},0,1, // phares + def_bool,ss_none}, // enables translucency + {"tran_filter_pct",{&tran_filter_pct},{66},0,100, // killough 2/21/98 + def_int,ss_none}, // set percentage of foreground/background translucency mix + {"screenblocks",{&screenblocks},{10},3,11, // killough 2/21/98: default to 10 + def_int,ss_none}, + {"usegamma",{&usegamma},{3},0,4, //jff 3/6/98 fix erroneous upper limit in range + def_int,ss_none}, // gamma correction level // killough 1/18/98 + {"uncapped_framerate", {&movement_smooth}, {0},0,1, + def_bool,ss_stat}, + {"filter_wall",{(int*)&drawvars.filterwall},{RDRAW_FILTER_POINT}, + RDRAW_FILTER_POINT, RDRAW_FILTER_ROUNDED, def_int,ss_none}, + {"filter_floor",{(int*)&drawvars.filterfloor},{RDRAW_FILTER_POINT}, + RDRAW_FILTER_POINT, RDRAW_FILTER_ROUNDED, def_int,ss_none}, + {"filter_sprite",{(int*)&drawvars.filtersprite},{RDRAW_FILTER_POINT}, + RDRAW_FILTER_POINT, RDRAW_FILTER_ROUNDED, def_int,ss_none}, + {"filter_z",{(int*)&drawvars.filterz},{RDRAW_FILTER_POINT}, + RDRAW_FILTER_POINT, RDRAW_FILTER_LINEAR, def_int,ss_none}, + {"filter_patch",{(int*)&drawvars.filterpatch},{RDRAW_FILTER_POINT}, + RDRAW_FILTER_POINT, RDRAW_FILTER_ROUNDED, def_int,ss_none}, + {"filter_threshold",{(int*)&drawvars.mag_threshold},{49152}, + 0, UL, def_int,ss_none}, + {"sprite_edges",{(int*)&drawvars.sprite_edges},{RDRAW_MASKEDCOLUMNEDGE_SQUARE}, + RDRAW_MASKEDCOLUMNEDGE_SQUARE, RDRAW_MASKEDCOLUMNEDGE_SLOPED, def_int,ss_none}, + {"patch_edges",{(int*)&drawvars.patch_edges},{RDRAW_MASKEDCOLUMNEDGE_SQUARE}, + RDRAW_MASKEDCOLUMNEDGE_SQUARE, RDRAW_MASKEDCOLUMNEDGE_SLOPED, def_int,ss_none}, + +#if 0 + {"Mouse settings",{NULL},{0},UL,UL,def_none,ss_none}, + {"use_mouse",{&usemouse},{1},0,1, + def_bool,ss_none}, // enables use of mouse with DOOM + //jff 4/3/98 allow unlimited sensitivity + {"mouse_sensitivity_horiz",{&mouseSensitivity_horiz},{10},0,UL, + def_int,ss_none}, /* adjust horizontal (x) mouse sensitivity killough/mead */ + //jff 4/3/98 allow unlimited sensitivity + {"mouse_sensitivity_vert",{&mouseSensitivity_vert},{10},0,UL, + def_int,ss_none}, /* adjust vertical (y) mouse sensitivity killough/mead */ + //jff 3/8/98 allow -1 in mouse bindings to disable mouse function + {"mouseb_fire",{&mousebfire},{0},-1,MAX_MOUSEB, + def_int,ss_keys}, // mouse button number to use for fire + {"mouseb_strafe",{&mousebstrafe},{1},-1,MAX_MOUSEB, + def_int,ss_keys}, // mouse button number to use for strafing + {"mouseb_forward",{&mousebforward},{2},-1,MAX_MOUSEB, + def_int,ss_keys}, // mouse button number to use for forward motion + //jff 3/8/98 end of lower range change for -1 allowed in mouse binding +#endif + +// For key bindings, the values stored in the key_* variables // phares +// are the internal Doom Codes. The values stored in the default.cfg +// file are the keyboard codes. +// CPhipps - now they're the doom codes, so default.cfg can be portable + + {"Key bindings",{NULL},{0},UL,UL,def_none,ss_none}, + {"key_right", {&key_right}, {KEYD_RIGHTARROW}, + 0,MAX_KEY,def_key,ss_keys}, // key to turn right + {"key_left", {&key_left}, {KEYD_LEFTARROW} , + 0,MAX_KEY,def_key,ss_keys}, // key to turn left + {"key_up", {&key_up}, {KEYD_UPARROW} , + 0,MAX_KEY,def_key,ss_keys}, // key to move forward + {"key_down", {&key_down}, {KEYD_DOWNARROW}, + 0,MAX_KEY,def_key,ss_keys}, // key to move backward + {"key_menu_right", {&key_menu_right}, {KEYD_RIGHTARROW},// phares 3/7/98 + 0,MAX_KEY,def_key,ss_keys}, // key to move right in a menu // | + {"key_menu_left", {&key_menu_left}, {KEYD_LEFTARROW} ,// V + 0,MAX_KEY,def_key,ss_keys}, // key to move left in a menu + {"key_menu_up", {&key_menu_up}, {KEYD_UPARROW} , + 0,MAX_KEY,def_key,ss_keys}, // key to move up in a menu + {"key_menu_down", {&key_menu_down}, {KEYD_DOWNARROW} , + 0,MAX_KEY,def_key,ss_keys}, // key to move down in a menu + {"key_strafeleft", {&key_strafeleft}, {','} , + 0,MAX_KEY,def_key,ss_keys}, // key to strafe left + {"key_straferight", {&key_straferight}, {'.'} , + 0,MAX_KEY,def_key,ss_keys}, // key to strafe right + + {"key_fire", {&key_fire}, {KEYD_RCTRL} , + 0,MAX_KEY,def_key,ss_keys}, // duh + {"key_use", {&key_use}, {' '} , + 0,MAX_KEY,def_key,ss_keys}, // key to open a door, use a switch + {"key_strafe", {&key_strafe}, {KEYD_RALT} , + 0,MAX_KEY,def_key,ss_keys}, // key to use with arrows to strafe + {"key_speed", {&key_speed}, {KEYD_RSHIFT} , + 0,MAX_KEY,def_key,ss_keys}, // key to run + + {"key_savegame", {&key_savegame}, {KEYD_F2} , + 0,MAX_KEY,def_key,ss_keys}, // key to save current game + {"key_loadgame", {&key_loadgame}, {KEYD_F3} , + 0,MAX_KEY,def_key,ss_keys}, // key to restore from saved games + {"key_soundvolume", {&key_soundvolume}, {KEYD_F4} , + 0,MAX_KEY,def_key,ss_keys}, // key to bring up sound controls + {"key_hud", {&key_hud}, {KEYD_F5} , + 0,MAX_KEY,def_key,ss_keys}, // key to adjust HUD + {"key_quicksave", {&key_quicksave}, {KEYD_F6} , + 0,MAX_KEY,def_key,ss_keys}, // key to to quicksave + {"key_endgame", {&key_endgame}, {KEYD_F7} , + 0,MAX_KEY,def_key,ss_keys}, // key to end the game + {"key_messages", {&key_messages}, {KEYD_F8} , + 0,MAX_KEY,def_key,ss_keys}, // key to toggle message enable + {"key_quickload", {&key_quickload}, {KEYD_F9} , + 0,MAX_KEY,def_key,ss_keys}, // key to load from quicksave + {"key_quit", {&key_quit}, {KEYD_F10} , + 0,MAX_KEY,def_key,ss_keys}, // key to quit game + {"key_gamma", {&key_gamma}, {KEYD_F11} , + 0,MAX_KEY,def_key,ss_keys}, // key to adjust gamma correction + {"key_spy", {&key_spy}, {KEYD_F12} , + 0,MAX_KEY,def_key,ss_keys}, // key to view from another coop player's view + {"key_pause", {&key_pause}, {KEYD_PAUSE} , + 0,MAX_KEY,def_key,ss_keys}, // key to pause the game + {"key_autorun", {&key_autorun}, {KEYD_CAPSLOCK} , + 0,MAX_KEY,def_key,ss_keys}, // key to toggle always run mode + {"key_chat", {&key_chat}, {'t'} , + 0,MAX_KEY,def_key,ss_keys}, // key to enter a chat message + {"key_backspace", {&key_backspace}, {KEYD_BACKSPACE} , + 0,MAX_KEY,def_key,ss_keys}, // backspace key + {"key_enter", {&key_enter}, {KEYD_ENTER} , + 0,MAX_KEY,def_key,ss_keys}, // key to select from menu or see last message + {"key_map", {&key_map}, {KEYD_TAB} , + 0,MAX_KEY,def_key,ss_keys}, // key to toggle automap display + {"key_map_right", {&key_map_right}, {KEYD_RIGHTARROW},// phares 3/7/98 + 0,MAX_KEY,def_key,ss_keys}, // key to shift automap right // | + {"key_map_left", {&key_map_left}, {KEYD_LEFTARROW} ,// V + 0,MAX_KEY,def_key,ss_keys}, // key to shift automap left + {"key_map_up", {&key_map_up}, {KEYD_UPARROW} , + 0,MAX_KEY,def_key,ss_keys}, // key to shift automap up + {"key_map_down", {&key_map_down}, {KEYD_DOWNARROW} , + 0,MAX_KEY,def_key,ss_keys}, // key to shift automap down + {"key_map_zoomin", {&key_map_zoomin}, {'='} , + 0,MAX_KEY,def_key,ss_keys}, // key to enlarge automap + {"key_map_zoomout", {&key_map_zoomout}, {'-'} , + 0,MAX_KEY,def_key,ss_keys}, // key to reduce automap + {"key_map_gobig", {&key_map_gobig}, {'0'} , + 0,MAX_KEY,def_key,ss_keys}, // key to get max zoom for automap + {"key_map_follow", {&key_map_follow}, {'f'} , + 0,MAX_KEY,def_key,ss_keys}, // key to toggle follow mode + {"key_map_mark", {&key_map_mark}, {'m'} , + 0,MAX_KEY,def_key,ss_keys}, // key to drop a marker on automap + {"key_map_clear", {&key_map_clear}, {'c'} , + 0,MAX_KEY,def_key,ss_keys}, // key to clear all markers on automap + {"key_map_grid", {&key_map_grid}, {'g'} , + 0,MAX_KEY,def_key,ss_keys}, // key to toggle grid display over automap + {"key_map_rotate", {&key_map_rotate}, {'r'} , + 0,MAX_KEY,def_key,ss_keys}, // key to toggle rotating the automap to match the player's orientation + {"key_map_overlay", {&key_map_overlay}, {'o'} , + 0,MAX_KEY,def_key,ss_keys}, // key to toggle overlaying the automap on the rendered display + {"key_reverse", {&key_reverse}, {'/'} , + 0,MAX_KEY,def_key,ss_keys}, // key to spin 180 instantly + {"key_zoomin", {&key_zoomin}, {'='} , + 0,MAX_KEY,def_key,ss_keys}, // key to enlarge display + {"key_zoomout", {&key_zoomout}, {'-'} , + 0,MAX_KEY,def_key,ss_keys}, // key to reduce display + {"key_chatplayer1", {&destination_keys[0]}, {'g'} , + 0,MAX_KEY,def_key,ss_keys}, // key to chat with player 1 + // killough 11/98: fix 'i'/'b' reversal + {"key_chatplayer2", {&destination_keys[1]}, {'i'} , + 0,MAX_KEY,def_key,ss_keys}, // key to chat with player 2 + {"key_chatplayer3", {&destination_keys[2]}, {'b'} , + 0,MAX_KEY,def_key,ss_keys}, // key to chat with player 3 + {"key_chatplayer4", {&destination_keys[3]}, {'r'} , + 0,MAX_KEY,def_key,ss_keys}, // key to chat with player 4 + {"key_weapontoggle",{&key_weapontoggle}, {'0'} , + 0,MAX_KEY,def_key,ss_keys}, // key to toggle between two most preferred weapons with ammo + {"key_weapon1", {&key_weapon1}, {'1'} , + 0,MAX_KEY,def_key,ss_keys}, // key to switch to weapon 1 (fist/chainsaw) + {"key_weapon2", {&key_weapon2}, {'2'} , + 0,MAX_KEY,def_key,ss_keys}, // key to switch to weapon 2 (pistol) + {"key_weapon3", {&key_weapon3}, {'3'} , + 0,MAX_KEY,def_key,ss_keys}, // key to switch to weapon 3 (supershotgun/shotgun) + {"key_weapon4", {&key_weapon4}, {'4'} , + 0,MAX_KEY,def_key,ss_keys}, // key to switch to weapon 4 (chaingun) + {"key_weapon5", {&key_weapon5}, {'5'} , + 0,MAX_KEY,def_key,ss_keys}, // key to switch to weapon 5 (rocket launcher) + {"key_weapon6", {&key_weapon6}, {'6'} , + 0,MAX_KEY,def_key,ss_keys}, // key to switch to weapon 6 (plasma rifle) + {"key_weapon7", {&key_weapon7}, {'7'} , + 0,MAX_KEY,def_key,ss_keys}, // key to switch to weapon 7 (bfg9000) // ^ + {"key_weapon8", {&key_weapon8}, {'8'} , + 0,MAX_KEY,def_key,ss_keys}, // key to switch to weapon 8 (chainsaw) // | + {"key_weapon9", {&key_weapon9}, {'9'} , + 0,MAX_KEY,def_key,ss_keys}, // key to switch to weapon 9 (supershotgun) // phares + +#if 0 + {"Joystick settings",{NULL},{0},UL,UL,def_none,ss_none}, + {"use_joystick",{&usejoystick},{0},0,2, + def_int,ss_none}, // number of joystick to use (0 for none) + {"joy_left",{&joyleft},{0}, UL,UL,def_int,ss_none}, + {"joy_right",{&joyright},{0},UL,UL,def_int,ss_none}, + {"joy_up", {&joyup}, {0}, UL,UL,def_int,ss_none}, + {"joy_down",{&joydown},{0}, UL,UL,def_int,ss_none}, + {"joyb_fire",{&joybfire},{0},0,UL, + def_int,ss_keys}, // joystick button number to use for fire + {"joyb_strafe",{&joybstrafe},{1},0,UL, + def_int,ss_keys}, // joystick button number to use for strafing + {"joyb_speed",{&joybspeed},{2},0,UL, + def_int,ss_keys}, // joystick button number to use for running + {"joyb_use",{&joybuse},{3},0,UL, + def_int,ss_keys}, // joystick button number to use for use/open + + {"Chat macros",{NULL},{0},UL,UL,def_none,ss_none}, + {"chatmacro0", {0,&chat_macros[0]}, {0,HUSTR_CHATMACRO0},UL,UL, + def_str,ss_chat}, // chat string associated with 0 key + {"chatmacro1", {0,&chat_macros[1]}, {0,HUSTR_CHATMACRO1},UL,UL, + def_str,ss_chat}, // chat string associated with 1 key + {"chatmacro2", {0,&chat_macros[2]}, {0,HUSTR_CHATMACRO2},UL,UL, + def_str,ss_chat}, // chat string associated with 2 key + {"chatmacro3", {0,&chat_macros[3]}, {0,HUSTR_CHATMACRO3},UL,UL, + def_str,ss_chat}, // chat string associated with 3 key + {"chatmacro4", {0,&chat_macros[4]}, {0,HUSTR_CHATMACRO4},UL,UL, + def_str,ss_chat}, // chat string associated with 4 key + {"chatmacro5", {0,&chat_macros[5]}, {0,HUSTR_CHATMACRO5},UL,UL, + def_str,ss_chat}, // chat string associated with 5 key + {"chatmacro6", {0,&chat_macros[6]}, {0,HUSTR_CHATMACRO6},UL,UL, + def_str,ss_chat}, // chat string associated with 6 key + {"chatmacro7", {0,&chat_macros[7]}, {0,HUSTR_CHATMACRO7},UL,UL, + def_str,ss_chat}, // chat string associated with 7 key + {"chatmacro8", {0,&chat_macros[8]}, {0,HUSTR_CHATMACRO8},UL,UL, + def_str,ss_chat}, // chat string associated with 8 key + {"chatmacro9", {0,&chat_macros[9]}, {0,HUSTR_CHATMACRO9},UL,UL, + def_str,ss_chat}, // chat string associated with 9 key +#endif + + {"Automap settings",{NULL},{0},UL,UL,def_none,ss_none}, + //jff 1/7/98 defaults for automap colors + //jff 4/3/98 remove -1 in lower range, 0 now disables new map features + {"mapcolor_back", {&mapcolor_back}, {247},0,255, // black //jff 4/6/98 new black + def_colour,ss_auto}, // color used as background for automap + {"mapcolor_grid", {&mapcolor_grid}, {104},0,255, // dk gray + def_colour,ss_auto}, // color used for automap grid lines + {"mapcolor_wall", {&mapcolor_wall}, {23},0,255, // red-brown + def_colour,ss_auto}, // color used for one side walls on automap + {"mapcolor_fchg", {&mapcolor_fchg}, {55},0,255, // lt brown + def_colour,ss_auto}, // color used for lines floor height changes across + {"mapcolor_cchg", {&mapcolor_cchg}, {215},0,255, // orange + def_colour,ss_auto}, // color used for lines ceiling height changes across + {"mapcolor_clsd", {&mapcolor_clsd}, {208},0,255, // white + def_colour,ss_auto}, // color used for lines denoting closed doors, objects + {"mapcolor_rkey", {&mapcolor_rkey}, {175},0,255, // red + def_colour,ss_auto}, // color used for red key sprites + {"mapcolor_bkey", {&mapcolor_bkey}, {204},0,255, // blue + def_colour,ss_auto}, // color used for blue key sprites + {"mapcolor_ykey", {&mapcolor_ykey}, {231},0,255, // yellow + def_colour,ss_auto}, // color used for yellow key sprites + {"mapcolor_rdor", {&mapcolor_rdor}, {175},0,255, // red + def_colour,ss_auto}, // color used for closed red doors + {"mapcolor_bdor", {&mapcolor_bdor}, {204},0,255, // blue + def_colour,ss_auto}, // color used for closed blue doors + {"mapcolor_ydor", {&mapcolor_ydor}, {231},0,255, // yellow + def_colour,ss_auto}, // color used for closed yellow doors + {"mapcolor_tele", {&mapcolor_tele}, {119},0,255, // dk green + def_colour,ss_auto}, // color used for teleporter lines + {"mapcolor_secr", {&mapcolor_secr}, {252},0,255, // purple + def_colour,ss_auto}, // color used for lines around secret sectors + {"mapcolor_exit", {&mapcolor_exit}, {0},0,255, // none + def_colour,ss_auto}, // color used for exit lines + {"mapcolor_unsn", {&mapcolor_unsn}, {104},0,255, // dk gray + def_colour,ss_auto}, // color used for lines not seen without computer map + {"mapcolor_flat", {&mapcolor_flat}, {88},0,255, // lt gray + def_colour,ss_auto}, // color used for lines with no height changes + {"mapcolor_sprt", {&mapcolor_sprt}, {112},0,255, // green + def_colour,ss_auto}, // color used as things + {"mapcolor_item", {&mapcolor_item}, {231},0,255, // yellow + def_colour,ss_auto}, // color used for counted items + {"mapcolor_hair", {&mapcolor_hair}, {208},0,255, // white + def_colour,ss_auto}, // color used for dot crosshair denoting center of map + {"mapcolor_sngl", {&mapcolor_sngl}, {208},0,255, // white + def_colour,ss_auto}, // color used for the single player arrow + {"mapcolor_me", {&mapcolor_me}, {112},0,255, // green + def_colour,ss_auto}, // your (player) colour + {"mapcolor_enemy", {&mapcolor_enemy}, {177},0,255, + def_colour,ss_auto}, + {"mapcolor_frnd", {&mapcolor_frnd}, {112},0,255, + def_colour,ss_auto}, + //jff 3/9/98 add option to not show secrets til after found + {"map_secret_after", {&map_secret_after}, {0},0,1, // show secret after gotten + def_bool,ss_auto}, // prevents showing secret sectors till after entered + {"map_point_coord", {&map_point_coordinates}, {0},0,1, + def_bool,ss_auto}, + //jff 1/7/98 end additions for automap + {"automapmode", {(int*)&automapmode}, {0}, 0, 31, // CPhipps - remember automap mode + def_hex,ss_none}, // automap mode + + {"Heads-up display settings",{NULL},{0},UL,UL,def_none,ss_none}, + //jff 2/16/98 defaults for color ranges in hud and status + {"hudcolor_titl", {&hudcolor_titl}, {5},0,9, // gold range + def_int,ss_auto}, // color range used for automap level title + {"hudcolor_xyco", {&hudcolor_xyco}, {3},0,9, // green range + def_int,ss_auto}, // color range used for automap coordinates + {"hudcolor_mesg", {&hudcolor_mesg}, {6},0,9, // red range + def_int,ss_mess}, // color range used for messages during play + {"hudcolor_chat", {&hudcolor_chat}, {5},0,9, // gold range + def_int,ss_mess}, // color range used for chat messages and entry + {"hudcolor_list", {&hudcolor_list}, {5},0,9, // gold range //jff 2/26/98 + def_int,ss_mess}, // color range used for message review + {"hud_msg_lines", {&hud_msg_lines}, {1},1,16, // 1 line scrolling window + def_int,ss_mess}, // number of messages in review display (1=disable) + {"hud_list_bgon", {&hud_list_bgon}, {0},0,1, // solid window bg ena //jff 2/26/98 + def_bool,ss_mess}, // enables background window behind message review + {"hud_distributed",{&hud_distributed},{0},0,1, // hud broken up into 3 displays //jff 3/4/98 + def_bool,ss_none}, // splits HUD into three 2 line displays + + {"health_red", {&health_red} , {25},0,200, // below is red + def_int,ss_stat}, // amount of health for red to yellow transition + {"health_yellow", {&health_yellow}, {50},0,200, // below is yellow + def_int,ss_stat}, // amount of health for yellow to green transition + {"health_green", {&health_green} , {100},0,200,// below is green, above blue + def_int,ss_stat}, // amount of health for green to blue transition + {"armor_red", {&armor_red} , {25},0,200, // below is red + def_int,ss_stat}, // amount of armor for red to yellow transition + {"armor_yellow", {&armor_yellow} , {50},0,200, // below is yellow + def_int,ss_stat}, // amount of armor for yellow to green transition + {"armor_green", {&armor_green} , {100},0,200,// below is green, above blue + def_int,ss_stat}, // amount of armor for green to blue transition + {"ammo_red", {&ammo_red} , {25},0,100, // below 25% is red + def_int,ss_stat}, // percent of ammo for red to yellow transition + {"ammo_yellow", {&ammo_yellow} , {50},0,100, // below 50% is yellow, above green + def_int,ss_stat}, // percent of ammo for yellow to green transition + + //jff 2/16/98 HUD and status feature controls + {"hud_active", {&hud_active}, {2},0,2, // 0=off, 1=small, 2=full + def_int,ss_none}, // 0 for HUD off, 1 for HUD small, 2 for full HUD + //jff 2/23/98 + {"hud_displayed", {&hud_displayed}, {0},0,1, // whether hud is displayed + def_bool,ss_none}, // enables display of HUD + {"hud_nosecrets", {&hud_nosecrets}, {0},0,1, // no secrets/items/kills HUD line + def_bool,ss_stat}, // disables display of kills/items/secrets on HUD + + {"Weapon preferences",{NULL},{0},UL,UL,def_none,ss_none}, + // killough 2/8/98: weapon preferences set by user: + {"weapon_choice_1", {&weapon_preferences[0][0]}, {6}, 0,9, + def_int,ss_weap}, // first choice for weapon (best) + {"weapon_choice_2", {&weapon_preferences[0][1]}, {9}, 0,9, + def_int,ss_weap}, // second choice for weapon + {"weapon_choice_3", {&weapon_preferences[0][2]}, {4}, 0,9, + def_int,ss_weap}, // third choice for weapon + {"weapon_choice_4", {&weapon_preferences[0][3]}, {3}, 0,9, + def_int,ss_weap}, // fourth choice for weapon + {"weapon_choice_5", {&weapon_preferences[0][4]}, {2}, 0,9, + def_int,ss_weap}, // fifth choice for weapon + {"weapon_choice_6", {&weapon_preferences[0][5]}, {8}, 0,9, + def_int,ss_weap}, // sixth choice for weapon + {"weapon_choice_7", {&weapon_preferences[0][6]}, {5}, 0,9, + def_int,ss_weap}, // seventh choice for weapon + {"weapon_choice_8", {&weapon_preferences[0][7]}, {7}, 0,9, + def_int,ss_weap}, // eighth choice for weapon + {"weapon_choice_9", {&weapon_preferences[0][8]}, {1}, 0,9, + def_int,ss_weap}, // ninth choice for weapon (worst) + +}; + +static const int numdefaults = sizeof(defaults)/sizeof(defaults[0]); +static const char* configfile; + +// +// M_SaveDefaults +// + +void M_SaveDefaults(void) +{ + FILE *f = fopen(configfile, "w"); + if (!f) + return; // can't write the file, but don't complain + + fprintf(f, "# Doom config file\n"); + fprintf(f, "# Format:\n"); + fprintf(f, "# variable value\n"); + + for (int i = 0; i < numdefaults; i++) + { + if (defaults[i].type == def_none) + { + fprintf(f, "\n# %s\n", defaults[i].name); + } + else if (!IS_STRING(defaults[i])) + { + if (defaults[i].type == def_hex) + fprintf(f, "%-25s 0x%x\n", defaults[i].name, *(defaults[i].location.pi)); + else + fprintf(f, "%-25s %5i\n", defaults[i].name, *(defaults[i].location.pi)); + } + else + { + fprintf(f, "%-25s \"%s\"\n", defaults[i].name, *(defaults[i].location.ppsz)); + } + } + fclose (f); +} + +/* + * M_LookupDefault + * + * cph - mimic MBF function for now. Yes it's crap. + */ + +struct default_s *M_LookupDefault(const char *name) +{ + for (int i = 0 ; i < numdefaults ; i++) + if ((defaults[i].type != def_none) && !strcmp(name, defaults[i].name)) + return (default_t*)&defaults[i]; + I_Error("M_LookupDefault: %s not found",name); + return NULL; +} + +// +// M_LoadDefaults +// + +void M_LoadDefaults(void) +{ + // check for a custom default file + int i = M_CheckParm ("-config"); + if (i && i < myargc-1) + configfile = myargv[i+1]; + else { + const char *exedir = I_DoomExeDir(); + configfile = strcat(strcpy(malloc(strlen(exedir) + 32), exedir), "/prboom.cfg"); + } + + // set everything to base values + for (int i = 0 ; i < numdefaults ; i++) { + if (defaults[i].type == def_str && defaults[i].location.ppsz) + *defaults[i].location.ppsz = strdup(defaults[i].defaultvalue.psz); + if (defaults[i].type != def_str && defaults[i].location.pi) + *defaults[i].location.pi = defaults[i].defaultvalue.i; + } + + // read the file in, overriding any set defaults + FILE* f = fopen(configfile, "r"); + if (!f) + { + lprintf(LO_WARN, " failed to read config from: %s\n", configfile); + return; + } + + lprintf(LO_CONFIRM, " reading config from: %s\n", configfile); + while (!feof(f)) + { + char def[80], strparm[100]; + int parm = 0; + + if (fscanf (f, "%79s %[^\n]\n", def, strparm) != 2) + continue; + + if (!isalnum(def[0])) + continue; + + bool isstring = (strparm[0] == '"'); + if (isstring) { + size_t len = strlen(strparm); + memmove(strparm, strparm + 1, len - 2); + strparm[len-2] = 0; + } else if ((strparm[0] == '0') && (strparm[1] == 'x')) { + sscanf(strparm+2, "%x", &parm); + } else { + sscanf(strparm, "%i", &parm); + } + + for (i = 0 ; i < numdefaults ; i++) + if ((defaults[i].type != def_none) && !strcmp(def, defaults[i].name)) + { + if (isstring != IS_STRING(defaults[i])) { + lprintf(LO_WARN, "M_LoadDefaults: Type mismatch reading %s\n", defaults[i].name); + continue; + } + if (!isstring) + { + //jff 3/4/98 range check numeric parameters + if ((defaults[i].minvalue==UL || defaults[i].minvalue<=parm) && + (defaults[i].maxvalue==UL || defaults[i].maxvalue>=parm)) + *(defaults[i].location.pi) = parm; + } + else + { + free((char*)*(defaults[i].location.ppsz)); /* phares 4/13/98 */ + *(defaults[i].location.ppsz) = strdup(strparm); + } + break; + } + } + fclose(f); +} diff --git a/components/doom/prboom/m_misc.h b/components/doom/prboom/m_misc.h new file mode 100644 index 0000000..2fe346f --- /dev/null +++ b/components/doom/prboom/m_misc.h @@ -0,0 +1,100 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * External non-system-specific stuff, like storing config settings, + * simple file handling, and saving screnshots. + * + *-----------------------------------------------------------------------------*/ + + +#ifndef __M_MISC__ +#define __M_MISC__ + + +#include "doomtype.h" +// +// MISC +// + +boolean M_WriteFile (char const* name,void* source,int length); + +int M_ReadFile (char const* name,byte** buffer); + +void M_LoadDefaults (void); +void M_SaveDefaults (void); + +struct default_s *M_LookupDefault(const char *name); /* killough 11/98 */ + +// phares 4/21/98: +// Moved from m_misc.c so m_menu.c could see it. +typedef enum +{ + def_none, // Dummy entry + def_str, // A string + def_int, // Integer + def_hex, // Integer (write in hex) + def_bool = def_int, // Boolean + def_key = def_hex, // Key code (byte) + def_mouseb = def_int,// Mouse button + def_colour = def_hex // Colour (256 colour palette entry) +} def_type_t; + +// CPhipps - struct to hold a value in a config file +// Cannot be a union, as it must be initialised +typedef struct default_s +{ + const char* name; + /* cph - + * The location struct holds the pointer to the variable holding the + * setting. For int's we do nothing special. + * For strings, the string is actually stored on our heap with Z_Strdup() + * BUT we don't want the rest of the program to be able to modify them, + * so we declare it const. It's not really const though, and m_misc.c and + * m_menu.c cast it back when they need to change it. Possibly this is + * more trouble than it's worth. + */ + // RG: Changed to unions and added a few type checks to not clash + // It seems to work for now and uses half the memory! + union {int *pi; const char **ppsz;} location; + union {int i; const char *psz;} defaultvalue; + short minvalue; // min value for ints + short maxvalue; // max value for ints + short type; // def_type_t + short setupscreen; // phares 4/19/98: setup screen where this appears + int *current; // cph - MBF-like pointer to current value +} default_t; + +#define IS_STRING(dv) ((dv).type == def_str) + +#define MAX_KEY 32000 +#define MAX_MOUSEB 2 + +#define UL (-12345) /* magic number for no min or max for parameter */ + +#endif diff --git a/components/doom/prboom/m_random.c b/components/doom/prboom/m_random.c new file mode 100644 index 0000000..bd0c7bc --- /dev/null +++ b/components/doom/prboom/m_random.c @@ -0,0 +1,147 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Random number LUT. + * + * 1/19/98 killough: Rewrote random number generator for better randomness, + * while at the same time maintaining demo sync and backward compatibility. + * + * 2/16/98 killough: Made each RNG local to each control-equivalent block, + * to reduce the chances of demo sync problems. + * + *-----------------------------------------------------------------------------*/ + + +#include "doomstat.h" +#include "m_random.h" +#include "lprintf.h" + +// +// M_Random +// Returns a 0-255 number +// +static const unsigned char rndtable[256] = { // 1/19/98 killough -- made const + 0, 8, 109, 220, 222, 241, 149, 107, 75, 248, 254, 140, 16, 66 , + 74, 21, 211, 47, 80, 242, 154, 27, 205, 128, 161, 89, 77, 36 , + 95, 110, 85, 48, 212, 140, 211, 249, 22, 79, 200, 50, 28, 188 , + 52, 140, 202, 120, 68, 145, 62, 70, 184, 190, 91, 197, 152, 224 , + 149, 104, 25, 178, 252, 182, 202, 182, 141, 197, 4, 81, 181, 242 , + 145, 42, 39, 227, 156, 198, 225, 193, 219, 93, 122, 175, 249, 0 , + 175, 143, 70, 239, 46, 246, 163, 53, 163, 109, 168, 135, 2, 235 , + 25, 92, 20, 145, 138, 77, 69, 166, 78, 176, 173, 212, 166, 113 , + 94, 161, 41, 50, 239, 49, 111, 164, 70, 60, 2, 37, 171, 75 , + 136, 156, 11, 56, 42, 146, 138, 229, 73, 146, 77, 61, 98, 196 , + 135, 106, 63, 197, 195, 86, 96, 203, 113, 101, 170, 247, 181, 113 , + 80, 250, 108, 7, 255, 237, 129, 226, 79, 107, 112, 166, 103, 241 , + 24, 223, 239, 120, 198, 58, 60, 82, 128, 3, 184, 66, 143, 224 , + 145, 224, 81, 206, 163, 45, 63, 90, 168, 114, 59, 33, 159, 95 , + 28, 139, 123, 98, 125, 196, 15, 70, 194, 253, 54, 14, 109, 226 , + 71, 17, 161, 93, 186, 87, 244, 138, 20, 52, 123, 251, 26, 36 , + 17, 46, 52, 231, 232, 76, 31, 221, 84, 37, 216, 165, 212, 106 , + 197, 242, 98, 43, 39, 175, 254, 145, 190, 84, 118, 222, 187, 136 , + 120, 163, 236, 249 +}; + +rng_t rng; // the random number state + +unsigned long rngseed = 1993; // killough 3/26/98: The seed + +int (P_Random)(pr_class_t pr_class +#ifdef INSTRUMENTED + , const char *file, int line +#endif +) +{ + // killough 2/16/98: We always update both sets of random number + // generators, to ensure repeatability if the demo_compatibility + // flag is changed while the program is running. Changing the + // demo_compatibility flag does not change the sequences generated, + // only which one is selected from. + // + // All of this RNG stuff is tricky as far as demo sync goes -- + // it's like playing with explosives :) Lee + +#ifdef INSTRUMENTED + //lprintf(LO_DEBUG, "%.10d: %.10d - %s:%.5d\n", gametic, pr_class, file, line); +#endif + + int compat = pr_class == pr_misc ? + (rng.prndindex = (rng.prndindex + 1) & 255) : + (rng. rndindex = (rng. rndindex + 1) & 255) ; + + unsigned long boom; + + // killough 3/31/98: + // If demo sync insurance is not requested, use + // much more unstable method by putting everything + // except pr_misc into pr_all_in_one + + if (pr_class != pr_misc && !demo_insurance) // killough 3/31/98 + pr_class = pr_all_in_one; + + boom = rng.seed[pr_class]; + + // killough 3/26/98: add pr_class*2 to addend + + rng.seed[pr_class] = boom * 1664525ul + 221297ul + pr_class*2; + + if (demo_compatibility) + return rndtable[compat]; + + boom >>= 20; + + /* killough 3/30/98: use gametic-levelstarttic to shuffle RNG + * killough 3/31/98: but only if demo insurance requested, + * since it's unnecessary for random shuffling otherwise + * killough 9/29/98: but use basetic now instead of levelstarttic + * cph - DEMOSYNC - this change makes MBF demos work, + * but does it break Boom ones? + */ + + if (demo_insurance) + boom += (gametic-basetic)*7; + + return boom & 255; +} + +// Initialize all the seeds +// +// This initialization method is critical to maintaining demo sync. +// Each seed is initialized according to its class, so if new classes +// are added they must be added to end of pr_class_t list. killough +// + +void M_ClearRandom (void) +{ + int i; + unsigned long seed = rngseed*2+1; // add 3/26/98: add rngseed + for (i=0; i +#ifdef __arch__swab16 +#define doom_swap_s (signed short)__arch__swab16 +#endif +#ifdef __arch__swab32 +#define doom_swap_l (signed long)__arch__swab32 +#endif +#endif /* HAVE_ASM_BYTEORDER_H */ + +#ifdef HAVE_LIBKERN_OSBYTEORDER_H +#include + +#define doom_swap_s (short)OSSwapInt16 +#define doom_swap_l (long)OSSwapInt32 +#endif + +#ifndef doom_swap_l +#define doom_swap_l(x) \ + ((long int)((((unsigned long int)(x) & 0x000000ffU) << 24) | \ + (((unsigned long int)(x) & 0x0000ff00U) << 8) | \ + (((unsigned long int)(x) & 0x00ff0000U) >> 8) | \ + (((unsigned long int)(x) & 0xff000000U) >> 24))) +#endif + +#ifndef doom_swap_s +#define doom_swap_s(x) \ + ((short int)((((unsigned short int)(x) & 0x00ff) << 8) | \ + (((unsigned short int)(x) & 0xff00) >> 8))) +#endif + +/* Macros are named doom_XtoYT, where + * X is thing to convert from, Y is thing to convert to, chosen from + * n for network, h for host (i.e our machine's), w for WAD (Doom data files) + * and T is the type, l or s for long or short + * + * CPhipps - all WADs and network packets will be little endian for now + * Use separate macros so network could be converted to big-endian later. + */ + +#ifdef WORDS_BIGENDIAN + +#define doom_wtohl(x) doom_swap_l(x) +#define doom_htowl(x) doom_swap_l(x) +#define doom_wtohs(x) doom_swap_s(x) +#define doom_htows(x) doom_swap_s(x) + +#define doom_ntohl(x) doom_swap_l(x) +#define doom_htonl(x) doom_swap_l(x) +#define doom_ntohs(x) doom_swap_s(x) +#define doom_htons(x) doom_swap_s(x) + +#else + +#define doom_wtohl(x) (long int)(x) +#define doom_htowl(x) (long int)(x) +#define doom_wtohs(x) (short int)(x) +#define doom_htows(x) (short int)(x) + +#define doom_ntohl(x) (long int)(x) +#define doom_htonl(x) (long int)(x) +#define doom_ntohs(x) (short int)(x) +#define doom_htons(x) (short int)(x) + +#endif + +/* CPhipps - Boom's old LONG and SHORT endianness macros are for WAD stuff */ + +#define LONG(x) doom_wtohl(x) +#define SHORT(x) doom_htows(x) + +#endif diff --git a/components/doom/prboom/midifile.c b/components/doom/prboom/midifile.c new file mode 100644 index 0000000..35f2931 --- /dev/null +++ b/components/doom/prboom/midifile.c @@ -0,0 +1,1274 @@ +// Emacs style mode select -*- C++ -*- +//----------------------------------------------------------------------------- +// +// Copyright(C) 2009 Simon Howard +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +// 02111-1307, USA. +// +// DESCRIPTION: +// Reading of MIDI files. +// +//----------------------------------------------------------------------------- + +#include +#include +#include +#include + +#ifndef TEST +#include "doomdef.h" +#include "doomtype.h" +#else +typedef enum {false, true} boolean; +typedef unsigned char byte; +#define PACKEDATTR __attribute__((packed)) +#endif +#include "lprintf.h" +#include "midifile.h" + +#define HEADER_CHUNK_ID "MThd" +#define TRACK_CHUNK_ID "MTrk" +#define MAX_BUFFER_SIZE 0x10000 + +#define PACKEDATTR __attribute__((packed)) + + + + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#ifndef ntohl +#ifdef WORDS_BIGENDIAN +#define ntohl +#define ntohs +#else // WORDS_BIGENDIAN + +#define ntohl(x) \ + (/*(long int)*/((((unsigned long int)(x) & 0x000000ffU) << 24) | \ + (((unsigned long int)(x) & 0x0000ff00U) << 8) | \ + (((unsigned long int)(x) & 0x00ff0000U) >> 8) | \ + (((unsigned long int)(x) & 0xff000000U) >> 24))) + +#define ntohs(x) \ + (/*(short int)*/((((unsigned short int)(x) & 0x00ff) << 8) | \ + (((unsigned short int)(x) & 0xff00) >> 8))) +#endif // WORDS_BIGENDIAN +#endif // ntohl + + +#ifdef _MSC_VER +#pragma pack(push, 1) +#endif + +typedef struct +{ + byte chunk_id[4]; + unsigned int chunk_size; +} PACKEDATTR chunk_header_t; + +typedef struct +{ + chunk_header_t chunk_header; + unsigned short format_type; + unsigned short num_tracks; + unsigned short time_division; +} PACKEDATTR midi_header_t; + +#ifdef _MSC_VER +#pragma pack(pop) +#endif + +typedef struct +{ + // Length in bytes: + + unsigned int data_len; + + // Events in this track: + + midi_event_t *events; + unsigned int num_events; + unsigned int num_event_mem; // NSM track size of structure +} midi_track_t; + +struct midi_track_iter_s +{ + midi_track_t *track; + unsigned int position; +}; + +struct midi_file_s +{ + midi_header_t header; + + // All tracks in this file: + midi_track_t *tracks; + unsigned int num_tracks; + + // Data buffer used to store data read for SysEx or meta events: + byte *buffer; + unsigned int buffer_size; +}; + + + +// Check the header of a chunk: + +static boolean CheckChunkHeader(chunk_header_t *chunk, + const char *expected_id) +{ + boolean result; + + result = (memcmp((char *) chunk->chunk_id, expected_id, 4) == 0); + + if (!result) + { + lprintf (LO_WARN, "CheckChunkHeader: Expected '%s' chunk header, " + "got '%c%c%c%c'\n", + expected_id, + chunk->chunk_id[0], chunk->chunk_id[1], + chunk->chunk_id[2], chunk->chunk_id[3]); + } + + return result; +} + +// Read a single byte. Returns false on error. + +static boolean ReadByte(byte *result, midimem_t *mf) +{ + if (mf->pos >= mf->len) + { + lprintf (LO_WARN, "ReadByte: Unexpected end of file\n"); + return false; + } + + *result = mf->data[mf->pos++]; + return true; +} + +static boolean ReadMultipleBytes (void *dest, size_t len, midimem_t *mf) +{ + byte *cdest = (byte *) dest; + unsigned i; + for (i = 0; i < len; i++) + { + if (!ReadByte (cdest + i, mf)) + { + lprintf (LO_WARN, "ReadMultipleBytes: Unexpected end of file\n"); + return false; + } + } + return true; +} + +// Read a variable-length value. + +static boolean ReadVariableLength(unsigned int *result, midimem_t *mf) +{ + byte b = 0; + + *result = 0; + + for (int i=0; i<4; ++i) + { + if (!ReadByte(&b, mf)) + { + lprintf (LO_WARN, "ReadVariableLength: Error while reading " + "variable-length value\n"); + return false; + } + + // Insert the bottom seven bits from this byte. + + *result <<= 7; + *result |= b & 0x7f; + + // If the top bit is not set, this is the end. + + if ((b & 0x80) == 0) + { + return true; + } + } + + lprintf (LO_WARN, "ReadVariableLength: Variable-length value too " + "long: maximum of four bytes\n"); + return false; +} + +// Read a byte sequence into the data buffer. +static byte emptyEvent[4] = {0}; + +static void *ReadByteSequence(unsigned int num_bytes, midimem_t *mf) +{ + unsigned int i; + byte *result; + + // events can be length 0. malloc(0) is not portable (can return NULL) + if (!num_bytes) + return emptyEvent; + + // Allocate a buffer: + + result = malloc(num_bytes); + + if (result == NULL) + { + lprintf (LO_WARN, "ReadByteSequence: Failed to allocate buffer %u bytes\n", num_bytes); + return NULL; + } + + // Read the data: + + for (i=0; ievent_type = event_type & 0xf0; + event->data.channel.channel = event_type & 0x0f; + + // Read parameters: + + if (!ReadByte(&b, mf)) + { + lprintf (LO_WARN, "ReadChannelEvent: Error while reading channel " + "event parameters\n"); + return false; + } + + event->data.channel.param1 = b; + + // Second parameter: + + if (two_param) + { + if (!ReadByte(&b, mf)) + { + lprintf (LO_WARN, "ReadChannelEvent: Error while reading channel " + "event parameters\n"); + return false; + } + + event->data.channel.param2 = b; + } + + return true; +} + +// Read sysex event: + +static boolean ReadSysExEvent(midi_event_t *event, int event_type, + midimem_t *mf) +{ + event->event_type = event_type; + + if (!ReadVariableLength(&event->data.sysex.length, mf)) + { + lprintf (LO_WARN, "ReadSysExEvent: Failed to read length of " + "SysEx block\n"); + return false; + } + + // Read the byte sequence: + + event->data.sysex.data = ReadByteSequence(event->data.sysex.length, mf); + + if (event->data.sysex.data == NULL) + { + lprintf (LO_WARN, "ReadSysExEvent: Failed while reading SysEx event\n"); + return false; + } + + return true; +} + +// Read meta event: + +static boolean ReadMetaEvent(midi_event_t *event, midimem_t *mf) +{ + byte b = 0; + + event->event_type = MIDI_EVENT_META; + + // Read meta event type: + + if (!ReadByte(&b, mf)) + { + lprintf (LO_WARN, "ReadMetaEvent: Failed to read meta event type\n"); + return false; + } + + event->data.meta.type = b; + + // Read length of meta event data: + + if (!ReadVariableLength(&event->data.meta.length, mf)) + { + lprintf (LO_WARN, "ReadMetaEvent: Failed to read length of " + "MetaEvent block\n"); + return false; + } + + // Read the byte sequence: + + event->data.meta.data = ReadByteSequence(event->data.meta.length, mf); + + if (event->data.meta.data == NULL) + { + lprintf (LO_WARN, "ReadMetaEvent: Failed while reading MetaEvent\n"); + return false; + } + + return true; +} + +static boolean ReadEvent(midi_event_t *event, unsigned int *last_event_type, + midimem_t *mf) +{ + byte event_type = 0; + + if (!ReadVariableLength(&event->delta_time, mf)) + { + lprintf (LO_WARN, "ReadEvent: Failed to read event timestamp\n"); + return false; + } + + if (!ReadByte(&event_type, mf)) + { + lprintf (LO_WARN, "ReadEvent: Failed to read event type\n"); + return false; + } + + // All event types have their top bit set. Therefore, if + // the top bit is not set, it is because we are using the "same + // as previous event type" shortcut to save a byte. Skip back + // a byte so that we read this byte again. + + if ((event_type & 0x80) == 0) + { + event_type = *last_event_type; + mf->pos--; + } + else + { + *last_event_type = event_type; + } + + // Check event type: + + switch (event_type & 0xf0) + { + // Two parameter channel events: + + case MIDI_EVENT_NOTE_OFF: + case MIDI_EVENT_NOTE_ON: + case MIDI_EVENT_AFTERTOUCH: + case MIDI_EVENT_CONTROLLER: + case MIDI_EVENT_PITCH_BEND: + return ReadChannelEvent(event, event_type, true, mf); + + // Single parameter channel events: + + case MIDI_EVENT_PROGRAM_CHANGE: + case MIDI_EVENT_CHAN_AFTERTOUCH: + return ReadChannelEvent(event, event_type, false, mf); + + default: + break; + } + + // Specific value? + + switch (event_type) + { + case MIDI_EVENT_SYSEX: + case MIDI_EVENT_SYSEX_SPLIT: + return ReadSysExEvent(event, event_type, mf); + + case MIDI_EVENT_META: + return ReadMetaEvent(event, mf); + + default: + break; + } + + lprintf (LO_WARN, "ReadEvent: Unknown MIDI event type: 0x%x\n", event_type); + return false; +} + +// Free an event: + +static void FreeEvent(midi_event_t *event) +{ + // Some event types have dynamically allocated buffers assigned + // to them that must be freed. + + switch (event->event_type) + { + case MIDI_EVENT_SYSEX: + case MIDI_EVENT_SYSEX_SPLIT: + if (event->data.sysex.data != emptyEvent) + free(event->data.sysex.data); + break; + + case MIDI_EVENT_META: + if (event->data.meta.data != emptyEvent) + free(event->data.meta.data); + break; + + default: + // Nothing to do. + break; + } +} + +// Read and check the track chunk header + +static boolean ReadTrackHeader(midi_track_t *track, midimem_t *mf) +{ + size_t records_read; + chunk_header_t chunk_header; + + records_read = ReadMultipleBytes(&chunk_header, sizeof(chunk_header_t), mf); + + if (records_read < 1) + { + return false; + } + + if (!CheckChunkHeader(&chunk_header, TRACK_CHUNK_ID)) + { + return false; + } + + track->data_len = ntohl(chunk_header.chunk_size); + + return true; +} + +static boolean ReadTrack(midi_track_t *track, midimem_t *mf) +{ + midi_event_t *new_events = NULL; + midi_event_t *event; + unsigned int last_event_type; + + track->num_events = 0; + track->events = NULL; + track->num_event_mem = 0; // NSM + + // Read the header: + + if (!ReadTrackHeader(track, mf)) + { + return false; + } + + // This is typically a good guess and avoids the multitude of reallocs below + track->num_event_mem = track->data_len / 4 + 5; + new_events = calloc(track->num_event_mem, sizeof(midi_event_t)); + + // Then the events: + + last_event_type = 0; + + for (;;) + { + // Resize the track slightly larger to hold another event: + /* + new_events = realloc(track->events, + sizeof(midi_event_t) * (track->num_events + 1)); + */ + if (track->num_events == track->num_event_mem) + { // depending on the state of the heap and the malloc implementation, realloc() + // one more event at a time can be VERY slow. 10sec+ in MSVC + track->num_event_mem += 10; + new_events = realloc (track->events, sizeof (midi_event_t) * track->num_event_mem); + } + + if (new_events == NULL) + { + return false; + } + + track->events = new_events; + + // Read the next event: + + event = &track->events[track->num_events]; + if (!ReadEvent(event, &last_event_type, mf)) + { + return false; + } + + ++track->num_events; + + // End of track? + + if (event->event_type == MIDI_EVENT_META + && event->data.meta.type == MIDI_META_END_OF_TRACK) + { + break; + } + } + + return true; +} + +// Free a track: + +static void FreeTrack(midi_track_t *track) +{ + unsigned i; + + for (i=0; inum_events; ++i) + { + FreeEvent(&track->events[i]); + } + + free(track->events); +} + +static boolean ReadAllTracks(midi_file_t *file, midimem_t *mf) +{ + unsigned int i; + + // Allocate list of tracks and read each track: + + file->tracks = malloc(sizeof(midi_track_t) * file->num_tracks); + + if (file->tracks == NULL) + { + return false; + } + + memset(file->tracks, 0, sizeof(midi_track_t) * file->num_tracks); + + // Read each track: + + for (i=0; inum_tracks; ++i) + { + if (!ReadTrack(&file->tracks[i], mf)) + { + return false; + } + } + + return true; +} + +// Read and check the header chunk. + +static boolean ReadFileHeader(midi_file_t *file, midimem_t *mf) +{ + size_t records_read; + unsigned int format_type; + + records_read = ReadMultipleBytes (&file->header, sizeof(midi_header_t), mf); + + if (records_read < 1) + { + return false; + } + + if (!CheckChunkHeader(&file->header.chunk_header, HEADER_CHUNK_ID) + || ntohl(file->header.chunk_header.chunk_size) != 6) + { + lprintf (LO_WARN, "ReadFileHeader: Invalid MIDI chunk header! " + "chunk_size=%ld\n", + ntohl(file->header.chunk_header.chunk_size)); + return false; + } + + format_type = ntohs(file->header.format_type); + file->num_tracks = ntohs(file->header.num_tracks); + + if ((format_type != 0 && format_type != 1) + || file->num_tracks < 1) + { + lprintf (LO_WARN, "ReadFileHeader: Only type 0/1 " + "MIDI files supported!\n"); + return false; + } + // NSM + file->header.time_division = ntohs (file->header.time_division); + + + return true; +} + +void MIDI_FreeFile(midi_file_t *file) +{ + unsigned i; + + if (file->tracks != NULL) + { + for (i=0; inum_tracks; ++i) + { + FreeTrack(&file->tracks[i]); + } + + free(file->tracks); + } + + free(file); +} + +midi_file_t *MIDI_LoadFile (midimem_t *mf) +{ + midi_file_t *file; + + file = malloc(sizeof(midi_file_t)); + + if (file == NULL) + { + return NULL; + } + + file->tracks = NULL; + file->num_tracks = 0; + file->buffer = NULL; + file->buffer_size = 0; + + // Read MIDI file header + + if (!ReadFileHeader(file, mf)) + { + MIDI_FreeFile(file); + return NULL; + } + + // Read all tracks: + + if (!ReadAllTracks(file, mf)) + { + MIDI_FreeFile(file); + return NULL; + } + + return file; +} + +// Get the number of tracks in a MIDI file. + +unsigned int MIDI_NumTracks(const midi_file_t *file) +{ + return file->num_tracks; +} + +// Start iterating over the events in a track. + +midi_track_iter_t *MIDI_IterateTrack(const midi_file_t *file, unsigned int track) +{ + midi_track_iter_t *iter; + + assert(track < file->num_tracks); + + iter = malloc(sizeof(*iter)); + iter->track = &file->tracks[track]; + iter->position = 0; + + return iter; +} + +void MIDI_FreeIterator(midi_track_iter_t *iter) +{ + free(iter); +} + +// Get the time until the next MIDI event in a track. + +unsigned int MIDI_GetDeltaTime(midi_track_iter_t *iter) +{ + if (iter->position < iter->track->num_events) + { + midi_event_t *next_event; + + next_event = &iter->track->events[iter->position]; + + return next_event->delta_time; + } + else + { + return 0; + } +} + +// Get a pointer to the next MIDI event. + +int MIDI_GetNextEvent(midi_track_iter_t *iter, midi_event_t **event) +{ + if (iter->position < iter->track->num_events) + { + *event = &iter->track->events[iter->position]; + ++iter->position; + + return 1; + } + else + { + return 0; + } +} + +unsigned int MIDI_GetFileTimeDivision(const midi_file_t *file) +{ + return file->header.time_division; +} + +void MIDI_RestartIterator(midi_track_iter_t *iter) +{ + iter->position = 0; +} + + +#if 0 +static void MIDI_PrintFlatListDBG (const midi_event_t **evs) +{ + const midi_event_t *event; + + while (1) + { + event = *evs++; + + if (event->delta_time > 0) + printf("Delay: %i ticks\n", event->delta_time); + + + switch (event->event_type) + { + case MIDI_EVENT_NOTE_OFF: + printf ("MIDI_EVENT_NOTE_OFF\n");break; + case MIDI_EVENT_NOTE_ON: + printf ("MIDI_EVENT_NOTE_ON\n");break; + case MIDI_EVENT_AFTERTOUCH: + printf ("MIDI_EVENT_AFTERTOUCH\n");break; + case MIDI_EVENT_CONTROLLER: + printf ("MIDI_EVENT_CONTROLLER\n");break; + case MIDI_EVENT_PROGRAM_CHANGE: + printf ("MIDI_EVENT_PROGRAM_CHANGE\n");break; + case MIDI_EVENT_CHAN_AFTERTOUCH: + printf ("MIDI_EVENT_CHAN_AFTERTOUCH\n");break; + case MIDI_EVENT_PITCH_BEND: + printf ("MIDI_EVENT_PITCH_BEND\n");break; + case MIDI_EVENT_SYSEX: + printf ("MIDI_EVENT_SYSEX\n");break; + case MIDI_EVENT_SYSEX_SPLIT: + printf ("MIDI_EVENT_SYSEX_SPLIT\n");break; + case MIDI_EVENT_META: + printf ("MIDI_EVENT_META\n");break; + + default: + printf ("(unknown)\n");break; + } + switch(event->event_type) + { + case MIDI_EVENT_NOTE_OFF: + case MIDI_EVENT_NOTE_ON: + case MIDI_EVENT_AFTERTOUCH: + case MIDI_EVENT_CONTROLLER: + case MIDI_EVENT_PROGRAM_CHANGE: + case MIDI_EVENT_CHAN_AFTERTOUCH: + case MIDI_EVENT_PITCH_BEND: + printf("\tChannel: %i\n", event->data.channel.channel); + printf("\tParameter 1: %i\n", event->data.channel.param1); + printf("\tParameter 2: %i\n", event->data.channel.param2); + break; + + case MIDI_EVENT_SYSEX: + case MIDI_EVENT_SYSEX_SPLIT: + printf("\tLength: %i\n", event->data.sysex.length); + break; + + case MIDI_EVENT_META: + printf("\tMeta type: %i\n", event->data.meta.type); + printf("\tLength: %i\n", event->data.meta.length); + break; + } + if (event->event_type == MIDI_EVENT_META && + event->data.meta.type == MIDI_META_END_OF_TRACK) + { + printf ("gotta go!\n"); + return; + } + } +} +#endif + + + + + +// NSM: an alternate iterator tool. + +midi_event_t **MIDI_GenerateFlatList (midi_file_t *file) +{ + int totalevents = 0; + unsigned i, delta; + int nextrk; + + int totaldelta = 0; + + int trackpos[file->num_tracks]; + int tracktime[file->num_tracks]; + int trackactive = file->num_tracks; + + midi_event_t **ret; + midi_event_t **epos; + + for (i = 0; i < file->num_tracks; i++) { + totalevents += file->tracks[i].num_events; + trackpos[i] = tracktime[i] = 0; + } + + ret = malloc (totalevents * sizeof (midi_event_t **)); + + epos = ret; + + while (trackactive) + { + delta = 0x10000000; + nextrk = -1; + for (i = 0; i < file->num_tracks; i++) + { + if (trackpos[i] != -1 && file->tracks[i].events[trackpos[i]].delta_time - tracktime[i] < delta) + { + delta = file->tracks[i].events[trackpos[i]].delta_time - tracktime[i]; + nextrk = i; + } + } + if (nextrk == -1) // unexpected EOF (not every track got end track) + break; + + *epos = file->tracks[nextrk].events + trackpos[nextrk]; + + for (i = 0; i < file->num_tracks; i++) + { + if (i == (unsigned) nextrk) + { + tracktime[i] = 0; + trackpos[i]++; + } + else + tracktime[i] += delta; + } + // yes, this clobbers the original timecodes + epos[0]->delta_time = delta; + totaldelta += delta; + + if (epos[0]->event_type == MIDI_EVENT_META + && epos[0]->data.meta.type == MIDI_META_END_OF_TRACK) + { // change end of track into no op + trackactive--; + trackpos[nextrk] = -1; + epos[0]->data.meta.type = MIDI_META_TEXT; + } + else if ((unsigned) trackpos[nextrk] == file->tracks[nextrk].num_events) + { + lprintf (LO_WARN, "MIDI_GenerateFlatList: Unexpected end of track\n"); + free (ret); + return NULL; + } + epos++; + } + + if (trackactive) + { // unexpected EOF + lprintf (LO_WARN, "MIDI_GenerateFlatList: Unexpected end of midi file\n"); + free (ret); + return NULL; + } + + // last end of track event is preserved though + epos[-1]->data.meta.type = MIDI_META_END_OF_TRACK; + + if (totaldelta < 100) + { + lprintf (LO_WARN, "MIDI_GeneratFlatList: very short file %i\n", totaldelta); + free (ret); + return NULL; + } + + + //MIDI_PrintFlatListDBG (ret); + + return ret; +} + + + +void MIDI_DestroyFlatList (midi_event_t **evs) +{ + free (evs); +} + + + +// NSM: timing assist functions +// they compute samples per midi clock, where midi clock is the units +// that the time deltas are in, and samples is an arbitrary unit of which +// "sndrate" of them occur per second + + +static double compute_spmc_normal (unsigned mpq, unsigned tempo, unsigned sndrate) +{ // returns samples per midi clock + + // inputs: mpq (midi clocks per quarternote, from header) + // tempo (from tempo event, in microseconds per quarternote) + // sndrate (sound sample rate in hz) + + // samples quarternote microsec samples second + // ------- = ----------- * ----------- * ------- * -------- + // midiclk midiclk quarternote second microsec + + // return = (1 / mpq) * tempo * sndrate * (1 / 1000000) + + return (double) tempo / 1000000 * sndrate / mpq; + +} + +static double compute_spmc_smpte (unsigned smpte_fps, unsigned mpf, unsigned sndrate) +{ // returns samples per midi clock + + // inputs: smpte_fps (24, 25, 29, 30) + // mpf (midi clocks per frame, 0-255) + // sndrate (sound sample rate in hz) + + // tempo is ignored here + + // samples frame seconds samples + // ------- = --------- * --------- * ------- + // midiclk midiclk frame second + + // return = (1 / mpf) * (1 / fps) * sndrate + + + double fps; // actual frames per second + switch (smpte_fps) + { + case 24: + case 25: + case 30: + fps = smpte_fps; + break; + case 29: + // i hate NTSC, i really do + fps = smpte_fps * 1000.0 / 1001.0; + break; + default: + lprintf (LO_WARN, "MIDI_spmc: Unexpected SMPTE timestamp %i\n", smpte_fps); + // assume + fps = 30.0; + break; + } + + return (double) sndrate / fps / mpf; + +} + +// if event is NULL, compute with default starting tempo (120BPM) + +double MIDI_spmc (const midi_file_t *file, const midi_event_t *ev, unsigned sndrate) +{ + int smpte_fps; + unsigned tempo; + unsigned headerval = MIDI_GetFileTimeDivision (file); + + if (headerval & 0x8000) // SMPTE + { // i don't really have any files to test this on... + smpte_fps = -(short) headerval >> 8; + return compute_spmc_smpte (smpte_fps, headerval & 0xff, sndrate); + } + + // normal timing + tempo = 500000; // default 120BPM + if (ev) + { + if (ev->event_type == MIDI_EVENT_META) + { + if (ev->data.meta.length == 3) + { + tempo = (unsigned) ev->data.meta.data[0] << 16 | + (unsigned) ev->data.meta.data[1] << 8 | + (unsigned) ev->data.meta.data[2]; + } + else + lprintf (LO_WARN, "MIDI_spmc: wrong length tempo meta message in midi file\n"); + } + else + lprintf (LO_WARN, "MIDI_spmc: passed non-meta event\n"); + } + + return compute_spmc_normal (headerval, tempo, sndrate); +} + +/* +The timing system used by the OPL driver is very interesting. But there are too many edge cases +in multitrack (type 1) midi tempo changes that it simply can't handle without a major rework. +The alternative is that we recook the file into a single track file with no tempo changes at +load time. +*/ + +midi_file_t *MIDI_LoadFileSpecial (midimem_t *mf) +{ + midi_event_t **flatlist; + midi_file_t *base = MIDI_LoadFile (mf); + midi_file_t *ret; + + double opi; + + int epos = 0; + + if (!base) + return NULL; + + flatlist = MIDI_GenerateFlatList (base); + if (!flatlist) + { + MIDI_FreeFile (base); + return NULL; + } + + ret = malloc (sizeof (midi_file_t)); + + ret->header.format_type = 0; + ret->header.num_tracks = 1; + ret->header.time_division = 10000; + ret->num_tracks = 1; + ret->buffer_size = 0; + ret->buffer = NULL; + ret->tracks = malloc (sizeof (midi_track_t)); + + ret->tracks->num_events = 0; + ret->tracks->num_event_mem = 0; + ret->tracks->events = NULL; + + opi = MIDI_spmc (base, NULL, 20000); + + + while (1) + { + midi_event_t *oldev; + midi_event_t *nextev; + + if (ret->tracks->num_events == ret->tracks->num_event_mem) + { + ret->tracks->num_event_mem += 100; + ret->tracks->events = realloc (ret->tracks->events, sizeof (midi_event_t) * ret->tracks->num_event_mem); + } + + oldev = flatlist[epos]; + nextev = ret->tracks->events + ret->tracks->num_events; + + + // figure delta time + nextev->delta_time = (unsigned int)(opi * oldev->delta_time); + + if (oldev->event_type == MIDI_EVENT_SYSEX || + oldev->event_type == MIDI_EVENT_SYSEX_SPLIT) + // opl player can't process any sysex... + { + epos++; + continue; + } + + if (oldev->event_type == MIDI_EVENT_META) + { + if (oldev->data.meta.type == MIDI_META_SET_TEMPO) + { // adjust future tempo scaling + opi = MIDI_spmc (base, oldev, 20000); + // insert event as dummy + nextev->event_type = MIDI_EVENT_META; + nextev->data.meta.type = MIDI_META_TEXT; + nextev->data.meta.length = 0; + nextev->data.meta.data = emptyEvent; + epos++; + ret->tracks->num_events++; + continue; + } + if (oldev->data.meta.type == MIDI_META_END_OF_TRACK) + { // reproduce event and break + nextev->event_type = MIDI_EVENT_META; + nextev->data.meta.type = MIDI_META_END_OF_TRACK; + nextev->data.meta.length = 0; + nextev->data.meta.data = emptyEvent; + epos++; + ret->tracks->num_events++; + break; + } + // other meta events not needed + epos++; + continue; + } + // non meta events can simply be copied (excluding delta time) + memcpy (&nextev->event_type, &oldev->event_type, sizeof (midi_event_t) - sizeof (unsigned)); + epos++; + ret->tracks->num_events++; + } + + MIDI_DestroyFlatList (flatlist); + MIDI_FreeFile (base); + return ret; +} + + + +#ifdef TEST + +static char *MIDI_EventTypeToString(midi_event_type_t event_type) +{ + switch (event_type) + { + case MIDI_EVENT_NOTE_OFF: + return "MIDI_EVENT_NOTE_OFF"; + case MIDI_EVENT_NOTE_ON: + return "MIDI_EVENT_NOTE_ON"; + case MIDI_EVENT_AFTERTOUCH: + return "MIDI_EVENT_AFTERTOUCH"; + case MIDI_EVENT_CONTROLLER: + return "MIDI_EVENT_CONTROLLER"; + case MIDI_EVENT_PROGRAM_CHANGE: + return "MIDI_EVENT_PROGRAM_CHANGE"; + case MIDI_EVENT_CHAN_AFTERTOUCH: + return "MIDI_EVENT_CHAN_AFTERTOUCH"; + case MIDI_EVENT_PITCH_BEND: + return "MIDI_EVENT_PITCH_BEND"; + case MIDI_EVENT_SYSEX: + return "MIDI_EVENT_SYSEX"; + case MIDI_EVENT_SYSEX_SPLIT: + return "MIDI_EVENT_SYSEX_SPLIT"; + case MIDI_EVENT_META: + return "MIDI_EVENT_META"; + + default: + return "(unknown)"; + } +} + +void PrintTrack (midi_track_t *track) +{ + midi_event_t *event; + unsigned int i; + + for (i=0; inum_events; ++i) + { + event = &track->events[i]; + + if (event->delta_time > 0) + { + printf("Delay: %i ticks\n", event->delta_time); + } + + printf("Event type: %s (%i)\n", + MIDI_EventTypeToString(event->event_type), + event->event_type); + + switch(event->event_type) + { + case MIDI_EVENT_NOTE_OFF: + case MIDI_EVENT_NOTE_ON: + case MIDI_EVENT_AFTERTOUCH: + case MIDI_EVENT_CONTROLLER: + case MIDI_EVENT_PROGRAM_CHANGE: + case MIDI_EVENT_CHAN_AFTERTOUCH: + case MIDI_EVENT_PITCH_BEND: + printf("\tChannel: %i\n", event->data.channel.channel); + printf("\tParameter 1: %i\n", event->data.channel.param1); + printf("\tParameter 2: %i\n", event->data.channel.param2); + break; + + case MIDI_EVENT_SYSEX: + case MIDI_EVENT_SYSEX_SPLIT: + printf("\tLength: %i\n", event->data.sysex.length); + break; + + case MIDI_EVENT_META: + printf("\tMeta type: %i\n", event->data.meta.type); + printf("\tLength: %i\n", event->data.meta.length); + break; + } + } +} + +int main(int argc, char *argv[]) +{ + FILE *f; + midimem_t mf; + midi_file_t *file; + unsigned int i; + + if (argc < 2) + { + printf("Usage: %s \n", argv[0]); + exit(1); + } + f = fopen (argv[1], "rb"); + if (!f) + { + fprintf(stderr, "Failed to open %s\n", argv[1]); + exit(1); + } + fseek (f, 0, SEEK_END); + mf.len = ftell (f); + mf.pos = 0; + rewind (f); + mf.data = malloc (mf.len); + fread (mf.data, 1, mf.len, f); + fclose (f); + + file = MIDI_LoadFile (&mf); + + if (file == NULL) + { + fprintf(stderr, "Failed to open %s\n", argv[1]); + exit(1); + } + + for (i=0; inum_tracks; ++i) + { + printf("\n== Track %i ==\n\n", i); + + PrintTrack(&file->tracks[i]); + } + + return 0; +} + +#endif + diff --git a/components/doom/prboom/midifile.h b/components/doom/prboom/midifile.h new file mode 100644 index 0000000..ca4b6b3 --- /dev/null +++ b/components/doom/prboom/midifile.h @@ -0,0 +1,194 @@ +// Emacs style mode select -*- C++ -*- +//----------------------------------------------------------------------------- +// +// Copyright(C) 2009 Simon Howard +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +// 02111-1307, USA. +// +// DESCRIPTION: +// MIDI file parsing. +// +//----------------------------------------------------------------------------- + +#ifndef MIDIFILE_H +#define MIDIFILE_H + +#include "doomtype.h" + +typedef struct midi_file_s midi_file_t; +typedef struct midi_track_iter_s midi_track_iter_t; + +#define MIDI_CHANNELS_PER_TRACK 16 + +typedef struct +{ + const byte *data; + size_t len; + size_t pos; +} midimem_t; + + +typedef enum +{ + MIDI_EVENT_NOTE_OFF = 0x80, + MIDI_EVENT_NOTE_ON = 0x90, + MIDI_EVENT_AFTERTOUCH = 0xa0, + MIDI_EVENT_CONTROLLER = 0xb0, + MIDI_EVENT_PROGRAM_CHANGE = 0xc0, + MIDI_EVENT_CHAN_AFTERTOUCH = 0xd0, + MIDI_EVENT_PITCH_BEND = 0xe0, + + MIDI_EVENT_SYSEX = 0xf0, + MIDI_EVENT_SYSEX_SPLIT = 0xf7, + MIDI_EVENT_META = 0xff, +} midi_event_type_t; + +typedef enum +{ + MIDI_CONTROLLER_BANK_SELECT = 0x0, + MIDI_CONTROLLER_MODULATION = 0x1, + MIDI_CONTROLLER_BREATH_CONTROL = 0x2, + MIDI_CONTROLLER_FOOT_CONTROL = 0x3, + MIDI_CONTROLLER_PORTAMENTO = 0x4, + MIDI_CONTROLLER_DATA_ENTRY = 0x5, + + MIDI_CONTROLLER_MAIN_VOLUME = 0x7, + MIDI_CONTROLLER_PAN = 0xa +} midi_controller_t; + +typedef enum +{ + MIDI_META_SEQUENCE_NUMBER = 0x0, + + MIDI_META_TEXT = 0x1, + MIDI_META_COPYRIGHT = 0x2, + MIDI_META_TRACK_NAME = 0x3, + MIDI_META_INSTR_NAME = 0x4, + MIDI_META_LYRICS = 0x5, + MIDI_META_MARKER = 0x6, + MIDI_META_CUE_POINT = 0x7, + + MIDI_META_CHANNEL_PREFIX = 0x20, + MIDI_META_END_OF_TRACK = 0x2f, + + MIDI_META_SET_TEMPO = 0x51, + MIDI_META_SMPTE_OFFSET = 0x54, + MIDI_META_TIME_SIGNATURE = 0x58, + MIDI_META_KEY_SIGNATURE = 0x59, + MIDI_META_SEQUENCER_SPECIFIC = 0x7f, +} midi_meta_event_type_t; + +typedef struct +{ + // Meta event type: + + unsigned int type; + + // Length: + + unsigned int length; + + // Meta event data: + + byte *data; +} midi_meta_event_data_t; + +typedef struct +{ + // Length: + + unsigned int length; + + // Event data: + + byte *data; +} midi_sysex_event_data_t; + +typedef struct +{ + // The channel number to which this applies: + + unsigned int channel; + + // Extra parameters: + + unsigned int param1; + unsigned int param2; +} midi_channel_event_data_t; + +typedef struct +{ + // Time between the previous event and this event. + unsigned int delta_time; + + // Type of event: + midi_event_type_t event_type; + + union + { + midi_channel_event_data_t channel; + midi_meta_event_data_t meta; + midi_sysex_event_data_t sysex; + } data; +} midi_event_t; + +// Load a MIDI file. + +midi_file_t *MIDI_LoadFile(midimem_t *mf); + +// Free a MIDI file. + +void MIDI_FreeFile(midi_file_t *file); + +// Get the time division value from the MIDI header. + +unsigned int MIDI_GetFileTimeDivision(const midi_file_t *file); + +// Get the number of tracks in a MIDI file. + +unsigned int MIDI_NumTracks(const midi_file_t *file); + +// Start iterating over the events in a track. + +midi_track_iter_t *MIDI_IterateTrack(const midi_file_t *file, unsigned int track_num); + +// Free an iterator. + +void MIDI_FreeIterator(midi_track_iter_t *iter); + +// Get the time until the next MIDI event in a track. + +unsigned int MIDI_GetDeltaTime(midi_track_iter_t *iter); + +// Get a pointer to the next MIDI event. + +int MIDI_GetNextEvent(midi_track_iter_t *iter, midi_event_t **event); + +// Reset an iterator to the beginning of a track. + +void MIDI_RestartIterator(midi_track_iter_t *iter); + +// NSM: an alternate iterator tool. +midi_event_t **MIDI_GenerateFlatList (midi_file_t *file); +void MIDI_DestroyFlatList (midi_event_t **evs); + +// NSM: timing calculator +double MIDI_spmc (const midi_file_t *file, const midi_event_t *ev, unsigned sndrate); + +midi_file_t *MIDI_LoadFileSpecial (midimem_t *mf); + +#endif /* #ifndef MIDIFILE_H */ + diff --git a/components/doom/prboom/mus2mid.c b/components/doom/prboom/mus2mid.c new file mode 100644 index 0000000..141b0bc --- /dev/null +++ b/components/doom/prboom/mus2mid.c @@ -0,0 +1,357 @@ +/* + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * This file supports conversion of MUS format music in memory + * to MIDI format 1 music in memory. + * + * Much of the code here is thanks to S. Bacquet's source for QMUS2MID.C + * + */ + +#include "doomtype.h" +#include "doomdef.h" +#include "m_swap.h" +#include "z_zone.h" +#include "lprintf.h" +#include "mus2mid.h" + +#define MIDI_TRACKS 16 + +// MIDI track +typedef struct +{ + unsigned velocity; + unsigned deltaT; + size_t length; + byte *data; +} track_t; + +// event types +typedef enum +{ + RELEASE_NOTE, + PLAY_NOTE, + BEND_NOTE, + SYS_EVENT, + CNTL_CHANGE, + UNKNOWN_EVENT1, + SCORE_END, + UNKNOWN_EVENT2, +} mus_event_t; + +// MUS format header structure +typedef struct PACKEDATTR +{ + unsigned char ID[4]; // identifier "MUS"0x1A + unsigned short ScoreLength; // length of music portion + unsigned short ScoreStart; // offset of music portion + unsigned short channels; // count of primary channels + unsigned short SecChannels; // count of secondary channels + unsigned short InstrCnt; // number of instruments +} MUSheader; + +// lookup table MUS -> MID controls +static const byte MUS2MIDcontrol[15] = +{ + 0, // Program change - not a MIDI control change + 0x00, // Bank select + 0x01, // Modulation pot + 0x07, // Volume + 0x0A, // Pan pot + 0x0B, // Expression pot + 0x5B, // Reverb depth + 0x5D, // Chorus depth + 0x40, // Sustain pedal + 0x43, // Soft pedal + 0x78, // All sounds off + 0x7B, // All notes off + 0x7E, // Mono + 0x7F, // Poly + 0x79, // Reset all controllers +}; + +#define WriteByte(track, byte) {track_t *t = (track);if (t->data)t->data[t->length] = (byte);t->length++;} + +static mus_err_t mus2mid_internal(track_t *tracks, const byte *mus, size_t muslen) +{ + const MUSheader *header = (MUSheader *)mus; + int MIDIchan2track[MIDI_TRACKS]; + int MUS2MIDchannel[MIDI_TRACKS]; + + for (int i = 0; i < MIDI_TRACKS; i++) // init the track structure's tracks + { + MUS2MIDchannel[i] = -1; // flag for channel not used yet + tracks[i].velocity = 64; + tracks[i].deltaT = 0; + tracks[i].length = 0; + } + + // the first track is a special tempo/key track + const byte track0[] = { + 0x00, 0xff, 0x59, 0x02, 0x00, 0x00, // Key (C major) + 0x00, 0xff, 0x51, 0x03, 0x09, 0xa3, 0x1a, // Tempo + }; + for (int i = 0; i < sizeof(track0); i++) + WriteByte(&tracks[0], track0[i]); + + const byte *musptr = mus + header->ScoreStart; + size_t numtracks = 1; + + // process the MUS events in the MUS buffer + while (1) + { + byte MUSevent = *musptr++; + byte MUSeventType = (MUSevent & 0x7F) >> 4; + byte MUSchannel = MUSevent & 0x0F; + int data; + + if (MUSeventType == SCORE_END) + break; + + if (MUS2MIDchannel[MUSchannel] == -1) + { + if (MUSchannel == 15) + { + // MUS channel 15 is always assigned to MIDI channel 9 (percussion) + MUS2MIDchannel[MUSchannel] = 9; + } + else + { + int max = -1; + for (int i = 0; i < 15; i++) + max = MAX(max, MUS2MIDchannel[i]); + MUS2MIDchannel[MUSchannel] = (max == 8 ? 10 : max + 1); + } + MIDIchan2track[MUS2MIDchannel[MUSchannel]] = numtracks++; + } + + int MIDIchannel = MUS2MIDchannel[MUSchannel]; + int MIDItrack = MIDIchan2track[MIDIchannel]; + + unsigned value = tracks[MIDItrack].deltaT; + unsigned buffer = value & 0x7f; + + while ((value >>= 7)) // terminates because value unsigned + { + buffer <<= 8; // note first value shifted in has bit 8 clear + buffer |= 0x80 | (value & 0x7f); + } + + while (1) // write bytes out in opposite order + { + WriteByte(&tracks[MIDItrack], buffer & 0xff); // insure buffer masked + if (buffer & 0x80) + buffer >>= 8; + else // terminate on the byte with bit 8 clear + break; + } + tracks[MIDItrack].deltaT = 0; + + switch (MUSeventType) + { + case RELEASE_NOTE: + WriteByte(&tracks[MIDItrack], 0x90 | MIDIchannel); + data = *musptr++; + WriteByte(&tracks[MIDItrack], (byte)(data & 0x7F)); + WriteByte(&tracks[MIDItrack], 0); + break; + + case PLAY_NOTE: + WriteByte(&tracks[MIDItrack], 0x90 | MIDIchannel); + data = *musptr++; + WriteByte(&tracks[MIDItrack], (byte)(data & 0x7F)); + if (data & 0x80) + tracks[MIDItrack].velocity = (*musptr++) & 0x7f; + WriteByte(&tracks[MIDItrack], tracks[MIDItrack].velocity); + break; + + case BEND_NOTE: + WriteByte(&tracks[MIDItrack], 0xE0 | MIDIchannel); + data = *musptr++; + WriteByte(&tracks[MIDItrack], (byte)((data & 1) << 6)); + WriteByte(&tracks[MIDItrack], (byte)(data >> 1)); + break; + + case SYS_EVENT: + WriteByte(&tracks[MIDItrack], 0x80 | MIDIchannel); + data = *musptr++; + if (data < 10 || data > 14) + return MUS_BADEVENT; + WriteByte(&tracks[MIDItrack], MUS2MIDcontrol[data]); + if (data == 12) + { + WriteByte(&tracks[MIDItrack], (byte)(header->channels + 1)); + } + else WriteByte(&tracks[MIDItrack], 0); + break; + + case CNTL_CHANGE: + data = *musptr++; + if (data > 9) + return MUS_BADEVENT; + if (data) + { + WriteByte(&tracks[MIDItrack], 0x80 | MIDIchannel); + WriteByte(&tracks[MIDItrack], MUS2MIDcontrol[data]); + } + else + { + WriteByte(&tracks[MIDItrack], 0xC0 | MIDIchannel); + } + data = *musptr++; + WriteByte(&tracks[MIDItrack], (byte)(data & 0x7F)); + break; + + case SCORE_END: + break; + + default: // meaning not known + return MUS_BADEVENT; // exit with error + } + + if (MUSevent & 0x80) // Last event + { + unsigned byte, DeltaTime = 0; + do // shift each byte read up in the result until a byte with bit 8 clear + { + byte = *musptr++; + DeltaTime = (DeltaTime << 7) + (byte & 0x7F); + } while (byte & 0x80); + for (int i = 0; i < MIDI_TRACKS; i++) + tracks[i].deltaT += DeltaTime; //whether allocated yet or not + } + + if (MUSeventType == SCORE_END) + break; + + if ((musptr - mus) >= muslen) + return MUS_BADLENGTH; + } + + return MUS_OK; +} + +// +// mus2mid() +// +// Converts a memory buffer containing MUS data to an MIDI 1 structure +// +// Returns 0 if successful, otherwise an error code (see mus2mid.h). +// +mus_err_t mus2mid(const byte *mus, size_t muslen, byte **mid, size_t *midlen, int division) +{ + const MUSheader *header = (MUSheader *)mus; + track_t tracks[MIDI_TRACKS] = {0}; + byte *mididata = NULL; + size_t totalsize = 14; + size_t numtracks = 0; + size_t length = 0; + mus_err_t ret = MUS_OK; + + if (!mus || memcmp(mus, "MUS\x1A", 4)) + return MUS_INVALID; + + lprintf(LO_INFO, "mus2mid: Length: %d, Start: %d, Channels: %d, Instruments: %d.\n", + header->ScoreStart, header->ScoreLength, header->channels, header->InstrCnt); + + if (!muslen) + muslen = header->ScoreStart + header->ScoreLength; + + if (header->channels > 15) // MUSchannels + drum channel > 16 + return MUS_TOOMCHAN; + + if (header->ScoreStart + header->ScoreLength > muslen) + return MUS_BADLENGTH; + + if (header->ScoreLength == 0) + return MUS_BADLENGTH; + + // We do a dry run to see how large our final buffer needs to be + // instead of doing a dozen mallocs/reallocs that fragments our heap. + if ((ret = mus2mid_internal(tracks, mus, muslen))) + return ret; + + for (int i = 0; i < MIDI_TRACKS; i++) + if ((length = tracks[i].length)) + { + totalsize += 8 + length + 4; + numtracks++; + } + + if (!(mididata = malloc(totalsize))) + return MUS_MEMALLOC; + + byte *midiptr = mididata; + + // write the midi header + *midiptr++ = 'M'; + *midiptr++ = 'T'; + *midiptr++ = 'h'; + *midiptr++ = 'd'; + *midiptr++ = 0; + *midiptr++ = 0; + *midiptr++ = 0; + *midiptr++ = 6; // Length + *midiptr++ = 0; + *midiptr++ = 1; // Format + *midiptr++ = 0; + *midiptr++ = numtracks; + *midiptr++ = (division >> 8) & 0x7f; + *midiptr++ = (division) & 0xff; + + for (int i = 0; i < MIDI_TRACKS; i++) // init the track structure's tracks + { + if ((length = tracks[i].length)) + { + // header + *midiptr++ = 'M'; + *midiptr++ = 'T'; + *midiptr++ = 'r'; + *midiptr++ = 'k'; + *midiptr++ = (length >> 24) & 0xff; + *midiptr++ = (length >> 16) & 0xff; + *midiptr++ = (length >> 8) & 0xff; + *midiptr++ = (length) & 0xff; + + // data + tracks[i].data = midiptr; + midiptr += tracks[i].length; + + // footer / end of track + *midiptr++ = 0x00; + *midiptr++ = 0xFF; + *midiptr++ = 0x2F; + *midiptr++ = 0x00; + } + } + + if ((ret = mus2mid_internal(tracks, mus, muslen)) == 0) + *midlen = (midiptr - mididata), *mid = mididata; + else + free(mididata); + + return ret; +} diff --git a/components/doom/prboom/mus2mid.h b/components/doom/prboom/mus2mid.h new file mode 100644 index 0000000..b7c8477 --- /dev/null +++ b/components/doom/prboom/mus2mid.h @@ -0,0 +1,49 @@ +/* + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * mus2mid.c supports conversion of MUS format music in memory + * to MIDI format 1 music in memory. + */ + +#ifndef MUS2MID_H +#define MUS2MID_H + +#include "doomtype.h" +#include "doomdef.h" + +typedef enum +{ + MUS_OK = 0, + MUS_INVALID, // MUS data invalid + MUS_TOOMCHAN, // Too many channels + MUS_MEMALLOC, // Memory allocation error + MUS_BADEVENT, // Unexpected event data + MUS_BADLENGTH, // MUS data too long +} mus_err_t; + +mus_err_t mus2mid(const byte *mus, size_t muslen, byte **mid, size_t *midlen, int division); + +#endif diff --git a/components/doom/prboom/opl.c b/components/doom/prboom/opl.c new file mode 100644 index 0000000..02771aa --- /dev/null +++ b/components/doom/prboom/opl.c @@ -0,0 +1,459 @@ +// Emacs style mode select -*- C++ -*- +//----------------------------------------------------------------------------- +// +// Copyright(C) 2009 Simon Howard +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +// 02111-1307, USA. +// +// DESCRIPTION: +// OPL interface. +// +//----------------------------------------------------------------------------- + + +#include "config.h" + +#include +#include +#include + + +#include "opl.h" +#include "opl_queue.h" +#include "dbopl.h" + +static int init_stage_reg_writes = 1; + +unsigned int opl_sample_rate = 22050; +int mus_opl_gain = 50; // NSM fine tune OPL output level + + +#define MAX_SOUND_SLICE_TIME 100 /* ms */ + +typedef struct +{ + unsigned int rate; // Number of times the timer is advanced per sec. + unsigned int enabled; // Non-zero if timer is enabled. + unsigned int value; // Last value that was set. + unsigned int expire_time; // Calculated time that timer will expire. +} opl_timer_t; + + +// Queue of callbacks waiting to be invoked. + +static opl_callback_queue_t *callback_queue; + + +// Current time, in number of samples since startup: + +static unsigned int current_time; + +// If non-zero, playback is currently paused. + +static int opl_paused; + +// Time offset (in samples) due to the fact that callbacks +// were previously paused. + +static unsigned int pause_offset; + +// OPL software emulator structure. + +static Chip opl_chip; + +// Temporary mixing buffer used by the mixing callback. + +static int *mix_buffer = NULL; + +// Register number that was written. + +static int register_num = 0; + +// Timers; DBOPL does not do timer stuff itself. + +static opl_timer_t timer1 = { 12500, 0, 0, 0 }; +static opl_timer_t timer2 = { 3125, 0, 0, 0 }; + + +// +// Init/shutdown code. +// + +// Initialize the OPL library. Returns true if initialized +// successfully. + +int OPL_Init (unsigned int rate) +{ + opl_sample_rate = rate; + opl_paused = 0; + pause_offset = 0; + + // Queue structure of callbacks to invoke. + + callback_queue = OPL_Queue_Create(); + current_time = 0; + + + mix_buffer = malloc(opl_sample_rate * sizeof(uint32_t)); + + // Create the emulator structure: + + DBOPL_InitTables(); + Chip__Chip(&opl_chip); + Chip__Setup(&opl_chip, opl_sample_rate); + + + OPL_InitRegisters(); + + init_stage_reg_writes = 0; + + return 1; +} + +// Shut down the OPL library. + +void OPL_Shutdown(void) +{ + if (callback_queue) + { + OPL_Queue_Destroy(callback_queue); + free(mix_buffer); + + callback_queue = NULL; + mix_buffer = NULL; + } +} + +void OPL_SetCallback(unsigned int ms, + opl_callback_t callback, + void *data) +{ + OPL_Queue_Push(callback_queue, callback, data, + current_time - pause_offset + (ms * opl_sample_rate) / 1000); +} + +void OPL_ClearCallbacks(void) +{ + OPL_Queue_Clear(callback_queue); +} + +static void OPLTimer_CalculateEndTime(opl_timer_t *timer) +{ + int tics; + + // If the timer is enabled, calculate the time when the timer + // will expire. + + if (timer->enabled) + { + tics = 0x100 - timer->value; + timer->expire_time = current_time + + (tics * opl_sample_rate) / timer->rate; + } +} + + +static void WriteRegister(unsigned int reg_num, unsigned int value) +{ + switch (reg_num) + { + case OPL_REG_TIMER1: + timer1.value = value; + OPLTimer_CalculateEndTime(&timer1); + break; + + case OPL_REG_TIMER2: + timer2.value = value; + OPLTimer_CalculateEndTime(&timer2); + break; + + case OPL_REG_TIMER_CTRL: + if (value & 0x80) + { + timer1.enabled = 0; + timer2.enabled = 0; + } + else + { + if ((value & 0x40) == 0) + { + timer1.enabled = (value & 0x01) != 0; + OPLTimer_CalculateEndTime(&timer1); + } + + if ((value & 0x20) == 0) + { + timer1.enabled = (value & 0x02) != 0; + OPLTimer_CalculateEndTime(&timer2); + } + } + + break; + + default: + Chip__WriteReg(&opl_chip, reg_num, (unsigned char) value); + break; + } +} + +static void OPL_AdvanceTime(unsigned int nsamples) +{ + opl_callback_t callback; + void *callback_data; + + + // Advance time. + + current_time += nsamples; + + if (opl_paused) + { + pause_offset += nsamples; + } + + // Are there callbacks to invoke now? Keep invoking them + // until there are none more left. + + while (!OPL_Queue_IsEmpty(callback_queue) + && current_time >= OPL_Queue_Peek(callback_queue) + pause_offset) + { + // Pop the callback from the queue to invoke it. + + if (!OPL_Queue_Pop(callback_queue, &callback, &callback_data)) + { + break; + } + + + callback(callback_data); + + } + +} + +static void FillBuffer(int16_t *buffer, unsigned int nsamples) +{ + unsigned int i; + int sampval; + + // FIXME??? + //assert(nsamples < opl_sample_rate); + + Chip__GenerateBlock2(&opl_chip, nsamples, (int32_t*)mix_buffer); + + // Mix into the destination buffer, doubling up into stereo. + + for (i=0; i 32767) + sampval = 32767; + else if (sampval < -32768) + sampval = -32768; + buffer[i * 2] = (int16_t) sampval; + buffer[i * 2 + 1] = (int16_t) sampval; + } +} + + +void OPL_Render_Samples (void *dest, unsigned buffer_len) +{ + unsigned int filled = 0; + + + short *buffer = (short *) dest; + + + // Repeatedly call the OPL emulator update function until the buffer is + // full. + + while (filled < buffer_len) + { + unsigned int next_callback_time; + unsigned int nsamples; + + + // Work out the time until the next callback waiting in + // the callback queue must be invoked. We can then fill the + // buffer with this many samples. + + if (opl_paused || OPL_Queue_IsEmpty(callback_queue)) + { + nsamples = buffer_len - filled; + } + else + { + next_callback_time = OPL_Queue_Peek(callback_queue) + pause_offset; + + nsamples = next_callback_time - current_time; + + if (nsamples > buffer_len - filled) + { + nsamples = buffer_len - filled; + } + } + + + // Add emulator output to buffer. + + FillBuffer(buffer + filled * 2, nsamples); + filled += nsamples; + + // Invoke callbacks for this point in time. + + OPL_AdvanceTime(nsamples); + } +} + +void OPL_WritePort(opl_port_t port, unsigned int value) +{ + if (port == OPL_REGISTER_PORT) + { + register_num = value; + } + else if (port == OPL_DATA_PORT) + { + WriteRegister(register_num, value); + } +} + +unsigned int OPL_ReadPort(opl_port_t port) +{ + unsigned int result = 0; + + if (timer1.enabled && current_time > timer1.expire_time) + { + result |= 0x80; // Either have expired + result |= 0x40; // Timer 1 has expired + } + + if (timer2.enabled && current_time > timer2.expire_time) + { + result |= 0x80; // Either have expired + result |= 0x20; // Timer 2 has expired + } + + return result; +} + +// +// Higher-level functions, based on the lower-level functions above +// (register write, etc). +// + +unsigned int OPL_ReadStatus(void) +{ + return OPL_ReadPort(OPL_REGISTER_PORT); +} + +// Write an OPL register value + +void OPL_WriteRegister(int reg, int value) +{ + int i; + + OPL_WritePort(OPL_REGISTER_PORT, reg); + + // For timing, read the register port six times after writing the + // register number to cause the appropriate delay + + for (i=0; i<6; ++i) + { + // An oddity of the Doom OPL code: at startup initialization, + // the spacing here is performed by reading from the register + // port; after initialization, the data port is read, instead. + + if (init_stage_reg_writes) + { + OPL_ReadPort(OPL_REGISTER_PORT); + } + else + { + OPL_ReadPort(OPL_DATA_PORT); + } + } + + OPL_WritePort(OPL_DATA_PORT, value); + + // Read the register port 24 times after writing the value to + // cause the appropriate delay + + for (i=0; i<24; ++i) + { + OPL_ReadStatus(); + } +} + + +// Initialize registers on startup + +void OPL_InitRegisters(void) +{ + int r; + + // Initialize level registers + + for (r=OPL_REGS_LEVEL; r <= OPL_REGS_LEVEL + OPL_NUM_OPERATORS; ++r) + { + OPL_WriteRegister(r, 0x3f); + } + + // Initialize other registers + // These two loops write to registers that actually don't exist, + // but this is what Doom does ... + // Similarly, the <= is also intenational. + + for (r=OPL_REGS_ATTACK; r <= OPL_REGS_WAVEFORM + OPL_NUM_OPERATORS; ++r) + { + OPL_WriteRegister(r, 0x00); + } + + // More registers ... + + for (r=1; r < OPL_REGS_LEVEL; ++r) + { + OPL_WriteRegister(r, 0x00); + } + + // Re-initialize the low registers: + + // Reset both timers and enable interrupts: + OPL_WriteRegister(OPL_REG_TIMER_CTRL, 0x60); + OPL_WriteRegister(OPL_REG_TIMER_CTRL, 0x80); + + // "Allow FM chips to control the waveform of each operator": + OPL_WriteRegister(OPL_REG_WAVEFORM_ENABLE, 0x20); + + // Keyboard split point on (?) + OPL_WriteRegister(OPL_REG_FM_MODE, 0x40); +} + + + +void OPL_SetPaused(int paused) +{ + opl_paused = paused; +} + + + + + + + + + diff --git a/components/doom/prboom/opl.h b/components/doom/prboom/opl.h new file mode 100644 index 0000000..d504023 --- /dev/null +++ b/components/doom/prboom/opl.h @@ -0,0 +1,123 @@ +// Emacs style mode select -*- C++ -*- +//----------------------------------------------------------------------------- +// +// Copyright(C) 2009 Simon Howard +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +// 02111-1307, USA. +// +// DESCRIPTION: +// OPL interface. +// +//----------------------------------------------------------------------------- + + +#ifndef OPL_OPL_H +#define OPL_OPL_H + +typedef void (*opl_callback_t)(void *data); + +typedef enum +{ + OPL_REGISTER_PORT = 0, + OPL_DATA_PORT = 1 +} opl_port_t; + +#define OPL_NUM_OPERATORS 21 +#define OPL_NUM_VOICES 9 + +#define OPL_REG_WAVEFORM_ENABLE 0x01 +#define OPL_REG_TIMER1 0x02 +#define OPL_REG_TIMER2 0x03 +#define OPL_REG_TIMER_CTRL 0x04 +#define OPL_REG_FM_MODE 0x08 + +// Operator registers (21 of each): + +#define OPL_REGS_TREMOLO 0x20 +#define OPL_REGS_LEVEL 0x40 +#define OPL_REGS_ATTACK 0x60 +#define OPL_REGS_SUSTAIN 0x80 +#define OPL_REGS_WAVEFORM 0xE0 + +// Voice registers (9 of each): + +#define OPL_REGS_FREQ_1 0xA0 +#define OPL_REGS_FREQ_2 0xB0 +#define OPL_REGS_FEEDBACK 0xC0 + +// +// Low-level functions. +// + +// Initialize the OPL subsystem. + +int OPL_Init(unsigned int port_base); + +// Shut down the OPL subsystem. + +void OPL_Shutdown(void); + + +// Write to one of the OPL I/O ports: + +void OPL_WritePort(opl_port_t port, unsigned int value); + +// Read from one of the OPL I/O ports: + +unsigned int OPL_ReadPort(opl_port_t port); + +// +// Higher-level functions. +// + +// Read the cuurrent status byte of the OPL chip. + +unsigned int OPL_ReadStatus(void); + +// Write to an OPL register. + +void OPL_WriteRegister(int reg, int value); + +// Perform a detection sequence to determine that an +// OPL chip is present. + +int OPL_Detect(void); + +// Initialize all registers, performed on startup. + +void OPL_InitRegisters(void); + + +// Block until the specified number of milliseconds have elapsed. + +void OPL_Delay(unsigned int ms); + +// Pause the OPL callbacks. + +void OPL_SetPaused(int paused); + + +extern unsigned int opl_sample_rate; + +void OPL_Render_Samples (void *dest, unsigned nsamp); + + +void OPL_SetCallback(unsigned int ms, opl_callback_t callback, void *data); + +void OPL_ClearCallbacks(void); + +#endif + diff --git a/components/doom/prboom/opl_queue.c b/components/doom/prboom/opl_queue.c new file mode 100644 index 0000000..2849bb0 --- /dev/null +++ b/components/doom/prboom/opl_queue.c @@ -0,0 +1,280 @@ +// Emacs style mode select -*- C++ -*- +//----------------------------------------------------------------------------- +// +// Copyright(C) 2009 Simon Howard +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +// 02111-1307, USA. +// +// DESCRIPTION: +// Queue of waiting callbacks, stored in a binary min heap, so that we +// can always get the first callback. +// +//----------------------------------------------------------------------------- + +#include +#include +#include "lprintf.h" + +#include "opl_queue.h" + +#define MAX_OPL_QUEUE 64 + +typedef struct +{ + opl_callback_t callback; + void *data; + unsigned int time; +} opl_queue_entry_t; + +struct opl_callback_queue_s +{ + opl_queue_entry_t entries[MAX_OPL_QUEUE]; + int num_entries; +}; + +opl_callback_queue_t *OPL_Queue_Create(void) +{ + opl_callback_queue_t *queue; + + queue = malloc(sizeof(opl_callback_queue_t)); + queue->num_entries = 0; + + return queue; +} + +void OPL_Queue_Destroy(opl_callback_queue_t *queue) +{ + free(queue); +} + +int OPL_Queue_IsEmpty(opl_callback_queue_t *queue) +{ + return queue->num_entries == 0; +} + +void OPL_Queue_Clear(opl_callback_queue_t *queue) +{ + queue->num_entries = 0; +} + +void OPL_Queue_Push(opl_callback_queue_t *queue, + opl_callback_t callback, void *data, + unsigned int time) +{ + int entry_id; + int parent_id; + + if (queue->num_entries >= MAX_OPL_QUEUE) + { + lprintf (LO_WARN, "OPL_Queue_Push: Exceeded maximum callbacks\n"); + return; + } + + // Add to last queue entry. + + entry_id = queue->num_entries; + ++queue->num_entries; + + // Shift existing entries down in the heap. + + while (entry_id > 0) + { + parent_id = (entry_id - 1) / 2; + + // Is the heap condition satisfied? + + if (time >= queue->entries[parent_id].time) + { + break; + } + + // Move the existing entry down in the heap. + + memcpy(&queue->entries[entry_id], + &queue->entries[parent_id], + sizeof(opl_queue_entry_t)); + + // Advance to the parent. + + entry_id = parent_id; + } + + // Insert new callback data. + + queue->entries[entry_id].callback = callback; + queue->entries[entry_id].data = data; + queue->entries[entry_id].time = time; +} + +int OPL_Queue_Pop(opl_callback_queue_t *queue, + opl_callback_t *callback, void **data) +{ + opl_queue_entry_t *entry; + int child1, child2; + int i, next_i; + + // Empty? + + if (queue->num_entries <= 0) + { + return 0; + } + + // Store the result: + + *callback = queue->entries[0].callback; + *data = queue->entries[0].data; + + // Decrease the heap size, and keep pointer to the last entry in + // the heap, which must now be percolated down from the top. + + --queue->num_entries; + entry = &queue->entries[queue->num_entries]; + + // Percolate down. + + i = 0; + + for (;;) + { + child1 = i * 2 + 1; + child2 = i * 2 + 2; + + if (child1 < queue->num_entries + && queue->entries[child1].time < entry->time) + { + // Left child is less than entry. + // Use the minimum of left and right children. + + if (child2 < queue->num_entries + && queue->entries[child2].time < queue->entries[child1].time) + { + next_i = child2; + } + else + { + next_i = child1; + } + } + else if (child2 < queue->num_entries + && queue->entries[child2].time < entry->time) + { + // Right child is less than entry. Go down the right side. + + next_i = child2; + } + else + { + // Finished percolating. + break; + } + + // Percolate the next value up and advance. + + memcpy(&queue->entries[i], + &queue->entries[next_i], + sizeof(opl_queue_entry_t)); + i = next_i; + } + + // Store the old last-entry at its new position. + + memcpy(&queue->entries[i], entry, sizeof(opl_queue_entry_t)); + + return 1; +} + +unsigned int OPL_Queue_Peek(opl_callback_queue_t *queue) +{ + if (queue->num_entries > 0) + { + return queue->entries[0].time; + } + else + { + return 0; + } +} + +#ifdef TEST + +#include + +static void PrintQueueNode(opl_callback_queue_t *queue, int node, int depth) +{ + int i; + + if (node >= queue->num_entries) + { + return; + } + + for (i=0; ientries[node].time); + + PrintQueueNode(queue, node * 2 + 1, depth + 1); + PrintQueueNode(queue, node * 2 + 2, depth + 1); +} + +static void PrintQueue(opl_callback_queue_t *queue) +{ + PrintQueueNode(queue, 0, 0); +} + +int main() +{ + opl_callback_queue_t *queue; + int iteration; + + queue = OPL_Queue_Create(); + + for (iteration=0; iteration<5000; ++iteration) + { + opl_callback_t callback; + void *data; + unsigned int time; + unsigned int newtime; + int i; + + for (i=0; i= time); + time = newtime; + } + + assert(OPL_Queue_IsEmpty(queue)); + assert(!OPL_Queue_Pop(queue, &callback, &data)); + } +} + +#endif + diff --git a/components/doom/prboom/opl_queue.h b/components/doom/prboom/opl_queue.h new file mode 100644 index 0000000..2447702 --- /dev/null +++ b/components/doom/prboom/opl_queue.h @@ -0,0 +1,45 @@ +// Emacs style mode select -*- C++ -*- +//----------------------------------------------------------------------------- +// +// Copyright(C) 2009 Simon Howard +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +// 02111-1307, USA. +// +// DESCRIPTION: +// OPL callback queue. +// +//----------------------------------------------------------------------------- + +#ifndef OPL_QUEUE_H +#define OPL_QUEUE_H + +#include "opl.h" + +typedef struct opl_callback_queue_s opl_callback_queue_t; + +opl_callback_queue_t *OPL_Queue_Create(void); +int OPL_Queue_IsEmpty(opl_callback_queue_t *queue); +void OPL_Queue_Clear(opl_callback_queue_t *queue); +void OPL_Queue_Destroy(opl_callback_queue_t *queue); +void OPL_Queue_Push(opl_callback_queue_t *queue, + opl_callback_t callback, void *data, + unsigned int time); +int OPL_Queue_Pop(opl_callback_queue_t *queue, + opl_callback_t *callback, void **data); +unsigned int OPL_Queue_Peek(opl_callback_queue_t *queue); + +#endif /* #ifndef OPL_QUEUE_H */ + diff --git a/components/doom/prboom/oplplayer.c b/components/doom/prboom/oplplayer.c new file mode 100644 index 0000000..5e543fd --- /dev/null +++ b/components/doom/prboom/oplplayer.c @@ -0,0 +1,1447 @@ +// Emacs style mode select -*- C++ -*- +//----------------------------------------------------------------------------- +// +// Copyright(C) 1993-1996 Id Software, Inc. +// Copyright(C) 2005 Simon Howard +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +// 02111-1307, USA. +// +// DESCRIPTION: +// System interface for music. +// +//----------------------------------------------------------------------------- + +#include +#include +#include + +#include "doomdef.h" + +#include "m_misc.h" +#include "s_sound.h" +#include "w_wad.h" +#include "z_zone.h" + +#include "opl.h" +#include "midifile.h" + +#include "oplplayer.h" + +#include "lprintf.h" + +// #define OPL_MIDI_DEBUG + +#define MAXMIDLENGTH (96 * 1024) +#define GENMIDI_NUM_INSTRS 128 + +#define GENMIDI_HEADER "#OPL_II#" +#define GENMIDI_FLAG_FIXED 0x0001 /* fixed pitch */ +#define GENMIDI_FLAG_2VOICE 0x0004 /* double voice (OPL3) */ + +#define PACKEDATTR __attribute__((packed)) + +typedef struct +{ + byte tremolo; + byte attack; + byte sustain; + byte waveform; + byte scale; + byte level; +} PACKEDATTR genmidi_op_t; + +typedef struct +{ + genmidi_op_t modulator; + byte feedback; + genmidi_op_t carrier; + byte unused; + short base_note_offset; +} PACKEDATTR genmidi_voice_t; + +typedef struct +{ + unsigned short flags; + byte fine_tuning; + byte fixed_note; + + genmidi_voice_t voices[2]; +} PACKEDATTR genmidi_instr_t; + +// Data associated with a channel of a track that is currently playing. + +typedef struct +{ + // The instrument currently used for this track. + + const genmidi_instr_t *instrument; + + // Volume level + + int volume; + + // Pitch bend value: + + int bend; + +} opl_channel_data_t; + +// Data associated with a track that is currently playing. + +typedef struct +{ + // Data for each channel. + + opl_channel_data_t channels[MIDI_CHANNELS_PER_TRACK]; + + // Track iterator used to read new events. + + midi_track_iter_t *iter; + + // Tempo control variables + + unsigned int ticks_per_beat; + unsigned int ms_per_beat; +} opl_track_data_t; + +typedef struct opl_voice_s opl_voice_t; + +struct opl_voice_s +{ + // Index of this voice: + int index; + + // The operators used by this voice: + int op1, op2; + + // Currently-loaded instrument data + const genmidi_instr_t *current_instr; + + // The voice number in the instrument to use. + // This is normally set to zero; if this is a double voice + // instrument, it may be one. + unsigned int current_instr_voice; + + // The channel currently using this voice. + opl_channel_data_t *channel; + + // The midi key that this voice is playing. + unsigned int key; + + // The note being played. This is normally the same as + // the key, but if the instrument is a fixed pitch + // instrument, it is different. + unsigned int note; + + // The frequency value being used. + unsigned int freq; + + // The volume of the note being played on this channel. + unsigned int note_volume; + + // The current volume (register value) that has been set for this channel. + unsigned int reg_volume; + + // Next in linked list; a voice is always either in the + // free list or the allocated list. + opl_voice_t *next; +}; + +// Operators used by the different voices. + +static const int voice_operators[2][OPL_NUM_VOICES] = { + { 0x00, 0x01, 0x02, 0x08, 0x09, 0x0a, 0x10, 0x11, 0x12 }, + { 0x03, 0x04, 0x05, 0x0b, 0x0c, 0x0d, 0x13, 0x14, 0x15 } +}; + +// Frequency values to use for each note. + +static const unsigned short frequency_curve[] = { + + 0x133, 0x133, 0x134, 0x134, 0x135, 0x136, 0x136, 0x137, // -1 + 0x137, 0x138, 0x138, 0x139, 0x139, 0x13a, 0x13b, 0x13b, + 0x13c, 0x13c, 0x13d, 0x13d, 0x13e, 0x13f, 0x13f, 0x140, + 0x140, 0x141, 0x142, 0x142, 0x143, 0x143, 0x144, 0x144, + + 0x145, 0x146, 0x146, 0x147, 0x147, 0x148, 0x149, 0x149, // -2 + 0x14a, 0x14a, 0x14b, 0x14c, 0x14c, 0x14d, 0x14d, 0x14e, + 0x14f, 0x14f, 0x150, 0x150, 0x151, 0x152, 0x152, 0x153, + 0x153, 0x154, 0x155, 0x155, 0x156, 0x157, 0x157, 0x158, + + // These are used for the first seven MIDI note values: + + 0x158, 0x159, 0x15a, 0x15a, 0x15b, 0x15b, 0x15c, 0x15d, // 0 + 0x15d, 0x15e, 0x15f, 0x15f, 0x160, 0x161, 0x161, 0x162, + 0x162, 0x163, 0x164, 0x164, 0x165, 0x166, 0x166, 0x167, + 0x168, 0x168, 0x169, 0x16a, 0x16a, 0x16b, 0x16c, 0x16c, + + 0x16d, 0x16e, 0x16e, 0x16f, 0x170, 0x170, 0x171, 0x172, // 1 + 0x172, 0x173, 0x174, 0x174, 0x175, 0x176, 0x176, 0x177, + 0x178, 0x178, 0x179, 0x17a, 0x17a, 0x17b, 0x17c, 0x17c, + 0x17d, 0x17e, 0x17e, 0x17f, 0x180, 0x181, 0x181, 0x182, + + 0x183, 0x183, 0x184, 0x185, 0x185, 0x186, 0x187, 0x188, // 2 + 0x188, 0x189, 0x18a, 0x18a, 0x18b, 0x18c, 0x18d, 0x18d, + 0x18e, 0x18f, 0x18f, 0x190, 0x191, 0x192, 0x192, 0x193, + 0x194, 0x194, 0x195, 0x196, 0x197, 0x197, 0x198, 0x199, + + 0x19a, 0x19a, 0x19b, 0x19c, 0x19d, 0x19d, 0x19e, 0x19f, // 3 + 0x1a0, 0x1a0, 0x1a1, 0x1a2, 0x1a3, 0x1a3, 0x1a4, 0x1a5, + 0x1a6, 0x1a6, 0x1a7, 0x1a8, 0x1a9, 0x1a9, 0x1aa, 0x1ab, + 0x1ac, 0x1ad, 0x1ad, 0x1ae, 0x1af, 0x1b0, 0x1b0, 0x1b1, + + 0x1b2, 0x1b3, 0x1b4, 0x1b4, 0x1b5, 0x1b6, 0x1b7, 0x1b8, // 4 + 0x1b8, 0x1b9, 0x1ba, 0x1bb, 0x1bc, 0x1bc, 0x1bd, 0x1be, + 0x1bf, 0x1c0, 0x1c0, 0x1c1, 0x1c2, 0x1c3, 0x1c4, 0x1c4, + 0x1c5, 0x1c6, 0x1c7, 0x1c8, 0x1c9, 0x1c9, 0x1ca, 0x1cb, + + 0x1cc, 0x1cd, 0x1ce, 0x1ce, 0x1cf, 0x1d0, 0x1d1, 0x1d2, // 5 + 0x1d3, 0x1d3, 0x1d4, 0x1d5, 0x1d6, 0x1d7, 0x1d8, 0x1d8, + 0x1d9, 0x1da, 0x1db, 0x1dc, 0x1dd, 0x1de, 0x1de, 0x1df, + 0x1e0, 0x1e1, 0x1e2, 0x1e3, 0x1e4, 0x1e5, 0x1e5, 0x1e6, + + 0x1e7, 0x1e8, 0x1e9, 0x1ea, 0x1eb, 0x1ec, 0x1ed, 0x1ed, // 6 + 0x1ee, 0x1ef, 0x1f0, 0x1f1, 0x1f2, 0x1f3, 0x1f4, 0x1f5, + 0x1f6, 0x1f6, 0x1f7, 0x1f8, 0x1f9, 0x1fa, 0x1fb, 0x1fc, + 0x1fd, 0x1fe, 0x1ff, 0x200, 0x201, 0x201, 0x202, 0x203, + + // First note of looped range used for all octaves: + + 0x204, 0x205, 0x206, 0x207, 0x208, 0x209, 0x20a, 0x20b, // 7 + 0x20c, 0x20d, 0x20e, 0x20f, 0x210, 0x210, 0x211, 0x212, + 0x213, 0x214, 0x215, 0x216, 0x217, 0x218, 0x219, 0x21a, + 0x21b, 0x21c, 0x21d, 0x21e, 0x21f, 0x220, 0x221, 0x222, + + 0x223, 0x224, 0x225, 0x226, 0x227, 0x228, 0x229, 0x22a, // 8 + 0x22b, 0x22c, 0x22d, 0x22e, 0x22f, 0x230, 0x231, 0x232, + 0x233, 0x234, 0x235, 0x236, 0x237, 0x238, 0x239, 0x23a, + 0x23b, 0x23c, 0x23d, 0x23e, 0x23f, 0x240, 0x241, 0x242, + + 0x244, 0x245, 0x246, 0x247, 0x248, 0x249, 0x24a, 0x24b, // 9 + 0x24c, 0x24d, 0x24e, 0x24f, 0x250, 0x251, 0x252, 0x253, + 0x254, 0x256, 0x257, 0x258, 0x259, 0x25a, 0x25b, 0x25c, + 0x25d, 0x25e, 0x25f, 0x260, 0x262, 0x263, 0x264, 0x265, + + 0x266, 0x267, 0x268, 0x269, 0x26a, 0x26c, 0x26d, 0x26e, // 10 + 0x26f, 0x270, 0x271, 0x272, 0x273, 0x275, 0x276, 0x277, + 0x278, 0x279, 0x27a, 0x27b, 0x27d, 0x27e, 0x27f, 0x280, + 0x281, 0x282, 0x284, 0x285, 0x286, 0x287, 0x288, 0x289, + + 0x28b, 0x28c, 0x28d, 0x28e, 0x28f, 0x290, 0x292, 0x293, // 11 + 0x294, 0x295, 0x296, 0x298, 0x299, 0x29a, 0x29b, 0x29c, + 0x29e, 0x29f, 0x2a0, 0x2a1, 0x2a2, 0x2a4, 0x2a5, 0x2a6, + 0x2a7, 0x2a9, 0x2aa, 0x2ab, 0x2ac, 0x2ae, 0x2af, 0x2b0, + + 0x2b1, 0x2b2, 0x2b4, 0x2b5, 0x2b6, 0x2b7, 0x2b9, 0x2ba, // 12 + 0x2bb, 0x2bd, 0x2be, 0x2bf, 0x2c0, 0x2c2, 0x2c3, 0x2c4, + 0x2c5, 0x2c7, 0x2c8, 0x2c9, 0x2cb, 0x2cc, 0x2cd, 0x2ce, + 0x2d0, 0x2d1, 0x2d2, 0x2d4, 0x2d5, 0x2d6, 0x2d8, 0x2d9, + + 0x2da, 0x2dc, 0x2dd, 0x2de, 0x2e0, 0x2e1, 0x2e2, 0x2e4, // 13 + 0x2e5, 0x2e6, 0x2e8, 0x2e9, 0x2ea, 0x2ec, 0x2ed, 0x2ee, + 0x2f0, 0x2f1, 0x2f2, 0x2f4, 0x2f5, 0x2f6, 0x2f8, 0x2f9, + 0x2fb, 0x2fc, 0x2fd, 0x2ff, 0x300, 0x302, 0x303, 0x304, + + 0x306, 0x307, 0x309, 0x30a, 0x30b, 0x30d, 0x30e, 0x310, // 14 + 0x311, 0x312, 0x314, 0x315, 0x317, 0x318, 0x31a, 0x31b, + 0x31c, 0x31e, 0x31f, 0x321, 0x322, 0x324, 0x325, 0x327, + 0x328, 0x329, 0x32b, 0x32c, 0x32e, 0x32f, 0x331, 0x332, + + 0x334, 0x335, 0x337, 0x338, 0x33a, 0x33b, 0x33d, 0x33e, // 15 + 0x340, 0x341, 0x343, 0x344, 0x346, 0x347, 0x349, 0x34a, + 0x34c, 0x34d, 0x34f, 0x350, 0x352, 0x353, 0x355, 0x357, + 0x358, 0x35a, 0x35b, 0x35d, 0x35e, 0x360, 0x361, 0x363, + + 0x365, 0x366, 0x368, 0x369, 0x36b, 0x36c, 0x36e, 0x370, // 16 + 0x371, 0x373, 0x374, 0x376, 0x378, 0x379, 0x37b, 0x37c, + 0x37e, 0x380, 0x381, 0x383, 0x384, 0x386, 0x388, 0x389, + 0x38b, 0x38d, 0x38e, 0x390, 0x392, 0x393, 0x395, 0x397, + + 0x398, 0x39a, 0x39c, 0x39d, 0x39f, 0x3a1, 0x3a2, 0x3a4, // 17 + 0x3a6, 0x3a7, 0x3a9, 0x3ab, 0x3ac, 0x3ae, 0x3b0, 0x3b1, + 0x3b3, 0x3b5, 0x3b7, 0x3b8, 0x3ba, 0x3bc, 0x3bd, 0x3bf, + 0x3c1, 0x3c3, 0x3c4, 0x3c6, 0x3c8, 0x3ca, 0x3cb, 0x3cd, + + // The last note has an incomplete range, and loops round back to + // the start. Note that the last value is actually a buffer overrun + // and does not fit with the other values. + + 0x3cf, 0x3d1, 0x3d2, 0x3d4, 0x3d6, 0x3d8, 0x3da, 0x3db, // 18 + 0x3dd, 0x3df, 0x3e1, 0x3e3, 0x3e4, 0x3e6, 0x3e8, 0x3ea, + 0x3ec, 0x3ed, 0x3ef, 0x3f1, 0x3f3, 0x3f5, 0x3f6, 0x3f8, + 0x3fa, 0x3fc, 0x3fe, 0x36c, +}; + +// Mapping from MIDI volume level to OPL level value. + +static const unsigned int volume_mapping_table[] = { + 0, 1, 3, 5, 6, 8, 10, 11, + 13, 14, 16, 17, 19, 20, 22, 23, + 25, 26, 27, 29, 30, 32, 33, 34, + 36, 37, 39, 41, 43, 45, 47, 49, + 50, 52, 54, 55, 57, 59, 60, 61, + 63, 64, 66, 67, 68, 69, 71, 72, + 73, 74, 75, 76, 77, 79, 80, 81, + 82, 83, 84, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 92, 93, 94, 95, + 96, 96, 97, 98, 99, 99, 100, 101, + 101, 102, 103, 103, 104, 105, 105, 106, + 107, 107, 108, 109, 109, 110, 110, 111, + 112, 112, 113, 113, 114, 114, 115, 115, + 116, 117, 117, 118, 118, 119, 119, 120, + 120, 121, 121, 122, 122, 123, 123, 123, + 124, 124, 125, 125, 126, 126, 127, 127 +}; + +static boolean music_initialized = false; + +//static boolean musicpaused = false; +static int current_music_volume; + +// GENMIDI lump instrument data: + +static const genmidi_instr_t *main_instrs; +static const genmidi_instr_t *percussion_instrs; + +// Voices: + +static opl_voice_t voices[OPL_NUM_VOICES]; +static opl_voice_t *voice_free_list; +static opl_voice_t *voice_alloced_list; + +// Track data for playing tracks: + +static opl_track_data_t *tracks; +static unsigned int num_tracks = 0; +static unsigned int running_tracks = 0; +static boolean song_looping; + +// Configuration file variable, containing the port number for the +// adlib chip. + +int opl_io_port = 0x388; + +// Load instrument table from GENMIDI lump: + +static boolean LoadInstrumentTable(void) +{ + const byte *lump; + + lump = W_CacheLumpName("GENMIDI"); + + // Check header + + if (strncmp((const char *) lump, GENMIDI_HEADER, strlen(GENMIDI_HEADER)) != 0) + { + W_UnlockLumpName("GENMIDI"); + + return false; + } + + main_instrs = (const genmidi_instr_t *) (lump + strlen(GENMIDI_HEADER)); + percussion_instrs = main_instrs + GENMIDI_NUM_INSTRS; + + return true; +} + +// Get the next available voice from the freelist. + +static opl_voice_t *GetFreeVoice(void) +{ + opl_voice_t *result; + + // None available? + + if (voice_free_list == NULL) + { + return NULL; + } + + // Remove from free list + + result = voice_free_list; + voice_free_list = voice_free_list->next; + + // Add to allocated list + + result->next = voice_alloced_list; + voice_alloced_list = result; + + return result; +} + +// Remove a voice from the allocated voices list. + +static void RemoveVoiceFromAllocedList(opl_voice_t *voice) +{ + opl_voice_t **rover; + + rover = &voice_alloced_list; + + // Search the list until we find the voice, then remove it. + + while (*rover != NULL) + { + if (*rover == voice) + { + *rover = voice->next; + voice->next = NULL; + break; + } + + rover = &(*rover)->next; + } +} + +// Release a voice back to the freelist. + +static void ReleaseVoice(opl_voice_t *voice) +{ + opl_voice_t **rover; + + voice->channel = NULL; + voice->note = 0; + + // Remove from alloced list. + + RemoveVoiceFromAllocedList(voice); + + // Search to the end of the freelist (This is how Doom behaves!) + + rover = &voice_free_list; + + while (*rover != NULL) + { + rover = &(*rover)->next; + } + + *rover = voice; + voice->next = NULL; +} + +// Load data to the specified operator + +static void LoadOperatorData(int operator, + const genmidi_op_t *data, + boolean max_level) +{ + int level; + + // The scale and level fields must be combined for the level register. + // For the carrier wave we always set the maximum level. + + level = (data->scale & 0xc0) | (data->level & 0x3f); + + if (max_level) + { + level |= 0x3f; + } + + OPL_WriteRegister(OPL_REGS_LEVEL + operator, level); + OPL_WriteRegister(OPL_REGS_TREMOLO + operator, data->tremolo); + OPL_WriteRegister(OPL_REGS_ATTACK + operator, data->attack); + OPL_WriteRegister(OPL_REGS_SUSTAIN + operator, data->sustain); + OPL_WriteRegister(OPL_REGS_WAVEFORM + operator, data->waveform); +} + +// Set the instrument for a particular voice. + +static void SetVoiceInstrument(opl_voice_t *voice, + const genmidi_instr_t *instr, + unsigned int instr_voice) +{ + const genmidi_voice_t *data; + unsigned int modulating; + + // Instrument already set for this channel? + + if (voice->current_instr == instr + && voice->current_instr_voice == instr_voice) + { + return; + } + + voice->current_instr = instr; + voice->current_instr_voice = instr_voice; + + data = &instr->voices[instr_voice]; + + // Are we usind modulated feedback mode? + + modulating = (data->feedback & 0x01) == 0; + + // Doom loads the second operator first, then the first. + // The carrier is set to minimum volume until the voice volume + // is set in SetVoiceVolume (below). If we are not using + // modulating mode, we must set both to minimum volume. + + LoadOperatorData(voice->op2, &data->carrier, true); + LoadOperatorData(voice->op1, &data->modulator, !modulating); + + // Set feedback register that control the connection between the + // two operators. Turn on bits in the upper nybble; I think this + // is for OPL3, where it turns on channel A/B. + + OPL_WriteRegister(OPL_REGS_FEEDBACK + voice->index, + data->feedback | 0x30); + + // Hack to force a volume update. + + voice->reg_volume = 999; +} + +static void SetVoiceVolume(opl_voice_t *voice, unsigned int volume) +{ + const genmidi_voice_t *opl_voice; + unsigned int full_volume; + unsigned int op_volume; + unsigned int reg_volume; + + voice->note_volume = volume; + + opl_voice = &voice->current_instr->voices[voice->current_instr_voice]; + + // Multiply note volume and channel volume to get the actual volume. + + full_volume = (volume_mapping_table[voice->note_volume] + * volume_mapping_table[voice->channel->volume] + * volume_mapping_table[current_music_volume]) / (127 * 127); + + // The volume of each instrument can be controlled via GENMIDI: + + op_volume = 0x3f - opl_voice->carrier.level; + + // The volume value to use in the register: + + reg_volume = (op_volume * full_volume) / 128; + reg_volume = (0x3f - reg_volume) | opl_voice->carrier.scale; + + // Update the volume register(s) if necessary. + + if (reg_volume != voice->reg_volume) + { + voice->reg_volume = reg_volume; + + OPL_WriteRegister(OPL_REGS_LEVEL + voice->op2, reg_volume); + + // If we are using non-modulated feedback mode, we must set the + // volume for both voices. + // Note that the same register volume value is written for + // both voices, always calculated from the carrier's level + // value. + + if ((opl_voice->feedback & 0x01) != 0) + { + OPL_WriteRegister(OPL_REGS_LEVEL + voice->op1, reg_volume); + } + } +} + +// Initialize the voice table and freelist + +static void InitVoices(void) +{ + int i; + + // Start with an empty free list. + + voice_free_list = NULL; + + // Initialize each voice. + + for (i=0; iindex, voice->freq >> 8); +} + +// Get the frequency that we should be using for a voice. + +static void KeyOffEvent(opl_track_data_t *track, midi_event_t *event) +{ + opl_channel_data_t *channel; + unsigned int key; + unsigned int i; + + /* + printf("note off: channel %i, %i, %i\n", + event->data.channel.channel, + event->data.channel.param1, + event->data.channel.param2); + */ + + channel = &track->channels[event->data.channel.channel]; + key = event->data.channel.param1; + + // Turn off voices being used to play this key. + // If it is a double voice instrument there will be two. + + for (i=0; inext) + { + if (rover->current_instr_voice != 0 + || (rover->channel > channel + && CompareChannelPriorities(channel, rover->channel) > 0)) + { + result = rover; + break; + } + } + + // If we didn't find a voice, find an existing voice being used to + // play a note on the same channel, and use that. + + if (result == NULL) + { + for (rover = voice_alloced_list; rover != NULL; rover = rover->next) + { + if (rover->channel == channel) + { + result = rover; + break; + } + } + } + + // Still nothing found? Give up and just use the first voice in + // the list. + + if (result == NULL) + { + result = voice_alloced_list; + } + + // Stop playing this voice playing and release it back to the free + // list. + + VoiceKeyOff(result); + ReleaseVoice(result); + + // Re-allocate the voice again and return it. + + return GetFreeVoice(); +} + + +static unsigned int FrequencyForVoice(opl_voice_t *voice) +{ + const genmidi_voice_t *gm_voice; + unsigned int freq_index; + unsigned int octave; + unsigned int sub_index; + unsigned int note; + + note = voice->note; + + // Apply note offset. + // Don't apply offset if the instrument is a fixed note instrument. + + gm_voice = &voice->current_instr->voices[voice->current_instr_voice]; + + if ((voice->current_instr->flags & GENMIDI_FLAG_FIXED) == 0) + { + note += (signed short) doom_htows(gm_voice->base_note_offset); + } + + // Avoid possible overflow due to base note offset: + + if (note > 0x7f) + { + note = voice->note; + } + + freq_index = 64 + 32 * note + voice->channel->bend; + + // If this is the second voice of a double voice instrument, the + // frequency index can be adjusted by the fine tuning field. + + if (voice->current_instr_voice != 0) + { + freq_index += (voice->current_instr->fine_tuning / 2) - 64; + } + + // The first 7 notes use the start of the table, while + // consecutive notes loop around the latter part. + + if (freq_index < 284) + { + return frequency_curve[freq_index]; + } + + sub_index = (freq_index - 284) % (12 * 32); + octave = (freq_index - 284) / (12 * 32); + + // Once the seventh octave is reached, things break down. + // We can only go up to octave 7 as a maximum anyway (the OPL + // register only has three bits for octave number), but for the + // notes in octave 7, the first five bits have octave=7, the + // following notes have octave=6. This 7/6 pattern repeats in + // following octaves (which are technically impossible to + // represent anyway). + + if (octave >= 7) + { + if (sub_index < 5) + { + octave = 7; + } + else + { + octave = 6; + } + } + + // Calculate the resulting register value to use for the frequency. + + return frequency_curve[sub_index + 284] | (octave << 10); +} + +// Update the frequency that a voice is programmed to use. + +static void UpdateVoiceFrequency(opl_voice_t *voice) +{ + unsigned int freq; + + // Calculate the frequency to use for this voice and update it + // if neccessary. + + freq = FrequencyForVoice(voice); + + if (voice->freq != freq) + { + OPL_WriteRegister(OPL_REGS_FREQ_1 + voice->index, freq & 0xff); + OPL_WriteRegister(OPL_REGS_FREQ_2 + voice->index, (freq >> 8) | 0x20); + + voice->freq = freq; + } +} + +// Program a single voice for an instrument. For a double voice +// instrument (GENMIDI_FLAG_2VOICE), this is called twice for each +// key on event. + +static void VoiceKeyOn(opl_channel_data_t *channel, + const genmidi_instr_t *instrument, + unsigned int instrument_voice, + unsigned int key, + unsigned int volume) +{ + opl_voice_t *voice; + + // Find a voice to use for this new note. + + voice = GetFreeVoice(); + + // If there are no more voices left, we must decide what to do. + // If this is the first voice of the instrument, free an existing + // voice and use that. Otherwise, if this is the second voice, + // it isn't as important; just discard it. + + if (voice == NULL) + { + if (instrument_voice == 0) + { + voice = ReplaceExistingVoice(channel); + } + else + { + return; + } + } + + voice->channel = channel; + voice->key = key; + + // Work out the note to use. This is normally the same as + // the key, unless it is a fixed pitch instrument. + + if ((instrument->flags & GENMIDI_FLAG_FIXED) != 0) + { + voice->note = instrument->fixed_note; + } + else + { + voice->note = key; + } + + // Program the voice with the instrument data: + + SetVoiceInstrument(voice, instrument, instrument_voice); + + // Set the volume level. + + SetVoiceVolume(voice, volume); + + // Write the frequency value to turn the note on. + + voice->freq = 0; + UpdateVoiceFrequency(voice); +} + +static void KeyOnEvent(opl_track_data_t *track, midi_event_t *event) +{ + const genmidi_instr_t *instrument; + opl_channel_data_t *channel; + unsigned int key; + unsigned int volume; + + /* + printf("note on: channel %i, %i, %i\n", + event->data.channel.channel, + event->data.channel.param1, + event->data.channel.param2); + */ + + if (event->data.channel.param2 == 0) + { // NSM + // i have no idea why this is the case, but it is + // note that you don't see this in any of the base doom/doom2 music + KeyOffEvent (track, event); + return; + } + + // The channel. + + channel = &track->channels[event->data.channel.channel]; + key = event->data.channel.param1; + volume = event->data.channel.param2; + + // Percussion channel (10) is treated differently. + + if (event->data.channel.channel == 9) + { + if (key < 35 || key > 81) + { + return; + } + + instrument = &percussion_instrs[key - 35]; + } + else + { + instrument = channel->instrument; + } + + // Find and program a voice for this instrument. If this + // is a double voice instrument, we must do this twice. + + VoiceKeyOn(channel, instrument, 0, key, volume); + + if ((instrument->flags & GENMIDI_FLAG_2VOICE) != 0) + { + VoiceKeyOn(channel, instrument, 1, key, volume); + } +} + +static void ProgramChangeEvent(opl_track_data_t *track, midi_event_t *event) +{ + int channel; + int instrument; + + // Set the instrument used on this channel. + + channel = event->data.channel.channel; + instrument = event->data.channel.param1; + track->channels[channel].instrument = &main_instrs[instrument]; + + // TODO: Look through existing voices that are turned on on this + // channel, and change the instrument. +} + +static void SetChannelVolume(opl_channel_data_t *channel, unsigned int volume) +{ + unsigned int i; + + channel->volume = volume; + + // Update all voices that this channel is using. + + for (i=0; idata.channel.channel, + event->data.channel.param1, + event->data.channel.param2); + */ + + channel = &track->channels[event->data.channel.channel]; + controller = event->data.channel.param1; + param = event->data.channel.param2; + + switch (controller) + { + case MIDI_CONTROLLER_MAIN_VOLUME: + SetChannelVolume(channel, param); + break; + + default: +#ifdef OPL_MIDI_DEBUG + lprintf (LO_WARN, "Unknown MIDI controller type: %i\n", controller); +#endif + break; + } +} + +// Process a pitch bend event. + +static void PitchBendEvent(opl_track_data_t *track, midi_event_t *event) +{ + opl_channel_data_t *channel; + unsigned int i; + + // Update the channel bend value. Only the MSB of the pitch bend + // value is considered: this is what Doom does. + + channel = &track->channels[event->data.channel.channel]; + channel->bend = event->data.channel.param2 - 64; + + // Update all voices for this channel. + + for (i=0; idata.meta.type) + { + // Things we can just ignore. + + case MIDI_META_SEQUENCE_NUMBER: + case MIDI_META_TEXT: + case MIDI_META_COPYRIGHT: + case MIDI_META_TRACK_NAME: + case MIDI_META_INSTR_NAME: + case MIDI_META_LYRICS: + case MIDI_META_MARKER: + case MIDI_META_CUE_POINT: + case MIDI_META_SEQUENCER_SPECIFIC: + break; + + // End of track - actually handled when we run out of events + // in the track, see below. + + case MIDI_META_END_OF_TRACK: + break; + + default: +#ifdef OPL_MIDI_DEBUG + lprintf (LO_WARN, "Unknown MIDI meta event type: %i\n", + event->data.meta.type); +#endif + break; + } +} + +// Process a MIDI event from a track. + +static void ProcessEvent(opl_track_data_t *track, midi_event_t *event) +{ + switch (event->event_type) + { + case MIDI_EVENT_NOTE_OFF: + KeyOffEvent(track, event); + break; + + case MIDI_EVENT_NOTE_ON: + KeyOnEvent(track, event); + break; + + case MIDI_EVENT_CONTROLLER: + ControllerEvent(track, event); + break; + + case MIDI_EVENT_PROGRAM_CHANGE: + ProgramChangeEvent(track, event); + break; + + case MIDI_EVENT_PITCH_BEND: + PitchBendEvent(track, event); + break; + + case MIDI_EVENT_META: + MetaEvent(track, event); + break; + + // SysEx events can be ignored. + + case MIDI_EVENT_SYSEX: + case MIDI_EVENT_SYSEX_SPLIT: + break; + + default: +#ifdef OPL_MIDI_DEBUG + lprintf (LO_WARN, "Unknown MIDI event type %i\n", event->event_type); +#endif + break; + } +} + +static void ScheduleTrack(opl_track_data_t *track); + +// Restart a song from the beginning. + +static void RestartSong(void) +{ + unsigned int i; + + running_tracks = num_tracks; + + // fix buggy songs that forget to terminate notes held over loop point + // sdl_mixer does this as well + for (i=0; iiter, &event)) + { + return; + } + + ProcessEvent(track, event); + + // End of track? + + if (event->event_type == MIDI_EVENT_META + && event->data.meta.type == MIDI_META_END_OF_TRACK) + { + --running_tracks; + + // When all tracks have finished, restart the song. + + if (running_tracks <= 0 && song_looping) + { + RestartSong(); + } + + return; + } + + // Reschedule the callback for the next event in the track. + + ScheduleTrack(track); +} + +static void ScheduleTrack(opl_track_data_t *track) +{ + unsigned int nticks; + unsigned int ms; + static int total = 0; + + // Get the number of milliseconds until the next event. + + nticks = MIDI_GetDeltaTime(track->iter); + ms = (nticks * track->ms_per_beat) / track->ticks_per_beat; + total += ms; + + // Set a timer to be invoked when the next event is + // ready to play. + + OPL_SetCallback(ms, TrackTimerCallback, track); +} + +// Initialize a channel. + +static void InitChannel(opl_track_data_t *track, opl_channel_data_t *channel) +{ + // TODO: Work out sensible defaults? + + channel->instrument = &main_instrs[0]; + channel->volume = 127; + channel->bend = 0; +} + +// Start a MIDI track playing: + +static void StartTrack(const midi_file_t *file, unsigned int track_num) +{ + opl_track_data_t *track; + unsigned int i; + + track = &tracks[track_num]; + track->iter = MIDI_IterateTrack(file, track_num); + track->ticks_per_beat = MIDI_GetFileTimeDivision(file); + + // Default is 120 bpm. + // TODO: this is wrong + + track->ms_per_beat = 500; + + for (i=0; ichannels[i]); + } + + // Schedule the first event. + + ScheduleTrack(track); +} + +// Start playing a mid + +static void I_OPL_PlaySong(const void *handle, int looping) +{ + const midi_file_t *file; + unsigned int i; + + if (!music_initialized || handle == NULL) + { + return; + } + + file = handle; + + // Allocate track data. + + tracks = malloc(MIDI_NumTracks(file) * sizeof(opl_track_data_t)); + + num_tracks = MIDI_NumTracks(file); + running_tracks = num_tracks; + song_looping = looping; + + for (i=0; i 4 && !memcmp(mem, "MThd", 4); +// } + +// now only takes files in MIDI format +static const void *I_OPL_RegisterSong(const void *data, unsigned len) +{ + midi_file_t *result; + midimem_t mf; + + if (!music_initialized) + { + return NULL; + } + mf.len = len; + mf.pos = 0; + mf.data = data; + + // NSM: if a file has a miniscule timecode we have to not load it. + // if it's 0, we'll hang in scheduling and never finish. if it's + // very small but close to 0, there's probably something wrong with it + + // this check of course isn't very accurate, but to actually get the + // time numbers we have to traverse the tracks and everything + if (mf.len < 100) + { + lprintf (LO_WARN, "I_OPL_RegisterSong: Very short MIDI (%i bytes)\n", mf.len); + return NULL; + } + + result = MIDI_LoadFile (&mf); + + if (result == NULL) + { + lprintf (LO_WARN, "I_OPL_RegisterSong: Failed to load MID.\n"); + } + + + return result; +} + + +static void I_OPL_ShutdownMusic(void) +{ + if (music_initialized) + { + // Stop currently-playing track, if there is one: + + I_OPL_StopSong(); + + OPL_Shutdown(); + + // Release GENMIDI lump + + W_UnlockLumpName("GENMIDI"); + + music_initialized = false; + } +} + +// Initialize music subsystem + +int I_OPL_InitMusic(int samplerate) +{ + if (!OPL_Init(samplerate)) + { + //printf("Dude. The Adlib isn't responding.\n"); + return 0; + } + + // Load instruments from GENMIDI lump: + + if (!LoadInstrumentTable()) + { + OPL_Shutdown(); + return false; + } + + InitVoices(); + + tracks = NULL; + num_tracks = 0; + music_initialized = true; + + return 1; +} + +const char *I_OPL_SynthName (void) +{ + return "opl2 synth player"; +} + +void I_OPL_RenderSamples (void *dest, unsigned nsamp) +{ + OPL_Render_Samples (dest, nsamp); +} + +const music_player_t opl_synth_player = +{ + I_OPL_SynthName, + I_OPL_InitMusic, + I_OPL_ShutdownMusic, + I_OPL_SetMusicVolume, + I_OPL_PauseSong, + I_OPL_ResumeSong, + I_OPL_RegisterSong, + I_OPL_UnRegisterSong, + I_OPL_PlaySong, + I_OPL_StopSong, + I_OPL_RenderSamples +}; + + + + diff --git a/components/doom/prboom/oplplayer.h b/components/doom/prboom/oplplayer.h new file mode 100644 index 0000000..c0656d1 --- /dev/null +++ b/components/doom/prboom/oplplayer.h @@ -0,0 +1,73 @@ +// Emacs style mode select -*- C++ -*- +//----------------------------------------------------------------------------- +// +// Copyright(C) 1993-1996 Id Software, Inc. +// Copyright(C) 2005 Simon Howard +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +// 02111-1307, USA. +// +// DESCRIPTION: +// System interface for music. +// +//----------------------------------------------------------------------------- + + +#ifndef OPLPLAYER_H +#define OPLPLAYER_H + +typedef struct +{ + // descriptive name of the player, such as "OPL2 Synth" + const char *(*name)(void); + + // samplerate is in hz. return is 1 for success + int (*init)(int samplerate); + + // deallocate structures, cleanup, ... + void (*shutdown)(void); + + // set volume, 0 = off, 15 = max + void (*setvolume)(int v); + + // pause currently running song. + void (*pause)(void); + + // undo pause + void (*resume)(void); + + // return a player-specific handle, or NULL on failure. + // data does not belong to player, but it will persist as long as unregister is not called + const void *(*registersong)(const void *data, unsigned len); + + // deallocate structures, etc. data is no longer valid + void (*unregistersong)(const void *handle); + + void (*play)(const void *handle, int looping); + + // stop + void (*stop)(void); + + // s16 stereo, with samplerate as specified in init. player needs to be able to handle + // just about anything for nsamp. render can be called even during pause+stop. + void (*render)(void *dest, unsigned nsamp); +} music_player_t; + + + +extern const music_player_t opl_synth_player; + + +#endif diff --git a/components/doom/prboom/p_ceilng.c b/components/doom/prboom/p_ceilng.c new file mode 100644 index 0000000..4d55820 --- /dev/null +++ b/components/doom/prboom/p_ceilng.c @@ -0,0 +1,472 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Ceiling aninmation (lowering, crushing, raising) + * + *-----------------------------------------------------------------------------*/ + +#include "doomstat.h" +#include "r_main.h" +#include "p_spec.h" +#include "p_tick.h" +#include "s_sound.h" +#include "sounds.h" + +// the list of ceilings moving currently, including crushers +ceilinglist_t *activeceilings; + +///////////////////////////////////////////////////////////////// +// +// Ceiling action routine and linedef type handler +// +///////////////////////////////////////////////////////////////// + +// +// T_MoveCeiling +// +// Action routine that moves ceilings. Called once per tick. +// +// Passed a ceiling_t structure that contains all the info about the move. +// see P_SPEC.H for fields. No return. +// +// jff 02/08/98 all cases with labels beginning with gen added to support +// generalized line type behaviors. +// +void T_MoveCeiling (ceiling_t* ceiling) +{ + result_e res; + + switch(ceiling->direction) + { + case 0: + // If ceiling in stasis, do nothing + break; + + case 1: + // Ceiling is moving up + res = T_MovePlane + ( + ceiling->sector, + ceiling->speed, + ceiling->topheight, + false, + 1, + ceiling->direction + ); + + // if not a silent crusher, make moving sound + if (!(leveltime&7)) + { + switch(ceiling->type) + { + case silentCrushAndRaise: + case genSilentCrusher: + break; + default: + S_StartSound((mobj_t *)&ceiling->sector->soundorg,sfx_stnmov); + break; + } + } + + // handle reaching destination height + if (res == pastdest) + { + switch(ceiling->type) + { + // plain movers are just removed + case raiseToHighest: + case genCeiling: + P_RemoveActiveCeiling(ceiling); + break; + + // movers with texture change, change the texture then get removed + case genCeilingChgT: + case genCeilingChg0: + ceiling->sector->special = ceiling->newspecial; + //jff 3/14/98 transfer old special field as well + ceiling->sector->oldspecial = ceiling->oldspecial; + /* fallthrough */ + case genCeilingChg: + ceiling->sector->ceilingpic = ceiling->texture; + P_RemoveActiveCeiling(ceiling); + break; + + // crushers reverse direction at the top + case silentCrushAndRaise: + S_StartSound((mobj_t *)&ceiling->sector->soundorg,sfx_pstop); + /* fallthrough */ + case genSilentCrusher: + case genCrusher: + case fastCrushAndRaise: + case crushAndRaise: + ceiling->direction = -1; + break; + + default: + break; + } + } + break; + + case -1: + // Ceiling moving down + res = T_MovePlane + ( + ceiling->sector, + ceiling->speed, + ceiling->bottomheight, + ceiling->crush, + 1, + ceiling->direction + ); + + // if not silent crusher type make moving sound + if (!(leveltime&7)) + { + switch(ceiling->type) + { + case silentCrushAndRaise: + case genSilentCrusher: + break; + default: + S_StartSound((mobj_t *)&ceiling->sector->soundorg,sfx_stnmov); + } + } + + // handle reaching destination height + if (res == pastdest) + { + switch(ceiling->type) + { + // 02/09/98 jff change slow crushers' speed back to normal + // start back up + case genSilentCrusher: + case genCrusher: + if (ceiling->oldspeedspeed = ceiling->oldspeed; + ceiling->direction = 1; //jff 2/22/98 make it go back up! + break; + + // make platform stop at bottom of all crusher strokes + // except generalized ones, reset speed, start back up + case silentCrushAndRaise: + S_StartSound((mobj_t *)&ceiling->sector->soundorg,sfx_pstop); + /* fallthrough */ + case crushAndRaise: + ceiling->speed = CEILSPEED; + /* fallthrough */ + case fastCrushAndRaise: + ceiling->direction = 1; + break; + + // in the case of ceiling mover/changer, change the texture + // then remove the active ceiling + case genCeilingChgT: + case genCeilingChg0: + ceiling->sector->special = ceiling->newspecial; + //jff add to fix bug in special transfers from changes + ceiling->sector->oldspecial = ceiling->oldspecial; + /* fallthrough */ + case genCeilingChg: + ceiling->sector->ceilingpic = ceiling->texture; + P_RemoveActiveCeiling(ceiling); + break; + + // all other case, just remove the active ceiling + case lowerAndCrush: + case lowerToFloor: + case lowerToLowest: + case lowerToMaxFloor: + case genCeiling: + P_RemoveActiveCeiling(ceiling); + break; + + default: + break; + } + } + else // ( res != pastdest ) + { + // handle the crusher encountering an obstacle + if (res == crushed) + { + switch(ceiling->type) + { + //jff 02/08/98 slow down slow crushers on obstacle + case genCrusher: + case genSilentCrusher: + if (ceiling->oldspeed < CEILSPEED*3) + ceiling->speed = CEILSPEED / 8; + break; + case silentCrushAndRaise: + case crushAndRaise: + case lowerAndCrush: + ceiling->speed = CEILSPEED / 8; + break; + + default: + break; + } + } + } + break; + } +} + + +// +// EV_DoCeiling +// +// Move a ceiling up/down or start a crusher +// +// Passed the linedef activating the function and the type of function desired +// returns true if a thinker started +// +int EV_DoCeiling +( line_t* line, + ceiling_e type ) +{ + int secnum; + int rtn; + sector_t* sec; + ceiling_t* ceiling; + + secnum = -1; + rtn = 0; + + // Reactivate in-stasis ceilings...for certain types. + // This restarts a crusher after it has been stopped + switch(type) + { + case fastCrushAndRaise: + case silentCrushAndRaise: + case crushAndRaise: + //jff 4/5/98 return if activated + rtn = P_ActivateInStasisCeiling(line); + default: + break; + } + + // affects all sectors with the same tag as the linedef + while ((secnum = P_FindSectorFromLineTag(line,secnum)) >= 0) + { + sec = §ors[secnum]; + + // if ceiling already moving, don't start a second function on it + if (P_SectorActive(ceiling_special,sec)) //jff 2/22/98 + continue; + + // create a new ceiling thinker + rtn = 1; + ceiling = Z_Calloc(1, sizeof(*ceiling), PU_LEVSPEC, 0); + P_AddThinker (&ceiling->thinker); + sec->ceilingdata = ceiling; //jff 2/22/98 + ceiling->thinker.function = T_MoveCeiling; + ceiling->sector = sec; + ceiling->crush = false; + + // setup ceiling structure according to type of function + switch(type) + { + case fastCrushAndRaise: + ceiling->crush = true; + ceiling->topheight = sec->ceilingheight; + ceiling->bottomheight = sec->floorheight + (8*FRACUNIT); + ceiling->direction = -1; + ceiling->speed = CEILSPEED * 2; + break; + + case silentCrushAndRaise: + case crushAndRaise: + ceiling->crush = true; + ceiling->topheight = sec->ceilingheight; + /* fallthrough */ + case lowerAndCrush: + case lowerToFloor: + ceiling->bottomheight = sec->floorheight; + if (type != lowerToFloor) + ceiling->bottomheight += 8*FRACUNIT; + ceiling->direction = -1; + ceiling->speed = CEILSPEED; + break; + + case raiseToHighest: + ceiling->topheight = P_FindHighestCeilingSurrounding(sec); + ceiling->direction = 1; + ceiling->speed = CEILSPEED; + break; + + case lowerToLowest: + ceiling->bottomheight = P_FindLowestCeilingSurrounding(sec); + ceiling->direction = -1; + ceiling->speed = CEILSPEED; + break; + + case lowerToMaxFloor: + ceiling->bottomheight = P_FindHighestFloorSurrounding(sec); + ceiling->direction = -1; + ceiling->speed = CEILSPEED; + break; + + default: + break; + } + + // add the ceiling to the active list + ceiling->tag = sec->tag; + ceiling->type = type; + P_AddActiveCeiling(ceiling); + } + return rtn; +} + +////////////////////////////////////////////////////////////////////// +// +// Active ceiling list primitives +// +///////////////////////////////////////////////////////////////////// + +// jff 2/22/98 - modified Lee's plat code to work for ceilings +// +// The following were all rewritten by Lee Killough +// to use the new structure which places no limits +// on active ceilings. It also avoids spending as much +// time searching for active ceilings. Previously a +// fixed-size array was used, with NULL indicating +// empty entries, while now a doubly-linked list +// is used. + +// +// P_ActivateInStasisCeiling() +// +// Reactivates all stopped crushers with the right tag +// +// Passed the line reactivating the crusher +// Returns true if a ceiling reactivated +// +//jff 4/5/98 return if activated +int P_ActivateInStasisCeiling(line_t *line) +{ + ceilinglist_t *cl; + int rtn=0; + + for (cl=activeceilings; cl; cl=cl->next) + { + ceiling_t *ceiling = cl->ceiling; + if (ceiling->tag == line->tag && ceiling->direction == 0) + { + ceiling->direction = ceiling->olddirection; + ceiling->thinker.function = T_MoveCeiling; + //jff 4/5/98 return if activated + rtn=1; + } + } + return rtn; +} + +// +// EV_CeilingCrushStop() +// +// Stops all active ceilings with the right tag +// +// Passed the linedef stopping the ceilings +// Returns true if a ceiling put in stasis +// +int EV_CeilingCrushStop(line_t* line) +{ + int rtn=0; + + ceilinglist_t *cl; + for (cl=activeceilings; cl; cl=cl->next) + { + ceiling_t *ceiling = cl->ceiling; + if (ceiling->direction != 0 && ceiling->tag == line->tag) + { + ceiling->olddirection = ceiling->direction; + ceiling->direction = 0; + ceiling->thinker.function = NULL; + rtn=1; + } + } + return rtn; +} + +// +// P_AddActiveCeiling() +// +// Adds a ceiling to the head of the list of active ceilings +// +// Passed the ceiling motion structure +// Returns nothing +// +void P_AddActiveCeiling(ceiling_t* ceiling) +{ + ceilinglist_t *list = Z_Malloc(sizeof(*list), PU_STATIC, 0); + list->ceiling = ceiling; + ceiling->list = list; + if ((list->next = activeceilings)) + list->next->prev = &list->next; + list->prev = &activeceilings; + activeceilings = list; +} + +// +// P_RemoveActiveCeiling() +// +// Removes a ceiling from the list of active ceilings +// +// Passed the ceiling motion structure +// Returns nothing +// +void P_RemoveActiveCeiling(ceiling_t* ceiling) +{ + ceilinglist_t *list = ceiling->list; + ceiling->sector->ceilingdata = NULL; //jff 2/22/98 + P_RemoveThinker(&ceiling->thinker); + if ((*list->prev = list->next)) + list->next->prev = list->prev; + free(list); +} + +// +// P_RemoveAllActiveCeilings() +// +// Removes all ceilings from the active ceiling list +// +// Passed nothing, returns nothing +// +void P_RemoveAllActiveCeilings(void) +{ + while (activeceilings) + { + ceilinglist_t *next = activeceilings->next; + free(activeceilings); + activeceilings = next; + } +} diff --git a/components/doom/prboom/p_doors.c b/components/doom/prboom/p_doors.c new file mode 100644 index 0000000..66ae339 --- /dev/null +++ b/components/doom/prboom/p_doors.c @@ -0,0 +1,704 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Door animation code (opening/closing) + * + *-----------------------------------------------------------------------------*/ + +#include "doomstat.h" +#include "p_spec.h" +#include "p_tick.h" +#include "s_sound.h" +#include "sounds.h" +#include "r_main.h" +#include "dstrings.h" +#include "d_deh.h" // Ty 03/27/98 - externalized +#include "lprintf.h" + +/////////////////////////////////////////////////////////////// +// +// Door action routines, called once per tick +// +/////////////////////////////////////////////////////////////// + +// +// T_VerticalDoor +// +// Passed a door structure containing all info about the door. +// See P_SPEC.H for fields. +// Returns nothing. +// +// jff 02/08/98 all cases with labels beginning with gen added to support +// generalized line type behaviors. + +void T_VerticalDoor (vldoor_t* door) +{ + result_e res; + + // Is the door waiting, going up, or going down? + switch(door->direction) + { + case 0: + // Door is waiting + if (!--door->topcountdown) // downcount and check + { + switch(door->type) + { + case blazeRaise: + case genBlazeRaise: + door->direction = -1; // time to go back down + S_StartSound((mobj_t *)&door->sector->soundorg,sfx_bdcls); + break; + + case normal: + case genRaise: + door->direction = -1; // time to go back down + S_StartSound((mobj_t *)&door->sector->soundorg,sfx_dorcls); + break; + + case close30ThenOpen: + case genCdO: + door->direction = 1; // time to go back up + S_StartSound((mobj_t *)&door->sector->soundorg,sfx_doropn); + break; + + case genBlazeCdO: + door->direction = 1; // time to go back up + S_StartSound((mobj_t *)&door->sector->soundorg,sfx_bdopn); + break; + + default: + break; + } + } + break; + + case 2: + // Special case for sector type door that opens in 5 mins + if (!--door->topcountdown) // 5 minutes up? + { + switch(door->type) + { + case raiseIn5Mins: + door->direction = 1; // time to raise then + door->type = normal; // door acts just like normal 1 DR door now + S_StartSound((mobj_t *)&door->sector->soundorg,sfx_doropn); + break; + + default: + break; + } + } + break; + + case -1: + // Door is moving down + res = T_MovePlane + ( + door->sector, + door->speed, + door->sector->floorheight, + false, + 1, + door->direction + ); + + /* killough 10/98: implement gradual lighting effects */ + // e6y: "Tagged doors don't trigger special lighting" handled wrong + // http://sourceforge.net/tracker/index.php?func=detail&aid=1411400&group_id=148658&atid=772943 + // Old code: if (door->lighttag && door->topheight - door->sector->floorheight) + if (door->lighttag && door->topheight - door->sector->floorheight && compatibility_level >= mbf_compatibility) + EV_LightTurnOnPartway(door->line, + FixedDiv(door->sector->ceilingheight - + door->sector->floorheight, + door->topheight - + door->sector->floorheight)); + + // handle door reaching bottom + if (res == pastdest) + { + switch(door->type) + { + // regular open and close doors are all done, remove them + case blazeRaise: + case blazeClose: + case genBlazeRaise: + case genBlazeClose: + door->sector->ceilingdata = NULL; //jff 2/22/98 + P_RemoveThinker (&door->thinker); // unlink and free + // killough 4/15/98: remove double-closing sound of blazing doors + if (comp[comp_blazing]) + S_StartSound((mobj_t *)&door->sector->soundorg,sfx_bdcls); + break; + + case normal: + case close: + case genRaise: + case genClose: + door->sector->ceilingdata = NULL; //jff 2/22/98 + P_RemoveThinker (&door->thinker); // unlink and free + break; + + // close then open doors start waiting + case close30ThenOpen: + door->direction = 0; + door->topcountdown = TICRATE*30; + break; + + case genCdO: + case genBlazeCdO: + door->direction = 0; + door->topcountdown = door->topwait; // jff 5/8/98 insert delay + break; + + default: + break; + } + // e6y: "Tagged doors don't trigger special lighting" handled wrong + // http://sourceforge.net/tracker/index.php?func=detail&aid=1411400&group_id=148658&atid=772943 + if (door->lighttag && door->topheight - door->sector->floorheight && compatibility_level < mbf_compatibility) + EV_LightTurnOnPartway(door->line,0); + } + /* jff 1/31/98 turn lighting off in tagged sectors of manual doors + * killough 10/98: replaced with gradual lighting code + */ + else if (res == crushed) // handle door meeting obstruction on way down + { + switch(door->type) + { + case genClose: + case genBlazeClose: + case blazeClose: + case close: // Close types do not bounce, merely wait + break; + + case blazeRaise: + case genBlazeRaise: + door->direction = 1; + if (!comp[comp_blazing]) { + S_StartSound((mobj_t *)&door->sector->soundorg,sfx_bdopn); + break; + } + /* fallthrough */ + + default: // other types bounce off the obstruction + door->direction = 1; + S_StartSound((mobj_t *)&door->sector->soundorg,sfx_doropn); + break; + } + } + break; + + case 1: + // Door is moving up + res = T_MovePlane + ( + door->sector, + door->speed, + door->topheight, + false, + 1, + door->direction + ); + + /* killough 10/98: implement gradual lighting effects */ + // e6y: "Tagged doors don't trigger special lighting" handled wrong + // http://sourceforge.net/tracker/index.php?func=detail&aid=1411400&group_id=148658&atid=772943 + // Old code: if (door->lighttag && door->topheight - door->sector->floorheight) + if (door->lighttag && door->topheight - door->sector->floorheight && compatibility_level >= mbf_compatibility) + EV_LightTurnOnPartway(door->line, + FixedDiv(door->sector->ceilingheight - + door->sector->floorheight, + door->topheight - + door->sector->floorheight)); + + // handle door reaching the top + if (res == pastdest) + { + switch(door->type) + { + case blazeRaise: // regular open/close doors start waiting + case normal: + case genRaise: + case genBlazeRaise: + door->direction = 0; // wait at top with delay + door->topcountdown = door->topwait; + break; + + case close30ThenOpen: // close and close/open doors are done + case blazeOpen: + case open: + case genBlazeOpen: + case genOpen: + case genCdO: + case genBlazeCdO: + door->sector->ceilingdata = NULL; //jff 2/22/98 + P_RemoveThinker (&door->thinker); // unlink and free + break; + + default: + break; + } + + /* jff 1/31/98 turn lighting on in tagged sectors of manual doors + * killough 10/98: replaced with gradual lighting code */ + // e6y: "Tagged doors don't trigger special lighting" handled wrong + // http://sourceforge.net/tracker/index.php?func=detail&aid=1411400&group_id=148658&atid=772943 + if (door->lighttag && door->topheight - door->sector->floorheight && compatibility_level < mbf_compatibility) + EV_LightTurnOnPartway(door->line,FRACUNIT); + } + break; + } +} + +/////////////////////////////////////////////////////////////// +// +// Door linedef handlers +// +/////////////////////////////////////////////////////////////// + +// +// EV_DoLockedDoor +// +// Handle opening a tagged locked door +// +// Passed the line activating the door, the type of door, +// and the thing that activated the line +// Returns true if a thinker created +// +int EV_DoLockedDoor +( line_t* line, + vldoor_e type, + mobj_t* thing ) +{ + player_t* p; + + // only players can open locked doors + p = thing->player; + if (!p) + return 0; + + // check type of linedef, and if key is possessed to open it + switch(line->special) + { + case 99: // Blue Lock + case 133: + if (!p->cards[it_bluecard] && !p->cards[it_blueskull]) + { + p->message = s_PD_BLUEO; // Ty 03/27/98 - externalized + S_StartSound(p->mo,sfx_oof); // killough 3/20/98 + return 0; + } + break; + + case 134: // Red Lock + case 135: + if (!p->cards[it_redcard] && !p->cards[it_redskull]) + { + p->message = s_PD_REDO; // Ty 03/27/98 - externalized + S_StartSound(p->mo,sfx_oof); // killough 3/20/98 + return 0; + } + break; + + case 136: // Yellow Lock + case 137: + if (!p->cards[it_yellowcard] && !p->cards[it_yellowskull]) + { + p->message = s_PD_YELLOWO; // Ty 03/27/98 - externalized + S_StartSound(p->mo,sfx_oof); // killough 3/20/98 + return 0; + } + break; + } + + // got the key, so open the door + return EV_DoDoor(line,type); +} + + +// +// EV_DoDoor +// +// Handle opening a tagged door +// +// Passed the line activating the door and the type of door +// Returns true if a thinker created +// +int EV_DoDoor +( line_t* line, + vldoor_e type ) +{ + int secnum,rtn; + sector_t* sec; + vldoor_t* door; + + secnum = -1; + rtn = 0; + + // open all doors with the same tag as the activating line + while ((secnum = P_FindSectorFromLineTag(line,secnum)) >= 0) + { + sec = §ors[secnum]; + // if the ceiling already moving, don't start the door action + if (P_SectorActive(ceiling_special,sec)) //jff 2/22/98 + continue; + + // new door thinker + rtn = 1; + door = Z_Calloc(1, sizeof(*door), PU_LEVSPEC, 0); + P_AddThinker (&door->thinker); + sec->ceilingdata = door; //jff 2/22/98 + + door->thinker.function = T_VerticalDoor; + door->sector = sec; + door->type = type; + door->topwait = VDOORWAIT; + door->speed = VDOORSPEED; + door->line = line; // jff 1/31/98 remember line that triggered us + door->lighttag = 0; /* killough 10/98: no light effects with tagged doors */ + + // setup door parameters according to type of door + switch(type) + { + case blazeClose: + door->topheight = P_FindLowestCeilingSurrounding(sec); + door->topheight -= 4*FRACUNIT; + door->direction = -1; + door->speed = VDOORSPEED * 4; + S_StartSound((mobj_t *)&door->sector->soundorg,sfx_bdcls); + break; + + case close: + door->topheight = P_FindLowestCeilingSurrounding(sec); + door->topheight -= 4*FRACUNIT; + door->direction = -1; + S_StartSound((mobj_t *)&door->sector->soundorg,sfx_dorcls); + break; + + case close30ThenOpen: + door->topheight = sec->ceilingheight; + door->direction = -1; + S_StartSound((mobj_t *)&door->sector->soundorg,sfx_dorcls); + break; + + case blazeRaise: + case blazeOpen: + door->direction = 1; + door->topheight = P_FindLowestCeilingSurrounding(sec); + door->topheight -= 4*FRACUNIT; + door->speed = VDOORSPEED * 4; + if (door->topheight != sec->ceilingheight) + S_StartSound((mobj_t *)&door->sector->soundorg,sfx_bdopn); + break; + + case normal: + case open: + door->direction = 1; + door->topheight = P_FindLowestCeilingSurrounding(sec); + door->topheight -= 4*FRACUNIT; + if (door->topheight != sec->ceilingheight) + S_StartSound((mobj_t *)&door->sector->soundorg,sfx_doropn); + break; + + default: + break; + } + } + return rtn; +} + + +// +// EV_VerticalDoor +// +// Handle opening a door manually, no tag value +// +// Passed the line activating the door and the thing activating it +// Returns true if a thinker created +// +// jff 2/12/98 added int return value, fixed all returns +// +int EV_VerticalDoor +( line_t* line, + mobj_t* thing ) +{ + player_t* player; + sector_t* sec; + vldoor_t* door; + + // Check for locks + player = thing->player; + + switch(line->special) + { + case 26: // Blue Lock + case 32: + if ( !player ) + return 0; + if (!player->cards[it_bluecard] && !player->cards[it_blueskull]) + { + player->message = s_PD_BLUEK; // Ty 03/27/98 - externalized + S_StartSound(player->mo,sfx_oof); // killough 3/20/98 + return 0; + } + break; + + case 27: // Yellow Lock + case 34: + if ( !player ) + return 0; + if (!player->cards[it_yellowcard] && !player->cards[it_yellowskull]) + { + player->message = s_PD_YELLOWK; // Ty 03/27/98 - externalized + S_StartSound(player->mo,sfx_oof); // killough 3/20/98 + return 0; + } + break; + + case 28: // Red Lock + case 33: + if ( !player ) + return 0; + if (!player->cards[it_redcard] && !player->cards[it_redskull]) + { + player->message = s_PD_REDK; // Ty 03/27/98 - externalized + S_StartSound(player->mo,sfx_oof); // killough 3/20/98 + return 0; + } + break; + + default: + break; + } + + // if the wrong side of door is pushed, give oof sound + if (line->sidenum[1]==NO_INDEX) // killough + { + S_StartSound(player->mo,sfx_oof); // killough 3/20/98 + return 0; + } + + // get the sector on the second side of activating linedef + sec = sides[line->sidenum[1]].sector; + + /* if door already has a thinker, use it + * cph 2001/04/05 - + * Ok, this is a disaster area. We're assuming that sec->ceilingdata + * is a vldoor_t! What if this door is controlled by both DR lines + * and by switches? I don't know how to fix that. + * Secondly, original Doom didn't distinguish floor/lighting/ceiling + * actions, so we need to do the same in demo compatibility mode. + */ + door = sec->ceilingdata; + if (demo_compatibility) { + if (!door) door = sec->floordata; + if (!door) door = sec->lightingdata; + } + /* If this is a repeatable line, and the door is already moving, then we can just reverse the current action. Note that in prboom 2.3.0 I erroneously removed the if-this-is-repeatable check, hence the prboom_4_compatibility clause below (foolishly assumed that already moving implies repeatable - but it could be moving due to another switch, e.g. lv19-509) */ + if (door && + ((compatibility_level == prboom_4_compatibility) || + (line->special == 1) || (line->special == 117) || (line->special == 26) || (line->special == 27) || (line->special == 28) + ) + ) { + /* For old demos we have to emulate the old buggy behavior and + * mess up non-T_VerticalDoor actions. + */ + if (compatibility_level < prboom_4_compatibility || + door->thinker.function == T_VerticalDoor) { + /* cph - we are writing outval to door->direction iff it is non-zero */ + signed int outval = 0; + + /* An already moving repeatable door which is being re-pressed, or a + * monster is trying to open a closing door - so change direction + * DEMOSYNC: we only read door->direction now if it really is a door. + */ + if (door->thinker.function == T_VerticalDoor && door->direction == -1) { + outval = 1; /* go back up */ + } else if (player) { + outval = -1; /* go back down */ + } + + /* Write this to the thinker. In demo compatibility mode, we might be + * overwriting a field of a non-vldoor_t thinker - we need to add any + * other thinker types here if any demos depend on specific fields + * being corrupted by this. + */ + if (outval) { + if (door->thinker.function == T_VerticalDoor) { + door->direction = outval; + } else if (door->thinker.function == T_PlatRaise) { + plat_t* p = (plat_t*)door; + p->wait = outval; + } else { + lprintf(LO_DEBUG, "EV_VerticalDoor: unknown thinker.function in thinker corruption emulation"); + } + + return 1; + } + } + /* Either we're in prboom >=v2.3 and it's not a door, or it's a door but + * we're a monster and don't want to shut it; exit with no action. + */ + return 0; + } + + // emit proper sound + switch(line->special) + { + case 117: // blazing door raise + case 118: // blazing door open + S_StartSound((mobj_t *)&sec->soundorg,sfx_bdopn); + break; + + default: // normal or locked door sound + S_StartSound((mobj_t *)&sec->soundorg,sfx_doropn); + break; + } + + // new door thinker + door = Z_Calloc(1, sizeof(*door), PU_LEVSPEC, 0); + P_AddThinker (&door->thinker); + sec->ceilingdata = door; //jff 2/22/98 + door->thinker.function = T_VerticalDoor; + door->sector = sec; + door->direction = 1; + door->speed = VDOORSPEED; + door->topwait = VDOORWAIT; + door->line = line; // jff 1/31/98 remember line that triggered us + + /* killough 10/98: use gradual lighting changes if nonzero tag given */ + door->lighttag = comp[comp_doorlight] ? 0 : line->tag; + + // set the type of door from the activating linedef type + switch(line->special) + { + case 1: + case 26: + case 27: + case 28: + door->type = normal; + break; + + case 31: + case 32: + case 33: + case 34: + door->type = open; + line->special = 0; + break; + + case 117: // blazing door raise + door->type = blazeRaise; + door->speed = VDOORSPEED*4; + break; + case 118: // blazing door open + door->type = blazeOpen; + line->special = 0; + door->speed = VDOORSPEED*4; + break; + + default: + door->lighttag = 0; // killough 10/98 + break; + } + + // find the top and bottom of the movement range + door->topheight = P_FindLowestCeilingSurrounding(sec); + door->topheight -= 4*FRACUNIT; + return 1; +} + + +/////////////////////////////////////////////////////////////// +// +// Sector type door spawners +// +/////////////////////////////////////////////////////////////// + +// +// P_SpawnDoorCloseIn30() +// +// Spawn a door that closes after 30 seconds (called at level init) +// +// Passed the sector of the door, whose type specified the door action +// Returns nothing +// +void P_SpawnDoorCloseIn30 (sector_t* sec) +{ + vldoor_t* door; + + door = Z_Calloc(1, sizeof(*door), PU_LEVSPEC, 0); + P_AddThinker (&door->thinker); + + sec->ceilingdata = door; //jff 2/22/98 + sec->special = 0; + + door->thinker.function = T_VerticalDoor; + door->sector = sec; + door->direction = 0; + door->type = normal; + door->speed = VDOORSPEED; + door->topcountdown = 30 * 35; + door->line = NULL; // jff 1/31/98 remember line that triggered us + door->lighttag = 0; /* killough 10/98: no lighting changes */ +} + +// +// P_SpawnDoorRaiseIn5Mins() +// +// Spawn a door that opens after 5 minutes (called at level init) +// +// Passed the sector of the door, whose type specified the door action +// Returns nothing +// +void P_SpawnDoorRaiseIn5Mins +( sector_t* sec, + int secnum ) +{ + vldoor_t* door; + + door = Z_Calloc(1, sizeof(*door), PU_LEVSPEC, 0); + P_AddThinker (&door->thinker); + + sec->ceilingdata = door; //jff 2/22/98 + sec->special = 0; + + door->thinker.function = T_VerticalDoor; + door->sector = sec; + door->direction = 2; + door->type = raiseIn5Mins; + door->speed = VDOORSPEED; + door->topheight = P_FindLowestCeilingSurrounding(sec); + door->topheight -= 4*FRACUNIT; + door->topwait = VDOORWAIT; + door->topcountdown = 5 * 60 * 35; + door->line = NULL; // jff 1/31/98 remember line that triggered us + door->lighttag = 0; /* killough 10/98: no lighting changes */ +} diff --git a/components/doom/prboom/p_enemy.c b/components/doom/prboom/p_enemy.c new file mode 100644 index 0000000..6a2ce84 --- /dev/null +++ b/components/doom/prboom/p_enemy.c @@ -0,0 +1,2602 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000,2002 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Enemy thinking, AI. + * Action Pointer Functions + * that are associated with states/frames. + * + *-----------------------------------------------------------------------------*/ + +#include "doomstat.h" +#include "m_random.h" +#include "r_main.h" +#include "p_maputl.h" +#include "p_map.h" +#include "p_setup.h" +#include "p_spec.h" +#include "s_sound.h" +#include "sounds.h" +#include "p_inter.h" +#include "g_game.h" +#include "p_enemy.h" +#include "p_tick.h" +#include "m_bbox.h" +#include "lprintf.h" + +static mobj_t *current_actor; + +typedef enum { + DI_EAST, + DI_NORTHEAST, + DI_NORTH, + DI_NORTHWEST, + DI_WEST, + DI_SOUTHWEST, + DI_SOUTH, + DI_SOUTHEAST, + DI_NODIR, + NUMDIRS +} dirtype_t; + +static void P_NewChaseDir(mobj_t *actor); +void P_ZBumpCheck(mobj_t *); // phares + +// +// ENEMY THINKING +// Enemies are allways spawned +// with targetplayer = -1, threshold = 0 +// Most monsters are spawned unaware of all players, +// but some can be made preaware +// + +// +// Called by P_NoiseAlert. +// Recursively traverse adjacent sectors, +// sound blocking lines cut off traversal. +// +// killough 5/5/98: reformatted, cleaned up + +static void P_RecursiveSound(sector_t *sec, int soundblocks, + mobj_t *soundtarget) +{ + int i; + + // wake up all monsters in this sector + if (sec->validcount == validcount && sec->soundtraversed <= soundblocks+1) + return; // already flooded + + sec->validcount = validcount; + sec->soundtraversed = soundblocks+1; + P_SetTarget(&sec->soundtarget, soundtarget); + + for (i=0; ilinecount; i++) + { + sector_t *other; + line_t *check = sec->lines[i]; + + if (!(check->flags & ML_TWOSIDED)) + continue; + + P_LineOpening(check); + + if (openrange <= 0) + continue; // closed door + + other=sides[check->sidenum[sides[check->sidenum[0]].sector==sec]].sector; + + if (!(check->flags & ML_SOUNDBLOCK)) + P_RecursiveSound(other, soundblocks, soundtarget); + else + if (!soundblocks) + P_RecursiveSound(other, 1, soundtarget); + } +} + +// +// P_NoiseAlert +// If a monster yells at a player, +// it will alert other monsters to the player. +// +void P_NoiseAlert(mobj_t *target, mobj_t *emitter) +{ + validcount++; + P_RecursiveSound(emitter->subsector->sector, 0, target); +} + +// +// P_CheckMeleeRange +// + +static boolean P_CheckMeleeRange(mobj_t *actor) +{ + mobj_t *pl = actor->target; + + return // killough 7/18/98: friendly monsters don't attack other friends + pl && !(actor->flags & pl->flags & MF_FRIEND) && + (P_AproxDistance(pl->x-actor->x, pl->y-actor->y) < + MELEERANGE - 20*FRACUNIT + pl->info->radius) && + P_CheckSight(actor, actor->target); +} + +// +// P_HitFriend() +// +// killough 12/98 +// This function tries to prevent shooting at friends + +static boolean P_HitFriend(mobj_t *actor) +{ + return actor->flags & MF_FRIEND && actor->target && + (P_AimLineAttack(actor, + R_PointToAngle2(actor->x, actor->y, + actor->target->x, actor->target->y), + P_AproxDistance(actor->x-actor->target->x, + actor->y-actor->target->y), 0), + linetarget) && linetarget != actor->target && + !((linetarget->flags ^ actor->flags) & MF_FRIEND); +} + +// +// P_CheckMissileRange +// +static boolean P_CheckMissileRange(mobj_t *actor) +{ + fixed_t dist; + + if (!P_CheckSight(actor, actor->target)) + return false; + + if (actor->flags & MF_JUSTHIT) + { // the target just hit the enemy, so fight back! + actor->flags &= ~MF_JUSTHIT; + + /* killough 7/18/98: no friendly fire at corpses + * killough 11/98: prevent too much infighting among friends + * cph - yikes, talk about fitting everything on one line... */ + + return + !(actor->flags & MF_FRIEND) || + (actor->target->health > 0 && + (!(actor->target->flags & MF_FRIEND) || + (actor->target->player ? + monster_infighting || P_Random(pr_defect) >128 : + !(actor->target->flags & MF_JUSTHIT) && P_Random(pr_defect) >128))); + } + + /* killough 7/18/98: friendly monsters don't attack other friendly + * monsters or players (except when attacked, and then only once) + */ + if (actor->flags & actor->target->flags & MF_FRIEND) + return false; + + if (actor->reactiontime) + return false; // do not attack yet + + // OPTIMIZE: get this from a global checksight + dist = P_AproxDistance ( actor->x-actor->target->x, + actor->y-actor->target->y) - 64*FRACUNIT; + + if (!actor->info->meleestate) + dist -= 128*FRACUNIT; // no melee attack, so fire more + + dist >>= FRACBITS; + + if (actor->type == MT_VILE) + if (dist > 14*64) + return false; // too far away + + + if (actor->type == MT_UNDEAD) + { + if (dist < 196) + return false; // close for fist attack + dist >>= 1; + } + + if (actor->type == MT_CYBORG || + actor->type == MT_SPIDER || + actor->type == MT_SKULL) + dist >>= 1; + + if (dist > 200) + dist = 200; + + if (actor->type == MT_CYBORG && dist > 160) + dist = 160; + + if (P_Random(pr_missrange) < dist) + return false; + + if (P_HitFriend(actor)) + return false; + + return true; +} + +/* + * P_IsOnLift + * + * killough 9/9/98: + * + * Returns true if the object is on a lift. Used for AI, + * since it may indicate the need for crowded conditions, + * or that a monster should stay on the lift for a while + * while it goes up or down. + */ + +static boolean P_IsOnLift(const mobj_t *actor) +{ + const sector_t *sec = actor->subsector->sector; + line_t line; + int l; + + // Short-circuit: it's on a lift which is active. + if (sec->floordata && ((thinker_t *) sec->floordata)->function==T_PlatRaise) + return true; + + // Check to see if it's in a sector which can be activated as a lift. + if ((line.tag = sec->tag)) + for (l = -1; (l = P_FindLineFromLineTag(&line, l)) >= 0;) + switch (lines[l].special) + { + case 10: case 14: case 15: case 20: case 21: case 22: + case 47: case 53: case 62: case 66: case 67: case 68: + case 87: case 88: case 95: case 120: case 121: case 122: + case 123: case 143: case 162: case 163: case 181: case 182: + case 144: case 148: case 149: case 211: case 227: case 228: + case 231: case 232: case 235: case 236: + return true; + } + + return false; +} + +/* + * P_IsUnderDamage + * + * killough 9/9/98: + * + * Returns nonzero if the object is under damage based on + * their current position. Returns 1 if the damage is moderate, + * -1 if it is serious. Used for AI. + */ + +static int P_IsUnderDamage(mobj_t *actor) +{ + const struct msecnode_s *seclist; + const ceiling_t *cl; // Crushing ceiling + int dir = 0; + for (seclist=actor->touching_sectorlist; seclist; seclist=seclist->m_tnext) + if ((cl = seclist->m_sector->ceilingdata) && + cl->thinker.function == T_MoveCeiling) + dir |= cl->direction; + return dir; +} + +// +// P_Move +// Move in the current direction, +// returns false if the move is blocked. +// + +static fixed_t xspeed[8] = {FRACUNIT,47000,0,-47000,-FRACUNIT,-47000,0,47000}; +static fixed_t yspeed[8] = {0,47000,FRACUNIT,47000,0,-47000,-FRACUNIT,-47000}; + +// 1/11/98 killough: Limit removed on special lines crossed +extern line_t **spechit; // New code -- killough +extern int numspechit; + +static boolean P_Move(mobj_t *actor, int dropoff) /* killough 9/12/98 */ +{ + fixed_t tryx, tryy, deltax, deltay, origx, origy; + boolean try_ok; + int movefactor = ORIG_FRICTION_FACTOR; // killough 10/98 + int friction = ORIG_FRICTION; + int speed; + + if (actor->movedir == DI_NODIR) + return false; + +#ifdef RANGECHECK + if ((unsigned)actor->movedir >= 8) + I_Error ("P_Move: Weird actor->movedir!"); +#endif + + // killough 10/98: make monsters get affected by ice and sludge too: + + if (monster_friction) + movefactor = P_GetMoveFactor(actor, &friction); + + speed = actor->info->speed; + + if (friction < ORIG_FRICTION && // sludge + !(speed = ((ORIG_FRICTION_FACTOR - (ORIG_FRICTION_FACTOR-movefactor)/2) + * speed) / ORIG_FRICTION_FACTOR)) + speed = 1; // always give the monster a little bit of speed + + tryx = (origx = actor->x) + (deltax = speed * xspeed[actor->movedir]); + tryy = (origy = actor->y) + (deltay = speed * yspeed[actor->movedir]); + + try_ok = P_TryMove(actor, tryx, tryy, dropoff); + + // killough 10/98: + // Let normal momentum carry them, instead of steptoeing them across ice. + + if (try_ok && friction > ORIG_FRICTION) + { + actor->x = origx; + actor->y = origy; + movefactor *= FRACUNIT / ORIG_FRICTION_FACTOR / 4; + actor->momx += FixedMul(deltax, movefactor); + actor->momy += FixedMul(deltay, movefactor); + } + + if (!try_ok) + { // open any specials + int good; + + if (actor->flags & MF_FLOAT && floatok) + { + if (actor->z < tmfloorz) // must adjust height + actor->z += FLOATSPEED; + else + actor->z -= FLOATSPEED; + + actor->flags |= MF_INFLOAT; + + return true; + } + + if (!numspechit) + return false; + + actor->movedir = DI_NODIR; + + /* if the special is not a door that can be opened, return false + * + * killough 8/9/98: this is what caused monsters to get stuck in + * doortracks, because it thought that the monster freed itself + * by opening a door, even if it was moving towards the doortrack, + * and not the door itself. + * + * killough 9/9/98: If a line blocking the monster is activated, + * return true 90% of the time. If a line blocking the monster is + * not activated, but some other line is, return false 90% of the + * time. A bit of randomness is needed to ensure it's free from + * lockups, but for most cases, it returns the correct result. + * + * Do NOT simply return false 1/4th of the time (causes monsters to + * back out when they shouldn't, and creates secondary stickiness). + */ + + for (good = false; numspechit--; ) + if (P_UseSpecialLine(actor, spechit[numspechit], 0)) + good |= spechit[numspechit] == blockline ? 1 : 2; + + /* cph - compatibility maze here + * Boom v2.01 and orig. Doom return "good" + * Boom v2.02 and LxDoom return good && (P_Random(pr_trywalk)&3) + * MBF plays even more games + */ + if (!good || comp[comp_doorstuck]) return good; + if (!mbf_features) + return (P_Random(pr_trywalk)&3); /* jff 8/13/98 */ + else /* finally, MBF code */ + return ((P_Random(pr_opendoor) >= 230) ^ (good & 1)); + } + else + actor->flags &= ~MF_INFLOAT; + + /* killough 11/98: fall more slowly, under gravity, if felldown==true */ + if (!(actor->flags & MF_FLOAT) && + (!felldown || !mbf_features)) + actor->z = actor->floorz; + + return true; +} + +/* + * P_SmartMove + * + * killough 9/12/98: Same as P_Move, except smarter + */ + +static boolean P_SmartMove(mobj_t *actor) +{ + mobj_t *target = actor->target; + int on_lift, dropoff = false, under_damage; + + /* killough 9/12/98: Stay on a lift if target is on one */ + on_lift = !comp[comp_staylift] + && target && target->health > 0 + && target->subsector->sector->tag==actor->subsector->sector->tag && + P_IsOnLift(actor); + + under_damage = monster_avoid_hazards && P_IsUnderDamage(actor); + + // killough 10/98: allow dogs to drop off of taller ledges sometimes. + // dropoff==1 means always allow it, dropoff==2 means only up to 128 high, + // and only if the target is immediately on the other side of the line. + +#ifdef DOGS + // haleyjd: allow all friends of HelperType to also jump down + + if ((actor->type == MT_DOGS || (actor->type == (HelperThing-1) && actor->flags&MF_FRIEND)) + && target && dog_jumping && + !((target->flags ^ actor->flags) & MF_FRIEND) && + P_AproxDistance(actor->x - target->x, + actor->y - target->y) < FRACUNIT*144 && + P_Random(pr_dropoff) < 235) + dropoff = 2; +#endif + + if (!P_Move(actor, dropoff)) + return false; + + // killough 9/9/98: avoid crushing ceilings or other damaging areas + if ( + (on_lift && P_Random(pr_stayonlift) < 230 && // Stay on lift + !P_IsOnLift(actor)) + || + (monster_avoid_hazards && !under_damage && // Get away from damage + (under_damage = P_IsUnderDamage(actor)) && + (under_damage < 0 || P_Random(pr_avoidcrush) < 200)) + ) + actor->movedir = DI_NODIR; // avoid the area (most of the time anyway) + + return true; +} + +// +// TryWalk +// Attempts to move actor on +// in its current (ob->moveangle) direction. +// If blocked by either a wall or an actor +// returns FALSE +// If move is either clear or blocked only by a door, +// returns TRUE and sets... +// If a door is in the way, +// an OpenDoor call is made to start it opening. +// + +static boolean P_TryWalk(mobj_t *actor) +{ + if (!P_SmartMove(actor)) + return false; + actor->movecount = P_Random(pr_trywalk)&15; + return true; +} + +// +// P_DoNewChaseDir +// +// killough 9/8/98: +// +// Most of P_NewChaseDir(), except for what +// determines the new direction to take +// + +static void P_DoNewChaseDir(mobj_t *actor, fixed_t deltax, fixed_t deltay) +{ + dirtype_t xdir, ydir, tdir; + dirtype_t olddir = actor->movedir; + dirtype_t turnaround = olddir; + + if (turnaround != DI_NODIR) // find reverse direction + turnaround ^= 4; + + xdir = + deltax > 10*FRACUNIT ? DI_EAST : + deltax < -10*FRACUNIT ? DI_WEST : DI_NODIR; + + ydir = + deltay < -10*FRACUNIT ? DI_SOUTH : + deltay > 10*FRACUNIT ? DI_NORTH : DI_NODIR; + + // try direct route + if (xdir != DI_NODIR && ydir != DI_NODIR && turnaround != + (actor->movedir = deltay < 0 ? deltax > 0 ? DI_SOUTHEAST : DI_SOUTHWEST : + deltax > 0 ? DI_NORTHEAST : DI_NORTHWEST) && P_TryWalk(actor)) + return; + + // try other directions + if (P_Random(pr_newchase) > 200 || D_abs(deltay)>D_abs(deltax)) + tdir = xdir, xdir = ydir, ydir = tdir; + + if ((xdir == turnaround ? xdir = DI_NODIR : xdir) != DI_NODIR && + (actor->movedir = xdir, P_TryWalk(actor))) + return; // either moved forward or attacked + + if ((ydir == turnaround ? ydir = DI_NODIR : ydir) != DI_NODIR && + (actor->movedir = ydir, P_TryWalk(actor))) + return; + + // there is no direct path to the player, so pick another direction. + if (olddir != DI_NODIR && (actor->movedir = olddir, P_TryWalk(actor))) + return; + + // randomly determine direction of search + if (P_Random(pr_newchasedir) & 1) + { + for (tdir = DI_EAST; tdir <= DI_SOUTHEAST; tdir++) + if (tdir != turnaround && (actor->movedir = tdir, P_TryWalk(actor))) + return; + } + else + for (tdir = DI_SOUTHEAST; tdir != DI_EAST-1; tdir--) + if (tdir != turnaround && (actor->movedir = tdir, P_TryWalk(actor))) + return; + + if ((actor->movedir = turnaround) != DI_NODIR && !P_TryWalk(actor)) + actor->movedir = DI_NODIR; +} + +// +// killough 11/98: +// +// Monsters try to move away from tall dropoffs. +// +// In Doom, they were never allowed to hang over dropoffs, +// and would remain stuck if involuntarily forced over one. +// This logic, combined with p_map.c (P_TryMove), allows +// monsters to free themselves without making them tend to +// hang over dropoffs. + +static fixed_t dropoff_deltax, dropoff_deltay, floorz; + +static boolean PIT_AvoidDropoff(line_t *line) +{ + if (line->backsector && // Ignore one-sided linedefs + tmbbox[BOXRIGHT] > line->bbox[BOXLEFT] && + tmbbox[BOXLEFT] < line->bbox[BOXRIGHT] && + tmbbox[BOXTOP] > line->bbox[BOXBOTTOM] && // Linedef must be contacted + tmbbox[BOXBOTTOM] < line->bbox[BOXTOP] && + P_BoxOnLineSide(tmbbox, line) == -1) + { + fixed_t front = line->frontsector->floorheight; + fixed_t back = line->backsector->floorheight; + angle_t angle; + + // The monster must contact one of the two floors, + // and the other must be a tall dropoff (more than 24). + + if (back == floorz && front < floorz - FRACUNIT*24) + angle = R_PointToAngle2(0,0,line->dx,line->dy); // front side dropoff + else + if (front == floorz && back < floorz - FRACUNIT*24) + angle = R_PointToAngle2(line->dx,line->dy,0,0); // back side dropoff + else + return true; + + // Move away from dropoff at a standard speed. + // Multiple contacted linedefs are cumulative (e.g. hanging over corner) + dropoff_deltax -= finesine[angle >> ANGLETOFINESHIFT]*32; + dropoff_deltay += finecosine[angle >> ANGLETOFINESHIFT]*32; + } + return true; +} + +// +// Driver for above +// + +static fixed_t P_AvoidDropoff(mobj_t *actor) +{ + int yh=((tmbbox[BOXTOP] = actor->y+actor->radius)-bmaporgy)>>MAPBLOCKSHIFT; + int yl=((tmbbox[BOXBOTTOM]= actor->y-actor->radius)-bmaporgy)>>MAPBLOCKSHIFT; + int xh=((tmbbox[BOXRIGHT] = actor->x+actor->radius)-bmaporgx)>>MAPBLOCKSHIFT; + int xl=((tmbbox[BOXLEFT] = actor->x-actor->radius)-bmaporgx)>>MAPBLOCKSHIFT; + int bx, by; + + floorz = actor->z; // remember floor height + + dropoff_deltax = dropoff_deltay = 0; + + // check lines + + validcount++; + for (bx=xl ; bx<=xh ; bx++) + for (by=yl ; by<=yh ; by++) + P_BlockLinesIterator(bx, by, PIT_AvoidDropoff); // all contacted lines + + return dropoff_deltax | dropoff_deltay; // Non-zero if movement prescribed +} + +// +// P_NewChaseDir +// +// killough 9/8/98: Split into two functions +// + +static void P_NewChaseDir(mobj_t *actor) +{ + mobj_t *target = actor->target; + fixed_t deltax = target->x - actor->x; + fixed_t deltay = target->y - actor->y; + + // killough 8/8/98: sometimes move away from target, keeping distance + // + // 1) Stay a certain distance away from a friend, to avoid being in their way + // 2) Take advantage over an enemy without missiles, by keeping distance + + actor->strafecount = 0; + + if (mbf_features) { + if (actor->floorz - actor->dropoffz > FRACUNIT*24 && + actor->z <= actor->floorz && + !(actor->flags & (MF_DROPOFF|MF_FLOAT)) && + !comp[comp_dropoff] && + P_AvoidDropoff(actor)) /* Move away from dropoff */ + { + P_DoNewChaseDir(actor, dropoff_deltax, dropoff_deltay); + + // If moving away from dropoff, set movecount to 1 so that + // small steps are taken to get monster away from dropoff. + + actor->movecount = 1; + return; + } + else + { + fixed_t dist = P_AproxDistance(deltax, deltay); + + // Move away from friends when too close, except + // in certain situations (e.g. a crowded lift) + + if (actor->flags & target->flags & MF_FRIEND && + distfriend << FRACBITS > dist && + !P_IsOnLift(target) && !P_IsUnderDamage(actor)) + { + deltax = -deltax, deltay = -deltay; + } else + if (target->health > 0 && (actor->flags ^ target->flags) & MF_FRIEND) + { // Live enemy target + if (monster_backing && + actor->info->missilestate && actor->type != MT_SKULL && + ((!target->info->missilestate && dist < MELEERANGE*2) || + (target->player && dist < MELEERANGE*3 && + (target->player->readyweapon == wp_fist || + target->player->readyweapon == wp_chainsaw)))) + { // Back away from melee attacker + actor->strafecount = P_Random(pr_enemystrafe) & 15; + deltax = -deltax, deltay = -deltay; + } + } + } + } + + P_DoNewChaseDir(actor, deltax, deltay); + + // If strafing, set movecount to strafecount so that old Doom + // logic still works the same, except in the strafing part + + if (actor->strafecount) + actor->movecount = actor->strafecount; +} + +// +// P_IsVisible +// +// killough 9/9/98: whether a target is visible to a monster +// + +static boolean P_IsVisible(mobj_t *actor, mobj_t *mo, boolean allaround) +{ + if (!allaround) + { + angle_t an = R_PointToAngle2(actor->x, actor->y, + mo->x, mo->y) - actor->angle; + if (an > ANG90 && an < ANG270 && + P_AproxDistance(mo->x-actor->x, mo->y-actor->y) > MELEERANGE) + return false; + } + return P_CheckSight(actor, mo); +} + +// +// PIT_FindTarget +// +// killough 9/5/98 +// +// Finds monster targets for other monsters +// + +static int current_allaround; + +static boolean PIT_FindTarget(mobj_t *mo) +{ + mobj_t *actor = current_actor; + + if (!((mo->flags ^ actor->flags) & MF_FRIEND && // Invalid target + mo->health > 0 && (mo->flags & MF_COUNTKILL || mo->type == MT_SKULL))) + return true; + + // If the monster is already engaged in a one-on-one attack + // with a healthy friend, don't attack around 60% the time + { + const mobj_t *targ = mo->target; + if (targ && targ->target == mo && + P_Random(pr_skiptarget) > 100 && + (targ->flags ^ mo->flags) & MF_FRIEND && + targ->health*2 >= targ->info->spawnhealth) + return true; + } + + if (!P_IsVisible(actor, mo, current_allaround)) + return true; + + P_SetTarget(&actor->lastenemy, actor->target); // Remember previous target + P_SetTarget(&actor->target, mo); // Found target + + // Move the selected monster to the end of its associated + // list, so that it gets searched last next time. + + { + thinker_t *cap = &thinkerclasscap[mo->flags & MF_FRIEND ? + th_friends : th_enemies]; + (mo->thinker.cprev->cnext = mo->thinker.cnext)->cprev = mo->thinker.cprev; + (mo->thinker.cprev = cap->cprev)->cnext = &mo->thinker; + (mo->thinker.cnext = cap)->cprev = &mo->thinker; + } + + return false; +} + +// +// P_LookForPlayers +// If allaround is false, only look 180 degrees in front. +// Returns true if a player is targeted. +// + +static boolean P_LookForPlayers(mobj_t *actor, boolean allaround) +{ + player_t *player; + int stop, stopc, c; + + if (actor->flags & MF_FRIEND) + { // killough 9/9/98: friendly monsters go about players differently + int anyone; + +#if 0 + if (!allaround) // If you want friendly monsters not to awaken unprovoked + return false; +#endif + + // Go back to a player, no matter whether it's visible or not + for (anyone=0; anyone<=1; anyone++) + for (c=0; ctarget, players[c].mo); + + // killough 12/98: + // get out of refiring loop, to avoid hitting player accidentally + + if (actor->info->missilestate) + { + P_SetMobjState(actor, actor->info->seestate); + actor->flags &= ~MF_JUSTHIT; + } + + return true; + } + + return false; + } + + // Change mask of 3 to (MAXPLAYERS-1) -- killough 2/15/98: + stop = (actor->lastlook-1)&(MAXPLAYERS-1); + + c = 0; + + stopc = !mbf_features && + !demo_compatibility && monsters_remember ? + MAXPLAYERS : 2; // killough 9/9/98 + + for (;; actor->lastlook = (actor->lastlook+1)&(MAXPLAYERS-1)) + { + if (!playeringame[actor->lastlook]) + continue; + + // killough 2/15/98, 9/9/98: + if (c++ == stopc || actor->lastlook == stop) // done looking + { + // e6y + // Fixed Boom incompatibilities. The following code was missed. + // There are no more desyncs on Donce's demos on horror.wad + + // Use last known enemy if no players sighted -- killough 2/15/98: + if (!mbf_features && !demo_compatibility && monsters_remember) + { + if (actor->lastenemy && actor->lastenemy->health > 0) + { + actor->target = actor->lastenemy; + actor->lastenemy = NULL; + return true; + } + } + + return false; + } + + player = &players[actor->lastlook]; + + if (player->health <= 0) + continue; // dead + + if (!P_IsVisible(actor, player->mo, allaround)) + continue; + + P_SetTarget(&actor->target, player->mo); + + /* killough 9/9/98: give monsters a threshold towards getting players + * (we don't want it to be too easy for a player with dogs :) + */ + if (!comp[comp_pursuit]) + actor->threshold = 60; + + return true; + } +} + +// +// Friendly monsters, by Lee Killough 7/18/98 +// +// Friendly monsters go after other monsters first, but +// also return to owner if they cannot find any targets. +// A marine's best friend :) killough 7/18/98, 9/98 +// + +static boolean P_LookForMonsters(mobj_t *actor, boolean allaround) +{ + thinker_t *cap, *th; + + if (demo_compatibility) + return false; + + if (actor->lastenemy && actor->lastenemy->health > 0 && monsters_remember && + !(actor->lastenemy->flags & actor->flags & MF_FRIEND)) // not friends + { + P_SetTarget(&actor->target, actor->lastenemy); + P_SetTarget(&actor->lastenemy, NULL); + return true; + } + + /* Old demos do not support monster-seeking bots */ + if (!mbf_features) + return false; + + // Search the threaded list corresponding to this object's potential targets + cap = &thinkerclasscap[actor->flags & MF_FRIEND ? th_enemies : th_friends]; + + // Search for new enemy + + if (cap->cnext != cap) // Empty list? bail out early + { + int x = (actor->x - bmaporgx)>>MAPBLOCKSHIFT; + int y = (actor->y - bmaporgy)>>MAPBLOCKSHIFT; + int d; + + current_actor = actor; + current_allaround = allaround; + + // Search first in the immediate vicinity. + + if (!P_BlockThingsIterator(x, y, PIT_FindTarget)) + return true; + + for (d=1; d<5; d++) + { + int i = 1 - d; + do + if (!P_BlockThingsIterator(x+i, y-d, PIT_FindTarget) || + !P_BlockThingsIterator(x+i, y+d, PIT_FindTarget)) + return true; + while (++i < d); + do + if (!P_BlockThingsIterator(x-d, y+i, PIT_FindTarget) || + !P_BlockThingsIterator(x+d, y+i, PIT_FindTarget)) + return true; + while (--i + d >= 0); + } + + { // Random number of monsters, to prevent patterns from forming + int n = (P_Random(pr_friends) & 31) + 15; + + for (th = cap->cnext; th != cap; th = th->cnext) + if (--n < 0) + { + // Only a subset of the monsters were searched. Move all of + // the ones which were searched so far, to the end of the list. + + (cap->cnext->cprev = cap->cprev)->cnext = cap->cnext; + (cap->cprev = th->cprev)->cnext = cap; + (th->cprev = cap)->cnext = th; + break; + } + else + if (!PIT_FindTarget((mobj_t *) th)) // If target sighted + return true; + } + } + + return false; // No monster found +} + +// +// P_LookForTargets +// +// killough 9/5/98: look for targets to go after, depending on kind of monster +// + +static boolean P_LookForTargets(mobj_t *actor, int allaround) +{ + return actor->flags & MF_FRIEND ? + P_LookForMonsters(actor, allaround) || P_LookForPlayers (actor, allaround): + P_LookForPlayers (actor, allaround) || P_LookForMonsters(actor, allaround); +} + +// +// P_HelpFriend +// +// killough 9/8/98: Help friends in danger of dying +// + +static boolean P_HelpFriend(mobj_t *actor) +{ + thinker_t *cap, *th; + + // If less than 33% health, self-preservation rules + if (actor->health*3 < actor->info->spawnhealth) + return false; + + current_actor = actor; + current_allaround = true; + + // Possibly help a friend under 50% health + cap = &thinkerclasscap[actor->flags & MF_FRIEND ? th_friends : th_enemies]; + + for (th = cap->cnext; th != cap; th = th->cnext) + if (((mobj_t *) th)->health*2 >= ((mobj_t *) th)->info->spawnhealth) + { + if (P_Random(pr_helpfriend) < 180) + break; + } + else + if (((mobj_t *) th)->flags & MF_JUSTHIT && + ((mobj_t *) th)->target && + ((mobj_t *) th)->target != actor->target && + !PIT_FindTarget(((mobj_t *) th)->target)) + { + // Ignore any attacking monsters, while searching for friend + actor->threshold = BASETHRESHOLD; + return true; + } + + return false; +} + +// +// A_KeenDie +// DOOM II special, map 32. +// Uses special tag 666. +// +void A_KeenDie(mobj_t* mo) +{ + thinker_t *th; + line_t junk; + + A_Fall(mo); + + // scan the remaining thinkers to see if all Keens are dead + + for (th = thinkercap.next ; th != &thinkercap ; th=th->next) + if (th->function == P_MobjThinker) + { + mobj_t *mo2 = (mobj_t *) th; + if (mo2 != mo && mo2->type == mo->type && mo2->health > 0) + return; // other Keen not dead + } + + junk.tag = 666; + EV_DoDoor(&junk,open); +} + + +// +// ACTION ROUTINES +// + +// +// A_Look +// Stay in state until a player is sighted. +// + +void A_Look(mobj_t *actor) +{ + mobj_t *targ = actor->subsector->sector->soundtarget; + actor->threshold = 0; // any shot will wake up + + /* killough 7/18/98: + * Friendly monsters go after other monsters first, but + * also return to player, without attacking them, if they + * cannot find any targets. A marine's best friend :) + */ + actor->pursuecount = 0; + + if (!(actor->flags & MF_FRIEND && P_LookForTargets(actor, false)) && + !((targ = actor->subsector->sector->soundtarget) && + targ->flags & MF_SHOOTABLE && + (P_SetTarget(&actor->target, targ), + !(actor->flags & MF_AMBUSH) || P_CheckSight(actor, targ))) && + (actor->flags & MF_FRIEND || !P_LookForTargets(actor, false))) + return; + + // go into chase state + + if (actor->info->seesound) + { + int sound; + switch (actor->info->seesound) + { + case sfx_posit1: + case sfx_posit2: + case sfx_posit3: + sound = sfx_posit1+P_Random(pr_see)%3; + break; + + case sfx_bgsit1: + case sfx_bgsit2: + sound = sfx_bgsit1+P_Random(pr_see)%2; + break; + + default: + sound = actor->info->seesound; + break; + } + if (actor->type==MT_SPIDER || actor->type == MT_CYBORG) + S_StartSound(NULL, sound); // full volume + else + S_StartSound(actor, sound); + } + P_SetMobjState(actor, actor->info->seestate); +} + +// +// A_KeepChasing +// +// killough 10/98: +// Allows monsters to continue movement while attacking +// +#if 0 +static void A_KeepChasing(mobj_t *actor) +{ + if (actor->movecount) + { + actor->movecount--; + if (actor->strafecount) + actor->strafecount--; + P_SmartMove(actor); + } +} +#endif + +// +// A_Chase +// Actor has a melee attack, +// so it tries to close as fast as possible +// + +void A_Chase(mobj_t *actor) +{ + if (actor->reactiontime) + actor->reactiontime--; + + if (actor->threshold) { /* modify target threshold */ + if (!actor->target || actor->target->health <= 0) + actor->threshold = 0; + else + actor->threshold--; + } + + /* turn towards movement direction if not there yet + * killough 9/7/98: keep facing towards target if strafing or backing out + */ + + if (actor->strafecount) + A_FaceTarget(actor); + else if (actor->movedir < 8) + { + int delta = (actor->angle &= (7<<29)) - (actor->movedir << 29); + if (delta > 0) + actor->angle -= ANG90/2; + else + if (delta < 0) + actor->angle += ANG90/2; + } + + if (!actor->target || !(actor->target->flags&MF_SHOOTABLE)) + { + if (!P_LookForTargets(actor,true)) // look for a new target + P_SetMobjState(actor, actor->info->spawnstate); // no new target + return; + } + + // do not attack twice in a row + if (actor->flags & MF_JUSTATTACKED) + { + actor->flags &= ~MF_JUSTATTACKED; + if (gameskill != sk_nightmare && !fastparm) + P_NewChaseDir(actor); + return; + } + + // check for melee attack + if (actor->info->meleestate && P_CheckMeleeRange(actor)) + { + if (actor->info->attacksound) + S_StartSound(actor, actor->info->attacksound); + P_SetMobjState(actor, actor->info->meleestate); + /* killough 8/98: remember an attack + * cph - DEMOSYNC? */ + if (!actor->info->missilestate) + actor->flags |= MF_JUSTHIT; + return; + } + + // check for missile attack + if (actor->info->missilestate) + if (!(gameskill < sk_nightmare && !fastparm && actor->movecount)) + if (P_CheckMissileRange(actor)) + { + P_SetMobjState(actor, actor->info->missilestate); + actor->flags |= MF_JUSTATTACKED; + return; + } + + if (!actor->threshold) { + if (!mbf_features) + { /* killough 9/9/98: for backward demo compatibility */ + if (netgame && !P_CheckSight(actor, actor->target) && + P_LookForPlayers(actor, true)) + return; + } + /* killough 7/18/98, 9/9/98: new monster AI */ + else if (help_friends && P_HelpFriend(actor)) + return; /* killough 9/8/98: Help friends in need */ + /* Look for new targets if current one is bad or is out of view */ + else if (actor->pursuecount) + actor->pursuecount--; + else { + /* Our pursuit time has expired. We're going to think about + * changing targets */ + actor->pursuecount = BASETHRESHOLD; + + /* Unless (we have a live target + * and it's not friendly + * and we can see it) + * try to find a new one; return if sucessful */ + + if (!(actor->target && actor->target->health > 0 && + ((comp[comp_pursuit] && !netgame) || + (((actor->target->flags ^ actor->flags) & MF_FRIEND || + (!(actor->flags & MF_FRIEND) && monster_infighting)) && + P_CheckSight(actor, actor->target)))) + && P_LookForTargets(actor, true)) + return; + + /* (Current target was good, or no new target was found.) + * + * If monster is a missile-less friend, give up pursuit and + * return to player, if no attacks have occurred recently. + */ + + if (!actor->info->missilestate && actor->flags & MF_FRIEND) { + if (actor->flags & MF_JUSTHIT) /* if recent action, */ + actor->flags &= ~MF_JUSTHIT; /* keep fighting */ + else if (P_LookForPlayers(actor, true)) /* else return to player */ + return; + } + } + } + + if (actor->strafecount) + actor->strafecount--; + + // chase towards player + if (--actor->movecount<0 || !P_SmartMove(actor)) + P_NewChaseDir(actor); + + // make active sound + if (actor->info->activesound && P_Random(pr_see)<3) + S_StartSound(actor, actor->info->activesound); +} + +// +// A_FaceTarget +// +void A_FaceTarget(mobj_t *actor) +{ + if (!actor->target) + return; + actor->flags &= ~MF_AMBUSH; + actor->angle = R_PointToAngle2(actor->x, actor->y, + actor->target->x, actor->target->y); + if (actor->target->flags & MF_SHADOW) + { // killough 5/5/98: remove dependence on order of evaluation: + int t = P_Random(pr_facetarget); + actor->angle += (t-P_Random(pr_facetarget))<<21; + } +} + +// +// A_PosAttack +// + +void A_PosAttack(mobj_t *actor) +{ + int angle, damage, slope, t; + + if (!actor->target) + return; + A_FaceTarget(actor); + angle = actor->angle; + slope = P_AimLineAttack(actor, angle, MISSILERANGE, 0); /* killough 8/2/98 */ + S_StartSound(actor, sfx_pistol); + + // killough 5/5/98: remove dependence on order of evaluation: + t = P_Random(pr_posattack); + angle += (t - P_Random(pr_posattack))<<20; + damage = (P_Random(pr_posattack)%5 + 1)*3; + P_LineAttack(actor, angle, MISSILERANGE, slope, damage); +} + +void A_SPosAttack(mobj_t* actor) +{ + int i, bangle, slope; + + if (!actor->target) + return; + S_StartSound(actor, sfx_shotgn); + A_FaceTarget(actor); + bangle = actor->angle; + slope = P_AimLineAttack(actor, bangle, MISSILERANGE, 0); /* killough 8/2/98 */ + for (i=0; i<3; i++) + { // killough 5/5/98: remove dependence on order of evaluation: + int t = P_Random(pr_sposattack); + int angle = bangle + ((t - P_Random(pr_sposattack))<<20); + int damage = ((P_Random(pr_sposattack)%5)+1)*3; + P_LineAttack(actor, angle, MISSILERANGE, slope, damage); + } +} + +void A_CPosAttack(mobj_t *actor) +{ + int angle, bangle, damage, slope, t; + + if (!actor->target) + return; + S_StartSound(actor, sfx_shotgn); + A_FaceTarget(actor); + bangle = actor->angle; + slope = P_AimLineAttack(actor, bangle, MISSILERANGE, 0); /* killough 8/2/98 */ + + // killough 5/5/98: remove dependence on order of evaluation: + t = P_Random(pr_cposattack); + angle = bangle + ((t - P_Random(pr_cposattack))<<20); + damage = ((P_Random(pr_cposattack)%5)+1)*3; + P_LineAttack(actor, angle, MISSILERANGE, slope, damage); +} + +void A_CPosRefire(mobj_t *actor) +{ + // keep firing unless target got out of sight + A_FaceTarget(actor); + + /* killough 12/98: Stop firing if a friend has gotten in the way */ + if (P_HitFriend(actor)) + goto stop; + + /* killough 11/98: prevent refiring on friends continuously */ + if (P_Random(pr_cposrefire) < 40) { + if (actor->target && actor->flags & actor->target->flags & MF_FRIEND) + goto stop; + else + return; + } + + if (!actor->target || actor->target->health <= 0 + || !P_CheckSight(actor, actor->target)) +stop: P_SetMobjState(actor, actor->info->seestate); +} + +void A_SpidRefire(mobj_t* actor) +{ + // keep firing unless target got out of sight + A_FaceTarget(actor); + + /* killough 12/98: Stop firing if a friend has gotten in the way */ + if (P_HitFriend(actor)) + goto stop; + + if (P_Random(pr_spidrefire) < 10) + return; + + // killough 11/98: prevent refiring on friends continuously + if (!actor->target || actor->target->health <= 0 + || actor->flags & actor->target->flags & MF_FRIEND + || !P_CheckSight(actor, actor->target)) + stop: P_SetMobjState(actor, actor->info->seestate); +} + +void A_BspiAttack(mobj_t *actor) +{ + if (!actor->target) + return; + A_FaceTarget(actor); + P_SpawnMissile(actor, actor->target, MT_ARACHPLAZ); // launch a missile +} + +// +// A_TroopAttack +// + +void A_TroopAttack(mobj_t *actor) +{ + if (!actor->target) + return; + A_FaceTarget(actor); + if (P_CheckMeleeRange(actor)) + { + int damage; + S_StartSound(actor, sfx_claw); + damage = (P_Random(pr_troopattack)%8+1)*3; + P_DamageMobj(actor->target, actor, actor, damage); + return; + } + P_SpawnMissile(actor, actor->target, MT_TROOPSHOT); // launch a missile +} + +void A_SargAttack(mobj_t *actor) +{ + if (!actor->target) + return; + A_FaceTarget(actor); + if (P_CheckMeleeRange(actor)) + { + int damage = ((P_Random(pr_sargattack)%10)+1)*4; + P_DamageMobj(actor->target, actor, actor, damage); + } +} + +void A_HeadAttack(mobj_t *actor) +{ + if (!actor->target) + return; + A_FaceTarget (actor); + if (P_CheckMeleeRange(actor)) + { + int damage = (P_Random(pr_headattack)%6+1)*10; + P_DamageMobj(actor->target, actor, actor, damage); + return; + } + P_SpawnMissile(actor, actor->target, MT_HEADSHOT); // launch a missile +} + +void A_CyberAttack(mobj_t *actor) +{ + if (!actor->target) + return; + A_FaceTarget(actor); + P_SpawnMissile(actor, actor->target, MT_ROCKET); +} + +void A_BruisAttack(mobj_t *actor) +{ + if (!actor->target) + return; + if (P_CheckMeleeRange(actor)) + { + int damage; + S_StartSound(actor, sfx_claw); + damage = (P_Random(pr_bruisattack)%8+1)*10; + P_DamageMobj(actor->target, actor, actor, damage); + return; + } + P_SpawnMissile(actor, actor->target, MT_BRUISERSHOT); // launch a missile +} + +// +// A_SkelMissile +// + +void A_SkelMissile(mobj_t *actor) +{ + mobj_t *mo; + + if (!actor->target) + return; + + A_FaceTarget (actor); + actor->z += 16*FRACUNIT; // so missile spawns higher + mo = P_SpawnMissile (actor, actor->target, MT_TRACER); + actor->z -= 16*FRACUNIT; // back to normal + + mo->x += mo->momx; + mo->y += mo->momy; + P_SetTarget(&mo->tracer, actor->target); +} + +int TRACEANGLE = 0xc000000; + +void A_Tracer(mobj_t *actor) +{ + angle_t exact; + fixed_t dist; + fixed_t slope; + mobj_t *dest; + mobj_t *th; + + /* killough 1/18/98: this is why some missiles do not have smoke + * and some do. Also, internal demos start at random gametics, thus + * the bug in which revenants cause internal demos to go out of sync. + * + * killough 3/6/98: fix revenant internal demo bug by subtracting + * levelstarttic from gametic. + * + * killough 9/29/98: use new "basetic" so that demos stay in sync + * during pauses and menu activations, while retaining old demo sync. + * + * leveltime would have been better to use to start with in Doom, but + * since old demos were recorded using gametic, we must stick with it, + * and improvise around it (using leveltime causes desync across levels). + */ + + if ((gametic-basetic) & 3) + return; + + // spawn a puff of smoke behind the rocket + P_SpawnPuff(actor->x, actor->y, actor->z); + + th = P_SpawnMobj (actor->x-actor->momx, + actor->y-actor->momy, + actor->z, MT_SMOKE); + + th->momz = FRACUNIT; + th->tics -= P_Random(pr_tracer) & 3; + if (th->tics < 1) + th->tics = 1; + + // adjust direction + dest = actor->tracer; + + if (!dest || dest->health <= 0) + return; + + // change angle + exact = R_PointToAngle2(actor->x, actor->y, dest->x, dest->y); + + if (exact != actor->angle) { + if (exact - actor->angle > 0x80000000) + { + actor->angle -= TRACEANGLE; + if (exact - actor->angle < 0x80000000) + actor->angle = exact; + } + else + { + actor->angle += TRACEANGLE; + if (exact - actor->angle > 0x80000000) + actor->angle = exact; + } + } + + exact = actor->angle>>ANGLETOFINESHIFT; + actor->momx = FixedMul(actor->info->speed, finecosine[exact]); + actor->momy = FixedMul(actor->info->speed, finesine[exact]); + + // change slope + dist = P_AproxDistance(dest->x - actor->x, dest->y - actor->y); + + dist = dist / actor->info->speed; + + if (dist < 1) + dist = 1; + + slope = (dest->z+40*FRACUNIT - actor->z) / dist; + + if (slope < actor->momz) + actor->momz -= FRACUNIT/8; + else + actor->momz += FRACUNIT/8; +} + +void A_SkelWhoosh(mobj_t *actor) +{ + if (!actor->target) + return; + A_FaceTarget(actor); + S_StartSound(actor,sfx_skeswg); +} + +void A_SkelFist(mobj_t *actor) +{ + if (!actor->target) + return; + A_FaceTarget(actor); + if (P_CheckMeleeRange(actor)) + { + int damage = ((P_Random(pr_skelfist)%10)+1)*6; + S_StartSound(actor, sfx_skepch); + P_DamageMobj(actor->target, actor, actor, damage); + } +} + +// +// PIT_VileCheck +// Detect a corpse that could be raised. +// + +mobj_t* corpsehit; +mobj_t* vileobj; +fixed_t viletryx; +fixed_t viletryy; + +static boolean PIT_VileCheck(mobj_t *thing) +{ + int maxdist; + boolean check; + + if (!(thing->flags & MF_CORPSE) ) + return true; // not a monster + + if (thing->tics != -1) + return true; // not lying still yet + + if (thing->info->raisestate == S_NULL) + return true; // monster doesn't have a raise state + + maxdist = thing->info->radius + mobjinfo[MT_VILE].radius; + + if (D_abs(thing->x-viletryx) > maxdist || D_abs(thing->y-viletryy) > maxdist) + return true; // not actually touching + +// Check to see if the radius and height are zero. If they are // phares +// then this is a crushed monster that has been turned into a // | +// gib. One of the options may be to ignore this guy. // V + +// Option 1: the original, buggy method, -> ghost (compatibility) +// Option 2: ressurect the monster, but not as a ghost +// Option 3: ignore the gib + +// if (Option3) // ^ +// if ((thing->height == 0) && (thing->radius == 0)) // | +// return true; // phares + + corpsehit = thing; + corpsehit->momx = corpsehit->momy = 0; + if (comp[comp_vile]) // phares + { // | + corpsehit->height <<= 2; // V + check = P_CheckPosition(corpsehit,corpsehit->x,corpsehit->y); + corpsehit->height >>= 2; + } + else + { + int height,radius; + + height = corpsehit->height; // save temporarily + radius = corpsehit->radius; // save temporarily + corpsehit->height = corpsehit->info->height; + corpsehit->radius = corpsehit->info->radius; + corpsehit->flags |= MF_SOLID; + check = P_CheckPosition(corpsehit,corpsehit->x,corpsehit->y); + corpsehit->height = height; // restore + corpsehit->radius = radius; // restore // ^ + corpsehit->flags &= ~MF_SOLID; + } // | + // phares + if (!check) + return true; // doesn't fit here + return false; // got one, so stop checking +} + +// +// A_VileChase +// Check for ressurecting a body +// + +void A_VileChase(mobj_t* actor) +{ + int xl, xh; + int yl, yh; + int bx, by; + + if (actor->movedir != DI_NODIR) + { + // check for corpses to raise + viletryx = + actor->x + actor->info->speed*xspeed[actor->movedir]; + viletryy = + actor->y + actor->info->speed*yspeed[actor->movedir]; + + xl = (viletryx - bmaporgx - MAXRADIUS*2)>>MAPBLOCKSHIFT; + xh = (viletryx - bmaporgx + MAXRADIUS*2)>>MAPBLOCKSHIFT; + yl = (viletryy - bmaporgy - MAXRADIUS*2)>>MAPBLOCKSHIFT; + yh = (viletryy - bmaporgy + MAXRADIUS*2)>>MAPBLOCKSHIFT; + + vileobj = actor; + for (bx=xl ; bx<=xh ; bx++) + { + for (by=yl ; by<=yh ; by++) + { + // Call PIT_VileCheck to check + // whether object is a corpse + // that canbe raised. + if (!P_BlockThingsIterator(bx,by,PIT_VileCheck)) + { + mobjinfo_t *info; + + // got one! + mobj_t* temp = actor->target; + actor->target = corpsehit; + A_FaceTarget(actor); + actor->target = temp; + + P_SetMobjState(actor, S_VILE_HEAL1); + S_StartSound(corpsehit, sfx_slop); + info = corpsehit->info; + + P_SetMobjState(corpsehit,info->raisestate); + + if (comp[comp_vile]) // phares + corpsehit->height <<= 2; // | + else // V + { + corpsehit->height = info->height; // fix Ghost bug + corpsehit->radius = info->radius; // fix Ghost bug + } // phares + + /* killough 7/18/98: + * friendliness is transferred from AV to raised corpse + */ + corpsehit->flags = + (info->flags & ~MF_FRIEND) | (actor->flags & MF_FRIEND); + + if (!((corpsehit->flags ^ MF_COUNTKILL) & (MF_FRIEND | MF_COUNTKILL))) + totallive++; + + corpsehit->health = info->spawnhealth; + P_SetTarget(&corpsehit->target, NULL); // killough 11/98 + + if (mbf_features) + { /* kilough 9/9/98 */ + P_SetTarget(&corpsehit->lastenemy, NULL); + corpsehit->flags &= ~MF_JUSTHIT; + } + + /* killough 8/29/98: add to appropriate thread */ + P_UpdateThinker(&corpsehit->thinker); + + return; + } + } + } + } + A_Chase(actor); // Return to normal attack. +} + +// +// A_VileStart +// + +void A_VileStart(mobj_t *actor) +{ + S_StartSound(actor, sfx_vilatk); +} + +// +// A_Fire +// Keep fire in front of player unless out of sight +// + +void A_StartFire(mobj_t *actor) +{ + S_StartSound(actor,sfx_flamst); + A_Fire(actor); +} + +void A_FireCrackle(mobj_t* actor) +{ + S_StartSound(actor,sfx_flame); + A_Fire(actor); +} + +void A_Fire(mobj_t *actor) +{ + unsigned an; + mobj_t *dest = actor->tracer; + + if (!dest) + return; + + // don't move it if the vile lost sight + if (!P_CheckSight(actor->target, dest) ) + return; + + an = dest->angle >> ANGLETOFINESHIFT; + + P_UnsetThingPosition(actor); + actor->x = dest->x + FixedMul(24*FRACUNIT, finecosine[an]); + actor->y = dest->y + FixedMul(24*FRACUNIT, finesine[an]); + actor->z = dest->z; + P_SetThingPosition(actor); +} + +// +// A_VileTarget +// Spawn the hellfire +// + +void A_VileTarget(mobj_t *actor) +{ + mobj_t *fog; + + if (!actor->target) + return; + + A_FaceTarget(actor); + + // killough 12/98: fix Vile fog coordinates // CPhipps - compatibility optioned + fog = P_SpawnMobj(actor->target->x, + (compatibility_level < lxdoom_1_compatibility) ? actor->target->x : actor->target->y, + actor->target->z,MT_FIRE); + + P_SetTarget(&actor->tracer, fog); + P_SetTarget(&fog->target, actor); + P_SetTarget(&fog->tracer, actor->target); + A_Fire(fog); +} + +// +// A_VileAttack +// + +void A_VileAttack(mobj_t *actor) +{ + mobj_t *fire; + int an; + + if (!actor->target) + return; + + A_FaceTarget(actor); + + if (!P_CheckSight(actor, actor->target)) + return; + + S_StartSound(actor, sfx_barexp); + P_DamageMobj(actor->target, actor, actor, 20); + actor->target->momz = 1000*FRACUNIT/actor->target->info->mass; + + an = actor->angle >> ANGLETOFINESHIFT; + + fire = actor->tracer; + + if (!fire) + return; + + // move the fire between the vile and the player + fire->x = actor->target->x - FixedMul (24*FRACUNIT, finecosine[an]); + fire->y = actor->target->y - FixedMul (24*FRACUNIT, finesine[an]); + P_RadiusAttack(fire, actor, 70); +} + +// +// Mancubus attack, +// firing three missiles (bruisers) +// in three different directions? +// Doesn't look like it. +// + +#define FATSPREAD (ANG90/8) + +void A_FatRaise(mobj_t *actor) +{ + A_FaceTarget(actor); + S_StartSound(actor, sfx_manatk); +} + +void A_FatAttack1(mobj_t *actor) +{ + mobj_t *mo; + int an; + + if (!actor->target) + return; + + A_FaceTarget(actor); + + // Change direction to ... + actor->angle += FATSPREAD; + + P_SpawnMissile(actor, actor->target, MT_FATSHOT); + + mo = P_SpawnMissile (actor, actor->target, MT_FATSHOT); + mo->angle += FATSPREAD; + an = mo->angle >> ANGLETOFINESHIFT; + mo->momx = FixedMul(mo->info->speed, finecosine[an]); + mo->momy = FixedMul(mo->info->speed, finesine[an]); +} + +void A_FatAttack2(mobj_t *actor) +{ + mobj_t *mo; + int an; + + if (!actor->target) + return; + + A_FaceTarget(actor); + // Now here choose opposite deviation. + actor->angle -= FATSPREAD; + P_SpawnMissile(actor, actor->target, MT_FATSHOT); + + mo = P_SpawnMissile(actor, actor->target, MT_FATSHOT); + mo->angle -= FATSPREAD*2; + an = mo->angle >> ANGLETOFINESHIFT; + mo->momx = FixedMul(mo->info->speed, finecosine[an]); + mo->momy = FixedMul(mo->info->speed, finesine[an]); +} + +void A_FatAttack3(mobj_t *actor) +{ + mobj_t *mo; + int an; + + if (!actor->target) + return; + + A_FaceTarget(actor); + + mo = P_SpawnMissile(actor, actor->target, MT_FATSHOT); + mo->angle -= FATSPREAD/2; + an = mo->angle >> ANGLETOFINESHIFT; + mo->momx = FixedMul(mo->info->speed, finecosine[an]); + mo->momy = FixedMul(mo->info->speed, finesine[an]); + + mo = P_SpawnMissile(actor, actor->target, MT_FATSHOT); + mo->angle += FATSPREAD/2; + an = mo->angle >> ANGLETOFINESHIFT; + mo->momx = FixedMul(mo->info->speed, finecosine[an]); + mo->momy = FixedMul(mo->info->speed, finesine[an]); +} + + +// +// SkullAttack +// Fly at the player like a missile. +// +#define SKULLSPEED (20*FRACUNIT) + +void A_SkullAttack(mobj_t *actor) +{ + mobj_t *dest; + angle_t an; + int dist; + + if (!actor->target) + return; + + dest = actor->target; + actor->flags |= MF_SKULLFLY; + + S_StartSound(actor, actor->info->attacksound); + A_FaceTarget(actor); + an = actor->angle >> ANGLETOFINESHIFT; + actor->momx = FixedMul(SKULLSPEED, finecosine[an]); + actor->momy = FixedMul(SKULLSPEED, finesine[an]); + dist = P_AproxDistance(dest->x - actor->x, dest->y - actor->y); + dist = dist / SKULLSPEED; + + if (dist < 1) + dist = 1; + actor->momz = (dest->z+(dest->height>>1) - actor->z) / dist; +} + +// +// A_PainShootSkull +// Spawn a lost soul and launch it at the target +// + +static void A_PainShootSkull(mobj_t *actor, angle_t angle) +{ + fixed_t x,y,z; + mobj_t *newmobj; + angle_t an; + int prestep; + +// The original code checked for 20 skulls on the level, // phares +// and wouldn't spit another one if there were. If not in // phares +// compatibility mode, we remove the limit. // phares + // phares + if (comp[comp_pain]) /* killough 10/98: compatibility-optioned */ + { + // count total number of skulls currently on the level + int count = 0; + thinker_t *currentthinker = NULL; + while ((currentthinker = P_NextThinker(currentthinker,th_all)) != NULL) + if ((currentthinker->function == P_MobjThinker) + && ((mobj_t *)currentthinker)->type == MT_SKULL) + count++; + if (count > 20) // phares + return; // phares + } + + // okay, there's room for another one + + an = angle >> ANGLETOFINESHIFT; + + prestep = 4*FRACUNIT + 3*(actor->info->radius + mobjinfo[MT_SKULL].radius)/2; + + x = actor->x + FixedMul(prestep, finecosine[an]); + y = actor->y + FixedMul(prestep, finesine[an]); + z = actor->z + 8*FRACUNIT; + + if (comp[comp_skull]) /* killough 10/98: compatibility-optioned */ + newmobj = P_SpawnMobj(x, y, z, MT_SKULL); // phares + else // V + { + // Check whether the Lost Soul is being fired through a 1-sided + // wall or an impassible line, or a "monsters can't cross" line. + // If it is, then we don't allow the spawn. This is a bug fix, but + // it should be considered an enhancement, since it may disturb + // existing demos, so don't do it in compatibility mode. + + if (Check_Sides(actor,x,y)) + return; + + newmobj = P_SpawnMobj(x, y, z, MT_SKULL); + + // Check to see if the new Lost Soul's z value is above the + // ceiling of its new sector, or below the floor. If so, kill it. + + if ((newmobj->z > + (newmobj->subsector->sector->ceilingheight - newmobj->height)) || + (newmobj->z < newmobj->subsector->sector->floorheight)) + { + // kill it immediately + P_DamageMobj(newmobj,actor,actor,10000); + return; // ^ + } // | + } // phares + + /* killough 7/20/98: PEs shoot lost souls with the same friendliness */ + newmobj->flags = (newmobj->flags & ~MF_FRIEND) | (actor->flags & MF_FRIEND); + + /* killough 8/29/98: add to appropriate thread */ + P_UpdateThinker(&newmobj->thinker); + + // Check for movements. + // killough 3/15/98: don't jump over dropoffs: + + if (!P_TryMove(newmobj, newmobj->x, newmobj->y, false)) + { + // kill it immediately + P_DamageMobj(newmobj, actor, actor, 10000); + return; + } + + P_SetTarget(&newmobj->target, actor->target); + A_SkullAttack(newmobj); +} + +// +// A_PainAttack +// Spawn a lost soul and launch it at the target +// + +void A_PainAttack(mobj_t *actor) +{ + if (!actor->target) + return; + A_FaceTarget(actor); + A_PainShootSkull(actor, actor->angle); +} + +void A_PainDie(mobj_t *actor) +{ + A_Fall(actor); + A_PainShootSkull(actor, actor->angle+ANG90); + A_PainShootSkull(actor, actor->angle+ANG180); + A_PainShootSkull(actor, actor->angle+ANG270); +} + +void A_Scream(mobj_t *actor) +{ + int sound; + + switch (actor->info->deathsound) + { + case 0: + return; + + case sfx_podth1: + case sfx_podth2: + case sfx_podth3: + sound = sfx_podth1 + P_Random(pr_scream)%3; + break; + + case sfx_bgdth1: + case sfx_bgdth2: + sound = sfx_bgdth1 + P_Random(pr_scream)%2; + break; + + default: + sound = actor->info->deathsound; + break; + } + + // Check for bosses. + if (actor->type==MT_SPIDER || actor->type == MT_CYBORG) + S_StartSound(NULL, sound); // full volume + else + S_StartSound(actor, sound); +} + +void A_XScream(mobj_t *actor) +{ + S_StartSound(actor, sfx_slop); +} + +void A_Pain(mobj_t *actor) +{ + if (actor->info->painsound) + S_StartSound(actor, actor->info->painsound); +} + +void A_Fall(mobj_t *actor) +{ + // actor is on ground, it can be walked over + actor->flags &= ~MF_SOLID; +} + +// +// A_Explode +// +void A_Explode(mobj_t *thingy) +{ + P_RadiusAttack( thingy, thingy->target, 128 ); +} + +// +// A_BossDeath +// Possibly trigger special effects +// if on first boss level +// + +void A_BossDeath(mobj_t *mo) +{ + thinker_t *th; + line_t junk; + int i; + + if (gamemode == commercial) + { + if (gamemap != 7) + return; + + if ((mo->type != MT_FATSO) + && (mo->type != MT_BABY)) + return; + } + else + { + // e6y + // Additional check of gameepisode is necessary, because + // there is no right or wrong solution for E4M6 in original EXEs, + // there's nothing to emulate. + if (comp[comp_666] && gameepisode < 4) + { + // e6y + // Only following checks are present in doom2.exe ver. 1.666 and 1.9 + // instead of separate checks for each episode in doomult.exe, plutonia.exe and tnt.exe + // There is no more desync on doom.wad\episode3.lmp + // http://www.doomworld.com/idgames/index.php?id=6909 + if (gamemap != 8) + return; + if (mo->type == MT_BRUISER && gameepisode != 1) + return; + } + else + { + switch(gameepisode) + { + case 1: + if (gamemap != 8) + return; + + if (mo->type != MT_BRUISER) + return; + break; + + case 2: + if (gamemap != 8) + return; + + if (mo->type != MT_CYBORG) + return; + break; + + case 3: + if (gamemap != 8) + return; + + if (mo->type != MT_SPIDER) + return; + + break; + + case 4: + switch(gamemap) + { + case 6: + if (mo->type != MT_CYBORG) + return; + break; + + case 8: + if (mo->type != MT_SPIDER) + return; + break; + + default: + return; + break; + } + break; + + default: + if (gamemap != 8) + return; + break; + } + } + + } + + // make sure there is a player alive for victory + for (i=0; i 0) + break; + + if (i==MAXPLAYERS) + return; // no one left alive, so do not end game + + // scan the remaining thinkers to see + // if all bosses are dead + for (th = thinkercap.next ; th != &thinkercap ; th=th->next) + if (th->function == P_MobjThinker) + { + mobj_t *mo2 = (mobj_t *) th; + if (mo2 != mo && mo2->type == mo->type && mo2->health > 0) + return; // other boss not dead + } + + // victory! + if ( gamemode == commercial) + { + if (gamemap == 7) + { + if (mo->type == MT_FATSO) + { + junk.tag = 666; + EV_DoFloor(&junk,lowerFloorToLowest); + return; + } + + if (mo->type == MT_BABY) + { + junk.tag = 667; + EV_DoFloor(&junk,raiseToTexture); + return; + } + } + } + else + { + switch(gameepisode) + { + case 1: + junk.tag = 666; + EV_DoFloor(&junk, lowerFloorToLowest); + return; + break; + + case 4: + switch(gamemap) + { + case 6: + junk.tag = 666; + EV_DoDoor(&junk, blazeOpen); + return; + break; + + case 8: + junk.tag = 666; + EV_DoFloor(&junk, lowerFloorToLowest); + return; + break; + } + } + } + G_ExitLevel(); +} + + +void A_Hoof (mobj_t* mo) +{ + S_StartSound(mo, sfx_hoof); + A_Chase(mo); +} + +void A_Metal(mobj_t *mo) +{ + S_StartSound(mo, sfx_metal); + A_Chase(mo); +} + +void A_BabyMetal(mobj_t *mo) +{ + S_StartSound(mo, sfx_bspwlk); + A_Chase(mo); +} + +void A_OpenShotgun2(player_t *player, pspdef_t *psp) +{ + S_StartSound(player->mo, sfx_dbopn); +} + +void A_LoadShotgun2(player_t *player, pspdef_t *psp) +{ + S_StartSound(player->mo, sfx_dbload); +} + +void A_CloseShotgun2(player_t *player, pspdef_t *psp) +{ + S_StartSound(player->mo, sfx_dbcls); + A_ReFire(player,psp); +} + +// killough 2/7/98: Remove limit on icon landings: +mobj_t **braintargets; +int numbraintargets_alloc; +int numbraintargets; + +struct brain_s brain; // killough 3/26/98: global state of boss brain + +// killough 3/26/98: initialize icon landings at level startup, +// rather than at boss wakeup, to prevent savegame-related crashes + +void P_SpawnBrainTargets(void) // killough 3/26/98: renamed old function +{ + thinker_t *thinker; + + // find all the target spots + numbraintargets = 0; + brain.targeton = 0; + brain.easy = 0; // killough 3/26/98: always init easy to 0 + + for (thinker = thinkercap.next ; + thinker != &thinkercap ; + thinker = thinker->next) + if (thinker->function == P_MobjThinker) + { + mobj_t *m = (mobj_t *) thinker; + + if (m->type == MT_BOSSTARGET ) + { // killough 2/7/98: remove limit on icon landings: + if (numbraintargets >= numbraintargets_alloc) + braintargets = realloc(braintargets, + (numbraintargets_alloc = numbraintargets_alloc ? + numbraintargets_alloc*2 : 32) *sizeof *braintargets); + braintargets[numbraintargets++] = m; + } + } +} + +void A_BrainAwake(mobj_t *mo) +{ + S_StartSound(NULL,sfx_bossit); // killough 3/26/98: only generates sound now +} + +void A_BrainPain(mobj_t *mo) +{ + S_StartSound(NULL,sfx_bospn); +} + +void A_BrainScream(mobj_t *mo) +{ + int x; + for (x=mo->x - 196*FRACUNIT ; x< mo->x + 320*FRACUNIT ; x+= FRACUNIT*8) + { + int y = mo->y - 320*FRACUNIT; + int z = 128 + P_Random(pr_brainscream)*2*FRACUNIT; + mobj_t *th = P_SpawnMobj (x,y,z, MT_ROCKET); + th->momz = P_Random(pr_brainscream)*512; + P_SetMobjState(th, S_BRAINEXPLODE1); + th->tics -= P_Random(pr_brainscream)&7; + if (th->tics < 1) + th->tics = 1; + } + S_StartSound(NULL,sfx_bosdth); +} + +void A_BrainExplode(mobj_t *mo) +{ // killough 5/5/98: remove dependence on order of evaluation: + int t = P_Random(pr_brainexp); + int x = mo->x + (t - P_Random(pr_brainexp))*2048; + int y = mo->y; + int z = 128 + P_Random(pr_brainexp)*2*FRACUNIT; + mobj_t *th = P_SpawnMobj(x,y,z, MT_ROCKET); + th->momz = P_Random(pr_brainexp)*512; + P_SetMobjState(th, S_BRAINEXPLODE1); + th->tics -= P_Random(pr_brainexp)&7; + if (th->tics < 1) + th->tics = 1; +} + +void A_BrainDie(mobj_t *mo) +{ + G_ExitLevel(); +} + +void A_BrainSpit(mobj_t *mo) +{ + mobj_t *targ, *newmobj; + + if (!numbraintargets) // killough 4/1/98: ignore if no targets + return; + + brain.easy ^= 1; // killough 3/26/98: use brain struct + if (gameskill <= sk_easy && !brain.easy) + return; + + // shoot a cube at current target + targ = braintargets[brain.targeton++]; // killough 3/26/98: + brain.targeton %= numbraintargets; // Use brain struct for targets + + // spawn brain missile + newmobj = P_SpawnMissile(mo, targ, MT_SPAWNSHOT); + P_SetTarget(&newmobj->target, targ); + newmobj->reactiontime = (short)(((targ->y-mo->y)/newmobj->momy)/newmobj->state->tics); + + // killough 7/18/98: brain friendliness is transferred + newmobj->flags = (newmobj->flags & ~MF_FRIEND) | (mo->flags & MF_FRIEND); + + // killough 8/29/98: add to appropriate thread + P_UpdateThinker(&newmobj->thinker); + + S_StartSound(NULL, sfx_bospit); +} + +// travelling cube sound +void A_SpawnSound(mobj_t *mo) +{ + S_StartSound(mo,sfx_boscub); + A_SpawnFly(mo); +} + +void A_SpawnFly(mobj_t *mo) +{ + mobj_t *newmobj; + mobj_t *fog; + mobj_t *targ; + int r; + mobjtype_t type; + + if (--mo->reactiontime) + return; // still flying + + targ = mo->target; + + // First spawn teleport fog. + fog = P_SpawnMobj(targ->x, targ->y, targ->z, MT_SPAWNFIRE); + S_StartSound(fog, sfx_telept); + + // Randomly select monster to spawn. + r = P_Random(pr_spawnfly); + + // Probability distribution (kind of :), decreasing likelihood. + if ( r<50 ) + type = MT_TROOP; + else if (r<90) + type = MT_SERGEANT; + else if (r<120) + type = MT_SHADOWS; + else if (r<130) + type = MT_PAIN; + else if (r<160) + type = MT_HEAD; + else if (r<162) + type = MT_VILE; + else if (r<172) + type = MT_UNDEAD; + else if (r<192) + type = MT_BABY; + else if (r<222) + type = MT_FATSO; + else if (r<246) + type = MT_KNIGHT; + else + type = MT_BRUISER; + + newmobj = P_SpawnMobj(targ->x, targ->y, targ->z, type); + + /* killough 7/18/98: brain friendliness is transferred */ + newmobj->flags = (newmobj->flags & ~MF_FRIEND) | (mo->flags & MF_FRIEND); + + /* killough 8/29/98: add to appropriate thread */ + P_UpdateThinker(&newmobj->thinker); + + if (P_LookForTargets(newmobj,true)) /* killough 9/4/98 */ + P_SetMobjState(newmobj, newmobj->info->seestate); + + // telefrag anything in this spot + P_TeleportMove(newmobj, newmobj->x, newmobj->y, true); /* killough 8/9/98 */ + + // remove self (i.e., cube). + P_RemoveMobj(mo); +} + +void A_PlayerScream(mobj_t *mo) +{ + int sound = sfx_pldeth; // Default death sound. + if (gamemode != shareware && mo->health < -50) + sound = sfx_pdiehi; // IF THE PLAYER DIES LESS THAN -50% WITHOUT GIBBING + S_StartSound(mo, sound); +} + +/* cph - MBF-added codepointer functions */ + +// killough 11/98: kill an object +void A_Die(mobj_t *actor) +{ + P_DamageMobj(actor, NULL, NULL, actor->health); +} + +// +// A_Detonate +// killough 8/9/98: same as A_Explode, except that the damage is variable +// + +void A_Detonate(mobj_t *mo) +{ + P_RadiusAttack(mo, mo->target, mo->info->damage); +} + +// +// killough 9/98: a mushroom explosion effect, sorta :) +// Original idea: Linguica +// + +void A_Mushroom(mobj_t *actor) +{ + int i, j, n = actor->info->damage; + + A_Explode(actor); // First make normal explosion + + // Now launch mushroom cloud + for (i = -n; i <= n; i += 8) + for (j = -n; j <= n; j += 8) + { + mobj_t target = *actor, *mo; + target.x += i << FRACBITS; // Aim in many directions from source + target.y += j << FRACBITS; + target.z += P_AproxDistance(i,j) << (FRACBITS+2); // Aim up fairly high + mo = P_SpawnMissile(actor, &target, MT_FATSHOT); // Launch fireball + mo->momx >>= 1; + mo->momy >>= 1; // Slow it down a bit + mo->momz >>= 1; + mo->flags &= ~MF_NOGRAVITY; // Make debris fall under gravity + } +} + +// +// killough 11/98 +// +// The following were inspired by Len Pitre +// +// A small set of highly-sought-after code pointers +// + +void A_Spawn(mobj_t *mo) +{ + if (mo->state->misc1) + { + /* mobj_t *newmobj = */ + P_SpawnMobj(mo->x, mo->y, (mo->state->misc2 << FRACBITS) + mo->z, + mo->state->misc1 - 1); + /* CPhipps - no friendlyness (yet) + newmobj->flags = (newmobj->flags & ~MF_FRIEND) | (mo->flags & MF_FRIEND); + */ + } +} + +void A_Turn(mobj_t *mo) +{ + mo->angle += (unsigned int)(((uint_64_t) mo->state->misc1 << 32) / 360); +} + +void A_Face(mobj_t *mo) +{ + mo->angle = (unsigned int)(((uint_64_t) mo->state->misc1 << 32) / 360); +} + +void A_Scratch(mobj_t *mo) +{ + mo->target && (A_FaceTarget(mo), P_CheckMeleeRange(mo)) ? + mo->state->misc2 ? S_StartSound(mo, mo->state->misc2) : (void) 0, + P_DamageMobj(mo->target, mo, mo, mo->state->misc1) : (void) 0; +} + +void A_PlaySound(mobj_t *mo) +{ + S_StartSound(mo->state->misc2 ? NULL : mo, mo->state->misc1); +} + +void A_RandomJump(mobj_t *mo) +{ + if (P_Random(pr_randomjump) < mo->state->misc2) + P_SetMobjState(mo, mo->state->misc1); +} + +// +// This allows linedef effects to be activated inside deh frames. +// + +void A_LineEffect(mobj_t *mo) +{ + static line_t junk; + player_t player; + player_t *oldplayer; + junk = *lines; + oldplayer = mo->player; + mo->player = &player; + player.health = 100; + junk.special = (short)mo->state->misc1; + if (!junk.special) + return; + junk.tag = (short)mo->state->misc2; + if (!P_UseSpecialLine(mo, &junk, 0)) + P_CrossSpecialLine(&junk, 0, mo); + mo->state->misc1 = junk.special; + mo->player = oldplayer; +} diff --git a/components/doom/prboom/p_enemy.h b/components/doom/prboom/p_enemy.h new file mode 100644 index 0000000..3c85861 --- /dev/null +++ b/components/doom/prboom/p_enemy.h @@ -0,0 +1,118 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Enemy thinking, AI. + * Action Pointer Functions + * that are associated with states/frames. + * + *-----------------------------------------------------------------------------*/ + +#ifndef __P_ENEMY__ +#define __P_ENEMY__ + +#include "p_mobj.h" + +void P_NoiseAlert (mobj_t *target, mobj_t *emmiter); +void P_SpawnBrainTargets(void); /* killough 3/26/98: spawn icon landings */ + +extern struct brain_s { /* killough 3/26/98: global state of boss brain */ + int easy, targeton; +} brain; + +// ******************************************************************** +// Function addresses or Code Pointers +// ******************************************************************** +// These function addresses are the Code Pointers that have been +// modified for years by Dehacked enthusiasts. The new BEX format +// allows more extensive changes (see d_deh.c) + +// Doesn't work with g++, needs actionf_p1 +void A_Explode(); +void A_Pain(); +void A_PlayerScream(); +void A_Fall(); +void A_XScream(); +void A_Look(); +void A_Chase(); +void A_FaceTarget(); +void A_PosAttack(); +void A_Scream(); +void A_SPosAttack(); +void A_VileChase(); +void A_VileStart(); +void A_VileTarget(); +void A_VileAttack(); +void A_StartFire(); +void A_Fire(); +void A_FireCrackle(); +void A_Tracer(); +void A_SkelWhoosh(); +void A_SkelFist(); +void A_SkelMissile(); +void A_FatRaise(); +void A_FatAttack1(); +void A_FatAttack2(); +void A_FatAttack3(); +void A_BossDeath(); +void A_CPosAttack(); +void A_CPosRefire(); +void A_TroopAttack(); +void A_SargAttack(); +void A_HeadAttack(); +void A_BruisAttack(); +void A_SkullAttack(); +void A_Metal(); +void A_SpidRefire(); +void A_BabyMetal(); +void A_BspiAttack(); +void A_Hoof(); +void A_CyberAttack(); +void A_PainAttack(); +void A_PainDie(); +void A_KeenDie(); +void A_BrainPain(); +void A_BrainScream(); +void A_BrainDie(); +void A_BrainAwake(); +void A_BrainSpit(); +void A_SpawnSound(); +void A_SpawnFly(); +void A_BrainExplode(); +void A_Die(); +void A_Detonate(); /* killough 8/9/98: detonate a bomb or other device */ +void A_Mushroom(); /* killough 10/98: mushroom effect */ +void A_Spawn(); // killough 11/98 +void A_Turn(); // killough 11/98 +void A_Face(); // killough 11/98 +void A_Scratch(); // killough 11/98 +void A_PlaySound(); // killough 11/98 +void A_RandomJump(); // killough 11/98 +void A_LineEffect(); // killough 11/98 + +#endif // __P_ENEMY__ diff --git a/components/doom/prboom/p_floor.c b/components/doom/prboom/p_floor.c new file mode 100644 index 0000000..33de46d --- /dev/null +++ b/components/doom/prboom/p_floor.c @@ -0,0 +1,1036 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * General plane mover and floor mover action routines + * Floor motion, pure changer types, raising stairs. donuts, elevators + * + *-----------------------------------------------------------------------------*/ + +#include "doomstat.h" +#include "r_main.h" +#include "p_map.h" +#include "p_spec.h" +#include "p_tick.h" +#include "s_sound.h" +#include "sounds.h" + +/////////////////////////////////////////////////////////////////////// +// +// Plane (floor or ceiling), Floor motion and Elevator action routines +// +/////////////////////////////////////////////////////////////////////// + +// +// T_MovePlane() +// +// Move a plane (floor or ceiling) and check for crushing. Called +// every tick by all actions that move floors or ceilings. +// +// Passed the sector to move a plane in, the speed to move it at, +// the dest height it is to achieve, whether it crushes obstacles, +// whether it moves a floor or ceiling, and the direction up or down +// to move. +// +// Returns a result_e: +// ok - plane moved normally, has not achieved destination yet +// pastdest - plane moved normally and is now at destination height +// crushed - plane encountered an obstacle, is holding until removed +// +result_e T_MovePlane +( sector_t* sector, + fixed_t speed, + fixed_t dest, + boolean crush, + int floorOrCeiling, + int direction ) +{ + boolean flag; + fixed_t lastpos; + fixed_t destheight; //jff 02/04/98 used to keep floors/ceilings + // from moving thru each other + + switch(floorOrCeiling) + { + case 0: + // Moving a floor + switch(direction) + { + case -1: + // Moving a floor down + if (sector->floorheight - speed < dest) + { + lastpos = sector->floorheight; + sector->floorheight = dest; + flag = P_CheckSector(sector,crush); //jff 3/19/98 use faster chk + if (flag == true) + { + sector->floorheight =lastpos; + P_CheckSector(sector,crush); //jff 3/19/98 use faster chk + } + return pastdest; + } + else + { + lastpos = sector->floorheight; + sector->floorheight -= speed; + flag = P_CheckSector(sector,crush); //jff 3/19/98 use faster chk + /* cph - make more compatible with original Doom, by + * reintroducing this code. This means floors can't lower + * if objects are stuck in the ceiling */ + if ((flag == true) && comp[comp_floors]) { + sector->floorheight = lastpos; + P_ChangeSector(sector,crush); + return crushed; + } + } + break; + + case 1: + // Moving a floor up + // jff 02/04/98 keep floor from moving thru ceilings + // jff 2/22/98 weaken check to demo_compatibility + destheight = (comp[comp_floors] || destceilingheight)? + dest : sector->ceilingheight; + if (sector->floorheight + speed > destheight) + { + lastpos = sector->floorheight; + sector->floorheight = destheight; + flag = P_CheckSector(sector,crush); //jff 3/19/98 use faster chk + if (flag == true) + { + sector->floorheight = lastpos; + P_CheckSector(sector,crush); //jff 3/19/98 use faster chk + } + return pastdest; + } + else + { + // crushing is possible + lastpos = sector->floorheight; + sector->floorheight += speed; + flag = P_CheckSector(sector,crush); //jff 3/19/98 use faster chk + if (flag == true) + { + /* jff 1/25/98 fix floor crusher */ + if (comp[comp_floors]) { + if (crush == true) + return crushed; + } + sector->floorheight = lastpos; + P_CheckSector(sector,crush); //jff 3/19/98 use faster chk + return crushed; + } + } + break; + } + break; + + case 1: + // moving a ceiling + switch(direction) + { + case -1: + // moving a ceiling down + // jff 02/04/98 keep ceiling from moving thru floors + // jff 2/22/98 weaken check to demo_compatibility + destheight = (comp[comp_floors] || dest>sector->floorheight)? + dest : sector->floorheight; + if (sector->ceilingheight - speed < destheight) + { + lastpos = sector->ceilingheight; + sector->ceilingheight = destheight; + flag = P_CheckSector(sector,crush); //jff 3/19/98 use faster chk + + if (flag == true) + { + sector->ceilingheight = lastpos; + P_CheckSector(sector,crush); //jff 3/19/98 use faster chk + } + return pastdest; + } + else + { + // crushing is possible + lastpos = sector->ceilingheight; + sector->ceilingheight -= speed; + flag = P_CheckSector(sector,crush); //jff 3/19/98 use faster chk + + if (flag == true) + { + if (crush == true) + return crushed; + sector->ceilingheight = lastpos; + P_CheckSector(sector,crush); //jff 3/19/98 use faster chk + return crushed; + } + } + break; + + case 1: + // moving a ceiling up + if (sector->ceilingheight + speed > dest) + { + lastpos = sector->ceilingheight; + sector->ceilingheight = dest; + flag = P_CheckSector(sector,crush); //jff 3/19/98 use faster chk + if (flag == true) + { + sector->ceilingheight = lastpos; + P_CheckSector(sector,crush); //jff 3/19/98 use faster chk + } + return pastdest; + } + else + { + lastpos = sector->ceilingheight; + sector->ceilingheight += speed; + flag = P_CheckSector(sector,crush); //jff 3/19/98 use faster chk + } + break; + } + break; + } + return ok; +} + +// +// T_MoveFloor() +// +// Move a floor to it's destination (up or down). +// Called once per tick for each moving floor. +// +// Passed a floormove_t structure that contains all pertinent info about the +// move. See P_SPEC.H for fields. +// No return. +// +// jff 02/08/98 all cases with labels beginning with gen added to support +// generalized line type behaviors. + +void T_MoveFloor(floormove_t* floor) +{ + result_e res; + + res = T_MovePlane // move the floor + ( + floor->sector, + floor->speed, + floor->floordestheight, + floor->crush, + 0, + floor->direction + ); + + if (!(leveltime&7)) // make the floormove sound + S_StartSound((mobj_t *)&floor->sector->soundorg, sfx_stnmov); + + if (res == pastdest) // if destination height is reached + { + if (floor->direction == 1) // going up + { + switch(floor->type) // handle texture/type changes + { + case donutRaise: + floor->sector->special = floor->newspecial; + floor->sector->floorpic = floor->texture; + break; + case genFloorChgT: + case genFloorChg0: + floor->sector->special = floor->newspecial; + //jff add to fix bug in special transfers from changes + floor->sector->oldspecial = floor->oldspecial; + //fall thru + case genFloorChg: + floor->sector->floorpic = floor->texture; + break; + default: + break; + } + } + else if (floor->direction == -1) // going down + { + switch(floor->type) // handle texture/type changes + { + case lowerAndChange: + floor->sector->special = floor->newspecial; + //jff add to fix bug in special transfers from changes + floor->sector->oldspecial = floor->oldspecial; + floor->sector->floorpic = floor->texture; + break; + case genFloorChgT: + case genFloorChg0: + floor->sector->special = floor->newspecial; + //jff add to fix bug in special transfers from changes + floor->sector->oldspecial = floor->oldspecial; + //fall thru + case genFloorChg: + floor->sector->floorpic = floor->texture; + break; + default: + break; + } + } + + floor->sector->floordata = NULL; //jff 2/22/98 + P_RemoveThinker(&floor->thinker);//remove this floor from list of movers + + //jff 2/26/98 implement stair retrigger lockout while still building + // note this only applies to the retriggerable generalized stairs + + if (floor->sector->stairlock==-2) // if this sector is stairlocked + { + sector_t *sec = floor->sector; + sec->stairlock=-1; // thinker done, promote lock to -1 + + while (sec->prevsec!=-1 && sectors[sec->prevsec].stairlock!=-2) + sec = §ors[sec->prevsec]; // search for a non-done thinker + if (sec->prevsec==-1) // if all thinkers previous are done + { + sec = floor->sector; // search forward + while (sec->nextsec!=-1 && sectors[sec->nextsec].stairlock!=-2) + sec = §ors[sec->nextsec]; + if (sec->nextsec==-1) // if all thinkers ahead are done too + { + while (sec->prevsec!=-1) // clear all locks + { + sec->stairlock = 0; + sec = §ors[sec->prevsec]; + } + sec->stairlock = 0; + } + } + } + + // make floor stop sound + S_StartSound((mobj_t *)&floor->sector->soundorg, sfx_pstop); + } +} + +// +// T_MoveElevator() +// +// Move an elevator to it's destination (up or down) +// Called once per tick for each moving floor. +// +// Passed an elevator_t structure that contains all pertinent info about the +// move. See P_SPEC.H for fields. +// No return. +// +// jff 02/22/98 added to support parallel floor/ceiling motion +// +void T_MoveElevator(elevator_t* elevator) +{ + result_e res; + + if (elevator->direction<0) // moving down + { + res = T_MovePlane //jff 4/7/98 reverse order of ceiling/floor + ( + elevator->sector, + elevator->speed, + elevator->ceilingdestheight, + 0, + 1, // move floor + elevator->direction + ); + if (res==ok || res==pastdest) // jff 4/7/98 don't move ceil if blocked + T_MovePlane + ( + elevator->sector, + elevator->speed, + elevator->floordestheight, + 0, + 0, // move ceiling + elevator->direction + ); + } + else // up + { + res = T_MovePlane //jff 4/7/98 reverse order of ceiling/floor + ( + elevator->sector, + elevator->speed, + elevator->floordestheight, + 0, + 0, // move ceiling + elevator->direction + ); + if (res==ok || res==pastdest) // jff 4/7/98 don't move floor if blocked + T_MovePlane + ( + elevator->sector, + elevator->speed, + elevator->ceilingdestheight, + 0, + 1, // move floor + elevator->direction + ); + } + + // make floor move sound + if (!(leveltime&7)) + S_StartSound((mobj_t *)&elevator->sector->soundorg, sfx_stnmov); + + if (res == pastdest) // if destination height acheived + { + elevator->sector->floordata = NULL; //jff 2/22/98 + elevator->sector->ceilingdata = NULL; //jff 2/22/98 + P_RemoveThinker(&elevator->thinker); // remove elevator from actives + + // make floor stop sound + S_StartSound((mobj_t *)&elevator->sector->soundorg, sfx_pstop); + } +} + +/////////////////////////////////////////////////////////////////////// +// +// Floor motion linedef handlers +// +/////////////////////////////////////////////////////////////////////// + +// +// EV_DoFloor() +// +// Handle regular and extended floor types +// +// Passed the line that activated the floor and the type of floor motion +// Returns true if a thinker was created. +// +int EV_DoFloor +( line_t* line, + floor_e floortype ) +{ + int secnum; + int rtn; + int i; + sector_t* sec; + floormove_t* floor; + + secnum = -1; + rtn = 0; + // move all floors with the same tag as the linedef + while ((secnum = P_FindSectorFromLineTag(line,secnum)) >= 0) + { + sec = §ors[secnum]; + + // Don't start a second thinker on the same floor + if (P_SectorActive(floor_special,sec)) //jff 2/23/98 + continue; + + // new floor thinker + rtn = 1; + floor = Z_Calloc(1, sizeof(*floor), PU_LEVSPEC, 0); + P_AddThinker (&floor->thinker); + sec->floordata = floor; //jff 2/22/98 + floor->thinker.function = T_MoveFloor; + floor->type = floortype; + floor->crush = false; + + // setup the thinker according to the linedef type + switch(floortype) + { + case lowerFloor: + floor->direction = -1; + floor->sector = sec; + floor->speed = FLOORSPEED; + floor->floordestheight = P_FindHighestFloorSurrounding(sec); + break; + + //jff 02/03/30 support lowering floor by 24 absolute + case lowerFloor24: + floor->direction = -1; + floor->sector = sec; + floor->speed = FLOORSPEED; + floor->floordestheight = floor->sector->floorheight + 24 * FRACUNIT; + break; + + //jff 02/03/30 support lowering floor by 32 absolute (fast) + case lowerFloor32Turbo: + floor->direction = -1; + floor->sector = sec; + floor->speed = FLOORSPEED*4; + floor->floordestheight = floor->sector->floorheight + 32 * FRACUNIT; + break; + + case lowerFloorToLowest: + floor->direction = -1; + floor->sector = sec; + floor->speed = FLOORSPEED; + floor->floordestheight = P_FindLowestFloorSurrounding(sec); + break; + + //jff 02/03/30 support lowering floor to next lowest floor + case lowerFloorToNearest: + floor->direction = -1; + floor->sector = sec; + floor->speed = FLOORSPEED; + floor->floordestheight = + P_FindNextLowestFloor(sec,floor->sector->floorheight); + break; + + case turboLower: + floor->direction = -1; + floor->sector = sec; + floor->speed = FLOORSPEED * 4; + floor->floordestheight = P_FindHighestFloorSurrounding(sec); + if (floor->floordestheight != sec->floorheight) + floor->floordestheight += 8*FRACUNIT; + break; + + case raiseFloorCrush: + floor->crush = true; + /*fallthrough */ + case raiseFloor: + floor->direction = 1; + floor->sector = sec; + floor->speed = FLOORSPEED; + floor->floordestheight = P_FindLowestCeilingSurrounding(sec); + if (floor->floordestheight > sec->ceilingheight) + floor->floordestheight = sec->ceilingheight; + floor->floordestheight -= (8*FRACUNIT)*(floortype == raiseFloorCrush); + break; + + case raiseFloorTurbo: + floor->direction = 1; + floor->sector = sec; + floor->speed = FLOORSPEED*4; + floor->floordestheight = P_FindNextHighestFloor(sec,sec->floorheight); + break; + + case raiseFloorToNearest: + floor->direction = 1; + floor->sector = sec; + floor->speed = FLOORSPEED; + floor->floordestheight = P_FindNextHighestFloor(sec,sec->floorheight); + break; + + case raiseFloor24: + floor->direction = 1; + floor->sector = sec; + floor->speed = FLOORSPEED; + floor->floordestheight = floor->sector->floorheight + 24 * FRACUNIT; + break; + + // jff 2/03/30 support straight raise by 32 (fast) + case raiseFloor32Turbo: + floor->direction = 1; + floor->sector = sec; + floor->speed = FLOORSPEED*4; + floor->floordestheight = floor->sector->floorheight + 32 * FRACUNIT; + break; + + case raiseFloor512: + floor->direction = 1; + floor->sector = sec; + floor->speed = FLOORSPEED; + floor->floordestheight = floor->sector->floorheight + 512 * FRACUNIT; + break; + + case raiseFloor24AndChange: + floor->direction = 1; + floor->sector = sec; + floor->speed = FLOORSPEED; + floor->floordestheight = floor->sector->floorheight + 24 * FRACUNIT; + sec->floorpic = line->frontsector->floorpic; + sec->special = line->frontsector->special; + //jff 3/14/98 transfer both old and new special + sec->oldspecial = line->frontsector->oldspecial; + break; + + case raiseToTexture: + { + int minsize = INT_MAX; + side_t* side; + + /* jff 3/13/98 no ovf */ + if (!comp[comp_model]) minsize = 32000<direction = 1; + floor->sector = sec; + floor->speed = FLOORSPEED; + for (i = 0; i < sec->linecount; i++) + { + if (twoSided (secnum, i) ) + { + side = getSide(secnum,i,0); + // jff 8/14/98 don't scan texture 0, its not real + if (side->bottomtexture > 0 || + (comp[comp_model] && !side->bottomtexture)) + if (textureheight[side->bottomtexture] < minsize) + minsize = textureheight[side->bottomtexture]; + side = getSide(secnum,i,1); + // jff 8/14/98 don't scan texture 0, its not real + if (side->bottomtexture > 0 || + (comp[comp_model] && !side->bottomtexture)) + if (textureheight[side->bottomtexture] < minsize) + minsize = textureheight[side->bottomtexture]; + } + } + if (comp[comp_model]) + floor->floordestheight = floor->sector->floorheight + minsize; + else + { + floor->floordestheight = + (floor->sector->floorheight>>FRACBITS) + (minsize>>FRACBITS); + if (floor->floordestheight>32000) + floor->floordestheight = 32000; //jff 3/13/98 do not + floor->floordestheight<<=FRACBITS; // allow height overflow + } + } + break; + + case lowerAndChange: + floor->direction = -1; + floor->sector = sec; + floor->speed = FLOORSPEED; + floor->floordestheight = P_FindLowestFloorSurrounding(sec); + floor->texture = sec->floorpic; + + // jff 1/24/98 make sure floor->newspecial gets initialized + // in case no surrounding sector is at floordestheight + // --> should not affect compatibility <-- + floor->newspecial = sec->special; + //jff 3/14/98 transfer both old and new special + floor->oldspecial = sec->oldspecial; + + //jff 5/23/98 use model subroutine to unify fixes and handling + sec = P_FindModelFloorSector(floor->floordestheight,sec-sectors); + if (sec) + { + floor->texture = sec->floorpic; + floor->newspecial = sec->special; + //jff 3/14/98 transfer both old and new special + floor->oldspecial = sec->oldspecial; + } + break; + default: + break; + } + } + return rtn; +} + +// +// EV_DoChange() +// +// Handle pure change types. These change floor texture and sector type +// by trigger or numeric model without moving the floor. +// +// The linedef causing the change and the type of change is passed +// Returns true if any sector changes +// +// jff 3/15/98 added to better support generalized sector types +// +int EV_DoChange +( line_t* line, + change_e changetype ) +{ + int secnum; + int rtn; + sector_t* sec; + sector_t* secm; + + secnum = -1; + rtn = 0; + // change all sectors with the same tag as the linedef + while ((secnum = P_FindSectorFromLineTag(line,secnum)) >= 0) + { + sec = §ors[secnum]; + + rtn = 1; + + // handle trigger or numeric change type + switch(changetype) + { + case trigChangeOnly: + sec->floorpic = line->frontsector->floorpic; + sec->special = line->frontsector->special; + sec->oldspecial = line->frontsector->oldspecial; + break; + case numChangeOnly: + secm = P_FindModelFloorSector(sec->floorheight,secnum); + if (secm) // if no model, no change + { + sec->floorpic = secm->floorpic; + sec->special = secm->special; + sec->oldspecial = secm->oldspecial; + } + break; + default: + break; + } + } + return rtn; +} + +/* + * EV_BuildStairs() + * + * Handles staircase building. A sequence of sectors chosen by algorithm + * rise at a speed indicated to a height that increases by the stepsize + * each step. + * + * Passed the linedef triggering the stairs and the type of stair rise + * Returns true if any thinkers are created + * + * cph 2001/09/21 - compatibility nightmares again + * There are three different ways this function has, during its history, stepped + * through all the stairs to be triggered by the single switch + * - original Doom used a linear P_FindSectorFromLineTag, but failed to preserve + * the index of the previous sector found, so instead it would restart its + * linear search from the last sector of the previous staircase + * - MBF/PrBoom with comp_stairs fail to emulate this, because their + * P_FindSectorFromLineTag is a chained hash table implementation. Instead they + * start following the hash chain from the last sector of the previous + * staircase, which will (probably) have the wrong tag, so they miss any further + * stairs + * - Boom fixed the bug, and MBF/PrBoom without comp_stairs work right + */ +static inline int P_FindSectorFromLineTagWithLowerBound +(line_t* l, int start, int min) +{ + /* Emulate original Doom's linear lower-bounded P_FindSectorFromLineTag + * as needed */ + do { + start = P_FindSectorFromLineTag(l,start); + } while (start >= 0 && start <= min); + return start; +} + +int EV_BuildStairs +( line_t* line, + stair_e type ) +{ + /* cph 2001/09/22 - cleaned up this function to save my sanity. A separate + * outer loop index makes the logic much cleared, and local variables moved + * into the inner blocks helps too */ + int ssec = -1; + int minssec = -1; + int rtn = 0; + + // start a stair at each sector tagged the same as the linedef + while ((ssec = P_FindSectorFromLineTagWithLowerBound(line,ssec,minssec)) >= 0) + { + int secnum = ssec; + sector_t* sec = §ors[secnum]; + + // don't start a stair if the first step's floor is already moving + if (!P_SectorActive(floor_special,sec)) { //jff 2/22/98 + floormove_t* floor; + int texture, height; + fixed_t stairsize; + fixed_t speed; + int ok; + + // create new floor thinker for first step + rtn = 1; + floor = Z_Calloc(1, sizeof(*floor), PU_LEVSPEC, 0); + P_AddThinker (&floor->thinker); + sec->floordata = floor; + floor->thinker.function = T_MoveFloor; + floor->direction = 1; + floor->sector = sec; + floor->type = buildStair; //jff 3/31/98 do not leave uninited + + // set up the speed and stepsize according to the stairs type + switch(type) + { + default: // killough -- prevent compiler warning + case build8: + speed = FLOORSPEED/4; + stairsize = 8*FRACUNIT; + if (!demo_compatibility) + floor->crush = false; //jff 2/27/98 fix uninitialized crush field + break; + case turbo16: + speed = FLOORSPEED*4; + stairsize = 16*FRACUNIT; + if (!demo_compatibility) + floor->crush = true; //jff 2/27/98 fix uninitialized crush field + break; + } + floor->speed = speed; + height = sec->floorheight + stairsize; + floor->floordestheight = height; + + texture = sec->floorpic; + + // Find next sector to raise + // 1. Find 2-sided line with same sector side[0] (lowest numbered) + // 2. Other side is the next sector to raise + // 3. Unless already moving, or different texture, then stop building + do + { + int i; + ok = 0; + + for (i = 0;i < sec->linecount;i++) + { + sector_t* tsec = (sec->lines[i])->frontsector; + int newsecnum; + if ( !((sec->lines[i])->flags & ML_TWOSIDED) ) + continue; + + newsecnum = tsec-sectors; + + if (secnum != newsecnum) + continue; + + tsec = (sec->lines[i])->backsector; + if (!tsec) continue; //jff 5/7/98 if no backside, continue + newsecnum = tsec - sectors; + + // if sector's floor is different texture, look for another + if (tsec->floorpic != texture) + continue; + + /* jff 6/19/98 prevent double stepsize + * killough 10/98: intentionally left this way [MBF comment] + * cph 2001/02/06: stair bug fix should be controlled by comp_stairs, + * except if we're emulating MBF which perversly reverted the fix + */ + if (comp[comp_stairs] || (compatibility_level == mbf_compatibility)) + height += stairsize; // jff 6/28/98 change demo compatibility + + // if sector's floor already moving, look for another + if (P_SectorActive(floor_special,tsec)) //jff 2/22/98 + continue; + + /* cph - see comment above - do this iff we didn't do so above */ + if (!comp[comp_stairs] && (compatibility_level != mbf_compatibility)) + height += stairsize; + + sec = tsec; + secnum = newsecnum; + + // create and initialize a thinker for the next step + floor = Z_Calloc(1, sizeof(*floor), PU_LEVSPEC, 0); + P_AddThinker (&floor->thinker); + + sec->floordata = floor; //jff 2/22/98 + floor->thinker.function = T_MoveFloor; + floor->direction = 1; + floor->sector = sec; + floor->speed = speed; + floor->floordestheight = height; + floor->type = buildStair; //jff 3/31/98 do not leave uninited + //jff 2/27/98 fix uninitialized crush field + if (!demo_compatibility) + floor->crush = type==build8? false : true; + ok = 1; + break; + } + } while(ok); // continue until no next step is found + + } + /* killough 10/98: compatibility option */ + if (comp[comp_stairs]) { + /* cph 2001/09/22 - emulate buggy MBF comp_stairs for demos, with logic + * reversed since we now have a separate outer loop index. + * DEMOSYNC - what about boom_compatibility_compatibility? + */ + if ((compatibility_level >= mbf_compatibility) && (compatibility_level < + prboom_3_compatibility)) ssec = secnum; /* Trash outer loop index */ + else { + /* cph 2001/09/22 - now the correct comp_stairs - Doom used a linear + * search from the last secnum, so we set that as a minimum value and do + * a fresh tag search + */ + ssec = -1; minssec = secnum; + } + } + } + return rtn; +} + +// +// EV_DoDonut() +// +// Handle donut function: lower pillar, raise surrounding pool, both to height, +// texture and type of the sector surrounding the pool. +// +// Passed the linedef that triggered the donut +// Returns whether a thinker was created +// +int EV_DoDonut(line_t* line) +{ + sector_t* s1; + sector_t* s2; + sector_t* s3; + int secnum; + int rtn; + int i; + floormove_t* floor; + + secnum = -1; + rtn = 0; + // do function on all sectors with same tag as linedef + while ((secnum = P_FindSectorFromLineTag(line,secnum)) >= 0) + { + s1 = §ors[secnum]; // s1 is pillar's sector + + // do not start the donut if the pillar is already moving + if (P_SectorActive(floor_special,s1)) //jff 2/22/98 + continue; + + s2 = getNextSector(s1->lines[0],s1); // s2 is pool's sector + if (!s2) continue; // note lowest numbered line around + // pillar must be two-sided + + /* do not start the donut if the pool is already moving + * cph - DEMOSYNC - was !compatibility */ + if (!comp[comp_floors] && P_SectorActive(floor_special,s2)) + continue; //jff 5/7/98 + + // find a two sided line around the pool whose other side isn't the pillar + for (i = 0;i < s2->linecount;i++) + { + //jff 3/29/98 use true two-sidedness, not the flag + // killough 4/5/98: changed demo_compatibility to compatibility + if (comp[comp_model]) + { + if (!(s2->lines[i]->flags & ML_TWOSIDED) || s2->lines[i]->backsector == s1) + continue; + } + else if (!s2->lines[i]->backsector || s2->lines[i]->backsector == s1) + continue; + + rtn = 1; //jff 1/26/98 no donut action - no switch change on return + + s3 = s2->lines[i]->backsector; // s3 is model sector for changes + + // Spawn rising slime + floor = Z_Calloc(1, sizeof(*floor), PU_LEVSPEC, 0); + P_AddThinker (&floor->thinker); + s2->floordata = floor; //jff 2/22/98 + floor->thinker.function = T_MoveFloor; + floor->type = donutRaise; + floor->crush = false; + floor->direction = 1; + floor->sector = s2; + floor->speed = FLOORSPEED / 2; + floor->texture = s3->floorpic; + floor->newspecial = 0; + floor->floordestheight = s3->floorheight; + + // Spawn lowering donut-hole pillar + floor = Z_Calloc(1, sizeof(*floor), PU_LEVSPEC, 0); + P_AddThinker (&floor->thinker); + s1->floordata = floor; //jff 2/22/98 + floor->thinker.function = T_MoveFloor; + floor->type = lowerFloor; + floor->crush = false; + floor->direction = -1; + floor->sector = s1; + floor->speed = FLOORSPEED / 2; + floor->floordestheight = s3->floorheight; + break; + } + } + return rtn; +} + +// +// EV_DoElevator +// +// Handle elevator linedef types +// +// Passed the linedef that triggered the elevator and the elevator action +// +// jff 2/22/98 new type to move floor and ceiling in parallel +// +int EV_DoElevator +( line_t* line, + elevator_e elevtype ) +{ + int secnum; + int rtn; + sector_t* sec; + elevator_t* elevator; + + secnum = -1; + rtn = 0; + // act on all sectors with the same tag as the triggering linedef + while ((secnum = P_FindSectorFromLineTag(line,secnum)) >= 0) + { + sec = §ors[secnum]; + + // If either floor or ceiling is already activated, skip it + if (sec->floordata || sec->ceilingdata) //jff 2/22/98 + continue; + + // create and initialize new elevator thinker + rtn = 1; + elevator = Z_Calloc(1, sizeof(*elevator), PU_LEVSPEC, 0); + P_AddThinker (&elevator->thinker); + sec->floordata = elevator; //jff 2/22/98 + sec->ceilingdata = elevator; //jff 2/22/98 + elevator->thinker.function = T_MoveElevator; + elevator->type = elevtype; + + // set up the fields according to the type of elevator action + switch(elevtype) + { + // elevator down to next floor + case elevateDown: + elevator->direction = -1; + elevator->sector = sec; + elevator->speed = ELEVATORSPEED; + elevator->floordestheight = + P_FindNextLowestFloor(sec,sec->floorheight); + elevator->ceilingdestheight = + elevator->floordestheight + sec->ceilingheight - sec->floorheight; + break; + + // elevator up to next floor + case elevateUp: + elevator->direction = 1; + elevator->sector = sec; + elevator->speed = ELEVATORSPEED; + elevator->floordestheight = + P_FindNextHighestFloor(sec,sec->floorheight); + elevator->ceilingdestheight = + elevator->floordestheight + sec->ceilingheight - sec->floorheight; + break; + + // elevator to floor height of activating switch's front sector + case elevateCurrent: + elevator->sector = sec; + elevator->speed = ELEVATORSPEED; + elevator->floordestheight = line->frontsector->floorheight; + elevator->ceilingdestheight = + elevator->floordestheight + sec->ceilingheight - sec->floorheight; + elevator->direction = + elevator->floordestheight>sec->floorheight? 1 : -1; + break; + + default: + break; + } + } + return rtn; +} diff --git a/components/doom/prboom/p_genlin.c b/components/doom/prboom/p_genlin.c new file mode 100644 index 0000000..a1af2b8 --- /dev/null +++ b/components/doom/prboom/p_genlin.c @@ -0,0 +1,1155 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Generalized linedef type handlers + * Floors, Ceilings, Doors, Locked Doors, Lifts, Stairs, Crushers + * + *-----------------------------------------------------------------------------*/ + +#include "doomstat.h" //jff 6/19/98 for demo_compatibility +#include "r_main.h" +#include "p_spec.h" +#include "p_tick.h" +#include "m_random.h" +#include "s_sound.h" +#include "sounds.h" + +////////////////////////////////////////////////////////// +// +// Generalized Linedef Type handlers +// +////////////////////////////////////////////////////////// + +// +// EV_DoGenFloor() +// +// Handle generalized floor types +// +// Passed the line activating the generalized floor function +// Returns true if a thinker is created +// +// jff 02/04/98 Added this routine (and file) to handle generalized +// floor movers using bit fields in the line special type. +// +int EV_DoGenFloor +( line_t* line ) +{ + int secnum; + int rtn; + boolean manual; + sector_t* sec; + floormove_t* floor; + unsigned value = (unsigned)line->special - GenFloorBase; + + // parse the bit fields in the line's special type + + int Crsh = (value & FloorCrush) >> FloorCrushShift; + int ChgT = (value & FloorChange) >> FloorChangeShift; + int Targ = (value & FloorTarget) >> FloorTargetShift; + int Dirn = (value & FloorDirection) >> FloorDirectionShift; + int ChgM = (value & FloorModel) >> FloorModelShift; + int Sped = (value & FloorSpeed) >> FloorSpeedShift; + int Trig = (value & TriggerType) >> TriggerTypeShift; + + rtn = 0; + + // check if a manual trigger, if so do just the sector on the backside + manual = false; + if (Trig==PushOnce || Trig==PushMany) + { + if (!(sec = line->backsector)) + return rtn; + secnum = sec-sectors; + manual = true; + goto manual_floor; + } + + secnum = -1; + // if not manual do all sectors tagged the same as the line + while ((secnum = P_FindSectorFromLineTag(line,secnum)) >= 0) + { + sec = §ors[secnum]; + +manual_floor: + // Do not start another function if floor already moving + if (P_SectorActive(floor_special,sec)) + { + if (!manual) + continue; + else + return rtn; + } + + // new floor thinker + rtn = 1; + floor = Z_Calloc(1, sizeof(*floor), PU_LEVSPEC, 0); + P_AddThinker (&floor->thinker); + sec->floordata = floor; + floor->thinker.function = T_MoveFloor; + floor->crush = Crsh; + floor->direction = Dirn? 1 : -1; + floor->sector = sec; + floor->texture = sec->floorpic; + floor->newspecial = sec->special; + //jff 3/14/98 transfer old special field too + floor->oldspecial = sec->oldspecial; + floor->type = genFloor; + + // set the speed of motion + switch (Sped) + { + case SpeedSlow: + floor->speed = FLOORSPEED; + break; + case SpeedNormal: + floor->speed = FLOORSPEED*2; + break; + case SpeedFast: + floor->speed = FLOORSPEED*4; + break; + case SpeedTurbo: + floor->speed = FLOORSPEED*8; + break; + default: + break; + } + + // set the destination height + switch(Targ) + { + case FtoHnF: + floor->floordestheight = P_FindHighestFloorSurrounding(sec); + break; + case FtoLnF: + floor->floordestheight = P_FindLowestFloorSurrounding(sec); + break; + case FtoNnF: + floor->floordestheight = Dirn? + P_FindNextHighestFloor(sec,sec->floorheight) : + P_FindNextLowestFloor(sec,sec->floorheight); + break; + case FtoLnC: + floor->floordestheight = P_FindLowestCeilingSurrounding(sec); + break; + case FtoC: + floor->floordestheight = sec->ceilingheight; + break; + case FbyST: + floor->floordestheight = (floor->sector->floorheight>>FRACBITS) + + floor->direction * (P_FindShortestTextureAround(secnum)>>FRACBITS); + if (floor->floordestheight>32000) //jff 3/13/98 prevent overflow + floor->floordestheight=32000; // wraparound in floor height + if (floor->floordestheight<-32000) + floor->floordestheight=-32000; + floor->floordestheight<<=FRACBITS; + break; + case Fby24: + floor->floordestheight = floor->sector->floorheight + + floor->direction * 24*FRACUNIT; + break; + case Fby32: + floor->floordestheight = floor->sector->floorheight + + floor->direction * 32*FRACUNIT; + break; + default: + break; + } + + // set texture/type change properties + if (ChgT) // if a texture change is indicated + { + if (ChgM) // if a numeric model change + { + sector_t *sec; + + //jff 5/23/98 find model with ceiling at target height if target + //is a ceiling type + sec = (Targ==FtoLnC || Targ==FtoC)? + P_FindModelCeilingSector(floor->floordestheight,secnum) : + P_FindModelFloorSector(floor->floordestheight,secnum); + if (sec) + { + floor->texture = sec->floorpic; + switch(ChgT) + { + case FChgZero: // zero type + floor->newspecial = 0; + //jff 3/14/98 change old field too + floor->oldspecial = 0; + floor->type = genFloorChg0; + break; + case FChgTyp: // copy type + floor->newspecial = sec->special; + //jff 3/14/98 change old field too + floor->oldspecial = sec->oldspecial; + floor->type = genFloorChgT; + break; + case FChgTxt: // leave type be + floor->type = genFloorChg; + break; + default: + break; + } + } + } + else // else if a trigger model change + { + floor->texture = line->frontsector->floorpic; + switch (ChgT) + { + case FChgZero: // zero type + floor->newspecial = 0; + //jff 3/14/98 change old field too + floor->oldspecial = 0; + floor->type = genFloorChg0; + break; + case FChgTyp: // copy type + floor->newspecial = line->frontsector->special; + //jff 3/14/98 change old field too + floor->oldspecial = line->frontsector->oldspecial; + floor->type = genFloorChgT; + break; + case FChgTxt: // leave type be + floor->type = genFloorChg; + default: + break; + } + } + } + if (manual) return rtn; + } + return rtn; +} + + +// +// EV_DoGenCeiling() +// +// Handle generalized ceiling types +// +// Passed the linedef activating the ceiling function +// Returns true if a thinker created +// +// jff 02/04/98 Added this routine (and file) to handle generalized +// floor movers using bit fields in the line special type. +// +int EV_DoGenCeiling +( line_t* line ) +{ + int secnum; + int rtn; + boolean manual; + fixed_t targheight; + sector_t* sec; + ceiling_t* ceiling; + unsigned value = (unsigned)line->special - GenCeilingBase; + + // parse the bit fields in the line's special type + + int Crsh = (value & CeilingCrush) >> CeilingCrushShift; + int ChgT = (value & CeilingChange) >> CeilingChangeShift; + int Targ = (value & CeilingTarget) >> CeilingTargetShift; + int Dirn = (value & CeilingDirection) >> CeilingDirectionShift; + int ChgM = (value & CeilingModel) >> CeilingModelShift; + int Sped = (value & CeilingSpeed) >> CeilingSpeedShift; + int Trig = (value & TriggerType) >> TriggerTypeShift; + + rtn = 0; + + // check if a manual trigger, if so do just the sector on the backside + manual = false; + if (Trig==PushOnce || Trig==PushMany) + { + if (!(sec = line->backsector)) + return rtn; + secnum = sec-sectors; + manual = true; + goto manual_ceiling; + } + + secnum = -1; + // if not manual do all sectors tagged the same as the line + while ((secnum = P_FindSectorFromLineTag(line,secnum)) >= 0) + { + sec = §ors[secnum]; + +manual_ceiling: + // Do not start another function if ceiling already moving + if (P_SectorActive(ceiling_special,sec)) //jff 2/22/98 + { + if (!manual) + continue; + else + return rtn; + } + + // new ceiling thinker + rtn = 1; + ceiling = Z_Calloc(1, sizeof(*ceiling), PU_LEVSPEC, 0); + P_AddThinker (&ceiling->thinker); + sec->ceilingdata = ceiling; //jff 2/22/98 + ceiling->thinker.function = T_MoveCeiling; + ceiling->crush = Crsh; + ceiling->direction = Dirn? 1 : -1; + ceiling->sector = sec; + ceiling->texture = sec->ceilingpic; + ceiling->newspecial = sec->special; + //jff 3/14/98 change old field too + ceiling->oldspecial = sec->oldspecial; + ceiling->tag = sec->tag; + ceiling->type = genCeiling; + + // set speed of motion + switch (Sped) + { + case SpeedSlow: + ceiling->speed = CEILSPEED; + break; + case SpeedNormal: + ceiling->speed = CEILSPEED*2; + break; + case SpeedFast: + ceiling->speed = CEILSPEED*4; + break; + case SpeedTurbo: + ceiling->speed = CEILSPEED*8; + break; + default: + break; + } + + // set destination target height + targheight = sec->ceilingheight; + switch(Targ) + { + case CtoHnC: + targheight = P_FindHighestCeilingSurrounding(sec); + break; + case CtoLnC: + targheight = P_FindLowestCeilingSurrounding(sec); + break; + case CtoNnC: + targheight = Dirn? + P_FindNextHighestCeiling(sec,sec->ceilingheight) : + P_FindNextLowestCeiling(sec,sec->ceilingheight); + break; + case CtoHnF: + targheight = P_FindHighestFloorSurrounding(sec); + break; + case CtoF: + targheight = sec->floorheight; + break; + case CbyST: + targheight = (ceiling->sector->ceilingheight>>FRACBITS) + + ceiling->direction * (P_FindShortestUpperAround(secnum)>>FRACBITS); + if (targheight>32000) //jff 3/13/98 prevent overflow + targheight=32000; // wraparound in ceiling height + if (targheight<-32000) + targheight=-32000; + targheight<<=FRACBITS; + break; + case Cby24: + targheight = ceiling->sector->ceilingheight + + ceiling->direction * 24*FRACUNIT; + break; + case Cby32: + targheight = ceiling->sector->ceilingheight + + ceiling->direction * 32*FRACUNIT; + break; + default: + break; + } + if (Dirn) ceiling->topheight = targheight; + else ceiling->bottomheight = targheight; + + // set texture/type change properties + if (ChgT) // if a texture change is indicated + { + if (ChgM) // if a numeric model change + { + sector_t *sec; + + //jff 5/23/98 find model with floor at target height if target + //is a floor type + sec = (Targ==CtoHnF || Targ==CtoF)? + P_FindModelFloorSector(targheight,secnum) : + P_FindModelCeilingSector(targheight,secnum); + if (sec) + { + ceiling->texture = sec->ceilingpic; + switch (ChgT) + { + case CChgZero: // type is zeroed + ceiling->newspecial = 0; + //jff 3/14/98 change old field too + ceiling->oldspecial = 0; + ceiling->type = genCeilingChg0; + break; + case CChgTyp: // type is copied + ceiling->newspecial = sec->special; + //jff 3/14/98 change old field too + ceiling->oldspecial = sec->oldspecial; + ceiling->type = genCeilingChgT; + break; + case CChgTxt: // type is left alone + ceiling->type = genCeilingChg; + break; + default: + break; + } + } + } + else // else if a trigger model change + { + ceiling->texture = line->frontsector->ceilingpic; + switch (ChgT) + { + case CChgZero: // type is zeroed + ceiling->newspecial = 0; + //jff 3/14/98 change old field too + ceiling->oldspecial = 0; + ceiling->type = genCeilingChg0; + break; + case CChgTyp: // type is copied + ceiling->newspecial = line->frontsector->special; + //jff 3/14/98 change old field too + ceiling->oldspecial = line->frontsector->oldspecial; + ceiling->type = genCeilingChgT; + break; + case CChgTxt: // type is left alone + ceiling->type = genCeilingChg; + break; + default: + break; + } + } + } + P_AddActiveCeiling(ceiling); // add this ceiling to the active list + if (manual) return rtn; + } + return rtn; +} + +// +// EV_DoGenLift() +// +// Handle generalized lift types +// +// Passed the linedef activating the lift +// Returns true if a thinker is created +// +int EV_DoGenLift +( line_t* line ) +{ + plat_t* plat; + int secnum; + int rtn; + boolean manual; + sector_t* sec; + unsigned value = (unsigned)line->special - GenLiftBase; + + // parse the bit fields in the line's special type + + int Targ = (value & LiftTarget) >> LiftTargetShift; + int Dely = (value & LiftDelay) >> LiftDelayShift; + int Sped = (value & LiftSpeed) >> LiftSpeedShift; + int Trig = (value & TriggerType) >> TriggerTypeShift; + + secnum = -1; + rtn = 0; + + // Activate all plats that are in_stasis + + if (Targ==LnF2HnF) + P_ActivateInStasis(line->tag); + + // check if a manual trigger, if so do just the sector on the backside + manual = false; + if (Trig==PushOnce || Trig==PushMany) + { + if (!(sec = line->backsector)) + return rtn; + secnum = sec-sectors; + manual = true; + goto manual_lift; + } + + // if not manual do all sectors tagged the same as the line + while ((secnum = P_FindSectorFromLineTag(line,secnum)) >= 0) + { + sec = §ors[secnum]; + +manual_lift: + // Do not start another function if floor already moving + if (P_SectorActive(floor_special,sec)) + { + if (!manual) + continue; + else + return rtn; + } + + // Setup the plat thinker + rtn = 1; + plat = Z_Calloc(1, sizeof(*plat), PU_LEVSPEC, 0); + P_AddThinker(&plat->thinker); + + plat->sector = sec; + plat->sector->floordata = plat; + plat->thinker.function = T_PlatRaise; + plat->crush = false; + plat->tag = line->tag; + + plat->type = genLift; + plat->high = sec->floorheight; + plat->status = down; + + // setup the target destination height + switch(Targ) + { + case F2LnF: + plat->low = P_FindLowestFloorSurrounding(sec); + if (plat->low > sec->floorheight) + plat->low = sec->floorheight; + break; + case F2NnF: + plat->low = P_FindNextLowestFloor(sec,sec->floorheight); + break; + case F2LnC: + plat->low = P_FindLowestCeilingSurrounding(sec); + if (plat->low > sec->floorheight) + plat->low = sec->floorheight; + break; + case LnF2HnF: + plat->type = genPerpetual; + plat->low = P_FindLowestFloorSurrounding(sec); + if (plat->low > sec->floorheight) + plat->low = sec->floorheight; + plat->high = P_FindHighestFloorSurrounding(sec); + if (plat->high < sec->floorheight) + plat->high = sec->floorheight; + plat->status = P_Random(pr_genlift)&1; + break; + default: + break; + } + + // setup the speed of motion + switch(Sped) + { + case SpeedSlow: + plat->speed = PLATSPEED * 2; + break; + case SpeedNormal: + plat->speed = PLATSPEED * 4; + break; + case SpeedFast: + plat->speed = PLATSPEED * 8; + break; + case SpeedTurbo: + plat->speed = PLATSPEED * 16; + break; + default: + break; + } + + // setup the delay time before the floor returns + switch(Dely) + { + case 0: + plat->wait = 1*35; + break; + case 1: + plat->wait = PLATWAIT*35; + break; + case 2: + plat->wait = 5*35; + break; + case 3: + plat->wait = 10*35; + break; + } + + S_StartSound((mobj_t *)&sec->soundorg,sfx_pstart); + P_AddActivePlat(plat); // add this plat to the list of active plats + + if (manual) + return rtn; + } + return rtn; +} + +// +// EV_DoGenStairs() +// +// Handle generalized stair building +// +// Passed the linedef activating the stairs +// Returns true if a thinker is created +// +int EV_DoGenStairs +( line_t* line ) +{ + int secnum; + int osecnum; //jff 3/4/98 preserve loop index + int height; + int i; + int newsecnum; + int texture; + int ok; + int rtn; + boolean manual; + + sector_t* sec; + sector_t* tsec; + + floormove_t* floor; + + fixed_t stairsize; + fixed_t speed; + + unsigned value = (unsigned)line->special - GenStairsBase; + + // parse the bit fields in the line's special type + + int Igno = (value & StairIgnore) >> StairIgnoreShift; + int Dirn = (value & StairDirection) >> StairDirectionShift; + int Step = (value & StairStep) >> StairStepShift; + int Sped = (value & StairSpeed) >> StairSpeedShift; + int Trig = (value & TriggerType) >> TriggerTypeShift; + + rtn = 0; + + // check if a manual trigger, if so do just the sector on the backside + manual = false; + if (Trig==PushOnce || Trig==PushMany) + { + if (!(sec = line->backsector)) + return rtn; + secnum = sec-sectors; + manual = true; + goto manual_stair; + } + + secnum = -1; + // if not manual do all sectors tagged the same as the line + while ((secnum = P_FindSectorFromLineTag(line,secnum)) >= 0) + { + sec = §ors[secnum]; + +manual_stair: + //Do not start another function if floor already moving + //jff 2/26/98 add special lockout condition to wait for entire + //staircase to build before retriggering + if (P_SectorActive(floor_special,sec) || sec->stairlock) + { + if (!manual) + continue; + else + return rtn; + } + + // new floor thinker + rtn = 1; + floor = Z_Calloc(1, sizeof(*floor), PU_LEVSPEC, 0); + P_AddThinker (&floor->thinker); + sec->floordata = floor; + floor->thinker.function = T_MoveFloor; + floor->direction = Dirn? 1 : -1; + floor->sector = sec; + + // setup speed of stair building + switch(Sped) + { + default: + case SpeedSlow: + floor->speed = FLOORSPEED/4; + break; + case SpeedNormal: + floor->speed = FLOORSPEED/2; + break; + case SpeedFast: + floor->speed = FLOORSPEED*2; + break; + case SpeedTurbo: + floor->speed = FLOORSPEED*4; + break; + } + + // setup stepsize for stairs + switch(Step) + { + default: + case 0: + stairsize = 4*FRACUNIT; + break; + case 1: + stairsize = 8*FRACUNIT; + break; + case 2: + stairsize = 16*FRACUNIT; + break; + case 3: + stairsize = 24*FRACUNIT; + break; + } + + speed = floor->speed; + height = sec->floorheight + floor->direction * stairsize; + floor->floordestheight = height; + texture = sec->floorpic; + floor->crush = false; + floor->type = genBuildStair; // jff 3/31/98 do not leave uninited + + sec->stairlock = -2; // jff 2/26/98 set up lock on current sector + sec->nextsec = -1; + sec->prevsec = -1; + + osecnum = secnum; //jff 3/4/98 preserve loop index + // Find next sector to raise + // 1. Find 2-sided line with same sector side[0] + // 2. Other side is the next sector to raise + do + { + ok = 0; + for (i = 0;i < sec->linecount;i++) + { + if ( !((sec->lines[i])->backsector) ) + continue; + + tsec = (sec->lines[i])->frontsector; + newsecnum = tsec-sectors; + + if (secnum != newsecnum) + continue; + + tsec = (sec->lines[i])->backsector; + newsecnum = tsec - sectors; + + if (!Igno && tsec->floorpic != texture) + continue; + + /* jff 6/19/98 prevent double stepsize */ + if (compatibility_level < boom_202_compatibility) + height += floor->direction * stairsize; + + //jff 2/26/98 special lockout condition for retriggering + if (P_SectorActive(floor_special,tsec) || tsec->stairlock) + continue; + + /* jff 6/19/98 increase height AFTER continue */ + if (compatibility_level >= boom_202_compatibility) + height += floor->direction * stairsize; + + // jff 2/26/98 + // link the stair chain in both directions + // lock the stair sector until building complete + sec->nextsec = newsecnum; // link step to next + tsec->prevsec = secnum; // link next back + tsec->nextsec = -1; // set next forward link as end + tsec->stairlock = -2; // lock the step + + sec = tsec; + secnum = newsecnum; + floor = Z_Calloc(1, sizeof(*floor), PU_LEVSPEC, 0); + P_AddThinker (&floor->thinker); + + sec->floordata = floor; + floor->thinker.function = T_MoveFloor; + floor->direction = Dirn? 1 : -1; + floor->sector = sec; + floor->speed = speed; + floor->floordestheight = height; + floor->crush = false; + floor->type = genBuildStair; // jff 3/31/98 do not leave uninited + + ok = 1; + break; + } + } while(ok); + if (manual) + return rtn; + secnum = osecnum; //jff 3/4/98 restore old loop index + } + // retriggerable generalized stairs build up or down alternately + if (rtn) + line->special ^= StairDirection; // alternate dir on succ activations + return rtn; +} + +// +// EV_DoGenCrusher() +// +// Handle generalized crusher types +// +// Passed the linedef activating the crusher +// Returns true if a thinker created +// +int EV_DoGenCrusher +( line_t* line ) +{ + int secnum; + int rtn; + boolean manual; + sector_t* sec; + ceiling_t* ceiling; + unsigned value = (unsigned)line->special - GenCrusherBase; + + // parse the bit fields in the line's special type + + int Slnt = (value & CrusherSilent) >> CrusherSilentShift; + int Sped = (value & CrusherSpeed) >> CrusherSpeedShift; + int Trig = (value & TriggerType) >> TriggerTypeShift; + + //jff 2/22/98 Reactivate in-stasis ceilings...for certain types. + //jff 4/5/98 return if activated + rtn = P_ActivateInStasisCeiling(line); + + // check if a manual trigger, if so do just the sector on the backside + manual = false; + if (Trig==PushOnce || Trig==PushMany) + { + if (!(sec = line->backsector)) + return rtn; + secnum = sec-sectors; + manual = true; + goto manual_crusher; + } + + secnum = -1; + // if not manual do all sectors tagged the same as the line + while ((secnum = P_FindSectorFromLineTag(line,secnum)) >= 0) + { + sec = §ors[secnum]; + +manual_crusher: + // Do not start another function if ceiling already moving + if (P_SectorActive(ceiling_special,sec)) //jff 2/22/98 + { + if (!manual) + continue; + else + return rtn; + } + + // new ceiling thinker + rtn = 1; + ceiling = Z_Calloc(1, sizeof(*ceiling), PU_LEVSPEC, 0); + P_AddThinker (&ceiling->thinker); + sec->ceilingdata = ceiling; //jff 2/22/98 + ceiling->thinker.function = T_MoveCeiling; + ceiling->crush = true; + ceiling->direction = -1; + ceiling->sector = sec; + ceiling->texture = sec->ceilingpic; + ceiling->newspecial = sec->special; + ceiling->tag = sec->tag; + ceiling->type = Slnt? genSilentCrusher : genCrusher; + ceiling->topheight = sec->ceilingheight; + ceiling->bottomheight = sec->floorheight + (8*FRACUNIT); + + // setup ceiling motion speed + switch (Sped) + { + case SpeedSlow: + ceiling->speed = CEILSPEED; + break; + case SpeedNormal: + ceiling->speed = CEILSPEED*2; + break; + case SpeedFast: + ceiling->speed = CEILSPEED*4; + break; + case SpeedTurbo: + ceiling->speed = CEILSPEED*8; + break; + default: + break; + } + ceiling->oldspeed=ceiling->speed; + + P_AddActiveCeiling(ceiling); // add to list of active ceilings + if (manual) return rtn; + } + return rtn; +} + +// +// EV_DoGenLockedDoor() +// +// Handle generalized locked door types +// +// Passed the linedef activating the generalized locked door +// Returns true if a thinker created +// +int EV_DoGenLockedDoor +( line_t* line ) +{ + int secnum,rtn; + sector_t* sec; + vldoor_t* door; + boolean manual; + unsigned value = (unsigned)line->special - GenLockedBase; + + // parse the bit fields in the line's special type + + int Kind = (value & LockedKind) >> LockedKindShift; + int Sped = (value & LockedSpeed) >> LockedSpeedShift; + int Trig = (value & TriggerType) >> TriggerTypeShift; + + rtn = 0; + + // check if a manual trigger, if so do just the sector on the backside + manual = false; + if (Trig==PushOnce || Trig==PushMany) + { + if (!(sec = line->backsector)) + return rtn; + secnum = sec-sectors; + manual = true; + goto manual_locked; + } + + secnum = -1; + rtn = 0; + + // if not manual do all sectors tagged the same as the line + while ((secnum = P_FindSectorFromLineTag(line,secnum)) >= 0) + { + sec = §ors[secnum]; +manual_locked: + // Do not start another function if ceiling already moving + if (P_SectorActive(ceiling_special,sec)) //jff 2/22/98 + { + if (!manual) + continue; + else + return rtn; + } + + // new door thinker + rtn = 1; + door = Z_Calloc(1, sizeof(*door), PU_LEVSPEC, 0); + P_AddThinker (&door->thinker); + sec->ceilingdata = door; //jff 2/22/98 + + door->thinker.function = T_VerticalDoor; + door->sector = sec; + door->topwait = VDOORWAIT; + door->line = line; + door->topheight = P_FindLowestCeilingSurrounding(sec); + door->topheight -= 4*FRACUNIT; + door->direction = 1; + + /* killough 10/98: implement gradual lighting */ + door->lighttag = !comp[comp_doorlight] && + (line->special&6) == 6 && + line->special > GenLockedBase ? line->tag : 0; + + // setup speed of door motion + switch(Sped) + { + default: + case SpeedSlow: + door->type = Kind? genOpen : genRaise; + door->speed = VDOORSPEED; + break; + case SpeedNormal: + door->type = Kind? genOpen : genRaise; + door->speed = VDOORSPEED*2; + break; + case SpeedFast: + door->type = Kind? genBlazeOpen : genBlazeRaise; + door->speed = VDOORSPEED*4; + break; + case SpeedTurbo: + door->type = Kind? genBlazeOpen : genBlazeRaise; + door->speed = VDOORSPEED*8; + + break; + } + + // killough 4/15/98: fix generalized door opening sounds + // (previously they always had the blazing door close sound) + + S_StartSound((mobj_t *)&door->sector->soundorg, // killough 4/15/98 + door->speed >= VDOORSPEED*4 ? sfx_bdopn : sfx_doropn); + + if (manual) + return rtn; + } + return rtn; +} + +// +// EV_DoGenDoor() +// +// Handle generalized door types +// +// Passed the linedef activating the generalized door +// Returns true if a thinker created +// +int EV_DoGenDoor +( line_t* line ) +{ + int secnum,rtn; + sector_t* sec; + boolean manual; + vldoor_t* door; + unsigned value = (unsigned)line->special - GenDoorBase; + + // parse the bit fields in the line's special type + + int Dely = (value & DoorDelay) >> DoorDelayShift; + int Kind = (value & DoorKind) >> DoorKindShift; + int Sped = (value & DoorSpeed) >> DoorSpeedShift; + int Trig = (value & TriggerType) >> TriggerTypeShift; + + rtn = 0; + + // check if a manual trigger, if so do just the sector on the backside + manual = false; + if (Trig==PushOnce || Trig==PushMany) + { + if (!(sec = line->backsector)) + return rtn; + secnum = sec-sectors; + manual = true; + goto manual_door; + } + + + secnum = -1; + rtn = 0; + + // if not manual do all sectors tagged the same as the line + while ((secnum = P_FindSectorFromLineTag(line,secnum)) >= 0) + { + sec = §ors[secnum]; +manual_door: + // Do not start another function if ceiling already moving + if (P_SectorActive(ceiling_special,sec)) //jff 2/22/98 + { + if (!manual) + continue; + else + return rtn; + } + + // new door thinker + rtn = 1; + door = Z_Calloc(1, sizeof(*door), PU_LEVSPEC, 0); + P_AddThinker (&door->thinker); + sec->ceilingdata = door; //jff 2/22/98 + + door->thinker.function = T_VerticalDoor; + door->sector = sec; + // setup delay for door remaining open/closed + switch(Dely) + { + default: + case 0: + door->topwait = 35; + break; + case 1: + door->topwait = VDOORWAIT; + break; + case 2: + door->topwait = 2*VDOORWAIT; + break; + case 3: + door->topwait = 7*VDOORWAIT; + break; + } + + // setup speed of door motion + switch(Sped) + { + default: + case SpeedSlow: + door->speed = VDOORSPEED; + break; + case SpeedNormal: + door->speed = VDOORSPEED*2; + break; + case SpeedFast: + door->speed = VDOORSPEED*4; + break; + case SpeedTurbo: + door->speed = VDOORSPEED*8; + break; + } + door->line = line; // jff 1/31/98 remember line that triggered us + + /* killough 10/98: implement gradual lighting */ + door->lighttag = !comp[comp_doorlight] && + (line->special&6) == 6 && + line->special > GenLockedBase ? line->tag : 0; + + // set kind of door, whether it opens then close, opens, closes etc. + // assign target heights accordingly + switch(Kind) + { + case OdCDoor: + door->direction = 1; + door->topheight = P_FindLowestCeilingSurrounding(sec); + door->topheight -= 4*FRACUNIT; + if (door->topheight != sec->ceilingheight) + S_StartSound((mobj_t *)&door->sector->soundorg,Sped>=SpeedFast || comp[comp_sound] ? sfx_bdopn : sfx_doropn); + door->type = Sped>=SpeedFast? genBlazeRaise : genRaise; + break; + case ODoor: + door->direction = 1; + door->topheight = P_FindLowestCeilingSurrounding(sec); + door->topheight -= 4*FRACUNIT; + if (door->topheight != sec->ceilingheight) + S_StartSound((mobj_t *)&door->sector->soundorg,Sped>=SpeedFast || comp[comp_sound] ? sfx_bdopn : sfx_doropn); + door->type = Sped>=SpeedFast? genBlazeOpen : genOpen; + break; + case CdODoor: + door->topheight = sec->ceilingheight; + door->direction = -1; + S_StartSound((mobj_t *)&door->sector->soundorg,Sped>=SpeedFast && !comp[comp_sound] ? sfx_bdcls : sfx_dorcls); + door->type = Sped>=SpeedFast? genBlazeCdO : genCdO; + break; + case CDoor: + door->topheight = P_FindLowestCeilingSurrounding(sec); + door->topheight -= 4*FRACUNIT; + door->direction = -1; + S_StartSound((mobj_t *)&door->sector->soundorg,Sped>=SpeedFast && !comp[comp_sound] ? sfx_bdcls : sfx_dorcls); + door->type = Sped>=SpeedFast? genBlazeClose : genClose; + break; + default: + break; + } + if (manual) + return rtn; + } + return rtn; +} diff --git a/components/doom/prboom/p_inter.c b/components/doom/prboom/p_inter.c new file mode 100644 index 0000000..be4341b --- /dev/null +++ b/components/doom/prboom/p_inter.c @@ -0,0 +1,914 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Handling interactions (i.e., collisions). + * + *-----------------------------------------------------------------------------*/ + +#include "doomstat.h" +#include "dstrings.h" +#include "m_random.h" +#include "am_map.h" +#include "r_main.h" +#include "s_sound.h" +#include "sounds.h" +#include "d_deh.h" // Ty 03/22/98 - externalized strings +#include "p_tick.h" +#include "lprintf.h" + +#include "p_inter.h" +#include "p_enemy.h" + +#ifdef __GNUG__ +#pragma implementation "p_inter.h" +#endif +#include "p_inter.h" + +#define BONUSADD 6 + +// Ty 03/07/98 - add deh externals +// Maximums and such were hardcoded values. Need to externalize those for +// dehacked support (and future flexibility). Most var names came from the key +// strings used in dehacked. + +int initial_health = 100; +int initial_bullets = 50; +int maxhealth = 100; // was MAXHEALTH as a #define, used only in this module +int max_armor = 200; +int green_armor_class = 1; // these are involved with armortype below +int blue_armor_class = 2; +int max_soul = 200; +int soul_health = 100; +int mega_health = 200; +int god_health = 100; // these are used in cheats (see st_stuff.c) +int idfa_armor = 200; +int idfa_armor_class = 2; +// not actually used due to pairing of cheat_k and cheat_fa +int idkfa_armor = 200; +int idkfa_armor_class = 2; + +int bfgcells = 40; // used in p_pspr.c +int monsters_infight = 0; // e6y: Dehacked support - monsters infight +// Ty 03/07/98 - end deh externals + +// a weapon is found with two clip loads, +// a big item has five clip loads +int maxammo[NUMAMMO] = {200, 50, 300, 50}; +int clipammo[NUMAMMO] = { 10, 4, 20, 1}; + +// +// GET STUFF +// + +// +// P_GiveAmmo +// Num is the number of clip loads, +// not the individual count (0= 1/2 clip). +// Returns false if the ammo can't be picked up at all +// + +static boolean P_GiveAmmo(player_t *player, ammotype_t ammo, int num) +{ + int oldammo; + + if (ammo == am_noammo) + return false; + +#ifdef RANGECHECK + if (ammo < 0 || ammo > NUMAMMO) + I_Error ("P_GiveAmmo: bad type %i", ammo); +#endif + + if ( player->ammo[ammo] == player->maxammo[ammo] ) + return false; + + if (num) + num *= clipammo[ammo]; + else + num = clipammo[ammo]/2; + + // give double ammo in trainer mode, you'll need in nightmare + if (gameskill == sk_baby || gameskill == sk_nightmare) + num <<= 1; + + oldammo = player->ammo[ammo]; + player->ammo[ammo] += num; + + if (player->ammo[ammo] > player->maxammo[ammo]) + player->ammo[ammo] = player->maxammo[ammo]; + + // If non zero ammo, don't change up weapons, player was lower on purpose. + if (oldammo) + return true; + + // We were down to zero, so select a new weapon. + // Preferences are not user selectable. + + switch (ammo) + { + case am_clip: + if (player->readyweapon == wp_fist) + { + if (player->weaponowned[wp_chaingun]) + player->pendingweapon = wp_chaingun; + else + player->pendingweapon = wp_pistol; + } + break; + + case am_shell: + if (player->readyweapon == wp_fist || player->readyweapon == wp_pistol) + if (player->weaponowned[wp_shotgun]) + player->pendingweapon = wp_shotgun; + break; + + case am_cell: + if (player->readyweapon == wp_fist || player->readyweapon == wp_pistol) + if (player->weaponowned[wp_plasma]) + player->pendingweapon = wp_plasma; + break; + + case am_misl: + if (player->readyweapon == wp_fist) + if (player->weaponowned[wp_missile]) + player->pendingweapon = wp_missile; + default: + break; + } + return true; +} + +// +// P_GiveWeapon +// The weapon name may have a MF_DROPPED flag ored in. +// + +static boolean P_GiveWeapon(player_t *player, weapontype_t weapon, boolean dropped) +{ + boolean gaveammo; + boolean gaveweapon; + + if (netgame && deathmatch!=2 && !dropped) + { + // leave placed weapons forever on net games + if (player->weaponowned[weapon]) + return false; + + player->bonuscount += BONUSADD; + player->weaponowned[weapon] = true; + + P_GiveAmmo(player, weaponinfo[weapon].ammo, deathmatch ? 5 : 2); + + player->pendingweapon = weapon; + /* cph 20028/10 - for old-school DM addicts, allow old behavior + * where only consoleplayer's pickup sounds are heard */ + // displayplayer, not consoleplayer, for viewing multiplayer demos + if (!comp[comp_sound] || player == &players[displayplayer]) + S_StartSound (player->mo, sfx_wpnup|PICKUP_SOUND); // killough 4/25/98 + return false; + } + + if (weaponinfo[weapon].ammo != am_noammo) + { + // give one clip with a dropped weapon, + // two clips with a found weapon + gaveammo = P_GiveAmmo (player, weaponinfo[weapon].ammo, dropped ? 1 : 2); + } + else + gaveammo = false; + + if (player->weaponowned[weapon]) + gaveweapon = false; + else + { + gaveweapon = true; + player->weaponowned[weapon] = true; + player->pendingweapon = weapon; + } + return gaveweapon || gaveammo; +} + +// +// P_GiveBody +// Returns false if the body isn't needed at all +// + +static boolean P_GiveBody(player_t *player, int num) +{ + if (player->health >= maxhealth) + return false; // Ty 03/09/98 externalized MAXHEALTH to maxhealth + player->health += num; + if (player->health > maxhealth) + player->health = maxhealth; + player->mo->health = player->health; + return true; +} + +// +// P_GiveArmor +// Returns false if the armor is worse +// than the current armor. +// + +static boolean P_GiveArmor(player_t *player, int armortype) +{ + int hits = armortype*100; + if (player->armorpoints >= hits) + return false; // don't pick up + player->armortype = armortype; + player->armorpoints = hits; + return true; +} + +// +// P_GiveCard +// + +static void P_GiveCard(player_t *player, card_t card) +{ + if (player->cards[card]) + return; + player->bonuscount = BONUSADD; + player->cards[card] = 1; +} + +// +// P_GivePower +// +// Rewritten by Lee Killough +// + +boolean P_GivePower(player_t *player, int power) +{ + static const int tics[NUMPOWERS] = { + INVULNTICS, 1 /* strength */, INVISTICS, + IRONTICS, 1 /* allmap */, INFRATICS, + }; + + switch (power) + { + case pw_invisibility: + player->mo->flags |= MF_SHADOW; + break; + case pw_allmap: + if (player->powers[pw_allmap]) + return false; + break; + case pw_strength: + P_GiveBody(player,100); + break; + } + + // Unless player has infinite duration cheat, set duration (killough) + + if (player->powers[power] >= 0) + player->powers[power] = tics[power]; + return true; +} + +// +// P_TouchSpecialThing +// + +void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher) +{ + player_t *player; + int i; + int sound; + fixed_t delta = special->z - toucher->z; + + if (delta > toucher->height || delta < -8*FRACUNIT) + return; // out of reach + + sound = sfx_itemup; + player = toucher->player; + + // Dead thing touching. + // Can happen with a sliding player corpse. + if (toucher->health <= 0) + return; + + // Identify by sprite. + switch (special->sprite) + { + // armor + case SPR_ARM1: + if (!P_GiveArmor (player, green_armor_class)) + return; + player->message = s_GOTARMOR; // Ty 03/22/98 - externalized + break; + + case SPR_ARM2: + if (!P_GiveArmor (player, blue_armor_class)) + return; + player->message = s_GOTMEGA; // Ty 03/22/98 - externalized + break; + + // bonus items + case SPR_BON1: + player->health++; // can go over 100% + if (player->health > (maxhealth * 2)) + player->health = (maxhealth * 2); + player->mo->health = player->health; + player->message = s_GOTHTHBONUS; // Ty 03/22/98 - externalized + break; + + case SPR_BON2: + player->armorpoints++; // can go over 100% + if (player->armorpoints > max_armor) + player->armorpoints = max_armor; + if (!player->armortype) + player->armortype = green_armor_class; + player->message = s_GOTARMBONUS; // Ty 03/22/98 - externalized + break; + + case SPR_SOUL: + player->health += soul_health; + if (player->health > max_soul) + player->health = max_soul; + player->mo->health = player->health; + player->message = s_GOTSUPER; // Ty 03/22/98 - externalized + sound = sfx_getpow; + break; + + case SPR_MEGA: + if (gamemode != commercial) + return; + player->health = mega_health; + player->mo->health = player->health; + P_GiveArmor (player,blue_armor_class); + player->message = s_GOTMSPHERE; // Ty 03/22/98 - externalized + sound = sfx_getpow; + break; + + // cards + // leave cards for everyone + case SPR_BKEY: + if (!player->cards[it_bluecard]) + player->message = s_GOTBLUECARD; // Ty 03/22/98 - externalized + P_GiveCard (player, it_bluecard); + if (!netgame) + break; + return; + + case SPR_YKEY: + if (!player->cards[it_yellowcard]) + player->message = s_GOTYELWCARD; // Ty 03/22/98 - externalized + P_GiveCard (player, it_yellowcard); + if (!netgame) + break; + return; + + case SPR_RKEY: + if (!player->cards[it_redcard]) + player->message = s_GOTREDCARD; // Ty 03/22/98 - externalized + P_GiveCard (player, it_redcard); + if (!netgame) + break; + return; + + case SPR_BSKU: + if (!player->cards[it_blueskull]) + player->message = s_GOTBLUESKUL; // Ty 03/22/98 - externalized + P_GiveCard (player, it_blueskull); + if (!netgame) + break; + return; + + case SPR_YSKU: + if (!player->cards[it_yellowskull]) + player->message = s_GOTYELWSKUL; // Ty 03/22/98 - externalized + P_GiveCard (player, it_yellowskull); + if (!netgame) + break; + return; + + case SPR_RSKU: + if (!player->cards[it_redskull]) + player->message = s_GOTREDSKULL; // Ty 03/22/98 - externalized + P_GiveCard (player, it_redskull); + if (!netgame) + break; + return; + + // medikits, heals + case SPR_STIM: + if (!P_GiveBody (player, 10)) + return; + player->message = s_GOTSTIM; // Ty 03/22/98 - externalized + break; + + case SPR_MEDI: + if (!P_GiveBody (player, 25)) + return; + + if (player->health < 50) // cph - 25 + the 25 just added, thanks to Quasar for reporting this bug + player->message = s_GOTMEDINEED; // Ty 03/22/98 - externalized + else + player->message = s_GOTMEDIKIT; // Ty 03/22/98 - externalized + break; + + + // power ups + case SPR_PINV: + if (!P_GivePower (player, pw_invulnerability)) + return; + player->message = s_GOTINVUL; // Ty 03/22/98 - externalized + sound = sfx_getpow; + break; + + case SPR_PSTR: + if (!P_GivePower (player, pw_strength)) + return; + player->message = s_GOTBERSERK; // Ty 03/22/98 - externalized + if (player->readyweapon != wp_fist) + player->pendingweapon = wp_fist; + sound = sfx_getpow; + break; + + case SPR_PINS: + if (!P_GivePower (player, pw_invisibility)) + return; + player->message = s_GOTINVIS; // Ty 03/22/98 - externalized + sound = sfx_getpow; + break; + + case SPR_SUIT: + if (!P_GivePower (player, pw_ironfeet)) + return; + player->message = s_GOTSUIT; // Ty 03/22/98 - externalized + sound = sfx_getpow; + break; + + case SPR_PMAP: + if (!P_GivePower (player, pw_allmap)) + return; + player->message = s_GOTMAP; // Ty 03/22/98 - externalized + sound = sfx_getpow; + break; + + case SPR_PVIS: + if (!P_GivePower (player, pw_infrared)) + return; + player->message = s_GOTVISOR; // Ty 03/22/98 - externalized + sound = sfx_getpow; + break; + + // ammo + case SPR_CLIP: + if (special->flags & MF_DROPPED) + { + if (!P_GiveAmmo (player,am_clip,0)) + return; + } + else + { + if (!P_GiveAmmo (player,am_clip,1)) + return; + } + player->message = s_GOTCLIP; // Ty 03/22/98 - externalized + break; + + case SPR_AMMO: + if (!P_GiveAmmo (player, am_clip,5)) + return; + player->message = s_GOTCLIPBOX; // Ty 03/22/98 - externalized + break; + + case SPR_ROCK: + if (!P_GiveAmmo (player, am_misl,1)) + return; + player->message = s_GOTROCKET; // Ty 03/22/98 - externalized + break; + + case SPR_BROK: + if (!P_GiveAmmo (player, am_misl,5)) + return; + player->message = s_GOTROCKBOX; // Ty 03/22/98 - externalized + break; + + case SPR_CELL: + if (!P_GiveAmmo (player, am_cell,1)) + return; + player->message = s_GOTCELL; // Ty 03/22/98 - externalized + break; + + case SPR_CELP: + if (!P_GiveAmmo (player, am_cell,5)) + return; + player->message = s_GOTCELLBOX; // Ty 03/22/98 - externalized + break; + + case SPR_SHEL: + if (!P_GiveAmmo (player, am_shell,1)) + return; + player->message = s_GOTSHELLS; // Ty 03/22/98 - externalized + break; + + case SPR_SBOX: + if (!P_GiveAmmo (player, am_shell,5)) + return; + player->message = s_GOTSHELLBOX; // Ty 03/22/98 - externalized + break; + + case SPR_BPAK: + if (!player->backpack) + { + for (i=0 ; imaxammo[i] *= 2; + player->backpack = true; + } + for (i=0 ; imessage = s_GOTBACKPACK; // Ty 03/22/98 - externalized + break; + + // weapons + case SPR_BFUG: + if (!P_GiveWeapon (player, wp_bfg, false) ) + return; + player->message = s_GOTBFG9000; // Ty 03/22/98 - externalized + sound = sfx_wpnup; + break; + + case SPR_MGUN: + if (!P_GiveWeapon (player, wp_chaingun, (special->flags&MF_DROPPED)!=0) ) + return; + player->message = s_GOTCHAINGUN; // Ty 03/22/98 - externalized + sound = sfx_wpnup; + break; + + case SPR_CSAW: + if (!P_GiveWeapon (player, wp_chainsaw, false) ) + return; + player->message = s_GOTCHAINSAW; // Ty 03/22/98 - externalized + sound = sfx_wpnup; + break; + + case SPR_LAUN: + if (!P_GiveWeapon (player, wp_missile, false) ) + return; + player->message = s_GOTLAUNCHER; // Ty 03/22/98 - externalized + sound = sfx_wpnup; + break; + + case SPR_PLAS: + if (!P_GiveWeapon (player, wp_plasma, false) ) + return; + player->message = s_GOTPLASMA; // Ty 03/22/98 - externalized + sound = sfx_wpnup; + break; + + case SPR_SHOT: + if (!P_GiveWeapon (player, wp_shotgun, (special->flags&MF_DROPPED)!=0 ) ) + return; + player->message = s_GOTSHOTGUN; // Ty 03/22/98 - externalized + sound = sfx_wpnup; + break; + + case SPR_SGN2: + if (!P_GiveWeapon(player, wp_supershotgun, (special->flags&MF_DROPPED)!=0)) + return; + player->message = s_GOTSHOTGUN2; // Ty 03/22/98 - externalized + sound = sfx_wpnup; + break; + + default: + I_Error ("P_SpecialThing: Unknown gettable thing"); + } + + if (special->flags & MF_COUNTITEM) + player->itemcount++; + P_RemoveMobj (special); + player->bonuscount += BONUSADD; + + /* cph 20028/10 - for old-school DM addicts, allow old behavior + * where only consoleplayer's pickup sounds are heard */ + // displayplayer, not consoleplayer, for viewing multiplayer demos + if (!comp[comp_sound] || player == &players[displayplayer]) + S_StartSound (player->mo, sound | PICKUP_SOUND); // killough 4/25/98 +} + +// +// KillMobj +// +// killough 11/98: make static +static void P_KillMobj(mobj_t *source, mobj_t *target) +{ + mobjtype_t item; + mobj_t *mo; + + target->flags &= ~(MF_SHOOTABLE|MF_FLOAT|MF_SKULLFLY); + + if (target->type != MT_SKULL) + target->flags &= ~MF_NOGRAVITY; + + target->flags |= MF_CORPSE|MF_DROPOFF; + target->height >>= 2; + + if (!((target->flags ^ MF_COUNTKILL) & (MF_FRIEND | MF_COUNTKILL))) + totallive--; + + if (source && source->player) + { + // count for intermission + if (target->flags & MF_COUNTKILL) + source->player->killcount++; + if (target->player) + source->player->frags[target->player-players]++; + } + else + if (target->flags & MF_COUNTKILL) { /* Add to kills tally */ + if ((compatibility_level < lxdoom_1_compatibility) || !netgame) { + if (!netgame) + // count all monster deaths, + // even those caused by other monsters + players[0].killcount++; + } else + if (!deathmatch) { + // try and find a player to give the kill to, otherwise give the + // kill to a random player. this fixes the missing monsters bug + // in coop - rain + // CPhipps - not a bug as such, but certainly an inconsistency. + if (target->lastenemy && target->lastenemy->health > 0 + && target->lastenemy->player) // Fighting a player + target->lastenemy->player->killcount++; + else { + // cph - randomely choose a player in the game to be credited + // and do it uniformly between the active players + unsigned int activeplayers = 0, player, i; + + for (player = 0; playerplayer) + { + // count environment kills against you + if (!source) + target->player->frags[target->player-players]++; + + target->flags &= ~MF_SOLID; + target->player->playerstate = PST_DEAD; + P_DropWeapon (target->player); + + if (target->player == &players[consoleplayer] && (automapmode & am_active)) + AM_Stop(); // don't die in auto map; switch view prior to dying + } + + if (target->health < -target->info->spawnhealth && target->info->xdeathstate) + P_SetMobjState (target, target->info->xdeathstate); + else + P_SetMobjState (target, target->info->deathstate); + + target->tics -= P_Random(pr_killtics)&3; + + if (target->tics < 1) + target->tics = 1; + + // Drop stuff. + // This determines the kind of object spawned + // during the death frame of a thing. + + switch (target->type) + { + case MT_WOLFSS: + case MT_POSSESSED: + item = MT_CLIP; + break; + + case MT_SHOTGUY: + item = MT_SHOTGUN; + break; + + case MT_CHAINGUY: + item = MT_CHAINGUN; + break; + + default: + return; + } + + mo = P_SpawnMobj (target->x,target->y,ONFLOORZ, item); + mo->flags |= MF_DROPPED; // special versions of items +} + +// +// P_DamageMobj +// Damages both enemies and players +// "inflictor" is the thing that caused the damage +// creature or missile, can be NULL (slime, etc) +// "source" is the thing to target after taking damage +// creature or NULL +// Source and inflictor are the same for melee attacks. +// Source can be NULL for slime, barrel explosions +// and other environmental stuff. +// + +void P_DamageMobj(mobj_t *target,mobj_t *inflictor, mobj_t *source, int damage) +{ + player_t *player; + boolean justhit = false; /* killough 11/98 */ + + /* killough 8/31/98: allow bouncers to take damage */ + if (!(target->flags & (MF_SHOOTABLE | MF_BOUNCES))) + return; // shouldn't happen... + + if (target->health <= 0) + return; + + if (target->flags & MF_SKULLFLY) + target->momx = target->momy = target->momz = 0; + + player = target->player; + if (player && gameskill == sk_baby) + damage >>= 1; // take half damage in trainer mode + + // Some close combat weapons should not + // inflict thrust and push the victim out of reach, + // thus kick away unless using the chainsaw. + + if (inflictor && !(target->flags & MF_NOCLIP) && + (!source || !source->player || + source->player->readyweapon != wp_chainsaw)) + { + unsigned ang = R_PointToAngle2 (inflictor->x, inflictor->y, + target->x, target->y); + + fixed_t thrust = damage*(FRACUNIT>>3)*100/target->info->mass; + + // make fall forwards sometimes + if ( damage < 40 && damage > target->health + && target->z - inflictor->z > 64*FRACUNIT + && P_Random(pr_damagemobj) & 1) + { + ang += ANG180; + thrust *= 4; + } + + ang >>= ANGLETOFINESHIFT; + target->momx += FixedMul (thrust, finecosine[ang]); + target->momy += FixedMul (thrust, finesine[ang]); + + /* killough 11/98: thrust objects hanging off ledges */ + if (target->intflags & MIF_FALLING && target->gear >= MAXGEAR) + target->gear = 0; + } + + // player specific + if (player) + { + // end of game hell hack + if (target->subsector->sector->special == 11 && damage >= target->health) + damage = target->health - 1; + + // Below certain threshold, + // ignore damage in GOD mode, or with INVUL power. + // killough 3/26/98: make god mode 100% god mode in non-compat mode + + if ((damage < 1000 || (!comp[comp_god] && (player->cheats&CF_GODMODE))) && + (player->cheats&CF_GODMODE || player->powers[pw_invulnerability])) + return; + + if (player->armortype) + { + int saved = player->armortype == 1 ? damage/3 : damage/2; + if (player->armorpoints <= saved) + { + // armor is used up + saved = player->armorpoints; + player->armortype = 0; + } + player->armorpoints -= saved; + damage -= saved; + } + + player->health -= damage; // mirror mobj health here for Dave + if (player->health < 0) + player->health = 0; + + player->attacker = source; + player->damagecount += damage; // add damage after armor / invuln + + if (player->damagecount > 100) + player->damagecount = 100; // teleport stomp does 10k points... + } + + // do the damage + target->health -= damage; + if (target->health <= 0) + { + P_KillMobj (source, target); + return; + } + + // killough 9/7/98: keep track of targets so that friends can help friends + if (mbf_features) + { + /* If target is a player, set player's target to source, + * so that a friend can tell who's hurting a player + */ + if (player) + P_SetTarget(&target->target, source); + + /* killough 9/8/98: + * If target's health is less than 50%, move it to the front of its list. + * This will slightly increase the chances that enemies will choose to + * "finish it off", but its main purpose is to alert friends of danger. + */ + if (target->health*2 < target->info->spawnhealth) + { + thinker_t *cap = &thinkerclasscap[target->flags & MF_FRIEND ? + th_friends : th_enemies]; + (target->thinker.cprev->cnext = target->thinker.cnext)->cprev = + target->thinker.cprev; + (target->thinker.cnext = cap->cnext)->cprev = &target->thinker; + (target->thinker.cprev = cap)->cnext = &target->thinker; + } + } + + if (P_Random (pr_painchance) < target->info->painchance && + !(target->flags & MF_SKULLFLY)) { //killough 11/98: see below + if (mbf_features) + justhit = true; + else + target->flags |= MF_JUSTHIT; // fight back! + + P_SetMobjState(target, target->info->painstate); + } + + target->reactiontime = 0; // we're awake now... + + /* killough 9/9/98: cleaned up, made more consistent: */ + + if (source && source != target && source->type != MT_VILE && + (!target->threshold || target->type == MT_VILE) && + ((source->flags ^ target->flags) & MF_FRIEND || + monster_infighting || + !mbf_features)) + { + /* if not intent on another player, chase after this one + * + * killough 2/15/98: remember last enemy, to prevent + * sleeping early; 2/21/98: Place priority on players + * killough 9/9/98: cleaned up, made more consistent: + */ + + if (!target->lastenemy || target->lastenemy->health <= 0 || + (!mbf_features ? + !target->lastenemy->player : + !((target->flags ^ target->lastenemy->flags) & MF_FRIEND) && + target->target != source)) // remember last enemy - killough + P_SetTarget(&target->lastenemy, target->target); + + P_SetTarget(&target->target, source); // killough 11/98 + target->threshold = BASETHRESHOLD; + if (target->state == &states[target->info->spawnstate] + && target->info->seestate != S_NULL) + P_SetMobjState (target, target->info->seestate); + } + + /* killough 11/98: Don't attack a friend, unless hit by that friend. + * cph 2006/04/01 - implicitly this is only if mbf_features */ + if (justhit && (target->target == source || !target->target || + !(target->flags & target->target->flags & MF_FRIEND))) + target->flags |= MF_JUSTHIT; // fight back! +} diff --git a/components/doom/prboom/p_inter.h b/components/doom/prboom/p_inter.h new file mode 100644 index 0000000..53b64a7 --- /dev/null +++ b/components/doom/prboom/p_inter.h @@ -0,0 +1,75 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Thing events, and dehacked specified numbers controlling them. + * + *-----------------------------------------------------------------------------*/ + +#ifndef __P_INTER__ +#define __P_INTER__ + +#include "d_player.h" +#include "p_mobj.h" + +#ifdef __GNUG__ +#pragma interface +#endif + +/* Ty 03/09/98 Moved to an int in p_inter.c for deh and externalization */ +#define MAXHEALTH maxhealth + +/* follow a player exlusively for 3 seconds */ +#define BASETHRESHOLD (100) + +boolean P_GivePower(player_t *, int); +void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher); +void P_DamageMobj(mobj_t *target,mobj_t *inflictor,mobj_t *source,int damage); + +/* killough 5/2/98: moved from d_deh.c, g_game.c, m_misc.c, others: */ + +extern int god_health; /* Ty 03/09/98 - deh support, see also p_inter.c */ +extern int idfa_armor; +extern int idfa_armor_class; +extern int idkfa_armor; +extern int idkfa_armor_class; /* Ty - end */ +/* Ty 03/13/98 - externalized initial settings for respawned player */ +extern int initial_health; +extern int initial_bullets; +extern int maxhealth; +extern int max_armor; +extern int green_armor_class; +extern int blue_armor_class; +extern int max_soul; +extern int soul_health; +extern int mega_health; +extern int bfgcells; +extern int monsters_infight; // e6y: Dehacked support - monsters infight +extern int maxammo[], clipammo[]; + +#endif diff --git a/components/doom/prboom/p_lights.c b/components/doom/prboom/p_lights.c new file mode 100644 index 0000000..52d2dab --- /dev/null +++ b/components/doom/prboom/p_lights.c @@ -0,0 +1,434 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Action routines for lighting thinkers + * Spawn sector based lighting effects. + * Handle lighting linedef types + * + *-----------------------------------------------------------------------------*/ + +#include "doomstat.h" //jff 5/18/98 +#include "doomdef.h" +#include "m_random.h" +#include "r_main.h" +#include "p_spec.h" +#include "p_tick.h" + +////////////////////////////////////////////////////////// +// +// Lighting action routines, called once per tick +// +////////////////////////////////////////////////////////// + +// +// T_FireFlicker() +// +// Firelight flicker action routine, called once per tick +// +// Passed a fireflicker_t structure containing light levels and timing +// Returns nothing +// +void T_FireFlicker (fireflicker_t* flick) +{ + int amount; + + if (--flick->count) + return; + + amount = (P_Random(pr_lights)&3)*16; + + if (flick->sector->lightlevel - amount < flick->minlight) + flick->sector->lightlevel = flick->minlight; + else + flick->sector->lightlevel = flick->maxlight - amount; + + flick->count = 4; +} + +// +// T_LightFlash() +// +// Broken light flashing action routine, called once per tick +// +// Passed a lightflash_t structure containing light levels and timing +// Returns nothing +// +void T_LightFlash (lightflash_t* flash) +{ + if (--flash->count) + return; + + if (flash->sector->lightlevel == flash->maxlight) + { + flash-> sector->lightlevel = flash->minlight; + flash->count = (P_Random(pr_lights)&flash->mintime)+1; + } + else + { + flash-> sector->lightlevel = flash->maxlight; + flash->count = (P_Random(pr_lights)&flash->maxtime)+1; + } + +} + +// +// T_StrobeFlash() +// +// Strobe light flashing action routine, called once per tick +// +// Passed a strobe_t structure containing light levels and timing +// Returns nothing +// +void T_StrobeFlash (strobe_t* flash) +{ + if (--flash->count) + return; + + if (flash->sector->lightlevel == flash->minlight) + { + flash-> sector->lightlevel = flash->maxlight; + flash->count = flash->brighttime; + } + else + { + flash-> sector->lightlevel = flash->minlight; + flash->count =flash->darktime; + } +} + +// +// T_Glow() +// +// Glowing light action routine, called once per tick +// +// Passed a glow_t structure containing light levels and timing +// Returns nothing +// + +void T_Glow(glow_t* g) +{ + switch(g->direction) + { + case -1: + // light dims + g->sector->lightlevel -= GLOWSPEED; + if (g->sector->lightlevel <= g->minlight) + { + g->sector->lightlevel += GLOWSPEED; + g->direction = 1; + } + break; + + case 1: + // light brightens + g->sector->lightlevel += GLOWSPEED; + if (g->sector->lightlevel >= g->maxlight) + { + g->sector->lightlevel -= GLOWSPEED; + g->direction = -1; + } + break; + } +} + +////////////////////////////////////////////////////////// +// +// Sector lighting type spawners +// +// After the map has been loaded, each sector is scanned +// for specials that spawn thinkers +// +////////////////////////////////////////////////////////// + +// +// P_SpawnFireFlicker() +// +// Spawns a fire flicker lighting thinker +// +// Passed the sector that spawned the thinker +// Returns nothing +// +void P_SpawnFireFlicker (sector_t* sector) +{ + fireflicker_t* flick; + + // Note that we are resetting sector attributes. + // Nothing special about it during gameplay. + sector->special &= ~31; //jff 3/14/98 clear non-generalized sector type + + flick = Z_Calloc(1, sizeof(*flick), PU_LEVSPEC, 0); + P_AddThinker (&flick->thinker); + + flick->thinker.function = T_FireFlicker; + flick->sector = sector; + flick->maxlight = sector->lightlevel; + flick->minlight = P_FindMinSurroundingLight(sector,sector->lightlevel)+16; + flick->count = 4; +} + +// +// P_SpawnLightFlash() +// +// Spawns a broken light flash lighting thinker +// +// Passed the sector that spawned the thinker +// Returns nothing +// +void P_SpawnLightFlash (sector_t* sector) +{ + lightflash_t* flash; + + // nothing special about it during gameplay + sector->special &= ~31; //jff 3/14/98 clear non-generalized sector type + + flash = Z_Calloc(1, sizeof(*flash), PU_LEVSPEC, 0); + P_AddThinker (&flash->thinker); + + flash->thinker.function = T_LightFlash; + flash->sector = sector; + flash->maxlight = sector->lightlevel; + + flash->minlight = P_FindMinSurroundingLight(sector,sector->lightlevel); + flash->maxtime = 64; + flash->mintime = 7; + flash->count = (P_Random(pr_lights)&flash->maxtime)+1; +} + +// +// P_SpawnStrobeFlash +// +// Spawns a blinking light thinker +// +// Passed the sector that spawned the thinker, speed of blinking +// and whether blinking is to by syncrhonous with other sectors +// +// Returns nothing +// +void P_SpawnStrobeFlash +( sector_t* sector, + int fastOrSlow, + int inSync ) +{ + strobe_t* flash; + + flash = Z_Calloc(1, sizeof(*flash), PU_LEVSPEC, 0); + P_AddThinker (&flash->thinker); + + flash->sector = sector; + flash->darktime = fastOrSlow; + flash->brighttime = STROBEBRIGHT; + flash->thinker.function = T_StrobeFlash; + flash->maxlight = sector->lightlevel; + flash->minlight = P_FindMinSurroundingLight(sector, sector->lightlevel); + + if (flash->minlight == flash->maxlight) + flash->minlight = 0; + + // nothing special about it during gameplay + sector->special &= ~31; //jff 3/14/98 clear non-generalized sector type + + if (!inSync) + flash->count = (P_Random(pr_lights)&7)+1; + else + flash->count = 1; +} + +// +// P_SpawnGlowingLight() +// +// Spawns a glowing light (smooth oscillation from min to max) thinker +// +// Passed the sector that spawned the thinker +// Returns nothing +// +void P_SpawnGlowingLight(sector_t* sector) +{ + glow_t* g; + + g = Z_Calloc(1, sizeof(*g), PU_LEVSPEC, 0); + P_AddThinker(&g->thinker); + + g->sector = sector; + g->minlight = P_FindMinSurroundingLight(sector,sector->lightlevel); + g->maxlight = sector->lightlevel; + g->thinker.function = T_Glow; + g->direction = -1; + + sector->special &= ~31; //jff 3/14/98 clear non-generalized sector type +} + +////////////////////////////////////////////////////////// +// +// Linedef lighting function handlers +// +////////////////////////////////////////////////////////// + +// +// EV_StartLightStrobing() +// +// Start strobing lights (usually from a trigger) +// +// Passed the line that activated the strobing +// Returns true +// +// jff 2/12/98 added int return value, fixed return +// +int EV_StartLightStrobing(line_t* line) +{ + int secnum; + sector_t* sec; + + secnum = -1; + // start lights strobing in all sectors tagged same as line + while ((secnum = P_FindSectorFromLineTag(line,secnum)) >= 0) + { + sec = §ors[secnum]; + // if already doing a lighting function, don't start a second + if (P_SectorActive(lighting_special,sec)) //jff 2/22/98 + continue; + + P_SpawnStrobeFlash (sec,SLOWDARK, 0); + } + return 1; +} + +// +// EV_TurnTagLightsOff() +// +// Turn line's tagged sector's lights to min adjacent neighbor level +// +// Passed the line that activated the lights being turned off +// Returns true +// +// jff 2/12/98 added int return value, fixed return +// +int EV_TurnTagLightsOff(line_t* line) +{ + int j; + + // search sectors for those with same tag as activating line + + // killough 10/98: replaced inefficient search with fast search + for (j = -1; (j = P_FindSectorFromLineTag(line,j)) >= 0;) + { + sector_t *sector = sectors + j, *tsec; + int i, min = sector->lightlevel; + // find min neighbor light level + for (i = 0;i < sector->linecount; i++) + if ((tsec = getNextSector(sector->lines[i], sector)) && + tsec->lightlevel < min) + min = tsec->lightlevel; + sector->lightlevel = min; + } + return 1; +} + +// +// EV_LightTurnOn() +// +// Turn sectors tagged to line lights on to specified or max neighbor level +// +// Passed the activating line, and a level to set the light to +// If level passed is 0, the maximum neighbor lighting is used +// Returns true +// +// jff 2/12/98 added int return value, fixed return +// +int EV_LightTurnOn(line_t *line, int bright) +{ + int i; + + // search all sectors for ones with same tag as activating line + + // killough 10/98: replace inefficient search with fast search + for (i = -1; (i = P_FindSectorFromLineTag(line,i)) >= 0;) + { + sector_t *temp, *sector = sectors+i; + int j, tbright = bright; //jff 5/17/98 search for maximum PER sector + + // bright = 0 means to search for highest light level surrounding sector + + if (!bright) + for (j = 0;j < sector->linecount; j++) + if ((temp = getNextSector(sector->lines[j],sector)) && temp->lightlevel > tbright) + tbright = temp->lightlevel; + + sector->lightlevel = tbright; + + //jff 5/17/98 unless compatibility optioned + //then maximum near ANY tagged sector + if (comp[comp_model]) + bright = tbright; + } + return 1; +} + +/* killough 10/98: + * + * EV_LightTurnOnPartway() + * + * Turn sectors tagged to line lights on to specified or max neighbor level + * + * Passed the activating line, and a light level fraction between 0 and 1. + * Sets the light to min on 0, max on 1, and interpolates in-between. + * Used for doors with gradual lighting effects. + * + * Returns true + */ + +int EV_LightTurnOnPartway(line_t *line, fixed_t level) +{ + int i; + + if (level < 0) // clip at extremes + level = 0; + if (level > FRACUNIT) + level = FRACUNIT; + + // search all sectors for ones with same tag as activating line + for (i = -1; (i = P_FindSectorFromLineTag(line,i)) >= 0;) + { + sector_t *temp, *sector = sectors+i; + int j, bright = 0, min = sector->lightlevel; + + for (j = 0; j < sector->linecount; j++) + if ((temp = getNextSector(sector->lines[j],sector))) + { + if (temp->lightlevel > bright) + bright = temp->lightlevel; + if (temp->lightlevel < min) + min = temp->lightlevel; + } + + sector->lightlevel = // Set level in-between extremes + (level * bright + (FRACUNIT-level) * min) >> FRACBITS; + } + return 1; +} + diff --git a/components/doom/prboom/p_map.c b/components/doom/prboom/p_map.c new file mode 100644 index 0000000..8db3443 --- /dev/null +++ b/components/doom/prboom/p_map.c @@ -0,0 +1,2381 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2004 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Movement, collision handling. + * Shooting and aiming. + * + *-----------------------------------------------------------------------------*/ + +#include "doomstat.h" +#include "r_main.h" +#include "p_mobj.h" +#include "p_maputl.h" +#include "p_map.h" +#include "p_setup.h" +#include "p_spec.h" +#include "s_sound.h" +#include "sounds.h" +#include "p_inter.h" +#include "m_random.h" +#include "m_bbox.h" +#include "lprintf.h" + +static mobj_t *tmthing; +static fixed_t tmx; +static fixed_t tmy; +static int pe_x; // Pain Elemental position for Lost Soul checks // phares +static int pe_y; // Pain Elemental position for Lost Soul checks // phares +static int ls_x; // Lost Soul position for Lost Soul checks // phares +static int ls_y; // Lost Soul position for Lost Soul checks // phares + +// If "floatok" true, move would be ok +// if within "tmfloorz - tmceilingz". + +boolean floatok; + +/* killough 11/98: if "felldown" true, object was pushed down ledge */ +boolean felldown; + +// The tm* items are used to hold information globally, usually for +// line or object intersection checking + +fixed_t tmbbox[4]; // bounding box for line intersection checks +fixed_t tmfloorz; // floor you'd hit if free to fall +fixed_t tmceilingz; // ceiling of sector you're in +fixed_t tmdropoffz; // dropoff on other side of line you're crossing + +// keep track of the line that lowers the ceiling, +// so missiles don't explode against sky hack walls + +line_t *ceilingline; +line_t *blockline; /* killough 8/11/98: blocking linedef */ +line_t *floorline; /* killough 8/1/98: Highest touched floor */ +static int tmunstuck; /* killough 8/1/98: whether to allow unsticking */ + +// keep track of special lines as they are hit, +// but don't process them until the move is proven valid + +// 1/11/98 killough: removed limit on special lines crossed +line_t **spechit; // new code -- killough +static int spechit_max; // killough + +int numspechit; + +// Temporary holder for thing_sectorlist threads +msecnode_t* sector_list = NULL; // phares 3/16/98 + +// +// TELEPORT MOVE +// + +// +// PIT_StompThing +// + +static boolean telefrag; /* killough 8/9/98: whether to telefrag at exit */ + +boolean PIT_StompThing (mobj_t* thing) + { + fixed_t blockdist; + + // phares 9/10/98: moved this self-check to start of routine + + // don't clip against self + + if (thing == tmthing) + return true; + + if (!(thing->flags & MF_SHOOTABLE)) // Can't shoot it? Can't stomp it! + return true; + + blockdist = thing->radius + tmthing->radius; + + if (D_abs(thing->x - tmx) >= blockdist || D_abs(thing->y - tmy) >= blockdist) + return true; // didn't hit it + + // monsters don't stomp things except on boss level + if (!telefrag) // killough 8/9/98: make consistent across all levels + return false; + + P_DamageMobj (thing, tmthing, tmthing, 10000); // Stomp! + + return true; + } + + +/* + * killough 8/28/98: + * + * P_GetFriction() + * + * Returns the friction associated with a particular mobj. + */ + +int P_GetFriction(const mobj_t *mo, int *frictionfactor) +{ + int friction = ORIG_FRICTION; + int movefactor = ORIG_FRICTION_FACTOR; + const msecnode_t *m; + const sector_t *sec; + + /* Assign the friction value to objects on the floor, non-floating, + * and clipped. Normally the object's friction value is kept at + * ORIG_FRICTION and this thinker changes it for icy or muddy floors. + * + * When the object is straddling sectors with the same + * floorheight that have different frictions, use the lowest + * friction value (muddy has precedence over icy). + */ + + if (!(mo->flags & (MF_NOCLIP|MF_NOGRAVITY)) + && (mbf_features || (mo->player && !compatibility)) && + variable_friction) + for (m = mo->touching_sectorlist; m; m = m->m_tnext) + if ((sec = m->m_sector)->special & FRICTION_MASK && + (sec->friction < friction || friction == ORIG_FRICTION) && + (mo->z <= sec->floorheight || + (sec->heightsec != -1 && + mo->z <= sectors[sec->heightsec].floorheight && + mbf_features))) + friction = sec->friction, movefactor = sec->movefactor; + + if (frictionfactor) + *frictionfactor = movefactor; + + return friction; +} + +/* phares 3/19/98 + * P_GetMoveFactor() returns the value by which the x,y + * movements are multiplied to add to player movement. + * + * killough 8/28/98: rewritten + */ + +int P_GetMoveFactor(const mobj_t *mo, int *frictionp) +{ + int movefactor, friction; + + //e6y + if (!mbf_features) + { + int momentum; + + movefactor = ORIG_FRICTION_FACTOR; + + if (!compatibility && variable_friction && + !(mo->flags & (MF_NOGRAVITY | MF_NOCLIP))) + { + friction = mo->friction; + if (friction == ORIG_FRICTION) // normal floor + ; + else if (friction > ORIG_FRICTION) // ice + { + movefactor = mo->movefactor; + ((mobj_t*)mo)->movefactor = ORIG_FRICTION_FACTOR; // reset + } + else // sludge + { + + // phares 3/11/98: you start off slowly, then increase as + // you get better footing + + momentum = (P_AproxDistance(mo->momx,mo->momy)); + movefactor = mo->movefactor; + if (momentum > MORE_FRICTION_MOMENTUM<<2) + movefactor <<= 3; + + else if (momentum > MORE_FRICTION_MOMENTUM<<1) + movefactor <<= 2; + + else if (momentum > MORE_FRICTION_MOMENTUM) + movefactor <<= 1; + + ((mobj_t*)mo)->movefactor = ORIG_FRICTION_FACTOR; // reset + } + } // ^ + + return(movefactor); // | + } + + // If the floor is icy or muddy, it's harder to get moving. This is where + // the different friction factors are applied to 'trying to move'. In + // p_mobj.c, the friction factors are applied as you coast and slow down. + + if ((friction = P_GetFriction(mo, &movefactor)) < ORIG_FRICTION) + { + // phares 3/11/98: you start off slowly, then increase as + // you get better footing + + int momentum = P_AproxDistance(mo->momx,mo->momy); + + if (momentum > MORE_FRICTION_MOMENTUM<<2) + movefactor <<= 3; + else if (momentum > MORE_FRICTION_MOMENTUM<<1) + movefactor <<= 2; + else if (momentum > MORE_FRICTION_MOMENTUM) + movefactor <<= 1; + } + + if (frictionp) + *frictionp = friction; + + return movefactor; +} + +// +// P_TeleportMove +// + +boolean P_TeleportMove (mobj_t* thing,fixed_t x,fixed_t y, boolean boss) + { + int xl; + int xh; + int yl; + int yh; + int bx; + int by; + + subsector_t* newsubsec; + + /* killough 8/9/98: make telefragging more consistent, preserve compatibility */ + telefrag = thing->player || + (!comp[comp_telefrag] ? boss : (gamemap==30)); + + // kill anything occupying the position + + tmthing = thing; + + tmx = x; + tmy = y; + + tmbbox[BOXTOP] = y + tmthing->radius; + tmbbox[BOXBOTTOM] = y - tmthing->radius; + tmbbox[BOXRIGHT] = x + tmthing->radius; + tmbbox[BOXLEFT] = x - tmthing->radius; + + newsubsec = R_PointInSubsector (x,y); + ceilingline = NULL; + + // The base floor/ceiling is from the subsector + // that contains the point. + // Any contacted lines the step closer together + // will adjust them. + + tmfloorz = tmdropoffz = newsubsec->sector->floorheight; + tmceilingz = newsubsec->sector->ceilingheight; + + validcount++; + numspechit = 0; + + // stomp on any things contacted + + xl = (tmbbox[BOXLEFT] - bmaporgx - MAXRADIUS)>>MAPBLOCKSHIFT; + xh = (tmbbox[BOXRIGHT] - bmaporgx + MAXRADIUS)>>MAPBLOCKSHIFT; + yl = (tmbbox[BOXBOTTOM] - bmaporgy - MAXRADIUS)>>MAPBLOCKSHIFT; + yh = (tmbbox[BOXTOP] - bmaporgy + MAXRADIUS)>>MAPBLOCKSHIFT; + + for (bx=xl ; bx<=xh ; bx++) + for (by=yl ; by<=yh ; by++) + if (!P_BlockThingsIterator(bx,by,PIT_StompThing)) + return false; + + // the move is ok, + // so unlink from the old position & link into the new position + + P_UnsetThingPosition (thing); + + thing->floorz = tmfloorz; + thing->ceilingz = tmceilingz; + thing->dropoffz = tmdropoffz; // killough 11/98 + + thing->x = x; + thing->y = y; + + P_SetThingPosition (thing); + + thing->PrevX = x; + thing->PrevY = y; + thing->PrevZ = thing->floorz; + + return true; + } + + +// +// MOVEMENT ITERATOR FUNCTIONS +// + +// e6y: Spechits overrun emulation code +static void SpechitOverrun(line_t *ld); + +// // phares +// PIT_CrossLine // | +// Checks to see if a PE->LS trajectory line crosses a blocking // V +// line. Returns false if it does. +// +// tmbbox holds the bounding box of the trajectory. If that box +// does not touch the bounding box of the line in question, +// then the trajectory is not blocked. If the PE is on one side +// of the line and the LS is on the other side, then the +// trajectory is blocked. +// +// Currently this assumes an infinite line, which is not quite +// correct. A more correct solution would be to check for an +// intersection of the trajectory and the line, but that takes +// longer and probably really isn't worth the effort. +// + +static // killough 3/26/98: make static +boolean PIT_CrossLine (line_t* ld) + { + if (!(ld->flags & ML_TWOSIDED) || + (ld->flags & (ML_BLOCKING|ML_BLOCKMONSTERS))) + if (!(tmbbox[BOXLEFT] > ld->bbox[BOXRIGHT] || + tmbbox[BOXRIGHT] < ld->bbox[BOXLEFT] || + tmbbox[BOXTOP] < ld->bbox[BOXBOTTOM] || + tmbbox[BOXBOTTOM] > ld->bbox[BOXTOP])) + if (P_PointOnLineSide(pe_x,pe_y,ld) != P_PointOnLineSide(ls_x,ls_y,ld)) + return(false); // line blocks trajectory // ^ + return(true); // line doesn't block trajectory // | + } // phares + + +/* killough 8/1/98: used to test intersection between thing and line + * assuming NO movement occurs -- used to avoid sticky situations. + */ + +static int untouched(line_t *ld) +{ + fixed_t x, y, tmbbox[4]; + return + (tmbbox[BOXRIGHT] = (x=tmthing->x)+tmthing->radius) <= ld->bbox[BOXLEFT] || + (tmbbox[BOXLEFT] = x-tmthing->radius) >= ld->bbox[BOXRIGHT] || + (tmbbox[BOXTOP] = (y=tmthing->y)+tmthing->radius) <= ld->bbox[BOXBOTTOM] || + (tmbbox[BOXBOTTOM] = y-tmthing->radius) >= ld->bbox[BOXTOP] || + P_BoxOnLineSide(tmbbox, ld) != -1; +} + +// +// PIT_CheckLine +// Adjusts tmfloorz and tmceilingz as lines are contacted +// + +static // killough 3/26/98: make static +boolean PIT_CheckLine (line_t* ld) +{ + if (tmbbox[BOXRIGHT] <= ld->bbox[BOXLEFT] + || tmbbox[BOXLEFT] >= ld->bbox[BOXRIGHT] + || tmbbox[BOXTOP] <= ld->bbox[BOXBOTTOM] + || tmbbox[BOXBOTTOM] >= ld->bbox[BOXTOP] ) + return true; // didn't hit it + + if (P_BoxOnLineSide(tmbbox, ld) != -1) + return true; // didn't hit it + + // A line has been hit + + // The moving thing's destination position will cross the given line. + // If this should not be allowed, return false. + // If the line is special, keep track of it + // to process later if the move is proven ok. + // NOTE: specials are NOT sorted by order, + // so two special lines that are only 8 pixels apart + // could be crossed in either order. + + // killough 7/24/98: allow player to move out of 1s wall, to prevent sticking + if (!ld->backsector) // one sided line + { + blockline = ld; + return tmunstuck && !untouched(ld) && + FixedMul(tmx-tmthing->x,ld->dy) > FixedMul(tmy-tmthing->y,ld->dx); + } + + // killough 8/10/98: allow bouncing objects to pass through as missiles + if (!(tmthing->flags & (MF_MISSILE | MF_BOUNCES))) + { + if (ld->flags & ML_BLOCKING) // explicitly blocking everything + return tmunstuck && !untouched(ld); // killough 8/1/98: allow escape + + // killough 8/9/98: monster-blockers don't affect friends + if (!(tmthing->flags & MF_FRIEND || tmthing->player) + && ld->flags & ML_BLOCKMONSTERS) + return false; // block monsters only + } + + // set openrange, opentop, openbottom + // these define a 'window' from one sector to another across this line + + P_LineOpening (ld); + + // adjust floor & ceiling heights + + if (opentop < tmceilingz) + { + tmceilingz = opentop; + ceilingline = ld; + blockline = ld; + } + + if (openbottom > tmfloorz) + { + tmfloorz = openbottom; + floorline = ld; // killough 8/1/98: remember floor linedef + blockline = ld; + } + + if (lowfloor < tmdropoffz) + tmdropoffz = lowfloor; + + // if contacted a special line, add it to the list + + if (ld->special) + { + // 1/11/98 killough: remove limit on lines hit, by array doubling + if (numspechit >= spechit_max) { + spechit_max = spechit_max ? spechit_max*2 : 8; + spechit = realloc(spechit,sizeof *spechit*spechit_max); // killough + } + spechit[numspechit++] = ld; + // e6y: Spechits overrun emulation code + if (numspechit >= 8 && demo_compatibility) + SpechitOverrun(ld); + } + + return true; +} + +// +// PIT_CheckThing +// + +static boolean PIT_CheckThing(mobj_t *thing) // killough 3/26/98: make static +{ + fixed_t blockdist; + int damage; + + // killough 11/98: add touchy things + if (!(thing->flags & (MF_SOLID|MF_SPECIAL|MF_SHOOTABLE|MF_TOUCHY))) + return true; + + blockdist = thing->radius + tmthing->radius; + + if (D_abs(thing->x - tmx) >= blockdist || D_abs(thing->y - tmy) >= blockdist) + return true; // didn't hit it + + // killough 11/98: + // + // This test has less information content (it's almost always false), so it + // should not be moved up to first, as it adds more overhead than it removes. + + // don't clip against self + + if (thing == tmthing) + return true; + + /* killough 11/98: + * + * TOUCHY flag, for mines or other objects which die on contact with solids. + * If a solid object of a different type comes in contact with a touchy + * thing, and the touchy thing is not the sole one moving relative to fixed + * surroundings such as walls, then the touchy thing dies immediately. + */ + + if (thing->flags & MF_TOUCHY && // touchy object + tmthing->flags & MF_SOLID && // solid object touches it + thing->health > 0 && // touchy object is alive + (thing->intflags & MIF_ARMED || // Thing is an armed mine + sentient(thing)) && // ... or a sentient thing + (thing->type != tmthing->type || // only different species + thing->type == MT_PLAYER) && // ... or different players + thing->z + thing->height >= tmthing->z && // touches vertically + tmthing->z + tmthing->height >= thing->z && + (thing->type ^ MT_PAIN) | // PEs and lost souls + (tmthing->type ^ MT_SKULL) && // are considered same + (thing->type ^ MT_SKULL) | // (but Barons & Knights + (tmthing->type ^ MT_PAIN)) // are intentionally not) + { + P_DamageMobj(thing, NULL, NULL, thing->health); // kill object + return true; + } + + // check for skulls slamming into things + + if (tmthing->flags & MF_SKULLFLY) + { + // A flying skull is smacking something. + // Determine damage amount, and the skull comes to a dead stop. + + int damage = ((P_Random(pr_skullfly)%8)+1)*tmthing->info->damage; + + P_DamageMobj (thing, tmthing, tmthing, damage); + + tmthing->flags &= ~MF_SKULLFLY; + tmthing->momx = tmthing->momy = tmthing->momz = 0; + + P_SetMobjState (tmthing, tmthing->info->spawnstate); + + return false; // stop moving + } + + // missiles can hit other things + // killough 8/10/98: bouncing non-solid things can hit other things too + + if (tmthing->flags & MF_MISSILE || (tmthing->flags & MF_BOUNCES && + !(tmthing->flags & MF_SOLID))) + { + // see if it went over / under + + if (tmthing->z > thing->z + thing->height) + return true; // overhead + + if (tmthing->z+tmthing->height < thing->z) + return true; // underneath + + if (tmthing->target && (tmthing->target->type == thing->type || + (tmthing->target->type == MT_KNIGHT && thing->type == MT_BRUISER)|| + (tmthing->target->type == MT_BRUISER && thing->type == MT_KNIGHT))) + { + if (thing == tmthing->target) + return true; // Don't hit same species as originator. + else + // e6y: Dehacked support - monsters infight + if (thing->type != MT_PLAYER && !monsters_infight) // Explode, but do no damage. + return false; // Let players missile other players. + } + + // killough 8/10/98: if moving thing is not a missile, no damage + // is inflicted, and momentum is reduced if object hit is solid. + + if (!(tmthing->flags & MF_MISSILE)) { + if (!(thing->flags & MF_SOLID)) { + return true; + } else { + tmthing->momx = -tmthing->momx; + tmthing->momy = -tmthing->momy; + if (!(tmthing->flags & MF_NOGRAVITY)) + { + tmthing->momx >>= 2; + tmthing->momy >>= 2; + } + return false; + } + } + + if (!(thing->flags & MF_SHOOTABLE)) + return !(thing->flags & MF_SOLID); // didn't do any damage + + // damage / explode + + damage = ((P_Random(pr_damage)%8)+1)*tmthing->info->damage; + P_DamageMobj (thing, tmthing, tmthing->target, damage); + + // don't traverse any more + return false; + } + + // check for special pickup + + if (thing->flags & MF_SPECIAL) + { + uint_64_t solid = thing->flags & MF_SOLID; + if (tmthing->flags & MF_PICKUP) + P_TouchSpecialThing(thing, tmthing); // can remove thing + return !solid; + } + + // killough 3/16/98: Allow non-solid moving objects to move through solid + // ones, by allowing the moving thing (tmthing) to move if it's non-solid, + // despite another solid thing being in the way. + // killough 4/11/98: Treat no-clipping things as not blocking + // ...but not in demo_compatibility mode + + return !(thing->flags & MF_SOLID) + || (!demo_compatibility + && (thing->flags & MF_NOCLIP || !(tmthing->flags & MF_SOLID))); + + // return !(thing->flags & MF_SOLID); // old code -- killough +} + +// This routine checks for Lost Souls trying to be spawned // phares +// across 1-sided lines, impassible lines, or "monsters can't // | +// cross" lines. Draw an imaginary line between the PE // V +// and the new Lost Soul spawn spot. If that line crosses +// a 'blocking' line, then disallow the spawn. Only search +// lines in the blocks of the blockmap where the bounding box +// of the trajectory line resides. Then check bounding box +// of the trajectory vs. the bounding box of each blocking +// line to see if the trajectory and the blocking line cross. +// Then check the PE and LS to see if they're on different +// sides of the blocking line. If so, return true, otherwise +// false. + +boolean Check_Sides(mobj_t* actor, int x, int y) + { + int bx,by,xl,xh,yl,yh; + + pe_x = actor->x; + pe_y = actor->y; + ls_x = x; + ls_y = y; + + // Here is the bounding box of the trajectory + + tmbbox[BOXLEFT] = pe_x < x ? pe_x : x; + tmbbox[BOXRIGHT] = pe_x > x ? pe_x : x; + tmbbox[BOXTOP] = pe_y > y ? pe_y : y; + tmbbox[BOXBOTTOM] = pe_y < y ? pe_y : y; + + // Determine which blocks to look in for blocking lines + + xl = (tmbbox[BOXLEFT] - bmaporgx)>>MAPBLOCKSHIFT; + xh = (tmbbox[BOXRIGHT] - bmaporgx)>>MAPBLOCKSHIFT; + yl = (tmbbox[BOXBOTTOM] - bmaporgy)>>MAPBLOCKSHIFT; + yh = (tmbbox[BOXTOP] - bmaporgy)>>MAPBLOCKSHIFT; + + // xl->xh, yl->yh determine the mapblock set to search + + validcount++; // prevents checking same line twice + for (bx = xl ; bx <= xh ; bx++) + for (by = yl ; by <= yh ; by++) + if (!P_BlockLinesIterator(bx,by,PIT_CrossLine)) + return true; // ^ + return(false); // | + } // phares + +// +// MOVEMENT CLIPPING +// + +// +// P_CheckPosition +// This is purely informative, nothing is modified +// (except things picked up). +// +// in: +// a mobj_t (can be valid or invalid) +// a position to be checked +// (doesn't need to be related to the mobj_t->x,y) +// +// during: +// special things are touched if MF_PICKUP +// early out on solid lines? +// +// out: +// newsubsec +// floorz +// ceilingz +// tmdropoffz +// the lowest point contacted +// (monsters won't move to a dropoff) +// speciallines[] +// numspeciallines +// + +boolean P_CheckPosition (mobj_t* thing,fixed_t x,fixed_t y) + { + int xl; + int xh; + int yl; + int yh; + int bx; + int by; + subsector_t* newsubsec; + + tmthing = thing; + + tmx = x; + tmy = y; + + tmbbox[BOXTOP] = y + tmthing->radius; + tmbbox[BOXBOTTOM] = y - tmthing->radius; + tmbbox[BOXRIGHT] = x + tmthing->radius; + tmbbox[BOXLEFT] = x - tmthing->radius; + + newsubsec = R_PointInSubsector (x,y); + floorline = blockline = ceilingline = NULL; // killough 8/1/98 + + // Whether object can get out of a sticky situation: + tmunstuck = thing->player && /* only players */ + thing->player->mo == thing && /* not voodoo dolls */ + mbf_features; /* not under old demos */ + + // The base floor / ceiling is from the subsector + // that contains the point. + // Any contacted lines the step closer together + // will adjust them. + + tmfloorz = tmdropoffz = newsubsec->sector->floorheight; + tmceilingz = newsubsec->sector->ceilingheight; + validcount++; + numspechit = 0; + + if ( tmthing->flags & MF_NOCLIP ) + return true; + + // Check things first, possibly picking things up. + // The bounding box is extended by MAXRADIUS + // because mobj_ts are grouped into mapblocks + // based on their origin point, and can overlap + // into adjacent blocks by up to MAXRADIUS units. + + xl = (tmbbox[BOXLEFT] - bmaporgx - MAXRADIUS)>>MAPBLOCKSHIFT; + xh = (tmbbox[BOXRIGHT] - bmaporgx + MAXRADIUS)>>MAPBLOCKSHIFT; + yl = (tmbbox[BOXBOTTOM] - bmaporgy - MAXRADIUS)>>MAPBLOCKSHIFT; + yh = (tmbbox[BOXTOP] - bmaporgy + MAXRADIUS)>>MAPBLOCKSHIFT; + + + for (bx=xl ; bx<=xh ; bx++) + for (by=yl ; by<=yh ; by++) + if (!P_BlockThingsIterator(bx,by,PIT_CheckThing)) + return false; + + // check lines + + xl = (tmbbox[BOXLEFT] - bmaporgx)>>MAPBLOCKSHIFT; + xh = (tmbbox[BOXRIGHT] - bmaporgx)>>MAPBLOCKSHIFT; + yl = (tmbbox[BOXBOTTOM] - bmaporgy)>>MAPBLOCKSHIFT; + yh = (tmbbox[BOXTOP] - bmaporgy)>>MAPBLOCKSHIFT; + + for (bx=xl ; bx<=xh ; bx++) + for (by=yl ; by<=yh ; by++) + if (!P_BlockLinesIterator (bx,by,PIT_CheckLine)) + return false; // doesn't fit + + return true; + } + + +// +// P_TryMove +// Attempt to move to a new position, +// crossing special lines unless MF_TELEPORT is set. +// +boolean P_TryMove(mobj_t* thing,fixed_t x,fixed_t y, int dropoff) + { + fixed_t oldx; + fixed_t oldy; + + felldown = floatok = false; // killough 11/98 + + if (!P_CheckPosition (thing, x, y)) + return false; // solid wall or thing + + if ( !(thing->flags & MF_NOCLIP) ) + { + // killough 7/26/98: reformatted slightly + // killough 8/1/98: Possibly allow escape if otherwise stuck + + if (tmceilingz - tmfloorz < thing->height || // doesn't fit + // mobj must lower to fit + (floatok = true, !(thing->flags & MF_TELEPORT) && + tmceilingz - thing->z < thing->height) || + // too big a step up + (!(thing->flags & MF_TELEPORT) && + tmfloorz - thing->z > 24*FRACUNIT)) + return tmunstuck + && !(ceilingline && untouched(ceilingline)) + && !( floorline && untouched( floorline)); + + /* killough 3/15/98: Allow certain objects to drop off + * killough 7/24/98, 8/1/98: + * Prevent monsters from getting stuck hanging off ledges + * killough 10/98: Allow dropoffs in controlled circumstances + * killough 11/98: Improve symmetry of clipping on stairs + */ + + if (!(thing->flags & (MF_DROPOFF|MF_FLOAT))) { + if (comp[comp_dropoff]) + { + if ((compatibility || !dropoff + // fix demosync bug in mbf compatibility mode + || (mbf_features && compatibility_level <= prboom_2_compatibility)) + && (tmfloorz - tmdropoffz > 24*FRACUNIT)) + return false; // don't stand over a dropoff + } + else + if (!dropoff || (dropoff==2 && // large jump down (e.g. dogs) + (tmfloorz-tmdropoffz > 128*FRACUNIT || + !thing->target || thing->target->z >tmdropoffz))) + { + if (!monkeys || !mbf_features ? + tmfloorz - tmdropoffz > 24*FRACUNIT : + thing->floorz - tmfloorz > 24*FRACUNIT || + thing->dropoffz - tmdropoffz > 24*FRACUNIT) + return false; + } + else { /* dropoff allowed -- check for whether it fell more than 24 */ + felldown = !(thing->flags & MF_NOGRAVITY) && + thing->z - tmfloorz > 24*FRACUNIT; + } + } + + if (thing->flags & MF_BOUNCES && // killough 8/13/98 + !(thing->flags & (MF_MISSILE|MF_NOGRAVITY)) && + !sentient(thing) && tmfloorz - thing->z > 16*FRACUNIT) + return false; // too big a step up for bouncers under gravity + + // killough 11/98: prevent falling objects from going up too many steps + if (thing->intflags & MIF_FALLING && tmfloorz - thing->z > + FixedMul(thing->momx,thing->momx)+FixedMul(thing->momy,thing->momy)) + return false; + } + + // the move is ok, + // so unlink from the old position and link into the new position + + P_UnsetThingPosition (thing); + + oldx = thing->x; + oldy = thing->y; + thing->floorz = tmfloorz; + thing->ceilingz = tmceilingz; + thing->dropoffz = tmdropoffz; // killough 11/98: keep track of dropoffs + thing->x = x; + thing->y = y; + + P_SetThingPosition (thing); + + // if any special lines were hit, do the effect + + if (! (thing->flags&(MF_TELEPORT|MF_NOCLIP)) ) + while (numspechit--) + if (spechit[numspechit]->special) // see if the line was crossed + { + int oldside; + if ((oldside = P_PointOnLineSide(oldx, oldy, spechit[numspechit])) != + P_PointOnLineSide(thing->x, thing->y, spechit[numspechit])) + P_CrossSpecialLine(spechit[numspechit], oldside, thing); + } + + return true; + } + +/* + * killough 9/12/98: + * + * Apply "torque" to objects hanging off of ledges, so that they + * fall off. It's not really torque, since Doom has no concept of + * rotation, but it's a convincing effect which avoids anomalies + * such as lifeless objects hanging more than halfway off of ledges, + * and allows objects to roll off of the edges of moving lifts, or + * to slide up and then back down stairs, or to fall into a ditch. + * If more than one linedef is contacted, the effects are cumulative, + * so balancing is possible. + */ + +static boolean PIT_ApplyTorque(line_t *ld) +{ + if (ld->backsector && // If thing touches two-sided pivot linedef + tmbbox[BOXRIGHT] > ld->bbox[BOXLEFT] && + tmbbox[BOXLEFT] < ld->bbox[BOXRIGHT] && + tmbbox[BOXTOP] > ld->bbox[BOXBOTTOM] && + tmbbox[BOXBOTTOM] < ld->bbox[BOXTOP] && + P_BoxOnLineSide(tmbbox, ld) == -1) + { + mobj_t *mo = tmthing; + + fixed_t dist = // lever arm + + (ld->dx >> FRACBITS) * (mo->y >> FRACBITS) + - (ld->dy >> FRACBITS) * (mo->x >> FRACBITS) + - (ld->dx >> FRACBITS) * (ld->v1->y >> FRACBITS) + + (ld->dy >> FRACBITS) * (ld->v1->x >> FRACBITS); + + if (dist < 0 ? // dropoff direction + ld->frontsector->floorheight < mo->z && + ld->backsector->floorheight >= mo->z : + ld->backsector->floorheight < mo->z && + ld->frontsector->floorheight >= mo->z) + { + /* At this point, we know that the object straddles a two-sided + * linedef, and that the object's center of mass is above-ground. + */ + + fixed_t x = D_abs(ld->dx), y = D_abs(ld->dy); + + if (y > x) + { + fixed_t t = x; + x = y; + y = t; + } + + y = finesine[(tantoangle[FixedDiv(y,x)>>DBITS] + + ANG90) >> ANGLETOFINESHIFT]; + + /* Momentum is proportional to distance between the + * object's center of mass and the pivot linedef. + * + * It is scaled by 2^(OVERDRIVE - gear). When gear is + * increased, the momentum gradually decreases to 0 for + * the same amount of pseudotorque, so that oscillations + * are prevented, yet it has a chance to reach equilibrium. + */ + dist = FixedDiv(FixedMul(dist, (mo->gear < OVERDRIVE) ? + y << -(mo->gear - OVERDRIVE) : + y >> +(mo->gear - OVERDRIVE)), x); + + /* Apply momentum away from the pivot linedef. */ + + x = FixedMul(ld->dy, dist); + y = FixedMul(ld->dx, dist); + + /* Avoid moving too fast all of a sudden (step into "overdrive") */ + + dist = FixedMul(x,x) + FixedMul(y,y); + + while (dist > FRACUNIT*4 && mo->gear < MAXGEAR) + ++mo->gear, x >>= 1, y >>= 1, dist >>= 1; + + mo->momx -= x; + mo->momy += y; + } + } + return true; +} + +/* + * killough 9/12/98 + * + * Applies "torque" to objects, based on all contacted linedefs + */ + +void P_ApplyTorque(mobj_t *mo) +{ + int xl = ((tmbbox[BOXLEFT] = + mo->x - mo->radius) - bmaporgx) >> MAPBLOCKSHIFT; + int xh = ((tmbbox[BOXRIGHT] = + mo->x + mo->radius) - bmaporgx) >> MAPBLOCKSHIFT; + int yl = ((tmbbox[BOXBOTTOM] = + mo->y - mo->radius) - bmaporgy) >> MAPBLOCKSHIFT; + int yh = ((tmbbox[BOXTOP] = + mo->y + mo->radius) - bmaporgy) >> MAPBLOCKSHIFT; + int bx,by,flags = mo->intflags; //Remember the current state, for gear-change + + tmthing = mo; + validcount++; /* prevents checking same line twice */ + + for (bx = xl ; bx <= xh ; bx++) + for (by = yl ; by <= yh ; by++) + P_BlockLinesIterator(bx, by, PIT_ApplyTorque); + + /* If any momentum, mark object as 'falling' using engine-internal flags */ + if (mo->momx | mo->momy) + mo->intflags |= MIF_FALLING; + else // Clear the engine-internal flag indicating falling object. + mo->intflags &= ~MIF_FALLING; + + /* If the object has been moving, step up the gear. + * This helps reach equilibrium and avoid oscillations. + * + * Doom has no concept of potential energy, much less + * of rotation, so we have to creatively simulate these + * systems somehow :) + */ + + if (!((mo->intflags | flags) & MIF_FALLING)) // If not falling for a while, + mo->gear = 0; // Reset it to full strength + else + if (mo->gear < MAXGEAR) // Else if not at max gear, + mo->gear++; // move up a gear +} + +// +// P_ThingHeightClip +// Takes a valid thing and adjusts the thing->floorz, +// thing->ceilingz, and possibly thing->z. +// This is called for all nearby monsters +// whenever a sector changes height. +// If the thing doesn't fit, +// the z will be set to the lowest value +// and false will be returned. +// + +boolean P_ThingHeightClip (mobj_t* thing) +{ + boolean onfloor; + + onfloor = (thing->z == thing->floorz); + + P_CheckPosition (thing, thing->x, thing->y); + + /* what about stranding a monster partially off an edge? + * killough 11/98: Answer: see below (upset balance if hanging off ledge) + */ + + thing->floorz = tmfloorz; + thing->ceilingz = tmceilingz; + thing->dropoffz = tmdropoffz; /* killough 11/98: remember dropoffs */ + + if (onfloor) + { + + // walking monsters rise and fall with the floor + + thing->z = thing->floorz; + + /* killough 11/98: Possibly upset balance of objects hanging off ledges */ + if (thing->intflags & MIF_FALLING && thing->gear >= MAXGEAR) + thing->gear = 0; + } + else + { + + // don't adjust a floating monster unless forced to + + if (thing->z+thing->height > thing->ceilingz) + thing->z = thing->ceilingz - thing->height; + } + + return thing->ceilingz - thing->floorz >= thing->height; +} + + +// +// SLIDE MOVE +// Allows the player to slide along any angled walls. +// + +/* killough 8/2/98: make variables static */ +static fixed_t bestslidefrac; +static line_t* bestslideline; +static mobj_t* slidemo; +static fixed_t tmxmove; +static fixed_t tmymove; + + +// +// P_HitSlideLine +// Adjusts the xmove / ymove +// so that the next move will slide along the wall. +// If the floor is icy, then you can bounce off a wall. // phares +// + +void P_HitSlideLine (line_t* ld) + { + int side; + angle_t lineangle; + angle_t moveangle; + angle_t deltaangle; + fixed_t movelen; + fixed_t newlen; + boolean icyfloor; // is floor icy? // phares + // | + // Under icy conditions, if the angle of approach to the wall // V + // is more than 45 degrees, then you'll bounce and lose half + // your momentum. If less than 45 degrees, you'll slide along + // the wall. 45 is arbitrary and is believable. + + // Check for the special cases of horz or vert walls. + + /* killough 10/98: only bounce if hit hard (prevents wobbling) + * cph - DEMOSYNC - should only affect players in Boom demos? */ + + //e6y + if (mbf_features) + { + icyfloor = + P_AproxDistance(tmxmove, tmymove) > 4*FRACUNIT && + variable_friction && // killough 8/28/98: calc friction on demand + slidemo->z <= slidemo->floorz && + P_GetFriction(slidemo, NULL) > ORIG_FRICTION; + } + else + { + extern boolean onground; + icyfloor = !compatibility && + variable_friction && + slidemo->player && + onground && + slidemo->friction > ORIG_FRICTION; + } + + if (ld->slopetype == ST_HORIZONTAL) + { + if (icyfloor && (D_abs(tmymove) > D_abs(tmxmove))) + { + tmxmove /= 2; // absorb half the momentum + tmymove = -tmymove/2; + S_StartSound(slidemo,sfx_oof); // oooff! + } + else + tmymove = 0; // no more movement in the Y direction + return; + } + + if (ld->slopetype == ST_VERTICAL) + { + if (icyfloor && (D_abs(tmxmove) > D_abs(tmymove))) + { + tmxmove = -tmxmove/2; // absorb half the momentum + tmymove /= 2; + S_StartSound(slidemo,sfx_oof); // oooff! // ^ + } // | + else // phares + tmxmove = 0; // no more movement in the X direction + return; + } + + // The wall is angled. Bounce if the angle of approach is // phares + // less than 45 degrees. // phares + + side = P_PointOnLineSide (slidemo->x, slidemo->y, ld); + + lineangle = R_PointToAngle2 (0,0, ld->dx, ld->dy); + if (side == 1) + lineangle += ANG180; + moveangle = R_PointToAngle2 (0,0, tmxmove, tmymove); + + // killough 3/2/98: + // The moveangle+=10 breaks v1.9 demo compatibility in + // some demos, so it needs demo_compatibility switch. + + if (!demo_compatibility) + moveangle += 10; // prevents sudden path reversal due to // phares + // rounding error // | + deltaangle = moveangle-lineangle; // V + movelen = P_AproxDistance (tmxmove, tmymove); + if (icyfloor && (deltaangle > ANG45) && (deltaangle < ANG90+ANG45)) + { + moveangle = lineangle - deltaangle; + movelen /= 2; // absorb + S_StartSound(slidemo,sfx_oof); // oooff! + moveangle >>= ANGLETOFINESHIFT; + tmxmove = FixedMul (movelen, finecosine[moveangle]); + tmymove = FixedMul (movelen, finesine[moveangle]); + } // ^ + else // | + { // phares + if (deltaangle > ANG180) + deltaangle += ANG180; + + // I_Error ("SlideLine: ang>ANG180"); + + lineangle >>= ANGLETOFINESHIFT; + deltaangle >>= ANGLETOFINESHIFT; + newlen = FixedMul (movelen, finecosine[deltaangle]); + tmxmove = FixedMul (newlen, finecosine[lineangle]); + tmymove = FixedMul (newlen, finesine[lineangle]); + } // phares + } + + +// +// PTR_SlideTraverse +// + +boolean PTR_SlideTraverse (intercept_t* in) + { + line_t* li; + + if (!in->isaline) + I_Error ("PTR_SlideTraverse: not a line?"); + + li = in->d.line; + + if ( ! (li->flags & ML_TWOSIDED) ) + { + if (P_PointOnLineSide (slidemo->x, slidemo->y, li)) + return true; // don't hit the back side + goto isblocking; + } + + // set openrange, opentop, openbottom. + // These define a 'window' from one sector to another across a line + + P_LineOpening (li); + + if (openrange < slidemo->height) + goto isblocking; // doesn't fit + + if (opentop - slidemo->z < slidemo->height) + goto isblocking; // mobj is too high + + if (openbottom - slidemo->z > 24*FRACUNIT ) + goto isblocking; // too big a step up + + // this line doesn't block movement + + return true; + + // the line does block movement, + // see if it is closer than best so far + +isblocking: + + if (in->frac < bestslidefrac) + { + bestslidefrac = in->frac; + bestslideline = li; + } + + return false; // stop + } + + +// +// P_SlideMove +// The momx / momy move is bad, so try to slide +// along a wall. +// Find the first line hit, move flush to it, +// and slide along it +// +// This is a kludgy mess. +// +// killough 11/98: reformatted + +void P_SlideMove(mobj_t *mo) +{ + int hitcount = 3; + + slidemo = mo; // the object that's sliding + + do + { + fixed_t leadx, leady, trailx, traily; + + if (!--hitcount) + goto stairstep; // don't loop forever + + // trace along the three leading corners + + if (mo->momx > 0) + leadx = mo->x + mo->radius, trailx = mo->x - mo->radius; + else + leadx = mo->x - mo->radius, trailx = mo->x + mo->radius; + + if (mo->momy > 0) + leady = mo->y + mo->radius, traily = mo->y - mo->radius; + else + leady = mo->y - mo->radius, traily = mo->y + mo->radius; + + bestslidefrac = FRACUNIT+1; + + P_PathTraverse(leadx, leady, leadx+mo->momx, leady+mo->momy, + PT_ADDLINES, PTR_SlideTraverse); + P_PathTraverse(trailx, leady, trailx+mo->momx, leady+mo->momy, + PT_ADDLINES, PTR_SlideTraverse); + P_PathTraverse(leadx, traily, leadx+mo->momx, traily+mo->momy, + PT_ADDLINES, PTR_SlideTraverse); + + // move up to the wall + + if (bestslidefrac == FRACUNIT+1) + { + // the move must have hit the middle, so stairstep + + stairstep: + + /* killough 3/15/98: Allow objects to drop off ledges + * + * phares 5/4/98: kill momentum if you can't move at all + * This eliminates player bobbing if pressed against a wall + * while on ice. + * + * killough 10/98: keep buggy code around for old Boom demos + * + * cph 2000/09//23: buggy code was only in Boom v2.01 + */ + + if (!P_TryMove(mo, mo->x, mo->y + mo->momy, true)) + if (!P_TryMove(mo, mo->x + mo->momx, mo->y, true)) + if (compatibility_level == boom_201_compatibility) + mo->momx = mo->momy = 0; + + break; + } + + // fudge a bit to make sure it doesn't hit + + if ((bestslidefrac -= 0x800) > 0) + { + fixed_t newx = FixedMul(mo->momx, bestslidefrac); + fixed_t newy = FixedMul(mo->momy, bestslidefrac); + + // killough 3/15/98: Allow objects to drop off ledges + + if (!P_TryMove(mo, mo->x+newx, mo->y+newy, true)) + goto stairstep; + } + + // Now continue along the wall. + // First calculate remainder. + + bestslidefrac = FRACUNIT-(bestslidefrac+0x800); + + if (bestslidefrac > FRACUNIT) + bestslidefrac = FRACUNIT; + + if (bestslidefrac <= 0) + break; + + tmxmove = FixedMul(mo->momx, bestslidefrac); + tmymove = FixedMul(mo->momy, bestslidefrac); + + P_HitSlideLine(bestslideline); // clip the moves + + mo->momx = tmxmove; + mo->momy = tmymove; + + /* killough 10/98: affect the bobbing the same way (but not voodoo dolls) + * cph - DEMOSYNC? */ + if (mo->player && mo->player->mo == mo) + { + if (D_abs(mo->player->momx) > D_abs(tmxmove)) + mo->player->momx = tmxmove; + if (D_abs(mo->player->momy) > D_abs(tmymove)) + mo->player->momy = tmymove; + } + } // killough 3/15/98: Allow objects to drop off ledges: + while (!P_TryMove(mo, mo->x+tmxmove, mo->y+tmymove, true)); +} + +// +// P_LineAttack +// +mobj_t* linetarget; // who got hit (or NULL) +static mobj_t* shootthing; + +/* killough 8/2/98: for more intelligent autoaiming */ +static uint_64_t aim_flags_mask; + +// Height if not aiming up or down +fixed_t shootz; + +int la_damage; +fixed_t attackrange; + +static fixed_t aimslope; + +// slopes to top and bottom of target +// killough 4/20/98: make static instead of using ones in p_sight.c + +static fixed_t topslope; +static fixed_t bottomslope; + + +// +// PTR_AimTraverse +// Sets linetaget and aimslope when a target is aimed at. +// +boolean PTR_AimTraverse (intercept_t* in) + { + line_t* li; + mobj_t* th; + fixed_t slope; + fixed_t thingtopslope; + fixed_t thingbottomslope; + fixed_t dist; + + if (in->isaline) + { + li = in->d.line; + + if ( !(li->flags & ML_TWOSIDED) ) + return false; // stop + + // Crosses a two sided line. + // A two sided line will restrict + // the possible target ranges. + + P_LineOpening (li); + + if (openbottom >= opentop) + return false; // stop + + dist = FixedMul (attackrange, in->frac); + + if (li->frontsector->floorheight != li->backsector->floorheight) + { + slope = FixedDiv (openbottom - shootz , dist); + if (slope > bottomslope) + bottomslope = slope; + } + + if (li->frontsector->ceilingheight != li->backsector->ceilingheight) + { + slope = FixedDiv (opentop - shootz , dist); + if (slope < topslope) + topslope = slope; + } + + if (topslope <= bottomslope) + return false; // stop + + return true; // shot continues + } + + // shoot a thing + + th = in->d.thing; + if (th == shootthing) + return true; // can't shoot self + + if (!(th->flags&MF_SHOOTABLE)) + return true; // corpse or something + + /* killough 7/19/98, 8/2/98: + * friends don't aim at friends (except players), at least not first + */ + if (th->flags & shootthing->flags & aim_flags_mask && !th->player) + return true; + + // check angles to see if the thing can be aimed at + + dist = FixedMul (attackrange, in->frac); + thingtopslope = FixedDiv (th->z+th->height - shootz , dist); + + if (thingtopslope < bottomslope) + return true; // shot over the thing + + thingbottomslope = FixedDiv (th->z - shootz, dist); + + if (thingbottomslope > topslope) + return true; // shot under the thing + + // this thing can be hit! + + if (thingtopslope > topslope) + thingtopslope = topslope; + + if (thingbottomslope < bottomslope) + thingbottomslope = bottomslope; + + aimslope = (thingtopslope+thingbottomslope)/2; + linetarget = th; + + return false; // don't go any farther + } + + +// +// PTR_ShootTraverse +// +boolean PTR_ShootTraverse (intercept_t* in) + { + fixed_t x; + fixed_t y; + fixed_t z; + fixed_t frac; + + mobj_t* th; + + fixed_t slope; + fixed_t dist; + fixed_t thingtopslope; + fixed_t thingbottomslope; + + if (in->isaline) + { + line_t *li = in->d.line; + + if (li->special) + P_ShootSpecialLine (shootthing, li); + + if (li->flags & ML_TWOSIDED) + { // crosses a two sided (really 2s) line + P_LineOpening (li); + dist = FixedMul(attackrange, in->frac); + + // killough 11/98: simplify + + if ((li->frontsector->floorheight==li->backsector->floorheight || + (slope = FixedDiv(openbottom - shootz , dist)) <= aimslope) && + (li->frontsector->ceilingheight==li->backsector->ceilingheight || + (slope = FixedDiv (opentop - shootz , dist)) >= aimslope)) + return true; // shot continues + } + + // hit line + // position a bit closer + + frac = in->frac - FixedDiv (4*FRACUNIT,attackrange); + x = trace.x + FixedMul (trace.dx, frac); + y = trace.y + FixedMul (trace.dy, frac); + z = shootz + FixedMul (aimslope, FixedMul(frac, attackrange)); + + if (li->frontsector->ceilingpic == skyflatnum) + { + // don't shoot the sky! + + if (z > li->frontsector->ceilingheight) + return false; + + // it's a sky hack wall + + if (li->backsector && li->backsector->ceilingpic == skyflatnum) + + // fix bullet-eaters -- killough: + // WARNING: Almost all demos will lose sync without this + // demo_compatibility flag check!!! killough 1/18/98 + if (demo_compatibility || li->backsector->ceilingheight < z) + return false; + } + + // Spawn bullet puffs. + + P_SpawnPuff (x,y,z); + + // don't go any farther + + return false; + } + + // shoot a thing + + th = in->d.thing; + if (th == shootthing) + return true; // can't shoot self + + if (!(th->flags&MF_SHOOTABLE)) + return true; // corpse or something + + // check angles to see if the thing can be aimed at + + dist = FixedMul (attackrange, in->frac); + thingtopslope = FixedDiv (th->z+th->height - shootz , dist); + + if (thingtopslope < aimslope) + return true; // shot over the thing + + thingbottomslope = FixedDiv (th->z - shootz, dist); + + if (thingbottomslope > aimslope) + return true; // shot under the thing + + // hit thing + // position a bit closer + + frac = in->frac - FixedDiv (10*FRACUNIT,attackrange); + + x = trace.x + FixedMul (trace.dx, frac); + y = trace.y + FixedMul (trace.dy, frac); + z = shootz + FixedMul (aimslope, FixedMul(frac, attackrange)); + + // Spawn bullet puffs or blod spots, + // depending on target type. + if (in->d.thing->flags & MF_NOBLOOD) + P_SpawnPuff (x,y,z); + else + P_SpawnBlood (x,y,z, la_damage); + + if (la_damage) + P_DamageMobj (th, shootthing, shootthing, la_damage); + + // don't go any farther + return false; + } + + +// +// P_AimLineAttack +// +fixed_t P_AimLineAttack(mobj_t* t1,angle_t angle,fixed_t distance, uint_64_t mask) + { + fixed_t x2; + fixed_t y2; + + angle >>= ANGLETOFINESHIFT; + shootthing = t1; + + x2 = t1->x + (distance>>FRACBITS)*finecosine[angle]; + y2 = t1->y + (distance>>FRACBITS)*finesine[angle]; + shootz = t1->z + (t1->height>>1) + 8*FRACUNIT; + + // can't shoot outside view angles + + topslope = 100*FRACUNIT/160; + bottomslope = -100*FRACUNIT/160; + + attackrange = distance; + linetarget = NULL; + + /* killough 8/2/98: prevent friends from aiming at friends */ + aim_flags_mask = mask; + + P_PathTraverse(t1->x,t1->y,x2,y2,PT_ADDLINES|PT_ADDTHINGS,PTR_AimTraverse); + + if (linetarget) + return aimslope; + + return 0; + } + + +// +// P_LineAttack +// If damage == 0, it is just a test trace +// that will leave linetarget set. +// + +void P_LineAttack +(mobj_t* t1, + angle_t angle, + fixed_t distance, + fixed_t slope, + int damage) + { + fixed_t x2; + fixed_t y2; + + angle >>= ANGLETOFINESHIFT; + shootthing = t1; + la_damage = damage; + x2 = t1->x + (distance>>FRACBITS)*finecosine[angle]; + y2 = t1->y + (distance>>FRACBITS)*finesine[angle]; + shootz = t1->z + (t1->height>>1) + 8*FRACUNIT; + attackrange = distance; + aimslope = slope; + + P_PathTraverse(t1->x,t1->y,x2,y2,PT_ADDLINES|PT_ADDTHINGS,PTR_ShootTraverse); + } + + +// +// USE LINES +// + +mobj_t* usething; + +boolean PTR_UseTraverse (intercept_t* in) + { + int side; + + if (!in->d.line->special) + { + P_LineOpening (in->d.line); + if (openrange <= 0) + { + S_StartSound (usething, sfx_noway); + + // can't use through a wall + return false; + } + + // not a special line, but keep checking + + return true; + } + + side = 0; + if (P_PointOnLineSide (usething->x, usething->y, in->d.line) == 1) + side = 1; + + // return false; // don't use back side + + P_UseSpecialLine (usething, in->d.line, side); + + //WAS can't use for than one special line in a row + //jff 3/21/98 NOW multiple use allowed with enabling line flag + + return (!demo_compatibility && (in->d.line->flags&ML_PASSUSE))? + true : false; +} + +// Returns false if a "oof" sound should be made because of a blocking +// linedef. Makes 2s middles which are impassable, as well as 2s uppers +// and lowers which block the player, cause the sound effect when the +// player tries to activate them. Specials are excluded, although it is +// assumed that all special linedefs within reach have been considered +// and rejected already (see P_UseLines). +// +// by Lee Killough +// + +boolean PTR_NoWayTraverse(intercept_t* in) + { + line_t *ld = in->d.line; + // This linedef + return ld->special || !( // Ignore specials + ld->flags & ML_BLOCKING || ( // Always blocking + P_LineOpening(ld), // Find openings + openrange <= 0 || // No opening + openbottom > usething->z+24*FRACUNIT || // Too high it blocks + opentop < usething->z+usething->height // Too low it blocks + ) + ); + } + +// +// P_UseLines +// Looks for special lines in front of the player to activate. +// +void P_UseLines (player_t* player) + { + int angle; + fixed_t x1; + fixed_t y1; + fixed_t x2; + fixed_t y2; + + usething = player->mo; + + angle = player->mo->angle >> ANGLETOFINESHIFT; + + x1 = player->mo->x; + y1 = player->mo->y; + x2 = x1 + (USERANGE>>FRACBITS)*finecosine[angle]; + y2 = y1 + (USERANGE>>FRACBITS)*finesine[angle]; + + // old code: + // + // P_PathTraverse ( x1, y1, x2, y2, PT_ADDLINES, PTR_UseTraverse ); + // + // This added test makes the "oof" sound work on 2s lines -- killough: + + if (P_PathTraverse ( x1, y1, x2, y2, PT_ADDLINES, PTR_UseTraverse )) + if (!comp[comp_sound] && !P_PathTraverse ( x1, y1, x2, y2, PT_ADDLINES, PTR_NoWayTraverse )) + S_StartSound (usething, sfx_noway); + } + + +// +// RADIUS ATTACK +// + +static mobj_t *bombsource, *bombspot; +static int bombdamage; + + +// +// PIT_RadiusAttack +// "bombsource" is the creature +// that caused the explosion at "bombspot". +// + +boolean PIT_RadiusAttack (mobj_t* thing) + { + fixed_t dx; + fixed_t dy; + fixed_t dist; + + /* killough 8/20/98: allow bouncers to take damage + * (missile bouncers are already excluded with MF_NOBLOCKMAP) + */ + + if (!(thing->flags & (MF_SHOOTABLE | MF_BOUNCES))) + return true; + + // Boss spider and cyborg + // take no damage from concussion. + + // killough 8/10/98: allow grenades to hurt anyone, unless + // fired by Cyberdemons, in which case it won't hurt Cybers. + + if (bombspot->flags & MF_BOUNCES ? + thing->type == MT_CYBORG && bombsource->type == MT_CYBORG : + thing->type == MT_CYBORG || thing->type == MT_SPIDER) + return true; + + dx = D_abs(thing->x - bombspot->x); + dy = D_abs(thing->y - bombspot->y); + + dist = dx>dy ? dx : dy; + dist = (dist - thing->radius) >> FRACBITS; + + if (dist < 0) + dist = 0; + + if (dist >= bombdamage) + return true; // out of range + + if ( P_CheckSight (thing, bombspot) ) + { + // must be in direct path + P_DamageMobj (thing, bombspot, bombsource, bombdamage - dist); + } + + return true; + } + + +// +// P_RadiusAttack +// Source is the creature that caused the explosion at spot. +// +void P_RadiusAttack(mobj_t* spot,mobj_t* source,int damage) + { + int x; + int y; + + int xl; + int xh; + int yl; + int yh; + + fixed_t dist; + + dist = (damage+MAXRADIUS)<y + dist - bmaporgy)>>MAPBLOCKSHIFT; + yl = (spot->y - dist - bmaporgy)>>MAPBLOCKSHIFT; + xh = (spot->x + dist - bmaporgx)>>MAPBLOCKSHIFT; + xl = (spot->x - dist - bmaporgx)>>MAPBLOCKSHIFT; + bombspot = spot; + bombsource = source; + bombdamage = damage; + + for (y=yl ; y<=yh ; y++) + for (x=xl ; x<=xh ; x++) + P_BlockThingsIterator (x, y, PIT_RadiusAttack ); + } + + + +// +// SECTOR HEIGHT CHANGING +// After modifying a sectors floor or ceiling height, +// call this routine to adjust the positions +// of all things that touch the sector. +// +// If anything doesn't fit anymore, true will be returned. +// If crunch is true, they will take damage +// as they are being crushed. +// If Crunch is false, you should set the sector height back +// the way it was and call P_ChangeSector again +// to undo the changes. +// + +static boolean crushchange, nofit; + +// +// PIT_ChangeSector +// + +boolean PIT_ChangeSector (mobj_t* thing) + { + mobj_t* mo; + + if (P_ThingHeightClip (thing)) + return true; // keep checking + + // crunch bodies to giblets + + if (thing->health <= 0) + { + P_SetMobjState (thing, S_GIBS); + + thing->flags &= ~MF_SOLID; + thing->height = 0; + thing->radius = 0; + return true; // keep checking + } + + // crunch dropped items + + if (thing->flags & MF_DROPPED) + { + P_RemoveMobj (thing); + + // keep checking + return true; + } + + /* killough 11/98: kill touchy things immediately */ + if (thing->flags & MF_TOUCHY && + (thing->intflags & MIF_ARMED || sentient(thing))) + { + P_DamageMobj(thing, NULL, NULL, thing->health); // kill object + return true; // keep checking + } + + if (! (thing->flags & MF_SHOOTABLE) ) + { + // assume it is bloody gibs or something + return true; + } + + nofit = true; + + if (crushchange && !(leveltime&3)) { + int t; + P_DamageMobj(thing,NULL,NULL,10); + + // spray blood in a random direction + mo = P_SpawnMobj (thing->x, + thing->y, + thing->z + thing->height/2, MT_BLOOD); + + /* killough 8/10/98: remove dependence on order of evaluation */ + t = P_Random(pr_crush); + mo->momx = (t - P_Random (pr_crush))<<12; + t = P_Random(pr_crush); + mo->momy = (t - P_Random (pr_crush))<<12; + } + + // keep checking (crush other things) + return true; + } + + +// +// P_ChangeSector +// +boolean P_ChangeSector(sector_t* sector,boolean crunch) + { + int x; + int y; + + nofit = false; + crushchange = crunch; + + // ARRGGHHH!!!! + // This is horrendously slow!!! + // killough 3/14/98 + + // re-check heights for all things near the moving sector + + for (x=sector->blockbox[BOXLEFT] ; x<= sector->blockbox[BOXRIGHT] ; x++) + for (y=sector->blockbox[BOXBOTTOM];y<= sector->blockbox[BOXTOP] ; y++) + P_BlockThingsIterator (x, y, PIT_ChangeSector); + + return nofit; + } + +// +// P_CheckSector +// jff 3/19/98 added to just check monsters on the periphery +// of a moving sector instead of all in bounding box of the +// sector. Both more accurate and faster. +// + +boolean P_CheckSector(sector_t* sector,boolean crunch) + { + msecnode_t *n; + + if (comp[comp_floors]) /* use the old routine for old demos though */ + return P_ChangeSector(sector,crunch); + + nofit = false; + crushchange = crunch; + + // killough 4/4/98: scan list front-to-back until empty or exhausted, + // restarting from beginning after each thing is processed. Avoids + // crashes, and is sure to examine all things in the sector, and only + // the things which are in the sector, until a steady-state is reached. + // Things can arbitrarily be inserted and removed and it won't mess up. + // + // killough 4/7/98: simplified to avoid using complicated counter + + // Mark all things invalid + + for (n=sector->touching_thinglist; n; n=n->m_snext) + n->visited = false; + + do + for (n=sector->touching_thinglist; n; n=n->m_snext) // go through list + if (!n->visited) // unprocessed thing found + { + n->visited = true; // mark thing as processed + if (!(n->m_thing->flags & MF_NOBLOCKMAP)) //jff 4/7/98 don't do these + PIT_ChangeSector(n->m_thing); // process it + break; // exit and start over + } + while (n); // repeat from scratch until all things left are marked valid + + return nofit; + } + + +// CPhipps - +// Use block memory allocator here + +void *secnodezone = NULL; + +typedef struct bmalpool_s { + struct bmalpool_s *nextpool; + uint32_t used; + msecnode_t blocks[32]; +} bmalpool_t; + +// P_GetSecnode() gets a node from the freelist. + +static inline msecnode_t *P_GetSecnode(void) +{ + bmalpool_t **pool = (bmalpool_t **)&secnodezone; + + // Skip to the first pool with free blocks + while (*pool && ~((*pool)->used) == 0) + pool = &((*pool)->nextpool); + + if (*pool) + { + for (int i = 0; i < 32; ++i) + { + if (((*pool)->used & (1 << i)) == 0) + { + (*pool)->used |= (1 << i); + return &((*pool)->blocks[i]); + } + } + } + + *pool = Z_Malloc(sizeof(bmalpool_t), PU_LEVEL, NULL); + (*pool)->nextpool = NULL; + (*pool)->used = 1; + return &((*pool)->blocks[0]); +} + +// P_PutSecnode() returns a node to the freelist. + +static inline void P_PutSecnode(msecnode_t *node) +{ + bmalpool_t **pool = (bmalpool_t **)&secnodezone; + while (*pool) + { + for (int i = 0; i < 32; ++i) + { + if (&(*pool)->blocks[i] == node) + { + (*pool)->used &= ~(1 << i); + if ((*pool)->used == 0) + { + // Block is all unused, can be freed + bmalpool_t *oldpool = *pool; + *pool = (*pool)->nextpool; + Z_Free(oldpool); + } + return; + } + } + pool = &((*pool)->nextpool); + } + I_Error("P_PutSecnode: Free not in zone"); +} + +// phares 3/16/98 +// +// P_AddSecnode() searches the current list to see if this sector is +// already there. If not, it adds a sector node at the head of the list of +// sectors this object appears in. This is called when creating a list of +// nodes that will get linked in later. Returns a pointer to the new node. + +msecnode_t* P_AddSecnode(sector_t* s, mobj_t* thing, msecnode_t* nextnode) + { + msecnode_t* node; + + node = nextnode; + while (node) + { + if (node->m_sector == s) // Already have a node for this sector? + { + node->m_thing = thing; // Yes. Setting m_thing says 'keep it'. + return(nextnode); + } + node = node->m_tnext; + } + + // Couldn't find an existing node for this sector. Add one at the head + // of the list. + + node = P_GetSecnode(); + + // killough 4/4/98, 4/7/98: mark new nodes unvisited. + node->visited = 0; + + node->m_sector = s; // sector + node->m_thing = thing; // mobj + node->m_tprev = NULL; // prev node on Thing thread + node->m_tnext = nextnode; // next node on Thing thread + if (nextnode) + nextnode->m_tprev = node; // set back link on Thing + + // Add new node at head of sector thread starting at s->touching_thinglist + + node->m_sprev = NULL; // prev node on sector thread + node->m_snext = s->touching_thinglist; // next node on sector thread + if (s->touching_thinglist) + node->m_snext->m_sprev = node; + s->touching_thinglist = node; + return(node); + } + + +// P_DelSecnode() deletes a sector node from the list of +// sectors this object appears in. Returns a pointer to the next node +// on the linked list, or NULL. + +msecnode_t* P_DelSecnode(msecnode_t* node) + { + msecnode_t* tp; // prev node on thing thread + msecnode_t* tn; // next node on thing thread + msecnode_t* sp; // prev node on sector thread + msecnode_t* sn; // next node on sector thread + + if (node) + { + + // Unlink from the Thing thread. The Thing thread begins at + // sector_list and not from mobj_t->touching_sectorlist. + + tp = node->m_tprev; + tn = node->m_tnext; + if (tp) + tp->m_tnext = tn; + if (tn) + tn->m_tprev = tp; + + // Unlink from the sector thread. This thread begins at + // sector_t->touching_thinglist. + + sp = node->m_sprev; + sn = node->m_snext; + if (sp) + sp->m_snext = sn; + else + node->m_sector->touching_thinglist = sn; + if (sn) + sn->m_sprev = sp; + + // Return this node to the freelist + + P_PutSecnode(node); + return(tn); + } + return(NULL); + } // phares 3/13/98 + +// Delete an entire sector list + +void P_DelSeclist(msecnode_t* node) + + { + while (node) + node = P_DelSecnode(node); + } + + +// phares 3/14/98 +// +// PIT_GetSectors +// Locates all the sectors the object is in by looking at the lines that +// cross through it. You have already decided that the object is allowed +// at this location, so don't bother with checking impassable or +// blocking lines. + +boolean PIT_GetSectors(line_t* ld) + { + if (tmbbox[BOXRIGHT] <= ld->bbox[BOXLEFT] || + tmbbox[BOXLEFT] >= ld->bbox[BOXRIGHT] || + tmbbox[BOXTOP] <= ld->bbox[BOXBOTTOM] || + tmbbox[BOXBOTTOM] >= ld->bbox[BOXTOP]) + return true; + + if (P_BoxOnLineSide(tmbbox, ld) != -1) + return true; + + // This line crosses through the object. + + // Collect the sector(s) from the line and add to the + // sector_list you're examining. If the Thing ends up being + // allowed to move to this position, then the sector_list + // will be attached to the Thing's mobj_t at touching_sectorlist. + + sector_list = P_AddSecnode(ld->frontsector,tmthing,sector_list); + + /* Don't assume all lines are 2-sided, since some Things + * like MT_TFOG are allowed regardless of whether their radius takes + * them beyond an impassable linedef. + * + * killough 3/27/98, 4/4/98: + * Use sidedefs instead of 2s flag to determine two-sidedness. + * killough 8/1/98: avoid duplicate if same sector on both sides + * cph - DEMOSYNC? */ + + if (ld->backsector && ld->backsector != ld->frontsector) + sector_list = P_AddSecnode(ld->backsector, tmthing, sector_list); + + return true; + } + + +// phares 3/14/98 +// +// P_CreateSecNodeList alters/creates the sector_list that shows what sectors +// the object resides in. + +void P_CreateSecNodeList(mobj_t* thing,fixed_t x,fixed_t y) +{ + int xl; + int xh; + int yl; + int yh; + int bx; + int by; + msecnode_t* node; + mobj_t* saved_tmthing = tmthing; /* cph - see comment at func end */ + fixed_t saved_tmx = tmx, saved_tmy = tmy; /* ditto */ + + // First, clear out the existing m_thing fields. As each node is + // added or verified as needed, m_thing will be set properly. When + // finished, delete all nodes where m_thing is still NULL. These + // represent the sectors the Thing has vacated. + + node = sector_list; + while (node) + { + node->m_thing = NULL; + node = node->m_tnext; + } + + tmthing = thing; + + tmx = x; + tmy = y; + + tmbbox[BOXTOP] = y + tmthing->radius; + tmbbox[BOXBOTTOM] = y - tmthing->radius; + tmbbox[BOXRIGHT] = x + tmthing->radius; + tmbbox[BOXLEFT] = x - tmthing->radius; + + validcount++; // used to make sure we only process a line once + + xl = (tmbbox[BOXLEFT] - bmaporgx)>>MAPBLOCKSHIFT; + xh = (tmbbox[BOXRIGHT] - bmaporgx)>>MAPBLOCKSHIFT; + yl = (tmbbox[BOXBOTTOM] - bmaporgy)>>MAPBLOCKSHIFT; + yh = (tmbbox[BOXTOP] - bmaporgy)>>MAPBLOCKSHIFT; + + for (bx=xl ; bx<=xh ; bx++) + for (by=yl ; by<=yh ; by++) + P_BlockLinesIterator(bx,by,PIT_GetSectors); + + // Add the sector of the (x,y) point to sector_list. + + sector_list = P_AddSecnode(thing->subsector->sector,thing,sector_list); + + // Now delete any nodes that won't be used. These are the ones where + // m_thing is still NULL. + + node = sector_list; + while (node) + { + if (node->m_thing == NULL) + { + if (node == sector_list) + sector_list = node->m_tnext; + node = P_DelSecnode(node); + } + else + node = node->m_tnext; + } + + /* cph - + * This is the strife we get into for using global variables. tmthing + * is being used by several different functions calling + * P_BlockThingIterator, including functions that can be called *from* + * P_BlockThingIterator. Using a global tmthing is not reentrant. + * OTOH for Boom/MBF demos we have to preserve the buggy behavior. + * Fun. We restore its previous value unless we're in a Boom/MBF demo. + */ + if ((compatibility_level < boom_compatibility_compatibility) || + (compatibility_level >= prboom_3_compatibility)) + tmthing = saved_tmthing; + /* And, duh, the same for tmx/y - cph 2002/09/22 + * And for tmbbox - cph 2003/08/10 */ + if ((compatibility_level < boom_compatibility_compatibility) /* || + (compatibility_level >= prboom_4_compatibility) */) { + tmx = saved_tmx, tmy = saved_tmy; + if (tmthing) { + tmbbox[BOXTOP] = tmy + tmthing->radius; + tmbbox[BOXBOTTOM] = tmy - tmthing->radius; + tmbbox[BOXRIGHT] = tmx + tmthing->radius; + tmbbox[BOXLEFT] = tmx - tmthing->radius; + } + } +} + +/* cphipps 2004/08/30 - + * Must clear tmthing at tic end, as it might contain a pointer to a removed thinker, or the level might have ended/been ended and we clear the objects it was pointing too. Hopefully we don't need to carry this between tics for sync. */ +void P_MapStart(void) { + if (tmthing) I_Error("P_MapStart: tmthing set!"); +} +void P_MapEnd(void) { + tmthing = NULL; +} + +// e6y +// Code to emulate the behavior of Vanilla Doom when encountering an overrun +// of the spechit array. +// No more desyncs on compet-n\hr.wad\hr18*.lmp, all strain.wad\map07 demos etc. +// http://www.doomworld.com/vb/showthread.php?s=&threadid=35214 +static void SpechitOverrun(line_t *ld) +{ + //int addr = 0x01C09C98 + (ld - lines) * 0x3E; + int addr = 0x00C09C98 + (ld - lines) * 0x3E; + + if (compatibility_level == dosdoom_compatibility || compatibility_level == tasdoom_compatibility) + { + // e6y + // There are no more desyncs in the following dosdoom demos: + // flsofdth.wad\fod3uv.lmp - http://www.doomworld.com/sda/flsofdth.htm + // hr.wad\hf181430.lmp - http://www.doomworld.com/tas/hf181430.zip + // hr.wad\hr181329.lmp - http://www.doomworld.com/tas/hr181329.zip + // icarus.wad\ic09uv.lmp - http://competn.doom2.net/pub/sda/i-o/icuvlmps.zip + + switch(numspechit) + { + case 8: break; /* strange cph's code */ + case 9: + tmfloorz = addr; + break; + case 10: + tmceilingz = addr; + break; + + default: + lprintf(LO_ERROR, "SpechitOverrun: Warning: unable to emulate" + " an overrun where numspechit=%i\n", + numspechit); + break; + } + } + else + { + switch(numspechit) + { + case 8: break; /* numspechit, not significant it seems - cph */ + case 9: + case 10: + case 11: + case 12: + tmbbox[numspechit-9] = addr; + break; + case 13: + nofit = addr; + break; + case 14: + crushchange = addr; + break; + default: + lprintf(LO_ERROR, "SpechitOverrun: Warning: unable to emulate" + " an overrun where numspechit=%i\n", + numspechit); + break; + } + } +} diff --git a/components/doom/prboom/p_map.h b/components/doom/prboom/p_map.h new file mode 100644 index 0000000..9100a96 --- /dev/null +++ b/components/doom/prboom/p_map.h @@ -0,0 +1,92 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Map functions + * + *-----------------------------------------------------------------------------*/ + +#ifndef __P_MAP__ +#define __P_MAP__ + +#include "r_defs.h" +#include "d_player.h" + +#define USERANGE (64*FRACUNIT) +#define MELEERANGE (64*FRACUNIT) +#define MISSILERANGE (32*64*FRACUNIT) + +// MAXRADIUS is for precalculated sector block boxes the spider demon +// is larger, but we do not have any moving sectors nearby +#define MAXRADIUS (32*FRACUNIT) + +// killough 3/15/98: add fourth argument to P_TryMove +boolean P_TryMove(mobj_t *thing, fixed_t x, fixed_t y, int dropoff); + +// killough 8/9/98: extra argument for telefragging +boolean P_TeleportMove(mobj_t *thing, fixed_t x, fixed_t y,boolean boss); +void P_SlideMove(mobj_t *mo); +boolean P_CheckSight(mobj_t *t1, mobj_t *t2); +void P_UseLines(player_t *player); + +// killough 8/2/98: add 'mask' argument to prevent friends autoaiming at others +fixed_t P_AimLineAttack(mobj_t *t1,angle_t angle,fixed_t distance, uint_64_t mask); + +void P_LineAttack(mobj_t *t1, angle_t angle, fixed_t distance, + fixed_t slope, int damage ); +void P_RadiusAttack(mobj_t *spot, mobj_t *source, int damage); +boolean P_CheckPosition(mobj_t *thing, fixed_t x, fixed_t y); + +//jff 3/19/98 P_CheckSector(): new routine to replace P_ChangeSector() +boolean P_ChangeSector(sector_t* sector,boolean crunch); +boolean P_CheckSector(sector_t *sector, boolean crunch); +void P_DelSeclist(msecnode_t*); // phares 3/16/98 +void P_CreateSecNodeList(mobj_t*,fixed_t,fixed_t); // phares 3/14/98 +boolean Check_Sides(mobj_t *, int, int); // phares + +int P_GetMoveFactor(const mobj_t *mo, int *friction); // killough 8/28/98 +int P_GetFriction(const mobj_t *mo, int *factor); // killough 8/28/98 +void P_ApplyTorque(mobj_t *mo); // killough 9/12/98 + +/* cphipps 2004/08/30 */ +void P_MapStart(void); +void P_MapEnd(void); + +// If "floatok" true, move would be ok if within "tmfloorz - tmceilingz". +extern boolean floatok; +extern boolean felldown; // killough 11/98: indicates object pushed off ledge +extern fixed_t tmfloorz; +extern fixed_t tmceilingz; +extern line_t *ceilingline; +extern line_t *floorline; // killough 8/23/98 +extern mobj_t *linetarget; // who got hit (or NULL) +extern msecnode_t *sector_list; // phares 3/16/98 +extern fixed_t tmbbox[4]; // phares 3/20/98 +extern line_t *blockline; // killough 8/11/98 + +#endif // __P_MAP__ diff --git a/components/doom/prboom/p_maputl.c b/components/doom/prboom/p_maputl.c new file mode 100644 index 0000000..62ce91c --- /dev/null +++ b/components/doom/prboom/p_maputl.c @@ -0,0 +1,683 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Movement/collision utility functions, + * as used by function in p_map.c. + * BLOCKMAP Iterator functions, + * and some PIT_* functions to use for iteration. + * + *-----------------------------------------------------------------------------*/ + +#include "doomstat.h" +#include "m_bbox.h" +#include "r_main.h" +#include "p_maputl.h" +#include "p_map.h" +#include "p_setup.h" + +// +// P_AproxDistance +// Gives an estimation of distance (not exact) +// + +fixed_t CONSTFUNC P_AproxDistance(fixed_t dx, fixed_t dy) +{ + dx = D_abs(dx); + dy = D_abs(dy); + if (dx < dy) + return dx+dy-(dx>>1); + return dx+dy-(dy>>1); +} + +// +// P_PointOnLineSide +// Returns 0 or 1 +// +// killough 5/3/98: reformatted, cleaned up + +int PUREFUNC P_PointOnLineSide(fixed_t x, fixed_t y, const line_t *line) +{ + return + !line->dx ? x <= line->v1->x ? line->dy > 0 : line->dy < 0 : + !line->dy ? y <= line->v1->y ? line->dx < 0 : line->dx > 0 : + FixedMul(y-line->v1->y, line->dx>>FRACBITS) >= + FixedMul(line->dy>>FRACBITS, x-line->v1->x); +} + +// +// P_BoxOnLineSide +// Considers the line to be infinite +// Returns side 0 or 1, -1 if box crosses the line. +// +// killough 5/3/98: reformatted, cleaned up + +int PUREFUNC P_BoxOnLineSide(const fixed_t *tmbox, const line_t *ld) +{ + switch (ld->slopetype) + { + int p; + default: // shut up compiler warnings -- killough + case ST_HORIZONTAL: + return + (tmbox[BOXBOTTOM] > ld->v1->y) == (p = tmbox[BOXTOP] > ld->v1->y) ? + p ^ (ld->dx < 0) : -1; + case ST_VERTICAL: + return + (tmbox[BOXLEFT] < ld->v1->x) == (p = tmbox[BOXRIGHT] < ld->v1->x) ? + p ^ (ld->dy < 0) : -1; + case ST_POSITIVE: + return + P_PointOnLineSide(tmbox[BOXRIGHT], tmbox[BOXBOTTOM], ld) == + (p = P_PointOnLineSide(tmbox[BOXLEFT], tmbox[BOXTOP], ld)) ? p : -1; + case ST_NEGATIVE: + return + (P_PointOnLineSide(tmbox[BOXLEFT], tmbox[BOXBOTTOM], ld)) == + (p = P_PointOnLineSide(tmbox[BOXRIGHT], tmbox[BOXTOP], ld)) ? p : -1; + } +} + +// +// P_PointOnDivlineSide +// Returns 0 or 1. +// +// killough 5/3/98: reformatted, cleaned up + +static int PUREFUNC P_PointOnDivlineSide(fixed_t x, fixed_t y, const divline_t *line) +{ + return + !line->dx ? x <= line->x ? line->dy > 0 : line->dy < 0 : + !line->dy ? y <= line->y ? line->dx < 0 : line->dx > 0 : + (line->dy^line->dx^(x -= line->x)^(y -= line->y)) < 0 ? (line->dy^x) < 0 : + FixedMul(y>>8, line->dx>>8) >= FixedMul(line->dy>>8, x>>8); +} + +// +// P_MakeDivline +// + +static void P_MakeDivline(const line_t *li, divline_t *dl) +{ + dl->x = li->v1->x; + dl->y = li->v1->y; + dl->dx = li->dx; + dl->dy = li->dy; +} + +// +// P_InterceptVector +// Returns the fractional intercept point +// along the first divline. +// This is only called by the addthings +// and addlines traversers. +// + +/* cph - this is killough's 4/19/98 version of P_InterceptVector and + * P_InterceptVector2 (which were interchangeable). We still use this + * in compatibility mode. */ +fixed_t PUREFUNC P_InterceptVector2(const divline_t *v2, const divline_t *v1) +{ + fixed_t den; + return (den = FixedMul(v1->dy>>8, v2->dx) - FixedMul(v1->dx>>8, v2->dy)) ? + FixedDiv(FixedMul((v1->x - v2->x)>>8, v1->dy) + + FixedMul((v2->y - v1->y)>>8, v1->dx), den) : 0; +} + +fixed_t PUREFUNC P_InterceptVector(const divline_t *v2, const divline_t *v1) +{ + if (compatibility_level < prboom_4_compatibility) + return P_InterceptVector2(v2, v1); + else { + /* cph - This was introduced at prboom_4_compatibility - no precision/overflow problems */ + int_64_t den = (int_64_t)v1->dy * v2->dx - (int_64_t)v1->dx * v2->dy; + den >>= 16; + if (!den) + return 0; + return (fixed_t)(((int_64_t)(v1->x - v2->x) * v1->dy - (int_64_t)(v1->y - v2->y) * v1->dx) / den); + } +} + +// +// P_LineOpening +// Sets opentop and openbottom to the window +// through a two sided line. +// OPTIMIZE: keep this precalculated +// + +fixed_t opentop; +fixed_t openbottom; +fixed_t openrange; +fixed_t lowfloor; + +// moved front and back outside P-LineOpening and changed // phares 3/7/98 +// them to these so we can pick up the new friction value +// in PIT_CheckLine() +sector_t *openfrontsector; // made global // phares +sector_t *openbacksector; // made global + +void P_LineOpening(const line_t *linedef) +{ + if (linedef->sidenum[1] == NO_INDEX) // single sided line + { + openrange = 0; + return; + } + + openfrontsector = linedef->frontsector; + openbacksector = linedef->backsector; + + if (openfrontsector->ceilingheight < openbacksector->ceilingheight) + opentop = openfrontsector->ceilingheight; + else + opentop = openbacksector->ceilingheight; + + if (openfrontsector->floorheight > openbacksector->floorheight) + { + openbottom = openfrontsector->floorheight; + lowfloor = openbacksector->floorheight; + } + else + { + openbottom = openbacksector->floorheight; + lowfloor = openfrontsector->floorheight; + } + openrange = opentop - openbottom; +} + +// +// THING POSITION SETTING +// + +// +// P_UnsetThingPosition +// Unlinks a thing from block map and sectors. +// On each position change, BLOCKMAP and other +// lookups maintaining lists ot things inside +// these structures need to be updated. +// + +void P_UnsetThingPosition (mobj_t *thing) +{ + if (!(thing->flags & MF_NOSECTOR)) + { + /* invisible things don't need to be in sector list + * unlink from subsector + * + * killough 8/11/98: simpler scheme using pointers-to-pointers for prev + * pointers, allows head node pointers to be treated like everything else + */ + + mobj_t **sprev = thing->sprev; + mobj_t *snext = thing->snext; + if ((*sprev = snext)) // unlink from sector list + snext->sprev = sprev; + + // phares 3/14/98 + // + // Save the sector list pointed to by touching_sectorlist. + // In P_SetThingPosition, we'll keep any nodes that represent + // sectors the Thing still touches. We'll add new ones then, and + // delete any nodes for sectors the Thing has vacated. Then we'll + // put it back into touching_sectorlist. It's done this way to + // avoid a lot of deleting/creating for nodes, when most of the + // time you just get back what you deleted anyway. + // + // If this Thing is being removed entirely, then the calling + // routine will clear out the nodes in sector_list. + + sector_list = thing->touching_sectorlist; + thing->touching_sectorlist = NULL; //to be restored by P_SetThingPosition + } + + if (!(thing->flags & MF_NOBLOCKMAP)) + { + /* inert things don't need to be in blockmap + * + * killough 8/11/98: simpler scheme using pointers-to-pointers for prev + * pointers, allows head node pointers to be treated like everything else + * + * Also more robust, since it doesn't depend on current position for + * unlinking. Old method required computing head node based on position + * at time of unlinking, assuming it was the same position as during + * linking. + */ + + mobj_t *bnext, **bprev = thing->bprev; + if (bprev && (*bprev = bnext = thing->bnext)) // unlink from block map + bnext->bprev = bprev; + } +} + +// +// P_SetThingPosition +// Links a thing into both a block and a subsector +// based on it's x y. +// Sets thing->subsector properly +// +// killough 5/3/98: reformatted, cleaned up + +void P_SetThingPosition(mobj_t *thing) +{ // link into subsector + subsector_t *ss = thing->subsector = R_PointInSubsector(thing->x, thing->y); + if (!(thing->flags & MF_NOSECTOR)) + { + // invisible things don't go into the sector links + + // killough 8/11/98: simpler scheme using pointer-to-pointer prev + // pointers, allows head nodes to be treated like everything else + + mobj_t **link = &ss->sector->thinglist; + mobj_t *snext = *link; + if ((thing->snext = snext)) + snext->sprev = &thing->snext; + thing->sprev = link; + *link = thing; + + // phares 3/16/98 + // + // If sector_list isn't NULL, it has a collection of sector + // nodes that were just removed from this Thing. + + // Collect the sectors the object will live in by looking at + // the existing sector_list and adding new nodes and deleting + // obsolete ones. + + // When a node is deleted, its sector links (the links starting + // at sector_t->touching_thinglist) are broken. When a node is + // added, new sector links are created. + + P_CreateSecNodeList(thing,thing->x,thing->y); + thing->touching_sectorlist = sector_list; // Attach to Thing's mobj_t + sector_list = NULL; // clear for next time + } + + // link into blockmap + if (!(thing->flags & MF_NOBLOCKMAP)) + { + // inert things don't need to be in blockmap + int blockx = (thing->x - bmaporgx)>>MAPBLOCKSHIFT; + int blocky = (thing->y - bmaporgy)>>MAPBLOCKSHIFT; + if (blockx>=0 && blockx < bmapwidth && blocky>=0 && blocky < bmapheight) + { + // killough 8/11/98: simpler scheme using pointer-to-pointer prev + // pointers, allows head nodes to be treated like everything else + + mobj_t **link = &blocklinks[blocky*bmapwidth+blockx]; + mobj_t *bnext = *link; + if ((thing->bnext = bnext)) + bnext->bprev = &thing->bnext; + thing->bprev = link; + *link = thing; + } + else // thing is off the map + thing->bnext = NULL, thing->bprev = NULL; + } +} + +// +// BLOCK MAP ITERATORS +// For each line/thing in the given mapblock, +// call the passed PIT_* function. +// If the function returns false, +// exit with false without checking anything else. +// + +// +// P_BlockLinesIterator +// The validcount flags are used to avoid checking lines +// that are marked in multiple mapblocks, +// so increment validcount before the first call +// to P_BlockLinesIterator, then make one or more calls +// to it. +// +// killough 5/3/98: reformatted, cleaned up + +boolean P_BlockLinesIterator(int x, int y, boolean func(line_t*)) +{ + int offset; + const long *list; // killough 3/1/98: for removal of blockmap limit + + if (x<0 || y<0 || x>=bmapwidth || y>=bmapheight) + return true; + offset = y*bmapwidth+x; + offset = *(blockmap+offset); + list = blockmaplump+offset; // original was reading // phares + // delmiting 0 as linedef 0 // phares + + // killough 1/31/98: for compatibility we need to use the old method. + // Most demos go out of sync, and maybe other problems happen, if we + // don't consider linedef 0. For safety this should be qualified. + + if (!demo_compatibility) // killough 2/22/98: demo_compatibility check + list++; // skip 0 starting delimiter // phares + for ( ; *list != -1 ; list++) // phares + { + line_t *ld = &lines[*list]; + if (ld->validcount == validcount) + continue; // line has already been checked + ld->validcount = validcount; + if (!func(ld)) + return false; + } + return true; // everything was checked +} + +// +// P_BlockThingsIterator +// +// killough 5/3/98: reformatted, cleaned up + +boolean P_BlockThingsIterator(int x, int y, boolean func(mobj_t*)) +{ + mobj_t *mobj; + if (!(x<0 || y<0 || x>=bmapwidth || y>=bmapheight)) + for (mobj = blocklinks[y*bmapwidth+x]; mobj; mobj = mobj->bnext) + if (!func(mobj)) + return false; + return true; +} + +// +// INTERCEPT ROUTINES +// + +// 1/11/98 killough: Intercept limit removed +static intercept_t *intercepts, *intercept_p; + +// Check for limit and double size if necessary -- killough +static void check_intercept(void) +{ + static size_t num_intercepts; + size_t offset = intercept_p - intercepts; + if (offset >= num_intercepts) + { + num_intercepts = num_intercepts ? num_intercepts*2 : 128; + intercepts = realloc(intercepts, sizeof(*intercepts)*num_intercepts); + intercept_p = intercepts + offset; + } +} + +divline_t trace; + +// PIT_AddLineIntercepts. +// Looks for lines in the given block +// that intercept the given trace +// to add to the intercepts list. +// +// A line is crossed if its endpoints +// are on opposite sides of the trace. +// +// killough 5/3/98: reformatted, cleaned up + +boolean PIT_AddLineIntercepts(line_t *ld) +{ + int s1; + int s2; + fixed_t frac; + divline_t dl; + + // avoid precision problems with two routines + if (trace.dx > FRACUNIT*16 || trace.dy > FRACUNIT*16 || + trace.dx < -FRACUNIT*16 || trace.dy < -FRACUNIT*16) + { + s1 = P_PointOnDivlineSide (ld->v1->x, ld->v1->y, &trace); + s2 = P_PointOnDivlineSide (ld->v2->x, ld->v2->y, &trace); + } + else + { + s1 = P_PointOnLineSide (trace.x, trace.y, ld); + s2 = P_PointOnLineSide (trace.x+trace.dx, trace.y+trace.dy, ld); + } + + if (s1 == s2) + return true; // line isn't crossed + + // hit the line + P_MakeDivline(ld, &dl); + frac = P_InterceptVector(&trace, &dl); + + if (frac < 0) + return true; // behind source + + check_intercept(); // killough + + intercept_p->frac = frac; + intercept_p->isaline = true; + intercept_p->d.line = ld; + intercept_p++; + + return true; // continue +} + +// +// PIT_AddThingIntercepts +// +// killough 5/3/98: reformatted, cleaned up + +boolean PIT_AddThingIntercepts(mobj_t *thing) +{ + fixed_t x1, y1; + fixed_t x2, y2; + int s1, s2; + divline_t dl; + fixed_t frac; + + // check a corner to corner crossection for hit + if ((trace.dx ^ trace.dy) > 0) + { + x1 = thing->x - thing->radius; + y1 = thing->y + thing->radius; + x2 = thing->x + thing->radius; + y2 = thing->y - thing->radius; + } + else + { + x1 = thing->x - thing->radius; + y1 = thing->y - thing->radius; + x2 = thing->x + thing->radius; + y2 = thing->y + thing->radius; + } + + s1 = P_PointOnDivlineSide (x1, y1, &trace); + s2 = P_PointOnDivlineSide (x2, y2, &trace); + + if (s1 == s2) + return true; // line isn't crossed + + dl.x = x1; + dl.y = y1; + dl.dx = x2-x1; + dl.dy = y2-y1; + + frac = P_InterceptVector (&trace, &dl); + + if (frac < 0) + return true; // behind source + + check_intercept(); // killough + + intercept_p->frac = frac; + intercept_p->isaline = false; + intercept_p->d.thing = thing; + intercept_p++; + + return true; // keep going +} + +// +// P_TraverseIntercepts +// Returns true if the traverser function returns true +// for all lines. +// +// killough 5/3/98: reformatted, cleaned up + +boolean P_TraverseIntercepts(traverser_t func, fixed_t maxfrac) +{ + intercept_t *in = NULL; + int count = intercept_p - intercepts; + while (count--) + { + fixed_t dist = INT_MAX; + intercept_t *scan; + for (scan = intercepts; scan < intercept_p; scan++) + if (scan->frac < dist) + dist = (in=scan)->frac; + if (dist > maxfrac) + return true; // checked everything in range + if (!func(in)) + return false; // don't bother going farther + in->frac = INT_MAX; + } + return true; // everything was traversed +} + +// +// P_PathTraverse +// Traces a line from x1,y1 to x2,y2, +// calling the traverser function for each. +// Returns true if the traverser function returns true +// for all lines. +// +// killough 5/3/98: reformatted, cleaned up + +boolean P_PathTraverse(fixed_t x1, fixed_t y1, fixed_t x2, fixed_t y2, + int flags, boolean trav(intercept_t *)) +{ + fixed_t xt1, yt1; + fixed_t xt2, yt2; + fixed_t xstep, ystep; + fixed_t partial; + fixed_t xintercept, yintercept; + int mapx, mapy; + int mapxstep, mapystep; + int count; + + validcount++; + intercept_p = intercepts; + + if (!((x1-bmaporgx)&(MAPBLOCKSIZE-1))) + x1 += FRACUNIT; // don't side exactly on a line + + if (!((y1-bmaporgy)&(MAPBLOCKSIZE-1))) + y1 += FRACUNIT; // don't side exactly on a line + + trace.x = x1; + trace.y = y1; + trace.dx = x2 - x1; + trace.dy = y2 - y1; + + x1 -= bmaporgx; + y1 -= bmaporgy; + xt1 = x1>>MAPBLOCKSHIFT; + yt1 = y1>>MAPBLOCKSHIFT; + + x2 -= bmaporgx; + y2 -= bmaporgy; + xt2 = x2>>MAPBLOCKSHIFT; + yt2 = y2>>MAPBLOCKSHIFT; + + if (xt2 > xt1) + { + mapxstep = 1; + partial = FRACUNIT - ((x1>>MAPBTOFRAC)&(FRACUNIT-1)); + ystep = FixedDiv (y2-y1,D_abs(x2-x1)); + } + else + if (xt2 < xt1) + { + mapxstep = -1; + partial = (x1>>MAPBTOFRAC)&(FRACUNIT-1); + ystep = FixedDiv (y2-y1,D_abs(x2-x1)); + } + else + { + mapxstep = 0; + partial = FRACUNIT; + ystep = 256*FRACUNIT; + } + + yintercept = (y1>>MAPBTOFRAC) + FixedMul(partial, ystep); + + if (yt2 > yt1) + { + mapystep = 1; + partial = FRACUNIT - ((y1>>MAPBTOFRAC)&(FRACUNIT-1)); + xstep = FixedDiv (x2-x1,D_abs(y2-y1)); + } + else + if (yt2 < yt1) + { + mapystep = -1; + partial = (y1>>MAPBTOFRAC)&(FRACUNIT-1); + xstep = FixedDiv (x2-x1,D_abs(y2-y1)); + } + else + { + mapystep = 0; + partial = FRACUNIT; + xstep = 256*FRACUNIT; + } + + xintercept = (x1>>MAPBTOFRAC) + FixedMul (partial, xstep); + + // Step through map blocks. + // Count is present to prevent a round off error + // from skipping the break. + + mapx = xt1; + mapy = yt1; + + for (count = 0; count < 64; count++) + { + if (flags & PT_ADDLINES) + if (!P_BlockLinesIterator(mapx, mapy,PIT_AddLineIntercepts)) + return false; // early out + + if (flags & PT_ADDTHINGS) + if (!P_BlockThingsIterator(mapx, mapy,PIT_AddThingIntercepts)) + return false; // early out + + if (mapx == xt2 && mapy == yt2) + break; + + if ((yintercept >> FRACBITS) == mapy) + { + yintercept += ystep; + mapx += mapxstep; + } + else + if ((xintercept >> FRACBITS) == mapx) + { + xintercept += xstep; + mapy += mapystep; + } + } + + // go through the sorted list + return P_TraverseIntercepts(trav, FRACUNIT); +} diff --git a/components/doom/prboom/p_maputl.h b/components/doom/prboom/p_maputl.h new file mode 100644 index 0000000..8a70ba0 --- /dev/null +++ b/components/doom/prboom/p_maputl.h @@ -0,0 +1,89 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Map utility functions + * + *-----------------------------------------------------------------------------*/ + +#ifndef __P_MAPUTL__ +#define __P_MAPUTL__ + +#include "r_defs.h" + +/* mapblocks are used to check movement against lines and things */ +#define MAPBLOCKUNITS 128 +#define MAPBLOCKSIZE (MAPBLOCKUNITS*FRACUNIT) +#define MAPBLOCKSHIFT (FRACBITS+7) +#define MAPBMASK (MAPBLOCKSIZE-1) +#define MAPBTOFRAC (MAPBLOCKSHIFT-FRACBITS) + +#define PT_ADDLINES 1 +#define PT_ADDTHINGS 2 +#define PT_EARLYOUT 4 + +typedef struct { + fixed_t x; + fixed_t y; + fixed_t dx; + fixed_t dy; +} divline_t; + +typedef struct { + fixed_t frac; /* along trace line */ + boolean isaline; + union { + mobj_t* thing; + line_t* line; + } d; +} intercept_t; + +typedef boolean (*traverser_t)(intercept_t *in); + +fixed_t CONSTFUNC P_AproxDistance (fixed_t dx, fixed_t dy); +int PUREFUNC P_PointOnLineSide (fixed_t x, fixed_t y, const line_t *line); +int PUREFUNC P_BoxOnLineSide (const fixed_t *tmbox, const line_t *ld); +fixed_t PUREFUNC P_InterceptVector (const divline_t *v2, const divline_t *v1); +/* cph - old compatibility version below */ +fixed_t PUREFUNC P_InterceptVector2(const divline_t *v2, const divline_t *v1); + +void P_LineOpening (const line_t *linedef); +void P_UnsetThingPosition(mobj_t *thing); +void P_SetThingPosition(mobj_t *thing); +boolean P_BlockLinesIterator (int x, int y, boolean func(line_t *)); +boolean P_BlockThingsIterator(int x, int y, boolean func(mobj_t *)); +boolean P_PathTraverse(fixed_t x1, fixed_t y1, fixed_t x2, fixed_t y2, + int flags, boolean trav(intercept_t *)); + +extern fixed_t opentop; +extern fixed_t openbottom; +extern fixed_t openrange; +extern fixed_t lowfloor; +extern divline_t trace; + +#endif /* __P_MAPUTL__ */ diff --git a/components/doom/prboom/p_mobj.c b/components/doom/prboom/p_mobj.c new file mode 100644 index 0000000..0f8c8e3 --- /dev/null +++ b/components/doom/prboom/p_mobj.c @@ -0,0 +1,1526 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2004 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Moving object handling. Spawn functions. + * + *-----------------------------------------------------------------------------*/ + +#include "doomdef.h" +#include "doomstat.h" +#include "m_random.h" +#include "r_main.h" +#include "p_maputl.h" +#include "p_map.h" +#include "p_tick.h" +#include "sounds.h" +#include "st_stuff.h" +#include "hu_stuff.h" +#include "s_sound.h" +#include "info.h" +#include "g_game.h" +#include "p_inter.h" +#include "lprintf.h" +#include "r_demo.h" + +// +// P_SetMobjState +// Returns true if the mobj is still present. +// + +boolean P_SetMobjState(mobj_t* mobj,statenum_t state) + { + state_t* st; + + // killough 4/9/98: remember states seen, to detect cycles: + + static statenum_t seenstate_tab[NUMSTATES]; // fast transition table + statenum_t *seenstate = seenstate_tab; // pointer to table + static int recursion; // detects recursion + statenum_t i = state; // initial state + boolean ret = true; // return value + statenum_t tempstate[NUMSTATES]; // for use with recursion + + if (recursion++) // if recursion detected, + memset(seenstate=tempstate,0,sizeof tempstate); // clear state table + + do + { + if (state == S_NULL) + { + mobj->state = (state_t *) S_NULL; + P_RemoveMobj (mobj); + ret = false; + break; // killough 4/9/98 + } + + st = &states[state]; + mobj->state = st; + mobj->tics = st->tics; + mobj->sprite = st->sprite; + mobj->frame = st->frame; + + // Modified handling. + // Call action functions when the state is set + + if (st->action) + st->action(mobj); + + seenstate[state] = 1 + st->nextstate; // killough 4/9/98 + + state = st->nextstate; + } while (!mobj->tics && !seenstate[state]); // killough 4/9/98 + + if (ret && !mobj->tics) // killough 4/9/98: detect state cycles + doom_printf("Warning: State Cycle Detected"); + + if (!--recursion) + for (;(state=seenstate[i]);i=state-1) + seenstate[i] = 0; // killough 4/9/98: erase memory of states + + return ret; + } + + +// +// P_ExplodeMissile +// + +void P_ExplodeMissile (mobj_t* mo) + { + mo->momx = mo->momy = mo->momz = 0; + + P_SetMobjState (mo, mobjinfo[mo->type].deathstate); + + mo->tics -= P_Random(pr_explode)&3; + + if (mo->tics < 1) + mo->tics = 1; + + mo->flags &= ~MF_MISSILE; + + if (mo->info->deathsound) + S_StartSound (mo, mo->info->deathsound); + } + + +// +// P_XYMovement +// +// Attempts to move something if it has momentum. +// + +static void P_XYMovement (mobj_t* mo) + { + player_t *player; + fixed_t xmove, ymove; + + //e6y + fixed_t oldx,oldy; // phares 9/10/98: reducing bobbing/momentum on ice + +#if 0 + fixed_t ptryx; + fixed_t ptryy; + fixed_t xmove; + fixed_t ymove; + fixed_t oldx,oldy; // phares 9/10/98: reducing bobbing/momentum on ice + // when up against walls +#endif + if (!(mo->momx | mo->momy)) // Any momentum? + { + if (mo->flags & MF_SKULLFLY) + { + + // the skull slammed into something + + mo->flags &= ~MF_SKULLFLY; + mo->momz = 0; + + P_SetMobjState (mo, mo->info->spawnstate); + } + return; + } + + player = mo->player; + + if (mo->momx > MAXMOVE) + mo->momx = MAXMOVE; + else if (mo->momx < -MAXMOVE) + mo->momx = -MAXMOVE; + + if (mo->momy > MAXMOVE) + mo->momy = MAXMOVE; + else if (mo->momy < -MAXMOVE) + mo->momy = -MAXMOVE; + + xmove = mo->momx; + ymove = mo->momy; + + oldx = mo->x; // phares 9/10/98: new code to reduce bobbing/momentum + oldy = mo->y; // when on ice & up against wall. These will be compared + // to your x,y values later to see if you were able to move + + do + { + fixed_t ptryx, ptryy; + // killough 8/9/98: fix bug in original Doom source: + // Large negative displacements were never considered. + // This explains the tendency for Mancubus fireballs + // to pass through walls. + // CPhipps - compatibility optioned + + if (xmove > MAXMOVE/2 || ymove > MAXMOVE/2 || + (!comp[comp_moveblock] + && (xmove < -MAXMOVE/2 || ymove < -MAXMOVE/2))) + { + ptryx = mo->x + xmove/2; + ptryy = mo->y + ymove/2; + xmove >>= 1; + ymove >>= 1; + } + else + { + ptryx = mo->x + xmove; + ptryy = mo->y + ymove; + xmove = ymove = 0; + } + + // killough 3/15/98: Allow objects to drop off + + if (!P_TryMove (mo, ptryx, ptryy, true)) + { + // blocked move + + // killough 8/11/98: bouncing off walls + // killough 10/98: + // Add ability for objects other than players to bounce on ice + + if (!(mo->flags & MF_MISSILE) && + mbf_features && + (mo->flags & MF_BOUNCES || + (!player && blockline && + variable_friction && mo->z <= mo->floorz && + P_GetFriction(mo, NULL) > ORIG_FRICTION))) + { + if (blockline) + { + fixed_t r = ((blockline->dx >> FRACBITS) * mo->momx + + (blockline->dy >> FRACBITS) * mo->momy) / + ((blockline->dx >> FRACBITS)*(blockline->dx >> FRACBITS)+ + (blockline->dy >> FRACBITS)*(blockline->dy >> FRACBITS)); + fixed_t x = FixedMul(r, blockline->dx); + fixed_t y = FixedMul(r, blockline->dy); + + // reflect momentum away from wall + + mo->momx = x*2 - mo->momx; + mo->momy = y*2 - mo->momy; + + // if under gravity, slow down in + // direction perpendicular to wall. + + if (!(mo->flags & MF_NOGRAVITY)) + { + mo->momx = (mo->momx + x)/2; + mo->momy = (mo->momy + y)/2; + } + } + else + mo->momx = mo->momy = 0; + } + else + if (player) // try to slide along it + P_SlideMove (mo); + else + if (mo->flags & MF_MISSILE) + { + // explode a missile + + if (ceilingline && + ceilingline->backsector && + ceilingline->backsector->ceilingpic == skyflatnum) + if (demo_compatibility || // killough + mo->z > ceilingline->backsector->ceilingheight) + { + // Hack to prevent missiles exploding + // against the sky. + // Does not handle sky floors. + + P_RemoveMobj (mo); + return; + } + P_ExplodeMissile (mo); + } + else // whatever else it is, it is now standing still in (x,y) + mo->momx = mo->momy = 0; + } + } while (xmove || ymove); + + // slow down + +#if 0 /* killough 10/98: this is unused code (except maybe in .deh files?) */ + if (player && player->cheats & CF_NOMOMENTUM) + { + // debug option for no sliding at all + mo->momx = mo->momy = 0; + player->momx = player->momy = 0; /* killough 10/98 */ + return; + } +#endif + + /* no friction for missiles or skulls ever, no friction when airborne */ + if (mo->flags & (MF_MISSILE | MF_SKULLFLY) || mo->z > mo->floorz) + return; + + /* killough 8/11/98: add bouncers + * killough 9/15/98: add objects falling off ledges + * killough 11/98: only include bouncers hanging off ledges + */ + if (((mo->flags & MF_BOUNCES && mo->z > mo->dropoffz) || + mo->flags & MF_CORPSE || mo->intflags & MIF_FALLING) && + (mo->momx > FRACUNIT/4 || mo->momx < -FRACUNIT/4 || + mo->momy > FRACUNIT/4 || mo->momy < -FRACUNIT/4) && + mo->floorz != mo->subsector->sector->floorheight) + return; // do not stop sliding if halfway off a step with some momentum + + // killough 11/98: + // Stop voodoo dolls that have come to rest, despite any + // moving corresponding player, except in old demos: + + if (mo->momx > -STOPSPEED && mo->momx < STOPSPEED && + mo->momy > -STOPSPEED && mo->momy < STOPSPEED && + (!player || !(player->cmd.forwardmove | player->cmd.sidemove) || + (player->mo != mo && compatibility_level >= lxdoom_1_compatibility))) + { + // if in a walking frame, stop moving + + // killough 10/98: + // Don't affect main player when voodoo dolls stop, except in old demos: + +// if ( player&&(unsigned)((player->mo->state - states)- S_PLAY_RUN1) < 4) +// P_SetMobjState (player->mo, S_PLAY); + if (player && (unsigned)(player->mo->state - states - S_PLAY_RUN1) < 4 + && (player->mo == mo || compatibility_level >= lxdoom_1_compatibility)) + P_SetMobjState(player->mo, S_PLAY); + + mo->momx = mo->momy = 0; + + /* killough 10/98: kill any bobbing momentum too (except in voodoo dolls) + * cph - DEMOSYNC - needs compatibility check? + */ + if (player && player->mo == mo) + player->momx = player->momy = 0; + } + else + { + /* phares 3/17/98 + * + * Friction will have been adjusted by friction thinkers for + * icy or muddy floors. Otherwise it was never touched and + * remained set at ORIG_FRICTION + * + * killough 8/28/98: removed inefficient thinker algorithm, + * instead using touching_sectorlist in P_GetFriction() to + * determine friction (and thus only when it is needed). + * + * killough 10/98: changed to work with new bobbing method. + * Reducing player momentum is no longer needed to reduce + * bobbing, so ice works much better now. + * + * cph - DEMOSYNC - need old code for Boom demos? + */ + + //e6y + if (compatibility_level <= boom_201_compatibility) + { + // phares 3/17/98 + // Friction will have been adjusted by friction thinkers for icy + // or muddy floors. Otherwise it was never touched and + // remained set at ORIG_FRICTION + mo->momx = FixedMul(mo->momx,mo->friction); + mo->momy = FixedMul(mo->momy,mo->friction); + mo->friction = ORIG_FRICTION; // reset to normal for next tic + } + else if (compatibility_level <= lxdoom_1_compatibility) + { + // phares 9/10/98: reduce bobbing/momentum when on ice & up against wall + + if ((oldx == mo->x) && (oldy == mo->y)) // Did you go anywhere? + { // No. Use original friction. This allows you to not bob so much + // if you're on ice, but keeps enough momentum around to break free + // when you're mildly stuck in a wall. + mo->momx = FixedMul(mo->momx,ORIG_FRICTION); + mo->momy = FixedMul(mo->momy,ORIG_FRICTION); + } + else + { // Yes. Use stored friction. + mo->momx = FixedMul(mo->momx,mo->friction); + mo->momy = FixedMul(mo->momy,mo->friction); + } + mo->friction = ORIG_FRICTION; // reset to normal for next tic + } + else + { + + fixed_t friction = P_GetFriction(mo, NULL); + + mo->momx = FixedMul(mo->momx, friction); + mo->momy = FixedMul(mo->momy, friction); + + /* killough 10/98: Always decrease player bobbing by ORIG_FRICTION. + * This prevents problems with bobbing on ice, where it was not being + * reduced fast enough, leading to all sorts of kludges being developed. + */ + + if (player && player->mo == mo) /* Not voodoo dolls */ + { + player->momx = FixedMul(player->momx, ORIG_FRICTION); + player->momy = FixedMul(player->momy, ORIG_FRICTION); + } + + } + + } + } + + +// +// P_ZMovement +// +// Attempt vertical movement. + +static void P_ZMovement (mobj_t* mo) +{ + /* killough 7/11/98: + * BFG fireballs bounced on floors and ceilings in Pre-Beta Doom + * killough 8/9/98: added support for non-missile objects bouncing + * (e.g. grenade, mine, pipebomb) + */ + + if (mo->flags & MF_BOUNCES && mo->momz) { + mo->z += mo->momz; + if (mo->z <= mo->floorz) { /* bounce off floors */ + mo->z = mo->floorz; + if (mo->momz < 0) { + mo->momz = -mo->momz; + if (!(mo->flags & MF_NOGRAVITY)) { /* bounce back with decay */ + mo->momz = mo->flags & MF_FLOAT ? // floaters fall slowly + mo->flags & MF_DROPOFF ? // DROPOFF indicates rate + FixedMul(mo->momz, (fixed_t)(FRACUNIT*.85)) : + FixedMul(mo->momz, (fixed_t)(FRACUNIT*.70)) : + FixedMul(mo->momz, (fixed_t)(FRACUNIT*.45)) ; + + /* Bring it to rest below a certain speed */ + if (D_abs(mo->momz) <= mo->info->mass*(GRAVITY*4/256)) + mo->momz = 0; + } + + /* killough 11/98: touchy objects explode on impact */ + if (mo->flags & MF_TOUCHY && mo->intflags & MIF_ARMED + && mo->health > 0) + P_DamageMobj(mo, NULL, NULL, mo->health); + else if (mo->flags & MF_FLOAT && sentient(mo)) + goto floater; + return; + } + } else if (mo->z >= mo->ceilingz - mo->height) { + /* bounce off ceilings */ + mo->z = mo->ceilingz - mo->height; + if (mo->momz > 0) { + if (mo->subsector->sector->ceilingpic != skyflatnum) + mo->momz = -mo->momz; /* always bounce off non-sky ceiling */ + else if (mo->flags & MF_MISSILE) + P_RemoveMobj(mo); /* missiles don't bounce off skies */ + else if (mo->flags & MF_NOGRAVITY) + mo->momz = -mo->momz; // bounce unless under gravity + + if (mo->flags & MF_FLOAT && sentient(mo)) + goto floater; + + return; + } + } else { + if (!(mo->flags & MF_NOGRAVITY)) /* free-fall under gravity */ + mo->momz -= mo->info->mass*(GRAVITY/256); + + if (mo->flags & MF_FLOAT && sentient(mo)) goto floater; + return; + } + + /* came to a stop */ + mo->momz = 0; + + if (mo->flags & MF_MISSILE) { + if (ceilingline && + ceilingline->backsector && + ceilingline->backsector->ceilingpic == skyflatnum && + mo->z > ceilingline->backsector->ceilingheight) + P_RemoveMobj(mo); /* don't explode on skies */ + else + P_ExplodeMissile(mo); + } + + if (mo->flags & MF_FLOAT && sentient(mo)) goto floater; + return; + } + + /* killough 8/9/98: end bouncing object code */ + + // check for smooth step up + + if (mo->player && + mo->player->mo == mo && // killough 5/12/98: exclude voodoo dolls + mo->z < mo->floorz) + { + mo->player->viewheight -= mo->floorz-mo->z; + mo->player->deltaviewheight = (VIEWHEIGHT - mo->player->viewheight)>>3; + } + + // adjust altitude + + mo->z += mo->momz; + +floater: + if ((mo->flags & MF_FLOAT) && mo->target) + + // float down towards target if too close + + if (!((mo->flags ^ MF_FLOAT) & (MF_FLOAT | MF_SKULLFLY | MF_INFLOAT)) && + mo->target) /* killough 11/98: simplify */ + { + fixed_t delta; + if (P_AproxDistance(mo->x - mo->target->x, mo->y - mo->target->y) < + D_abs(delta = mo->target->z + (mo->height>>1) - mo->z)*3) + mo->z += delta < 0 ? -FLOATSPEED : FLOATSPEED; + } + + // clip movement + + if (mo->z <= mo->floorz) + { + // hit the floor + + /* Note (id): + * somebody left this after the setting momz to 0, + * kinda useless there. + * cph - This was the a bug in the linuxdoom-1.10 source which + * caused it not to sync Doom 2 v1.9 demos. Someone + * added the above comment and moved up the following code. So + * demos would desync in close lost soul fights. + * cph - revised 2001/04/15 - + * This was a bug in the Doom/Doom 2 source; the following code + * is meant to make charging lost souls bounce off of floors, but it + * was incorrectly placed after momz was set to 0. + * However, this bug was fixed in Doom95, Final/Ultimate Doom, and + * the v1.10 source release (which is one reason why it failed to sync + * some Doom2 v1.9 demos) + * I've added a comp_soul compatibility option to make this behavior + * selectable for PrBoom v2.3+. For older demos, we do this here only + * if we're in a compatibility level above Doom 2 v1.9 (in which case we + * mimic the bug and do it further down instead) + */ + + if (mo->flags & MF_SKULLFLY && + (!comp[comp_soul] || + (compatibility_level > doom2_19_compatibility && + compatibility_level < prboom_4_compatibility) + )) + mo->momz = -mo->momz; // the skull slammed into something + + if (mo->momz < 0) + { + /* killough 11/98: touchy objects explode on impact */ + if (mo->flags & MF_TOUCHY && mo->intflags & MIF_ARMED && mo->health > 0) + P_DamageMobj(mo, NULL, NULL, mo->health); + else + if (mo->player && /* killough 5/12/98: exclude voodoo dolls */ + mo->player->mo == mo && mo->momz < -GRAVITY*8) + { + // Squat down. + // Decrease viewheight for a moment + // after hitting the ground (hard), + // and utter appropriate sound. + + mo->player->deltaviewheight = mo->momz>>3; + if (mo->health > 0) /* cph - prevent "oof" when dead */ + S_StartSound (mo, sfx_oof); + } + mo->momz = 0; + } + mo->z = mo->floorz; + + /* cph 2001/04/15 - + * This is the buggy lost-soul bouncing code referenced above. + * We've already set momz = 0 normally by this point, so it's useless. + * However we might still have upward momentum, in which case this will + * incorrectly reverse it, so we might still need this for demo sync + */ + if (mo->flags & MF_SKULLFLY && + compatibility_level <= doom2_19_compatibility) + mo->momz = -mo->momz; // the skull slammed into something + + if ( (mo->flags & MF_MISSILE) && !(mo->flags & MF_NOCLIP) ) + { + P_ExplodeMissile (mo); + return; + } + } + else // still above the floor // phares + if (!(mo->flags & MF_NOGRAVITY)) + { + if (!mo->momz) + mo->momz = -GRAVITY; + mo->momz -= GRAVITY; + } + + if (mo->z + mo->height > mo->ceilingz) + { + /* cph 2001/04/15 - + * Lost souls were meant to bounce off of ceilings; + * new comp_soul compatibility option added + */ + if (!comp[comp_soul] && mo->flags & MF_SKULLFLY) + mo->momz = -mo->momz; // the skull slammed into something + + // hit the ceiling + + if (mo->momz > 0) + mo->momz = 0; + + mo->z = mo->ceilingz - mo->height; + + /* cph 2001/04/15 - + * We might have hit a ceiling but had downward momentum (e.g. ceiling is + * lowering on us), so for old demos we must still do the buggy + * momentum reversal here + */ + if (comp[comp_soul] && mo->flags & MF_SKULLFLY) + mo->momz = -mo->momz; // the skull slammed into something + + if ( (mo->flags & MF_MISSILE) && !(mo->flags & MF_NOCLIP) ) + { + P_ExplodeMissile (mo); + return; + } + } + } + +// +// P_NightmareRespawn +// + +static void P_NightmareRespawn(mobj_t* mobj) + { + fixed_t x; + fixed_t y; + fixed_t z; + subsector_t* ss; + mobj_t* mo; + mapthing_t* mthing; + + x = mobj->spawnpoint.x << FRACBITS; + y = mobj->spawnpoint.y << FRACBITS; + + /* haleyjd: stupid nightmare respawning bug fix + * + * 08/09/00: compatibility added, time to ramble :) + * This fixes the notorious nightmare respawning bug that causes monsters + * that didn't spawn at level startup to respawn at the point (0,0) + * regardless of that point's nature. SMMU and Eternity need this for + * script-spawned things like Halif Swordsmythe, as well. + * + * cph - copied from eternity, except comp_respawnfix becomes comp_respawn + * and the logic is reversed (i.e. like the rest of comp_ it *disables* + * the fix) + */ + if(!comp[comp_respawn] && !x && !y) + { + // spawnpoint was zeroed out, so use point of death instead + x = mobj->x; + y = mobj->y; + } + + // something is occupying its position? + + if (!P_CheckPosition (mobj, x, y) ) + return; // no respwan + + // spawn a teleport fog at old spot + // because of removal of the body? + + mo = P_SpawnMobj (mobj->x, + mobj->y, + mobj->subsector->sector->floorheight, + MT_TFOG); + + // initiate teleport sound + + S_StartSound (mo, sfx_telept); + + // spawn a teleport fog at the new spot + + ss = R_PointInSubsector (x,y); + + mo = P_SpawnMobj (x, y, ss->sector->floorheight , MT_TFOG); + + S_StartSound (mo, sfx_telept); + + // spawn the new monster + + mthing = &mobj->spawnpoint; + if (mobj->info->flags & MF_SPAWNCEILING) + z = ONCEILINGZ; + else + z = ONFLOORZ; + + // inherit attributes from deceased one + + mo = P_SpawnMobj (x,y,z, mobj->type); + mo->spawnpoint = mobj->spawnpoint; + mo->angle = ANG45 * (mthing->angle/45); + + if (mthing->options & MTF_AMBUSH) + mo->flags |= MF_AMBUSH; + + /* killough 11/98: transfer friendliness from deceased */ + mo->flags = (mo->flags & ~MF_FRIEND) | (mobj->flags & MF_FRIEND); + + mo->reactiontime = 18; + + // remove the old monster, + + P_RemoveMobj (mobj); + } + + +// +// P_MobjThinker +// + +void P_MobjThinker (mobj_t* mobj) + { + // killough 11/98: + // removed old code which looked at target references + // (we use pointer reference counting now) + + mobj->PrevX = mobj->x; + mobj->PrevY = mobj->y; + mobj->PrevZ = mobj->z; + + // momentum movement + if (mobj->momx | mobj->momy || mobj->flags & MF_SKULLFLY) + { + P_XYMovement(mobj); + if (mobj->thinker.function != P_MobjThinker) // cph - Must've been removed + return; // killough - mobj was removed + } + + if (mobj->z != mobj->floorz || mobj->momz) + { + P_ZMovement(mobj); + if (mobj->thinker.function != P_MobjThinker) // cph - Must've been removed + return; // killough - mobj was removed + } + else + if (!(mobj->momx | mobj->momy) && !sentient(mobj)) + { // non-sentient objects at rest + mobj->intflags |= MIF_ARMED; // arm a mine which has come to rest + + // killough 9/12/98: objects fall off ledges if they are hanging off + // slightly push off of ledge if hanging more than halfway off + + if (mobj->z > mobj->dropoffz && // Only objects contacting dropoff + !(mobj->flags & MF_NOGRAVITY) && // Only objects which fall + !comp[comp_falloff]) // Not in old demos + P_ApplyTorque(mobj); // Apply torque + else + mobj->intflags &= ~MIF_FALLING, mobj->gear = 0; // Reset torque + } + + // cycle through states, + // calling action functions at transitions + + if (mobj->tics != -1) + { + mobj->tics--; + + // you can cycle through multiple states in a tic + + if (!mobj->tics) + if (!P_SetMobjState (mobj, mobj->state->nextstate) ) + return; // freed itself + } + else + { + + // check for nightmare respawn + + if (! (mobj->flags & MF_COUNTKILL) ) + return; + + if (!respawnmonsters) + return; + + mobj->movecount++; + + if (mobj->movecount < 12*35) + return; + + if (leveltime & 31) + return; + + if (P_Random (pr_respawn) > 4) + return; + + P_NightmareRespawn (mobj); + } + + } + + +// +// P_SpawnMobj +// +mobj_t* P_SpawnMobj(fixed_t x,fixed_t y,fixed_t z,mobjtype_t type) + { + mobj_t* mobj; + state_t* st; + mobjinfo_t* info; + + mobj = Z_Malloc (sizeof(*mobj), PU_LEVEL, NULL); + memset (mobj, 0, sizeof (*mobj)); + info = &mobjinfo[type]; + mobj->type = type; + mobj->info = info; + mobj->x = x; + mobj->y = y; + mobj->radius = info->radius; + mobj->height = info->height; // phares + mobj->flags = info->flags; + + /* killough 8/23/98: no friends, bouncers, or touchy things in old demos */ + if (!mbf_features) + mobj->flags &= ~(MF_BOUNCES | MF_FRIEND | MF_TOUCHY); + else + if (type == MT_PLAYER) // Except in old demos, players + mobj->flags |= MF_FRIEND; // are always friends. + + mobj->health = info->spawnhealth; + + if (gameskill != sk_nightmare) + mobj->reactiontime = info->reactiontime; + + mobj->lastlook = P_Random (pr_lastlook) % MAXPLAYERS; + + // do not set the state with P_SetMobjState, + // because action routines can not be called yet + + st = &states[info->spawnstate]; + + mobj->state = st; + mobj->tics = st->tics; + mobj->sprite = st->sprite; + mobj->frame = st->frame; + mobj->touching_sectorlist = NULL; // NULL head of sector list // phares 3/13/98 + + // set subsector and/or block links + + P_SetThingPosition (mobj); + + mobj->dropoffz = /* killough 11/98: for tracking dropoffs */ + mobj->floorz = mobj->subsector->sector->floorheight; + mobj->ceilingz = mobj->subsector->sector->ceilingheight; + + mobj->z = z == ONFLOORZ ? mobj->floorz : z == ONCEILINGZ ? + mobj->ceilingz - mobj->height : z; + + mobj->PrevX = mobj->x; + mobj->PrevY = mobj->y; + mobj->PrevZ = mobj->z; + + mobj->thinker.function = P_MobjThinker; + + //e6y + mobj->friction = ORIG_FRICTION; // phares 3/17/98 + + mobj->target = mobj->tracer = mobj->lastenemy = NULL; + P_AddThinker (&mobj->thinker); + if (!((mobj->flags ^ MF_COUNTKILL) & (MF_FRIEND | MF_COUNTKILL))) + totallive++; + return mobj; + } + + +static mapthing_t itemrespawnque[ITEMQUESIZE]; +static int itemrespawntime[ITEMQUESIZE]; +int iquehead; +int iquetail; + + +// +// P_RemoveMobj +// + +void P_RemoveMobj (mobj_t* mobj) +{ + if ((mobj->flags & MF_SPECIAL) + && !(mobj->flags & MF_DROPPED) + && (mobj->type != MT_INV) + && (mobj->type != MT_INS)) + { + itemrespawnque[iquehead] = mobj->spawnpoint; + itemrespawntime[iquehead] = leveltime; + iquehead = (iquehead+1)&(ITEMQUESIZE-1); + + // lose one off the end? + + if (iquehead == iquetail) + iquetail = (iquetail+1)&(ITEMQUESIZE-1); + } + + // unlink from sector and block lists + + P_UnsetThingPosition (mobj); + + // Delete all nodes on the current sector_list phares 3/16/98 + + if (sector_list) + { + P_DelSeclist(sector_list); + sector_list = NULL; + } + + // stop any playing sound + + S_StopSound (mobj); + + // killough 11/98: + // + // Remove any references to other mobjs. + // + // Older demos might depend on the fields being left alone, however, + // if multiple thinkers reference each other indirectly before the + // end of the current tic. + // CPhipps - only leave dead references in old demos; I hope lxdoom_1 level + // demos are rare and don't rely on this. I hope. + + if ((compatibility_level >= lxdoom_1_compatibility) || + (!demorecording && !demoplayback)) { + P_SetTarget(&mobj->target, NULL); + P_SetTarget(&mobj->tracer, NULL); + P_SetTarget(&mobj->lastenemy, NULL); + } + // free block + + P_RemoveThinker (&mobj->thinker); +} + + +/* + * P_FindDoomedNum + * + * Finds a mobj type with a matching doomednum + * + * killough 8/24/98: rewrote to use hashing + */ + +static PUREFUNC int P_FindDoomedNum(unsigned type) +{ + static struct { int first, next; } *hash; + register int i; + + if (!hash) + { + hash = Z_Malloc(sizeof *hash * NUMMOBJTYPES, PU_CACHE, (void **) &hash); + for (i=0; ix << FRACBITS; + y = mthing->y << FRACBITS; + + // spawn a teleport fog at the new spot + + ss = R_PointInSubsector (x,y); + mo = P_SpawnMobj (x, y, ss->sector->floorheight , MT_IFOG); + S_StartSound (mo, sfx_itmbk); + + // find which type to spawn + + /* killough 8/23/98: use table for faster lookup */ + i = P_FindDoomedNum(mthing->type); + + // spawn it + + if (mobjinfo[i].flags & MF_SPAWNCEILING) + z = ONCEILINGZ; + else + z = ONFLOORZ; + + mo = P_SpawnMobj (x,y,z, i); + mo->spawnpoint = *mthing; + mo->angle = ANG45 * (mthing->angle/45); + + // pull it from the queue + + iquetail = (iquetail+1)&(ITEMQUESIZE-1); + } + +// +// P_SpawnPlayer +// Called when a player is spawned on the level. +// Most of the player structure stays unchanged +// between levels. +// + +extern byte playernumtotrans[MAXPLAYERS]; + +void P_SpawnPlayer (int n, const mapthing_t* mthing) + { + player_t* p; + fixed_t x; + fixed_t y; + fixed_t z; + mobj_t* mobj; + int i; + + // not playing? + + if (!playeringame[n]) + return; + + p = &players[n]; + + if (p->playerstate == PST_REBORN) + G_PlayerReborn (mthing->type-1); + + /* cph 2001/08/14 - use the options field of memorised player starts to + * indicate whether the start really exists in the level. + */ + if (!mthing->options) + I_Error("P_SpawnPlayer: attempt to spawn player at unavailable start point"); + + x = mthing->x << FRACBITS; + y = mthing->y << FRACBITS; + z = ONFLOORZ; + mobj = P_SpawnMobj (x,y,z, MT_PLAYER); + + // set color translations for player sprites + + mobj->flags |= playernumtotrans[n]<angle = ANG45 * (mthing->angle/45); + mobj->player = p; + mobj->health = p->health; + + p->mo = mobj; + p->playerstate = PST_LIVE; + p->refire = 0; + p->message = NULL; + p->damagecount = 0; + p->bonuscount = 0; + p->extralight = 0; + p->fixedcolormap = 0; + p->viewheight = VIEWHEIGHT; + + p->momx = p->momy = 0; // killough 10/98: initialize bobbing to 0. + + // setup gun psprite + + P_SetupPsprites (p); + + // give all cards in death match mode + + if (deathmatch) + for (i = 0 ; i < NUMCARDS ; i++) + p->cards[i] = true; + + if (mthing->type-1 == consoleplayer) + { + ST_Start(); // wake up the status bar + HU_Start(); // wake up the heads up text + } + R_SmoothPlaying_Reset(p); // e6y + } + +/* + * P_IsDoomnumAllowed() + * Based on code taken from P_LoadThings() in src/p_setup.c Return TRUE + * if the thing in question is expected to be available in the gamemode used. + */ + +boolean P_IsDoomnumAllowed(int doomnum) +{ + // Do not spawn cool, new monsters if !commercial + if (gamemode != commercial) + switch(doomnum) + { + case 64: // Archvile + case 65: // Former Human Commando + case 66: // Revenant + case 67: // Mancubus + case 68: // Arachnotron + case 69: // Hell Knight + case 71: // Pain Elemental + case 84: // Wolf SS + case 88: // Boss Brain + case 89: // Boss Shooter + return false; + } + + return true; +} + +// +// P_SpawnMapThing +// The fields of the mapthing should +// already be in host byte order. +// + +void P_SpawnMapThing (const mapthing_t* mthing) + { + int i; + //int bit; + mobj_t* mobj; + fixed_t x; + fixed_t y; + fixed_t z; + int options = mthing->options; /* cph 2001/07/07 - make writable copy */ + + // killough 2/26/98: Ignore type-0 things as NOPs + // phares 5/14/98: Ignore Player 5-8 starts (for now) + + switch(mthing->type) + { + case 0: + case DEN_PLAYER5: + case DEN_PLAYER6: + case DEN_PLAYER7: + case DEN_PLAYER8: + return; + } + + // killough 11/98: clear flags unused by Doom + // + // We clear the flags unused in Doom if we see flag mask 256 set, since + // it is reserved to be 0 under the new scheme. A 1 in this reserved bit + // indicates it's a Doom wad made by a Doom editor which puts 1's in + // bits that weren't used in Doom (such as HellMaker wads). So we should + // then simply ignore all upper bits. + + if (demo_compatibility || + (compatibility_level >= lxdoom_1_compatibility && + options & MTF_RESERVED)) { + if (!demo_compatibility) // cph - Add warning about bad thing flags + lprintf(LO_WARN, "P_SpawnMapThing: correcting bad flags (%u) (thing type %d)\n", + options, mthing->type); + options &= MTF_EASY|MTF_NORMAL|MTF_HARD|MTF_AMBUSH|MTF_NOTSINGLE; + } + + // count deathmatch start positions + + // doom2.exe has at most 10 deathmatch starts + if (mthing->type == 11) + { + if (!(!compatibility || deathmatch_p-deathmatchstarts < 10)) { + return; + } else { + // 1/11/98 killough -- new code removes limit on deathmatch starts: + + size_t offset = deathmatch_p - deathmatchstarts; + + if (offset >= num_deathmatchstarts) + { + num_deathmatchstarts = num_deathmatchstarts ? + num_deathmatchstarts*2 : 16; + deathmatchstarts = realloc(deathmatchstarts, + num_deathmatchstarts * + sizeof(*deathmatchstarts)); + deathmatch_p = deathmatchstarts + offset; + } + memcpy(deathmatch_p++, mthing, sizeof(*mthing)); + (deathmatch_p-1)->options = 1; + return; + } + } + + // check for players specially + + if (mthing->type <= 4 && mthing->type > 0) // killough 2/26/98 -- fix crashes + { +#ifdef DOGS + // killough 7/19/98: Marine's best friend :) + if (!netgame && mthing->type > 1 && mthing->type <= dogs+1 && + !players[mthing->type-1].secretcount) + { // use secretcount to avoid multiple dogs in case of multiple starts + players[mthing->type-1].secretcount = 1; + + // killough 10/98: force it to be a friend + options |= MTF_FRIEND; + if(HelperThing != -1) // haleyjd 9/22/99: deh substitution + { + int type = HelperThing - 1; + if(type >= 0 && type < NUMMOBJTYPES) + { + i = type; + } + else + { + doom_printf("Invalid value %i for helper, ignored.", HelperThing); + i = MT_DOGS; + } + } + else { + i = MT_DOGS; + } + goto spawnit; + } +#endif + + // save spots for respawning in coop games + playerstarts[mthing->type-1] = *mthing; + /* cph 2006/07/24 - use the otherwise-unused options field to flag that + * this start is present (so we know which elements of the array are filled + * in, in effect). Also note that the call below to P_SpawnPlayer must use + * the playerstarts version with this field set */ + playerstarts[mthing->type-1].options = 1; + + if (!deathmatch) + P_SpawnPlayer (mthing->type-1, &playerstarts[mthing->type-1]); + return; + } + + // check for apropriate skill level + + /* jff "not single" thing flag */ + if (!netgame && options & MTF_NOTSINGLE) + return; + + //jff 3/30/98 implement "not deathmatch" thing flag + + if (netgame && deathmatch && options & MTF_NOTDM) + return; + + //jff 3/30/98 implement "not cooperative" thing flag + + if (netgame && !deathmatch && options & MTF_NOTCOOP) + return; + + // killough 11/98: simplify + if (gameskill == sk_baby || gameskill == sk_easy ? + !(options & MTF_EASY) : + gameskill == sk_hard || gameskill == sk_nightmare ? + !(options & MTF_HARD) : !(options & MTF_NORMAL)) + return; + + // find which type to spawn + + // killough 8/23/98: use table for faster lookup + i = P_FindDoomedNum(mthing->type); + + // phares 5/16/98: + // Do not abort because of an unknown thing. Ignore it, but post a + // warning message for the player. + + if (i == NUMMOBJTYPES) + { + doom_printf("Unknown Thing type %i at (%i, %i)",mthing->type,mthing->x,mthing->y); + return; + } + + // don't spawn keycards and players in deathmatch + + if (deathmatch && mobjinfo[i].flags & MF_NOTDMATCH) + return; + + // don't spawn any monsters if -nomonsters + + if (nomonsters && (i == MT_SKULL || (mobjinfo[i].flags & MF_COUNTKILL))) + return; + + // spawn it +#ifdef DOGS +spawnit: +#endif + + x = mthing->x << FRACBITS; + y = mthing->y << FRACBITS; + + if (mobjinfo[i].flags & MF_SPAWNCEILING) + z = ONCEILINGZ; + else + z = ONFLOORZ; + + mobj = P_SpawnMobj (x,y,z, i); + mobj->spawnpoint = *mthing; + + if (mobj->tics > 0) + mobj->tics = 1 + (P_Random (pr_spawnthing) % mobj->tics); + + if (!(mobj->flags & MF_FRIEND) && + options & MTF_FRIEND && + mbf_features) + { + mobj->flags |= MF_FRIEND; // killough 10/98: + P_UpdateThinker(&mobj->thinker); // transfer friendliness flag + } + + /* killough 7/20/98: exclude friends */ + if (!((mobj->flags ^ MF_COUNTKILL) & (MF_FRIEND | MF_COUNTKILL))) + totalkills++; + + if (mobj->flags & MF_COUNTITEM) + totalitems++; + + mobj->angle = ANG45 * (mthing->angle/45); + if (options & MTF_AMBUSH) + mobj->flags |= MF_AMBUSH; + } + + +// +// GAME SPAWN FUNCTIONS +// + +// +// P_SpawnPuff +// + +extern fixed_t attackrange; + +void P_SpawnPuff(fixed_t x,fixed_t y,fixed_t z) + { + mobj_t* th; + // killough 5/5/98: remove dependence on order of evaluation: + int t = P_Random(pr_spawnpuff); + z += (t - P_Random(pr_spawnpuff))<<10; + + th = P_SpawnMobj (x,y,z, MT_PUFF); + th->momz = FRACUNIT; + th->tics -= P_Random(pr_spawnpuff)&3; + + if (th->tics < 1) + th->tics = 1; + + // don't make punches spark on the wall + + if (attackrange == MELEERANGE) + P_SetMobjState (th, S_PUFF3); + } + + +// +// P_SpawnBlood +// +void P_SpawnBlood(fixed_t x,fixed_t y,fixed_t z,int damage) + { + mobj_t* th; + // killough 5/5/98: remove dependence on order of evaluation: + int t = P_Random(pr_spawnblood); + z += (t - P_Random(pr_spawnblood))<<10; + th = P_SpawnMobj(x,y,z, MT_BLOOD); + th->momz = FRACUNIT*2; + th->tics -= P_Random(pr_spawnblood)&3; + + if (th->tics < 1) + th->tics = 1; + + if (damage <= 12 && damage >= 9) + P_SetMobjState (th,S_BLOOD2); + else if (damage < 9) + P_SetMobjState (th,S_BLOOD3); + } + + +// +// P_CheckMissileSpawn +// Moves the missile forward a bit +// and possibly explodes it right there. +// + +void P_CheckMissileSpawn (mobj_t* th) + { + th->tics -= P_Random(pr_missile)&3; + if (th->tics < 1) + th->tics = 1; + + // move a little forward so an angle can + // be computed if it immediately explodes + + th->x += (th->momx>>1); + th->y += (th->momy>>1); + th->z += (th->momz>>1); + + // killough 8/12/98: for non-missile objects (e.g. grenades) + if (!(th->flags & MF_MISSILE) && mbf_features) + return; + + // killough 3/15/98: no dropoff (really = don't care for missiles) + + if (!P_TryMove (th, th->x, th->y, false)) + P_ExplodeMissile (th); + } + + +// +// P_SpawnMissile +// + +mobj_t* P_SpawnMissile(mobj_t* source,mobj_t* dest,mobjtype_t type) + { + mobj_t* th; + angle_t an; + int dist; + + th = P_SpawnMobj (source->x,source->y,source->z + 4*8*FRACUNIT,type); + + if (th->info->seesound) + S_StartSound (th, th->info->seesound); + + P_SetTarget(&th->target, source); // where it came from + an = R_PointToAngle2 (source->x, source->y, dest->x, dest->y); + + // fuzzy player + + if (dest->flags & MF_SHADOW) + { // killough 5/5/98: remove dependence on order of evaluation: + int t = P_Random(pr_shadow); + an += (t - P_Random(pr_shadow))<<20; + } + + th->angle = an; + an >>= ANGLETOFINESHIFT; + th->momx = FixedMul (th->info->speed, finecosine[an]); + th->momy = FixedMul (th->info->speed, finesine[an]); + + dist = P_AproxDistance (dest->x - source->x, dest->y - source->y); + dist = dist / th->info->speed; + + if (dist < 1) + dist = 1; + + th->momz = (dest->z - source->z) / dist; + P_CheckMissileSpawn (th); + + return th; + } + + +// +// P_SpawnPlayerMissile +// Tries to aim at a nearby monster +// + +void P_SpawnPlayerMissile(mobj_t* source,mobjtype_t type) +{ + mobj_t *th; + fixed_t x, y, z, slope = 0; + + // see which target is to be aimed at + + angle_t an = source->angle; + + // killough 7/19/98: autoaiming was not in original beta + { + // killough 8/2/98: prefer autoaiming at enemies + uint_64_t mask = mbf_features ? MF_FRIEND : 0; + + do + { + slope = P_AimLineAttack(source, an, 16*64*FRACUNIT, mask); + if (!linetarget) + slope = P_AimLineAttack(source, an += 1<<26, 16*64*FRACUNIT, mask); + if (!linetarget) + slope = P_AimLineAttack(source, an -= 2<<26, 16*64*FRACUNIT, mask); + if (!linetarget) + an = source->angle, slope = 0; + } + while (mask && (mask=0, !linetarget)); // killough 8/2/98 + } + + x = source->x; + y = source->y; + z = source->z + 4*8*FRACUNIT; + + th = P_SpawnMobj (x,y,z, type); + + if (th->info->seesound) + S_StartSound (th, th->info->seesound); + + P_SetTarget(&th->target, source); + th->angle = an; + th->momx = FixedMul(th->info->speed,finecosine[an>>ANGLETOFINESHIFT]); + th->momy = FixedMul(th->info->speed,finesine[an>>ANGLETOFINESHIFT]); + th->momz = FixedMul(th->info->speed,slope); + + P_CheckMissileSpawn(th); + } diff --git a/components/doom/prboom/p_mobj.h b/components/doom/prboom/p_mobj.h new file mode 100644 index 0000000..ccd66f3 --- /dev/null +++ b/components/doom/prboom/p_mobj.h @@ -0,0 +1,403 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Map Objects, MObj, definition and handling. + * + *-----------------------------------------------------------------------------*/ + +#ifndef __P_MOBJ__ +#define __P_MOBJ__ + +// Basics. +#include "tables.h" +#include "m_fixed.h" + +// We need the thinker_t stuff. +#include "d_think.h" + +// We need the WAD data structure for Map things, +// from the THINGS lump. +#include "doomdata.h" + +// States are tied to finite states are +// tied to animation frames. +// Needs precompiled tables/data structures. +#include "info.h" + +// +// NOTES: mobj_t +// +// mobj_ts are used to tell the refresh where to draw an image, +// tell the world simulation when objects are contacted, +// and tell the sound driver how to position a sound. +// +// The refresh uses the next and prev links to follow +// lists of things in sectors as they are being drawn. +// The sprite, frame, and angle elements determine which patch_t +// is used to draw the sprite if it is visible. +// The sprite and frame values are allmost allways set +// from state_t structures. +// The statescr.exe utility generates the states.h and states.c +// files that contain the sprite/frame numbers from the +// statescr.txt source file. +// The xyz origin point represents a point at the bottom middle +// of the sprite (between the feet of a biped). +// This is the default origin position for patch_ts grabbed +// with lumpy.exe. +// A walking creature will have its z equal to the floor +// it is standing on. +// +// The sound code uses the x,y, and subsector fields +// to do stereo positioning of any sound effited by the mobj_t. +// +// The play simulation uses the blocklinks, x,y,z, radius, height +// to determine when mobj_ts are touching each other, +// touching lines in the map, or hit by trace lines (gunshots, +// lines of sight, etc). +// The mobj_t->flags element has various bit flags +// used by the simulation. +// +// Every mobj_t is linked into a single sector +// based on its origin coordinates. +// The subsector_t is found with R_PointInSubsector(x,y), +// and the sector_t can be found with subsector->sector. +// The sector links are only used by the rendering code, +// the play simulation does not care about them at all. +// +// Any mobj_t that needs to be acted upon by something else +// in the play world (block movement, be shot, etc) will also +// need to be linked into the blockmap. +// If the thing has the MF_NOBLOCK flag set, it will not use +// the block links. It can still interact with other things, +// but only as the instigator (missiles will run into other +// things, but nothing can run into a missile). +// Each block in the grid is 128*128 units, and knows about +// every line_t that it contains a piece of, and every +// interactable mobj_t that has its origin contained. +// +// A valid mobj_t is a mobj_t that has the proper subsector_t +// filled in for its xy coordinates and is linked into the +// sector from which the subsector was made, or has the +// MF_NOSECTOR flag set (the subsector_t needs to be valid +// even if MF_NOSECTOR is set), and is linked into a blockmap +// block or has the MF_NOBLOCKMAP flag set. +// Links should only be modified by the P_[Un]SetThingPosition() +// functions. +// Do not change the MF_NO? flags while a thing is valid. +// +// Any questions? +// + +// +// Misc. mobj flags +// + +// Call P_SpecialThing when touched. +#define MF_SPECIAL (uint_64_t)(0x0000000000000001) +// Blocks. +#define MF_SOLID (uint_64_t)(0x0000000000000002) +// Can be hit. +#define MF_SHOOTABLE (uint_64_t)(0x0000000000000004) +// Don't use the sector links (invisible but touchable). +#define MF_NOSECTOR (uint_64_t)(0x0000000000000008) +// Don't use the blocklinks (inert but displayable) +#define MF_NOBLOCKMAP (uint_64_t)(0x0000000000000010) + +// Not to be activated by sound, deaf monster. +#define MF_AMBUSH (uint_64_t)(0x0000000000000020) +// Will try to attack right back. +#define MF_JUSTHIT (uint_64_t)(0x0000000000000040) +// Will take at least one step before attacking. +#define MF_JUSTATTACKED (uint_64_t)(0x0000000000000080) +// On level spawning (initial position), +// hang from ceiling instead of stand on floor. +#define MF_SPAWNCEILING (uint_64_t)(0x0000000000000100) +// Don't apply gravity (every tic), +// that is, object will float, keeping current height +// or changing it actively. +#define MF_NOGRAVITY (uint_64_t)(0x0000000000000200) + +// Movement flags. +// This allows jumps from high places. +#define MF_DROPOFF (uint_64_t)(0x0000000000000400) +// For players, will pick up items. +#define MF_PICKUP (uint_64_t)(0x0000000000000800) +// Player cheat. ??? +#define MF_NOCLIP (uint_64_t)(0x0000000000001000) +// Player: keep info about sliding along walls. +#define MF_SLIDE (uint_64_t)(0x0000000000002000) +// Allow moves to any height, no gravity. +// For active floaters, e.g. cacodemons, pain elementals. +#define MF_FLOAT (uint_64_t)(0x0000000000004000) +// Don't cross lines +// ??? or look at heights on teleport. +#define MF_TELEPORT (uint_64_t)(0x0000000000008000) +// Don't hit same species, explode on block. +// Player missiles as well as fireballs of various kinds. +#define MF_MISSILE (uint_64_t)(0x0000000000010000) +// Dropped by a demon, not level spawned. +// E.g. ammo clips dropped by dying former humans. +#define MF_DROPPED (uint_64_t)(0x0000000000020000) +// Use fuzzy draw (shadow demons or spectres), +// temporary player invisibility powerup. +#define MF_SHADOW (uint_64_t)(0x0000000000040000) +// Flag: don't bleed when shot (use puff), +// barrels and shootable furniture shall not bleed. +#define MF_NOBLOOD (uint_64_t)(0x0000000000080000) +// Don't stop moving halfway off a step, +// that is, have dead bodies slide down all the way. +#define MF_CORPSE (uint_64_t)(0x0000000000100000) +// Floating to a height for a move, ??? +// don't auto float to target's height. +#define MF_INFLOAT (uint_64_t)(0x0000000000200000) + +// On kill, count this enemy object +// towards intermission kill total. +// Happy gathering. +#define MF_COUNTKILL (uint_64_t)(0x0000000000400000) + +// On picking up, count this item object +// towards intermission item total. +#define MF_COUNTITEM (uint_64_t)(0x0000000000800000) + +// Special handling: skull in flight. +// Neither a cacodemon nor a missile. +#define MF_SKULLFLY (uint_64_t)(0x0000000001000000) + +// Don't spawn this object +// in death match mode (e.g. key cards). +#define MF_NOTDMATCH (uint_64_t)(0x0000000002000000) + +// Player sprites in multiplayer modes are modified +// using an internal color lookup table for re-indexing. +// If 0x4 0x8 or 0xc, +// use a translation table for player colormaps +#define MF_TRANSLATION (uint_64_t)(0x000000000c000000) +#define MF_TRANSLATION1 (uint_64_t)(0x0000000004000000) +#define MF_TRANSLATION2 (uint_64_t)(0x0000000008000000) +// Hmm ???. +#define MF_TRANSSHIFT 26 + +#define MF_UNUSED2 (uint_64_t)(0x0000000010000000) +#define MF_UNUSED3 (uint_64_t)(0x0000000020000000) + + // Translucent sprite? // phares +#define MF_TRANSLUCENT (uint_64_t)(0x0000000040000000) + +// this is free LONGLONG(0x0000000100000000) + +// these are greater than an int. That's why the flags below are now uint_64_t + +#define MF_TOUCHY LONGLONG(0x0000000100000000) +#define MF_BOUNCES LONGLONG(0x0000000200000000) +#define MF_FRIEND LONGLONG(0x0000000400000000) + +// killough 9/15/98: Same, but internal flags, not intended for .deh +// (some degree of opaqueness is good, to avoid compatibility woes) + +enum { + MIF_FALLING = 1, // Object is falling + MIF_ARMED = 2, // Object is armed (for MF_TOUCHY objects) +}; + +// Map Object definition. +// +// +// killough 2/20/98: +// +// WARNING: Special steps must be taken in p_saveg.c if C pointers are added to +// this mobj_s struct, or else savegames will crash when loaded. See p_saveg.c. +// Do not add "struct mobj_s *fooptr" without adding code to p_saveg.c to +// convert the pointers to ordinals and back for savegames. This was the whole +// reason behind monsters going to sleep when loading savegames (the "target" +// pointer was simply nullified after loading, to prevent Doom from crashing), +// and the whole reason behind loadgames crashing on savegames of AV attacks. +// + +// killough 9/8/98: changed some fields to shorts, +// for better memory usage (if only for cache). +/* cph 2006/08/28 - move Prev[XYZ] fields to the end of the struct. Add any + * other new fields to the end, and make sure you don't break savegames! */ + +typedef struct mobj_s +{ + // List: thinker links. + thinker_t thinker; + + // Info for drawing: position. + fixed_t x; + fixed_t y; + fixed_t z; + + // More list: links in sector (if needed) + struct mobj_s* snext; + struct mobj_s** sprev; // killough 8/10/98: change to ptr-to-ptr + + //More drawing info: to determine current sprite. + angle_t angle; // orientation + spritenum_t sprite; // used to find patch_t and flip value + int frame; // might be ORed with FF_FULLBRIGHT + + // Interaction info, by BLOCKMAP. + // Links in blocks (if needed). + struct mobj_s* bnext; + struct mobj_s** bprev; // killough 8/11/98: change to ptr-to-ptr + + struct subsector_s* subsector; + + // The closest interval over all contacted Sectors. + fixed_t floorz; + fixed_t ceilingz; + + // killough 11/98: the lowest floor over all contacted Sectors. + fixed_t dropoffz; + + // For movement checking. + fixed_t radius; + fixed_t height; + + // Momentums, used to update position. + fixed_t momx; + fixed_t momy; + fixed_t momz; + + // If == validcount, already checked. + int validcount; + + mobjtype_t type; + mobjinfo_t* info; // &mobjinfo[mobj->type] + + int tics; // state tic counter + state_t* state; + uint_64_t flags; + int intflags; // killough 9/15/98: internal flags + int health; + + // Movement direction, movement generation (zig-zagging). + short movedir; // 0-7 + short movecount; // when 0, select a new dir + short strafecount; // killough 9/8/98: monster strafing + + // Thing being chased/attacked (or NULL), + // also the originator for missiles. + struct mobj_s* target; + + // Reaction time: if non 0, don't attack yet. + // Used by player to freeze a bit after teleporting. + short reactiontime; + + // If >0, the current target will be chased no + // matter what (even if shot by another object) + short threshold; + + // killough 9/9/98: How long a monster pursues a target. + short pursuecount; + + short gear; // killough 11/98: used in torque simulation + + // Additional info record for player avatars only. + // Only valid if type == MT_PLAYER + struct player_s* player; + + // Player number last looked for. + short lastlook; + + // For nightmare respawn. + mapthing_t spawnpoint; + + // Thing being chased/attacked for tracers. + struct mobj_s* tracer; + + // new field: last known enemy -- killough 2/15/98 + struct mobj_s* lastenemy; + + // killough 8/2/98: friction properties part of sectors, + // not objects -- removed friction properties from here + // e6y: restored friction properties here + // Friction values for the sector the object is in + int friction; // phares 3/17/98 + int movefactor; + + // a linked list of sectors where this object appears + struct msecnode_s* touching_sectorlist; // phares 3/14/98 + + fixed_t PrevX; + fixed_t PrevY; + fixed_t PrevZ; + + fixed_t pad; // cph - needed so I can get the size unambiguously on amd64 + + // SEE WARNING ABOVE ABOUT POINTER FIELDS!!! +} mobj_t; + +// External declarations (fomerly in p_local.h) -- killough 5/2/98 + +#define VIEWHEIGHT (41*FRACUNIT) + +#define GRAVITY FRACUNIT +#define MAXMOVE (30*FRACUNIT) + +#define ONFLOORZ INT_MIN +#define ONCEILINGZ INT_MAX + +// Time interval for item respawning. +#define ITEMQUESIZE 128 + +#define FLOATSPEED (FRACUNIT*4) +#define STOPSPEED (FRACUNIT/16) + +// killough 11/98: +// For torque simulation: + +#define OVERDRIVE 6 +#define MAXGEAR (OVERDRIVE+16) + +// killough 11/98: +// Whether an object is "sentient" or not. Used for environmental influences. +#define sentient(mobj) ((mobj)->health > 0 && (mobj)->info->seestate) + +extern int iquehead; +extern int iquetail; + +void P_RespawnSpecials(void); +mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type); +void P_RemoveMobj(mobj_t *th); +boolean P_SetMobjState(mobj_t *mobj, statenum_t state); +void P_MobjThinker(mobj_t *mobj); +void P_SpawnPuff(fixed_t x, fixed_t y, fixed_t z); +void P_SpawnBlood(fixed_t x, fixed_t y, fixed_t z, int damage); +mobj_t *P_SpawnMissile(mobj_t *source, mobj_t *dest, mobjtype_t type); +void P_SpawnPlayerMissile(mobj_t *source, mobjtype_t type); +boolean P_IsDoomnumAllowed(int doomnum); +void P_SpawnMapThing (const mapthing_t* mthing); +void P_SpawnPlayer(int n, const mapthing_t *mthing); +void P_CheckMissileSpawn(mobj_t*); // killough 8/2/98 +void P_ExplodeMissile(mobj_t*); // killough +#endif + diff --git a/components/doom/prboom/p_plats.c b/components/doom/prboom/p_plats.c new file mode 100644 index 0000000..11205f4 --- /dev/null +++ b/components/doom/prboom/p_plats.c @@ -0,0 +1,436 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Plats (i.e. elevator platforms) code, raising/lowering. + * + *-----------------------------------------------------------------------------*/ + +#include "doomstat.h" +#include "m_random.h" +#include "r_main.h" +#include "p_spec.h" +#include "p_tick.h" +#include "s_sound.h" +#include "sounds.h" + +platlist_t *activeplats; // killough 2/14/98: made global again + +// +// T_PlatRaise() +// +// Action routine to move a plat up and down +// +// Passed a plat structure containing all pertinent information about the move +// No return +// +// jff 02/08/98 all cases with labels beginning with gen added to support +// generalized line type behaviors. + +void T_PlatRaise(plat_t* plat) +{ + result_e res; + + // handle plat moving, up, down, waiting, or in stasis, + switch(plat->status) + { + case up: // plat moving up + res = T_MovePlane(plat->sector,plat->speed,plat->high,plat->crush,0,1); + + // if a pure raise type, make the plat moving sound + if (plat->type == raiseAndChange + || plat->type == raiseToNearestAndChange) + { + if (!(leveltime&7)) + S_StartSound((mobj_t *)&plat->sector->soundorg, sfx_stnmov); + } + + // if encountered an obstacle, and not a crush type, reverse direction + if (res == crushed && (!plat->crush)) + { + plat->count = plat->wait; + plat->status = down; + S_StartSound((mobj_t *)&plat->sector->soundorg, sfx_pstart); + } + else // else handle reaching end of up stroke + { + if (res == pastdest) // end of stroke + { + // if not an instant toggle type, wait, make plat stop sound + if (plat->type!=toggleUpDn) + { + plat->count = plat->wait; + plat->status = waiting; + S_StartSound((mobj_t *)&plat->sector->soundorg, sfx_pstop); + } + else // else go into stasis awaiting next toggle activation + { + plat->oldstatus = plat->status;//jff 3/14/98 after action wait + plat->status = in_stasis; //for reactivation of toggle + } + + // lift types and pure raise types are done at end of up stroke + // only the perpetual type waits then goes back up + switch(plat->type) + { + case blazeDWUS: + case downWaitUpStay: + case raiseAndChange: + case raiseToNearestAndChange: + case genLift: + P_RemoveActivePlat(plat); // killough + default: + break; + } + } + } + break; + + case down: // plat moving down + res = T_MovePlane(plat->sector,plat->speed,plat->low,false,0,-1); + + // handle reaching end of down stroke + if (res == pastdest) + { + // if not an instant toggle, start waiting, make plat stop sound + if (plat->type!=toggleUpDn) //jff 3/14/98 toggle up down + { // is silent, instant, no waiting + plat->count = plat->wait; + plat->status = waiting; + S_StartSound((mobj_t *)&plat->sector->soundorg,sfx_pstop); + } + else // instant toggles go into stasis awaiting next activation + { + plat->oldstatus = plat->status;//jff 3/14/98 after action wait + plat->status = in_stasis; //for reactivation of toggle + } + + //jff 1/26/98 remove the plat if it bounced so it can be tried again + //only affects plats that raise and bounce + //killough 1/31/98: relax compatibility to demo_compatibility + + // remove the plat if its a pure raise type + if (!comp[comp_floors]) + { + switch(plat->type) + { + case raiseAndChange: + case raiseToNearestAndChange: + P_RemoveActivePlat(plat); + default: + break; + } + } + } + break; + + case waiting: // plat is waiting + if (!--plat->count) // downcount and check for delay elapsed + { + if (plat->sector->floorheight == plat->low) + plat->status = up; // if at bottom, start up + else + plat->status = down; // if at top, start down + + // make plat start sound + S_StartSound((mobj_t *)&plat->sector->soundorg,sfx_pstart); + } + break; //jff 1/27/98 don't pickup code added later to in_stasis + + case in_stasis: // do nothing if in stasis + break; + } +} + + +// +// EV_DoPlat +// +// Handle Plat linedef types +// +// Passed the linedef that activated the plat, the type of plat action, +// and for some plat types, an amount to raise +// Returns true if a thinker is started, or restarted from stasis +// +int EV_DoPlat +( line_t* line, + plattype_e type, + int amount ) +{ + plat_t* plat; + int secnum; + int rtn; + sector_t* sec; + + secnum = -1; + rtn = 0; + + + // Activate all plats that are in_stasis + switch(type) + { + case perpetualRaise: + P_ActivateInStasis(line->tag); + break; + + case toggleUpDn: + P_ActivateInStasis(line->tag); + rtn=1; + break; + + default: + break; + } + + // act on all sectors tagged the same as the activating linedef + while ((secnum = P_FindSectorFromLineTag(line,secnum)) >= 0) + { + sec = §ors[secnum]; + + // don't start a second floor function if already moving + if (P_SectorActive(floor_special,sec)) //jff 2/23/98 multiple thinkers + continue; + + // Create a thinker + rtn = 1; + plat = Z_Calloc(1, sizeof(*plat), PU_LEVSPEC, 0); + P_AddThinker(&plat->thinker); + + plat->type = type; + plat->sector = sec; + plat->sector->floordata = plat; //jff 2/23/98 multiple thinkers + plat->thinker.function = T_PlatRaise; + plat->crush = false; + plat->tag = line->tag; + + //jff 1/26/98 Avoid raise plat bouncing a head off a ceiling and then + //going down forever -- default low to plat height when triggered + plat->low = sec->floorheight; + + // set up plat according to type + switch(type) + { + case raiseToNearestAndChange: + plat->speed = PLATSPEED/2; + sec->floorpic = sides[line->sidenum[0]].sector->floorpic; + plat->high = P_FindNextHighestFloor(sec,sec->floorheight); + plat->wait = 0; + plat->status = up; + sec->special = 0; + //jff 3/14/98 clear old field as well + sec->oldspecial = 0; + + S_StartSound((mobj_t *)&sec->soundorg,sfx_stnmov); + break; + + case raiseAndChange: + plat->speed = PLATSPEED/2; + sec->floorpic = sides[line->sidenum[0]].sector->floorpic; + plat->high = sec->floorheight + amount*FRACUNIT; + plat->wait = 0; + plat->status = up; + + S_StartSound((mobj_t *)&sec->soundorg,sfx_stnmov); + break; + + case downWaitUpStay: + plat->speed = PLATSPEED * 4; + plat->low = P_FindLowestFloorSurrounding(sec); + + if (plat->low > sec->floorheight) + plat->low = sec->floorheight; + + plat->high = sec->floorheight; + plat->wait = 35*PLATWAIT; + plat->status = down; + S_StartSound((mobj_t *)&sec->soundorg,sfx_pstart); + break; + + case blazeDWUS: + plat->speed = PLATSPEED * 8; + plat->low = P_FindLowestFloorSurrounding(sec); + + if (plat->low > sec->floorheight) + plat->low = sec->floorheight; + + plat->high = sec->floorheight; + plat->wait = 35*PLATWAIT; + plat->status = down; + S_StartSound((mobj_t *)&sec->soundorg,sfx_pstart); + break; + + case perpetualRaise: + plat->speed = PLATSPEED; + plat->low = P_FindLowestFloorSurrounding(sec); + + if (plat->low > sec->floorheight) + plat->low = sec->floorheight; + + plat->high = P_FindHighestFloorSurrounding(sec); + + if (plat->high < sec->floorheight) + plat->high = sec->floorheight; + + plat->wait = 35*PLATWAIT; + plat->status = P_Random(pr_plats)&1; + + S_StartSound((mobj_t *)&sec->soundorg,sfx_pstart); + break; + + case toggleUpDn: //jff 3/14/98 add new type to support instant toggle + plat->speed = PLATSPEED; //not used + plat->wait = 35*PLATWAIT; //not used + plat->crush = true; //jff 3/14/98 crush anything in the way + + // set up toggling between ceiling, floor inclusive + plat->low = sec->ceilingheight; + plat->high = sec->floorheight; + plat->status = down; + break; + + default: + break; + } + P_AddActivePlat(plat); // add plat to list of active plats + } + return rtn; +} + +// The following were all rewritten by Lee Killough +// to use the new structure which places no limits +// on active plats. It also avoids spending as much +// time searching for active plats. Previously a +// fixed-size array was used, with NULL indicating +// empty entries, while now a doubly-linked list +// is used. + +// +// P_ActivateInStasis() +// +// Activate a plat that has been put in stasis +// (stopped perpetual floor, instant floor/ceil toggle) +// +// Passed the tag of the plat that should be reactivated +// Returns nothing +// +void P_ActivateInStasis(int tag) +{ + platlist_t *pl; + for (pl=activeplats; pl; pl=pl->next) // search the active plats + { + plat_t *plat = pl->plat; // for one in stasis with right tag + if (plat->tag == tag && plat->status == in_stasis) + { + if (plat->type==toggleUpDn) //jff 3/14/98 reactivate toggle type + plat->status = plat->oldstatus==up? down : up; + else + plat->status = plat->oldstatus; + plat->thinker.function = T_PlatRaise; + } + } +} + +// +// EV_StopPlat() +// +// Handler for "stop perpetual floor" linedef type +// +// Passed the linedef that stopped the plat +// Returns true if a plat was put in stasis +// +// jff 2/12/98 added int return value, fixed return +// +int EV_StopPlat(line_t* line) +{ + platlist_t *pl; + for (pl=activeplats; pl; pl=pl->next) // search the active plats + { + plat_t *plat = pl->plat; // for one with the tag not in stasis + if (plat->status != in_stasis && plat->tag == line->tag) + { + plat->oldstatus = plat->status; // put it in stasis + plat->status = in_stasis; + plat->thinker.function = NULL; + } + } + return 1; +} + +// +// P_AddActivePlat() +// +// Add a plat to the head of the active plat list +// +// Passed a pointer to the plat to add +// Returns nothing +// +void P_AddActivePlat(plat_t* plat) +{ + platlist_t *list = Z_Malloc(sizeof(*list), PU_STATIC, 0); + list->plat = plat; + plat->list = list; + if ((list->next = activeplats)) + list->next->prev = &list->next; + list->prev = &activeplats; + activeplats = list; +} + +// +// P_RemoveActivePlat() +// +// Remove a plat from the active plat list +// +// Passed a pointer to the plat to remove +// Returns nothing +// +void P_RemoveActivePlat(plat_t* plat) +{ + platlist_t *list = plat->list; + plat->sector->floordata = NULL; //jff 2/23/98 multiple thinkers + P_RemoveThinker(&plat->thinker); + if ((*list->prev = list->next)) + list->next->prev = list->prev; + free(list); +} + +// +// P_RemoveAllActivePlats() +// +// Remove all plats from the active plat list +// +// Passed nothing, returns nothing +// +void P_RemoveAllActivePlats(void) +{ + while (activeplats) + { + platlist_t *next = activeplats->next; + free(activeplats); + activeplats = next; + } +} diff --git a/components/doom/prboom/p_pspr.c b/components/doom/prboom/p_pspr.c new file mode 100644 index 0000000..8b4579e --- /dev/null +++ b/components/doom/prboom/p_pspr.c @@ -0,0 +1,829 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Weapon sprite animation, weapon objects. + * Action functions for weapons. + * + *-----------------------------------------------------------------------------*/ + +#include "doomstat.h" +#include "r_main.h" +#include "p_map.h" +#include "p_inter.h" +#include "p_pspr.h" +#include "p_enemy.h" +#include "m_random.h" +#include "s_sound.h" +#include "sounds.h" +#include "d_event.h" +#include "r_demo.h" + +#define LOWERSPEED (FRACUNIT*6) +#define RAISESPEED (FRACUNIT*6) +#define WEAPONBOTTOM (FRACUNIT*128) +#define WEAPONTOP (FRACUNIT*32) + +#define BFGCELLS bfgcells /* Ty 03/09/98 externalized in p_inter.c */ + +extern void P_Thrust(player_t *, angle_t, fixed_t); + +// The following array holds the recoil values // phares + +static const int recoil_values[] = { // phares + 10, // wp_fist + 10, // wp_pistol + 30, // wp_shotgun + 10, // wp_chaingun + 100,// wp_missile + 20, // wp_plasma + 100,// wp_bfg + 0, // wp_chainsaw + 80 // wp_supershotgun +}; + +// +// P_SetPsprite +// + +static void P_SetPsprite(player_t *player, int position, statenum_t stnum) +{ + pspdef_t *psp = &player->psprites[position]; + + do + { + state_t *state; + + if (!stnum) + { + // object removed itself + psp->state = NULL; + break; + } + + state = &states[stnum]; + psp->state = state; + psp->tics = state->tics; // could be 0 + + if (state->misc1) + { + // coordinate set + psp->sx = state->misc1 << FRACBITS; + psp->sy = state->misc2 << FRACBITS; + } + + // Call action routine. + // Modified handling. + if (state->action) + { + state->action(player, psp); + if (!psp->state) + break; + } + stnum = psp->state->nextstate; + } + while (!psp->tics); // an initial state of 0 could cycle through +} + +// +// P_BringUpWeapon +// Starts bringing the pending weapon up +// from the bottom of the screen. +// Uses player +// + +static void P_BringUpWeapon(player_t *player) +{ + statenum_t newstate; + + if (player->pendingweapon == wp_nochange) + player->pendingweapon = player->readyweapon; + + if (player->pendingweapon == wp_chainsaw) + S_StartSound (player->mo, sfx_sawup); + + newstate = weaponinfo[player->pendingweapon].upstate; + + player->pendingweapon = wp_nochange; + // killough 12/98: prevent pistol from starting visibly at bottom of screen: + player->psprites[ps_weapon].sy = + mbf_features ? WEAPONBOTTOM+FRACUNIT*2 : WEAPONBOTTOM; + + P_SetPsprite(player, ps_weapon, newstate); +} + +// The first set is where the weapon preferences from // killough, +// default.cfg are stored. These values represent the keys used // phares +// in DOOM2 to bring up the weapon, i.e. 6 = plasma gun. These // | +// are NOT the wp_* constants. // V + +int weapon_preferences[2][NUMWEAPONS+1] = { + {6, 9, 4, 3, 2, 8, 5, 7, 1, 0}, // !compatibility preferences + {6, 9, 4, 3, 2, 8, 5, 7, 1, 0}, // compatibility preferences +}; + +// P_SwitchWeapon checks current ammo levels and gives you the +// most preferred weapon with ammo. It will not pick the currently +// raised weapon. When called from P_CheckAmmo this won't matter, +// because the raised weapon has no ammo anyway. When called from +// G_BuildTiccmd you want to toggle to a different weapon regardless. + +int P_SwitchWeapon(player_t *player) +{ + int currentweapon = player->readyweapon; + int newweapon = currentweapon; + + for (int i = 0; i < NUMWEAPONS+1 && newweapon == currentweapon; ++i) + { + // RG: Sequential works better with our one button setup + int next = demo_compatibility ? weapon_preferences[1][i] : (currentweapon + i + 1); + switch (next % 10) + { + case 1: + if (!player->powers[pw_strength]) // allow chainsaw override + break; + /* fallthrough */ + case 0: + newweapon = wp_fist; + break; + case 2: + if (player->ammo[am_clip]) + newweapon = wp_pistol; + break; + case 3: + if (player->weaponowned[wp_shotgun] && player->ammo[am_shell]) + newweapon = wp_shotgun; + break; + case 4: + if (player->weaponowned[wp_chaingun] && player->ammo[am_clip]) + newweapon = wp_chaingun; + break; + case 5: + if (player->weaponowned[wp_missile] && player->ammo[am_misl]) + newweapon = wp_missile; + break; + case 6: + if (player->weaponowned[wp_plasma] && player->ammo[am_cell] && + gamemode != shareware) + newweapon = wp_plasma; + break; + case 7: + if (player->weaponowned[wp_bfg] && gamemode != shareware && + player->ammo[am_cell] >= (demo_compatibility ? 41 : 40)) + newweapon = wp_bfg; + break; + case 8: + if (player->weaponowned[wp_chainsaw]) + newweapon = wp_chainsaw; + break; + case 9: + if (player->weaponowned[wp_supershotgun] && gamemode == commercial && + player->ammo[am_shell] >= (demo_compatibility ? 3 : 2)) + newweapon = wp_supershotgun; + break; + } + } + return newweapon; +} + +// killough 5/2/98: whether consoleplayer prefers weapon w1 over weapon w2. +int P_WeaponPreferred(int w1, int w2) +{ + return + (weapon_preferences[0][0] != ++w2 && (weapon_preferences[0][0] == ++w1 || + (weapon_preferences[0][1] != w2 && (weapon_preferences[0][1] == w1 || + (weapon_preferences[0][2] != w2 && (weapon_preferences[0][2] == w1 || + (weapon_preferences[0][3] != w2 && (weapon_preferences[0][3] == w1 || + (weapon_preferences[0][4] != w2 && (weapon_preferences[0][4] == w1 || + (weapon_preferences[0][5] != w2 && (weapon_preferences[0][5] == w1 || + (weapon_preferences[0][6] != w2 && (weapon_preferences[0][6] == w1 || + (weapon_preferences[0][7] != w2 && (weapon_preferences[0][7] == w1 + )))))))))))))))); +} + +// +// P_CheckAmmo +// Returns true if there is enough ammo to shoot. +// If not, selects the next weapon to use. +// (only in demo_compatibility mode -- killough 3/22/98) +// + +boolean P_CheckAmmo(player_t *player) +{ + ammotype_t ammo = weaponinfo[player->readyweapon].ammo; + int count = 1; // Regular + + if (player->readyweapon == wp_bfg) // Minimal amount for one shot varies. + count = BFGCELLS; + else + if (player->readyweapon == wp_supershotgun) // Double barrel. + count = 2; + + // Some do not need ammunition anyway. + // Return if current ammunition sufficient. + + if (ammo == am_noammo || player->ammo[ammo] >= count) + return true; + + // Out of ammo, pick a weapon to change to. + // + // killough 3/22/98: for old demos we do the switch here and now; + // for Boom games we cannot do this, and have different player + // preferences across demos or networks, so we have to use the + // G_BuildTiccmd() interface instead of making the switch here. + + if (demo_compatibility) + { + player->pendingweapon = P_SwitchWeapon(player); // phares + // Now set appropriate weapon overlay. + P_SetPsprite(player,ps_weapon,weaponinfo[player->readyweapon].downstate); + } + + return false; +} + +// +// P_FireWeapon. +// + +static void P_FireWeapon(player_t *player) +{ + statenum_t newstate; + + if (!P_CheckAmmo(player)) + return; + + P_SetMobjState(player->mo, S_PLAY_ATK1); + newstate = weaponinfo[player->readyweapon].atkstate; + P_SetPsprite(player, ps_weapon, newstate); + P_NoiseAlert(player->mo, player->mo); +} + +// +// P_DropWeapon +// Player died, so put the weapon away. +// + +void P_DropWeapon(player_t *player) +{ + P_SetPsprite(player, ps_weapon, weaponinfo[player->readyweapon].downstate); +} + +// +// A_WeaponReady +// The player can fire the weapon +// or change to another weapon at this time. +// Follows after getting weapon up, +// or after previous attack/fire sequence. +// + +void A_WeaponReady(player_t *player, pspdef_t *psp) +{ + // get out of attack state + if (player->mo->state == &states[S_PLAY_ATK1] + || player->mo->state == &states[S_PLAY_ATK2] ) + P_SetMobjState(player->mo, S_PLAY); + + if (player->readyweapon == wp_chainsaw && psp->state == &states[S_SAW]) + S_StartSound(player->mo, sfx_sawidl); + + // check for change + // if player is dead, put the weapon away + + if (player->pendingweapon != wp_nochange || !player->health) + { + // change weapon (pending weapon should already be validated) + statenum_t newstate = weaponinfo[player->readyweapon].downstate; + P_SetPsprite(player, ps_weapon, newstate); + return; + } + + // check for fire + // the missile launcher and bfg do not auto fire + + if (player->cmd.buttons & BT_ATTACK) + { + if (!player->attackdown || (player->readyweapon != wp_missile && + player->readyweapon != wp_bfg)) + { + player->attackdown = true; + P_FireWeapon(player); + return; + } + } + else + player->attackdown = false; + + // bob the weapon based on movement speed + { + int angle = (128*leveltime) & FINEMASK; + psp->sx = FRACUNIT + FixedMul(player->bob, finecosine[angle]); + angle &= FINEANGLES/2-1; + psp->sy = WEAPONTOP + FixedMul(player->bob, finesine[angle]); + } +} + +// +// A_ReFire +// The player can re-fire the weapon +// without lowering it entirely. +// + +void A_ReFire(player_t *player, pspdef_t *psp) +{ + // check for fire + // (if a weaponchange is pending, let it go through instead) + + if ( (player->cmd.buttons & BT_ATTACK) + && player->pendingweapon == wp_nochange && player->health) + { + player->refire++; + P_FireWeapon(player); + } + else + { + player->refire = 0; + P_CheckAmmo(player); + } +} + +void A_CheckReload(player_t *player, pspdef_t *psp) +{ + if (!P_CheckAmmo(player) && compatibility_level >= prboom_4_compatibility) { + /* cph 2002/08/08 - In old Doom, P_CheckAmmo would start the weapon lowering + * immediately. This was lost in Boom when the weapon switching logic was + * rewritten. But we must tell Doom that we don't need to complete the + * reload frames for the weapon here. G_BuildTiccmd will set ->pendingweapon + * for us later on. */ + P_SetPsprite(player,ps_weapon,weaponinfo[player->readyweapon].downstate); + } +} + +// +// A_Lower +// Lowers current weapon, +// and changes weapon at bottom. +// + +void A_Lower(player_t *player, pspdef_t *psp) +{ + psp->sy += LOWERSPEED; + + // Is already down. + if (psp->sy < WEAPONBOTTOM) + return; + + // Player is dead. + if (player->playerstate == PST_DEAD) + { + psp->sy = WEAPONBOTTOM; + return; // don't bring weapon back up + } + + // The old weapon has been lowered off the screen, + // so change the weapon and start raising it + + if (!player->health) + { // Player is dead, so keep the weapon off screen. + P_SetPsprite(player, ps_weapon, S_NULL); + return; + } + + player->readyweapon = player->pendingweapon; + + P_BringUpWeapon(player); +} + +// +// A_Raise +// + +void A_Raise(player_t *player, pspdef_t *psp) +{ + statenum_t newstate; + + psp->sy -= RAISESPEED; + + if (psp->sy > WEAPONTOP) + return; + + psp->sy = WEAPONTOP; + + // The weapon has been raised all the way, + // so change to the ready state. + + newstate = weaponinfo[player->readyweapon].readystate; + + P_SetPsprite(player, ps_weapon, newstate); +} + + +// Weapons now recoil, amount depending on the weapon. // phares +// // | +// The P_SetPsprite call in each of the weapon firing routines // V +// was moved here so the recoil could be synched with the +// muzzle flash, rather than the pressing of the trigger. +// The BFG delay caused this to be necessary. + +static void A_FireSomething(player_t* player,int adder) +{ + P_SetPsprite(player, ps_flash, + weaponinfo[player->readyweapon].flashstate+adder); + + // killough 3/27/98: prevent recoil in no-clipping mode + if (!(player->mo->flags & MF_NOCLIP)) + if (!compatibility && weapon_recoil) + P_Thrust(player, + ANG180+player->mo->angle, // ^ + 2048*recoil_values[player->readyweapon]); // | +} // phares + +// +// A_GunFlash +// + +void A_GunFlash(player_t *player, pspdef_t *psp) +{ + P_SetMobjState(player->mo, S_PLAY_ATK2); + + A_FireSomething(player,0); // phares +} + +// +// WEAPON ATTACKS +// + +// +// A_Punch +// + +void A_Punch(player_t *player, pspdef_t *psp) +{ + angle_t angle; + int t, slope, damage = (P_Random(pr_punch)%10+1)<<1; + + if (player->powers[pw_strength]) + damage *= 10; + + angle = player->mo->angle; + + // killough 5/5/98: remove dependence on order of evaluation: + t = P_Random(pr_punchangle); + angle += (t - P_Random(pr_punchangle))<<18; + + /* killough 8/2/98: make autoaiming prefer enemies */ + if (!mbf_features || + (slope = P_AimLineAttack(player->mo, angle, MELEERANGE, MF_FRIEND), + !linetarget)) + slope = P_AimLineAttack(player->mo, angle, MELEERANGE, 0); + + P_LineAttack(player->mo, angle, MELEERANGE, slope, damage); + + if (!linetarget) + return; + + S_StartSound(player->mo, sfx_punch); + + // turn to face target + + player->mo->angle = R_PointToAngle2(player->mo->x, player->mo->y, + linetarget->x, linetarget->y); + R_SmoothPlaying_Reset(player); // e6y +} + +// +// A_Saw +// + +void A_Saw(player_t *player, pspdef_t *psp) +{ + int slope, damage = 2*(P_Random(pr_saw)%10+1); + angle_t angle = player->mo->angle; + // killough 5/5/98: remove dependence on order of evaluation: + int t = P_Random(pr_saw); + angle += (t - P_Random(pr_saw))<<18; + + /* Use meleerange + 1 so that the puff doesn't skip the flash + * killough 8/2/98: make autoaiming prefer enemies */ + if (!mbf_features || + (slope = P_AimLineAttack(player->mo, angle, MELEERANGE+1, MF_FRIEND), + !linetarget)) + slope = P_AimLineAttack(player->mo, angle, MELEERANGE+1, 0); + + P_LineAttack(player->mo, angle, MELEERANGE+1, slope, damage); + + if (!linetarget) + { + S_StartSound(player->mo, sfx_sawful); + return; + } + + S_StartSound(player->mo, sfx_sawhit); + + // turn to face target + angle = R_PointToAngle2(player->mo->x, player->mo->y, + linetarget->x, linetarget->y); + + if (angle - player->mo->angle > ANG180) { + if (angle - player->mo->angle < -ANG90/20) + player->mo->angle = angle + ANG90/21; + else + player->mo->angle -= ANG90/20; + } else { + if (angle - player->mo->angle > ANG90/20) + player->mo->angle = angle - ANG90/21; + else + player->mo->angle += ANG90/20; + } + + player->mo->flags |= MF_JUSTATTACKED; + R_SmoothPlaying_Reset(player); // e6y +} + +// +// A_FireMissile +// + +void A_FireMissile(player_t *player, pspdef_t *psp) +{ + player->ammo[weaponinfo[player->readyweapon].ammo]--; + P_SpawnPlayerMissile(player->mo, MT_ROCKET); +} + +// +// A_FireBFG +// + +void A_FireBFG(player_t *player, pspdef_t *psp) +{ + player->ammo[weaponinfo[player->readyweapon].ammo] -= BFGCELLS; + P_SpawnPlayerMissile(player->mo, MT_BFG); +} + +// +// A_FirePlasma +// + +void A_FirePlasma(player_t *player, pspdef_t *psp) +{ + player->ammo[weaponinfo[player->readyweapon].ammo]--; + + A_FireSomething(player,P_Random(pr_plasma)&1); // phares + P_SpawnPlayerMissile(player->mo, MT_PLASMA); +} + +// +// P_BulletSlope +// Sets a slope so a near miss is at aproximately +// the height of the intended target +// + +static fixed_t bulletslope; + +static void P_BulletSlope(mobj_t *mo) +{ + angle_t an = mo->angle; // see which target is to be aimed at + + /* killough 8/2/98: make autoaiming prefer enemies */ + uint_64_t mask = mbf_features ? MF_FRIEND : 0; + + do + { + bulletslope = P_AimLineAttack(mo, an, 16*64*FRACUNIT, mask); + if (!linetarget) + bulletslope = P_AimLineAttack(mo, an += 1<<26, 16*64*FRACUNIT, mask); + if (!linetarget) + bulletslope = P_AimLineAttack(mo, an -= 2<<26, 16*64*FRACUNIT, mask); + } + while (mask && (mask=0, !linetarget)); /* killough 8/2/98 */ +} + +// +// P_GunShot +// + +static void P_GunShot(mobj_t *mo, boolean accurate) +{ + int damage = 5*(P_Random(pr_gunshot)%3+1); + angle_t angle = mo->angle; + + if (!accurate) + { // killough 5/5/98: remove dependence on order of evaluation: + int t = P_Random(pr_misfire); + angle += (t - P_Random(pr_misfire))<<18; + } + + P_LineAttack(mo, angle, MISSILERANGE, bulletslope, damage); +} + +// +// A_FirePistol +// + +void A_FirePistol(player_t *player, pspdef_t *psp) +{ + S_StartSound(player->mo, sfx_pistol); + + P_SetMobjState(player->mo, S_PLAY_ATK2); + player->ammo[weaponinfo[player->readyweapon].ammo]--; + + A_FireSomething(player,0); // phares + P_BulletSlope(player->mo); + P_GunShot(player->mo, !player->refire); +} + +// +// A_FireShotgun +// + +void A_FireShotgun(player_t *player, pspdef_t *psp) +{ + int i; + + S_StartSound(player->mo, sfx_shotgn); + P_SetMobjState(player->mo, S_PLAY_ATK2); + + player->ammo[weaponinfo[player->readyweapon].ammo]--; + + A_FireSomething(player,0); // phares + + P_BulletSlope(player->mo); + + for (i=0; i<7; i++) + P_GunShot(player->mo, false); +} + +// +// A_FireShotgun2 +// + +void A_FireShotgun2(player_t *player, pspdef_t *psp) +{ + int i; + + S_StartSound(player->mo, sfx_dshtgn); + P_SetMobjState(player->mo, S_PLAY_ATK2); + player->ammo[weaponinfo[player->readyweapon].ammo] -= 2; + + A_FireSomething(player,0); // phares + + P_BulletSlope(player->mo); + + for (i=0; i<20; i++) + { + int damage = 5*(P_Random(pr_shotgun)%3+1); + angle_t angle = player->mo->angle; + // killough 5/5/98: remove dependence on order of evaluation: + int t = P_Random(pr_shotgun); + angle += (t - P_Random(pr_shotgun))<<19; + t = P_Random(pr_shotgun); + P_LineAttack(player->mo, angle, MISSILERANGE, bulletslope + + ((t - P_Random(pr_shotgun))<<5), damage); + } +} + +// +// A_FireCGun +// + +void A_FireCGun(player_t *player, pspdef_t *psp) +{ + if (player->ammo[weaponinfo[player->readyweapon].ammo] || comp[comp_sound]) + S_StartSound(player->mo, sfx_pistol); + + if (!player->ammo[weaponinfo[player->readyweapon].ammo]) + return; + + P_SetMobjState(player->mo, S_PLAY_ATK2); + player->ammo[weaponinfo[player->readyweapon].ammo]--; + + A_FireSomething(player,psp->state - &states[S_CHAIN1]); // phares + + P_BulletSlope(player->mo); + + P_GunShot(player->mo, !player->refire); +} + +void A_Light0(player_t *player, pspdef_t *psp) +{ + player->extralight = 0; +} + +void A_Light1 (player_t *player, pspdef_t *psp) +{ + player->extralight = 1; +} + +void A_Light2 (player_t *player, pspdef_t *psp) +{ + player->extralight = 2; +} + +// +// A_BFGSpray +// Spawn a BFG explosion on every monster in view +// + +void A_BFGSpray(mobj_t *mo) +{ + int i; + + for (i=0 ; i<40 ; i++) // offset angles from its attack angle + { + int j, damage; + angle_t an = mo->angle - ANG90/2 + ANG90/40*i; + + // mo->target is the originator (player) of the missile + + // killough 8/2/98: make autoaiming prefer enemies + if (!mbf_features || + (P_AimLineAttack(mo->target, an, 16*64*FRACUNIT, MF_FRIEND), + !linetarget)) + P_AimLineAttack(mo->target, an, 16*64*FRACUNIT, 0); + + if (!linetarget) + continue; + + P_SpawnMobj(linetarget->x, linetarget->y, + linetarget->z + (linetarget->height>>2), MT_EXTRABFG); + + for (damage=j=0; j<15; j++) + damage += (P_Random(pr_bfg)&7) + 1; + + P_DamageMobj(linetarget, mo->target, mo->target, damage); + } +} + +// +// A_BFGsound +// + +void A_BFGsound(player_t *player, pspdef_t *psp) +{ + S_StartSound(player->mo, sfx_bfg); +} + +// +// P_SetupPsprites +// Called at start of level for each player. +// + +void P_SetupPsprites(player_t *player) +{ + int i; + + // remove all psprites + for (i=0; ipsprites[i].state = NULL; + + // spawn the gun + player->pendingweapon = player->readyweapon; + P_BringUpWeapon(player); +} + +// +// P_MovePsprites +// Called every tic by player thinking routine. +// + +void P_MovePsprites(player_t *player) +{ + pspdef_t *psp = player->psprites; + int i; + + // a null state means not active + // drop tic count and possibly change state + // a -1 tic count never changes + + for (i=0; istate && psp->tics != -1 && !--psp->tics) + P_SetPsprite(player, i, psp->state->nextstate); + + player->psprites[ps_flash].sx = player->psprites[ps_weapon].sx; + player->psprites[ps_flash].sy = player->psprites[ps_weapon].sy; +} diff --git a/components/doom/prboom/p_pspr.h b/components/doom/prboom/p_pspr.h new file mode 100644 index 0000000..46d9652 --- /dev/null +++ b/components/doom/prboom/p_pspr.h @@ -0,0 +1,119 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Sprite animation. + * + *-----------------------------------------------------------------------------*/ + +#ifndef __P_PSPR__ +#define __P_PSPR__ + +/* Basic data types. + * Needs fixed point, and BAM angles. */ + +#include "m_fixed.h" +#include "tables.h" + +/* Needs to include the precompiled sprite animation tables. + * + * Header generated by multigen utility. + * This includes all the data for thing animation, + * i.e. the Thing Atrributes table and the Frame Sequence table. + */ + +#include "info.h" + +#ifdef __GNUG__ +#pragma interface +#endif + +/* + * Frame flags: + * handles maximum brightness (torches, muzzle flare, light sources) + */ + +#define FF_FULLBRIGHT 0x8000 /* flag in thing->frame */ +#define FF_FRAMEMASK 0x7fff + +/* + * Overlay psprites are scaled shapes + * drawn directly on the view screen, + * coordinates are given for a 320*200 view screen. + */ + +typedef enum +{ + ps_weapon, + ps_flash, + NUMPSPRITES +} psprnum_t; + +typedef struct +{ + state_t *state; /* a NULL state means not active */ + int tics; + fixed_t sx; + fixed_t sy; +} pspdef_t; + +extern int weapon_preferences[2][NUMWEAPONS+1]; /* killough 5/2/98 */ +int P_WeaponPreferred(int w1, int w2); + +struct player_s; +int P_SwitchWeapon(struct player_s *player); +boolean P_CheckAmmo(struct player_s *player); +void P_SetupPsprites(struct player_s *curplayer); +void P_MovePsprites(struct player_s *curplayer); +void P_DropWeapon(struct player_s *player); + +void A_Light0(); +void A_WeaponReady(); +void A_Lower(); +void A_Raise(); +void A_Punch(); +void A_ReFire(); +void A_FirePistol(); +void A_Light1(); +void A_FireShotgun(); +void A_Light2(); +void A_FireShotgun2(); +void A_CheckReload(); +void A_OpenShotgun2(); +void A_LoadShotgun2(); +void A_CloseShotgun2(); +void A_FireCGun(); +void A_GunFlash(); +void A_FireMissile(); +void A_Saw(); +void A_FirePlasma(); +void A_BFGsound(); +void A_FireBFG(); +void A_BFGSpray(); + +#endif diff --git a/components/doom/prboom/p_saveg.c b/components/doom/prboom/p_saveg.c new file mode 100644 index 0000000..7e3d63b --- /dev/null +++ b/components/doom/prboom/p_saveg.c @@ -0,0 +1,1029 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Archiving: SaveGame I/O. + * + *-----------------------------------------------------------------------------*/ + +#include "doomstat.h" +#include "r_main.h" +#include "p_maputl.h" +#include "p_spec.h" +#include "p_tick.h" +#include "p_saveg.h" +#include "m_random.h" +#include "am_map.h" +#include "p_enemy.h" +#include "lprintf.h" + +byte *save_p; + +// Pads save_p to a 4-byte boundary +// so that the load/save works on SGI&Gecko. +#define PADSAVEP() do { save_p += (4 - ((int) save_p & 3)) & 3; } while (0) +// +// P_ArchivePlayers +// +void P_ArchivePlayers (void) +{ + int i; + + CheckSaveGame(sizeof(player_t) * MAXPLAYERS); // killough + for (i=0 ; ipsprites[j].state) + dest->psprites[j].state = + (state_t *)(dest->psprites[j].state-states); + } +} + +// +// P_UnArchivePlayers +// +void P_UnArchivePlayers (void) +{ + int i; + + for (i=0 ; ifloorheight + sizeof sec->ceilingheight) + * numsectors + sizeof(short)*3*numlines + 4; + + for (i=0; itextureoffset + sizeof si->rowoffset; + if (lines[i].sidenum[1] != NO_INDEX) + size += + sizeof(short)*3 + sizeof si->textureoffset + sizeof si->rowoffset; + } + + CheckSaveGame(size); // killough + + PADSAVEP(); // killough 3/22/98 + + put = (short *)save_p; + + // do sectors + for (i=0, sec = sectors ; ifloorheight, sizeof sec->floorheight); + put = (void *)((char *) put + sizeof sec->floorheight); + memcpy(put, &sec->ceilingheight, sizeof sec->ceilingheight); + put = (void *)((char *) put + sizeof sec->ceilingheight); + + *put++ = sec->floorpic; + *put++ = sec->ceilingpic; + *put++ = sec->lightlevel; + *put++ = sec->special; // needed? yes -- transfer types + *put++ = sec->tag; // needed? need them -- killough + } + + // do lines + for (i=0, li = lines ; iflags; + *put++ = li->special; + *put++ = li->tag; + + for (j=0; j<2; j++) + if (li->sidenum[j] != NO_INDEX) + { + si = &sides[li->sidenum[j]]; + + // killough 10/98: save full sidedef offsets, + // preserving fractional scroll offsets + + memcpy(put, &si->textureoffset, sizeof si->textureoffset); + put = (void *)((char *) put + sizeof si->textureoffset); + memcpy(put, &si->rowoffset, sizeof si->rowoffset); + put = (void *)((char *) put + sizeof si->rowoffset); + + *put++ = si->toptexture; + *put++ = si->bottomtexture; + *put++ = si->midtexture; + } + } + save_p = (byte *) put; +} + + + +// +// P_UnArchiveWorld +// +void P_UnArchiveWorld (void) +{ + int i; + sector_t *sec; + line_t *li; + const short *get; + + PADSAVEP(); // killough 3/22/98 + + get = (short *) save_p; + + // do sectors + for (i=0, sec = sectors ; ifloorheight, get, sizeof sec->floorheight); + get = (void *)((char *) get + sizeof sec->floorheight); + memcpy(&sec->ceilingheight, get, sizeof sec->ceilingheight); + get = (void *)((char *) get + sizeof sec->ceilingheight); + + sec->floorpic = *get++; + sec->ceilingpic = *get++; + sec->lightlevel = *get++; + sec->special = *get++; + sec->tag = *get++; + sec->ceilingdata = 0; //jff 2/22/98 now three thinker fields, not two + sec->floordata = 0; + sec->lightingdata = 0; + sec->soundtarget = 0; + } + + // do lines + for (i=0, li = lines ; iflags = *get++; + li->special = *get++; + li->tag = *get++; + for (j=0 ; j<2 ; j++) + if (li->sidenum[j] != NO_INDEX) + { + side_t *si = &sides[li->sidenum[j]]; + + // killough 10/98: load full sidedef offsets, including fractions + + memcpy(&si->textureoffset, get, sizeof si->textureoffset); + get = (void *)((char *) get + sizeof si->textureoffset); + memcpy(&si->rowoffset, get, sizeof si->rowoffset); + get = (void *)((char *) get + sizeof si->rowoffset); + + si->toptexture = *get++; + si->bottomtexture = *get++; + si->midtexture = *get++; + } + } + save_p = (byte *) get; +} + +// +// Thinkers +// + +typedef enum { + tc_end, + tc_mobj +} thinkerclass_t; + +// phares 9/13/98: Moved this code outside of P_ArchiveThinkers so the +// thinker indices could be used by the code that saves sector info. + +static int number_of_thinkers; + +void P_ThinkerToIndex(void) + { + thinker_t *th; + + // killough 2/14/98: + // count the number of thinkers, and mark each one with its index, using + // the prev field as a placeholder, since it can be restored later. + + number_of_thinkers = 0; + for (th = thinkercap.next ; th != &thinkercap ; th=th->next) + if (th->function == P_MobjThinker) + th->prev = (thinker_t *) ++number_of_thinkers; + } + +// phares 9/13/98: Moved this code outside of P_ArchiveThinkers so the +// thinker indices could be used by the code that saves sector info. + +void P_IndexToThinker(void) + { + // killough 2/14/98: restore prev pointers + thinker_t *th; + thinker_t *prev = &thinkercap; + + for (th = thinkercap.next ; th != &thinkercap ; prev=th, th=th->next) + th->prev = prev; + } + +// +// P_ArchiveThinkers +// +// 2/14/98 killough: substantially modified to fix savegame bugs + +void P_ArchiveThinkers (void) +{ + thinker_t *th; + + CheckSaveGame(sizeof brain); // killough 3/26/98: Save boss brain state + memcpy(save_p, &brain, sizeof brain); + save_p += sizeof brain; + + /* check that enough room is available in savegame buffer + * - killough 2/14/98 + * cph - use number_of_thinkers saved by P_ThinkerToIndex above + * size per object is sizeof(mobj_t) - 2*sizeof(void*) - 4*sizeof(fixed_t) plus + * padded type (4) plus 5*sizeof(void*), i.e. sizeof(mobj_t) + 4 + + * 3*sizeof(void*) + * cph - +1 for the tc_end + */ + CheckSaveGame(number_of_thinkers*(sizeof(mobj_t)-3*sizeof(fixed_t)+4+3*sizeof(void*)) +1); + + // save off the current thinkers + for (th = thinkercap.next ; th != &thinkercap ; th=th->next) + if (th->function == P_MobjThinker) + { + mobj_t *mobj; + + *save_p++ = tc_mobj; + PADSAVEP(); + mobj = (mobj_t *)save_p; + /* cph 2006/07/30 - + * The end of mobj_t changed from + * boolean invisible; + * mobj_t* lastenemy; + * mobj_t* above_monster; + * mobj_t* below_monster; + * void* touching_sectorlist; + * to + * mobj_t* lastenemy; + * void* touching_sectorlist; + * fixed_t PrevX, PrevY, PrevZ, padding; + * at prboom 2.4.4. There is code here to preserve the savegame format. + * + * touching_sectorlist is reconstructed anyway, so we now leave off the + * last 2 words of mobj_t, write 5 words of 0 and then write lastenemy + * into the second of these. + */ + memcpy (mobj, th, sizeof(*mobj) - 2*sizeof(void*)); + save_p += sizeof(*mobj) - 2*sizeof(void*) - 4*sizeof(fixed_t); + memset (save_p, 0, 5*sizeof(void*)); + mobj->state = (state_t *)(mobj->state - states); + + // killough 2/14/98: convert pointers into indices. + // Fixes many savegame problems, by properly saving + // target and tracer fields. Note: we store NULL if + // the thinker pointed to by these fields is not a + // mobj thinker. + + if (mobj->target) + mobj->target = mobj->target->thinker.function == + P_MobjThinker ? + (mobj_t *) mobj->target->thinker.prev : NULL; + + if (mobj->tracer) + mobj->tracer = mobj->tracer->thinker.function == + P_MobjThinker ? + (mobj_t *) mobj->tracer->thinker.prev : NULL; + + // killough 2/14/98: new field: save last known enemy. Prevents + // monsters from going to sleep after killing monsters and not + // seeing player anymore. + + if (((mobj_t*)th)->lastenemy && ((mobj_t*)th)->lastenemy->thinker.function == P_MobjThinker) { + memcpy (save_p + sizeof(void*), &(((mobj_t*)th)->lastenemy->thinker.prev), sizeof(void*)); + } + + // killough 2/14/98: end changes + + save_p += 5*sizeof(void*); + + if (mobj->player) + mobj->player = (player_t *)((mobj->player-players) + 1); + } + + // add a terminating marker + *save_p++ = tc_end; + + // killough 9/14/98: save soundtargets + { + int i; + CheckSaveGame(numsectors * sizeof(mobj_t *)); // killough 9/14/98 + for (i = 0; i < numsectors; i++) + { + mobj_t *target = sectors[i].soundtarget; + // Fix crash on reload when a soundtarget points to a removed corpse + // (prboom bug #1590350) + if (target && target->thinker.function == P_MobjThinker) + target = (mobj_t *) target->thinker.prev; + else + target = NULL; + memcpy(save_p, &target, sizeof target); + save_p += sizeof target; + } + } +} + +/* + * killough 11/98 + * + * Same as P_SetTarget() in p_tick.c, except that the target is nullified + * first, so that no old target's reference count is decreased (when loading + * savegames, old targets are indices, not really pointers to targets). + */ + +static void P_SetNewTarget(mobj_t **mop, mobj_t *targ) +{ + *mop = NULL; + P_SetTarget(mop, targ); +} + +// +// P_UnArchiveThinkers +// +// 2/14/98 killough: substantially modified to fix savegame bugs +// + +// savegame file stores ints in the corresponding * field; this function +// safely casts them back to int. +static int P_GetMobj(mobj_t* mi, size_t s) +{ + size_t i = (size_t)mi; + if (i >= s) I_Error("Corrupt savegame"); + return i; +} + +void P_UnArchiveThinkers (void) +{ + thinker_t *th; + mobj_t **mobj_p; // killough 2/14/98: Translation table + size_t size; // killough 2/14/98: size of or index into table + + totallive = 0; + // killough 3/26/98: Load boss brain state + memcpy(&brain, save_p, sizeof brain); + save_p += sizeof brain; + + // remove all the current thinkers + for (th = thinkercap.next; th != &thinkercap; ) + { + thinker_t *next = th->next; + if (th->function == P_MobjThinker) + P_RemoveMobj ((mobj_t *) th); + else + Z_Free (th); + th = next; + } + P_InitThinkers (); + + // killough 2/14/98: count number of thinkers by skipping through them + { + byte *sp = save_p; // save pointer and skip header + for (size = 1; *save_p++ == tc_mobj; size++) // killough 2/14/98 + { // skip all entries, adding up count + PADSAVEP(); + /* cph 2006/07/30 - see comment below for change in layout of mobj_t */ + save_p += sizeof(mobj_t)+3*sizeof(void*)-4*sizeof(fixed_t); + } + + if (*--save_p != tc_end) + I_Error ("P_UnArchiveThinkers: Unknown tclass %i in savegame", *save_p); + + // first table entry special: 0 maps to NULL + *(mobj_p = malloc(size * sizeof *mobj_p)) = 0; // table of pointers + save_p = sp; // restore save pointer + } + + // read in saved thinkers + for (size = 1; *save_p++ == tc_mobj; size++) // killough 2/14/98 + { + mobj_t *mobj = Z_Malloc(sizeof(mobj_t), PU_LEVEL, NULL); + + // killough 2/14/98 -- insert pointers to thinkers into table, in order: + mobj_p[size] = mobj; + + PADSAVEP(); + /* cph 2006/07/30 - + * The end of mobj_t changed from + * boolean invisible; + * mobj_t* lastenemy; + * mobj_t* above_monster; + * mobj_t* below_monster; + * void* touching_sectorlist; + * to + * mobj_t* lastenemy; + * void* touching_sectorlist; + * fixed_t PrevX, PrevY, PrevZ; + * at prboom 2.4.4. There is code here to preserve the savegame format. + * + * touching_sectorlist is reconstructed anyway, so we now read in all + * but the last 5 words from the savegame (filling all but the last 2 + * fields of our current mobj_t. We then pull lastenemy from the 2nd of + * the 5 leftover words, and skip the others. + */ + memcpy (mobj, save_p, sizeof(mobj_t)-2*sizeof(void*)-4*sizeof(fixed_t)); + save_p += sizeof(mobj_t)-sizeof(void*)-4*sizeof(fixed_t); + memcpy (&(mobj->lastenemy), save_p, sizeof(void*)); + save_p += 4*sizeof(void*); + mobj->state = states + (int) mobj->state; + + if (mobj->player) + (mobj->player = &players[(int) mobj->player - 1]) -> mo = mobj; + + P_SetThingPosition (mobj); + mobj->info = &mobjinfo[mobj->type]; + + // killough 2/28/98: + // Fix for falling down into a wall after savegame loaded: + // mobj->floorz = mobj->subsector->sector->floorheight; + // mobj->ceilingz = mobj->subsector->sector->ceilingheight; + + mobj->thinker.function = P_MobjThinker; + P_AddThinker (&mobj->thinker); + + if (!((mobj->flags ^ MF_COUNTKILL) & (MF_FRIEND | MF_COUNTKILL | MF_CORPSE))) + totallive++; + } + + // killough 2/14/98: adjust target and tracer fields, plus + // lastenemy field, to correctly point to mobj thinkers. + // NULL entries automatically handled by first table entry. + // + // killough 11/98: use P_SetNewTarget() to set fields + + for (th = thinkercap.next ; th != &thinkercap ; th=th->next) + { + P_SetNewTarget(&((mobj_t *) th)->target, + mobj_p[P_GetMobj(((mobj_t *)th)->target,size)]); + + P_SetNewTarget(&((mobj_t *) th)->tracer, + mobj_p[P_GetMobj(((mobj_t *)th)->tracer,size)]); + + P_SetNewTarget(&((mobj_t *) th)->lastenemy, + mobj_p[P_GetMobj(((mobj_t *)th)->lastenemy,size)]); + } + + { // killough 9/14/98: restore soundtargets + int i; + for (i = 0; i < numsectors; i++) + { + mobj_t *target; + memcpy(&target, save_p, sizeof target); + save_p += sizeof target; + // Must verify soundtarget. See P_ArchiveThinkers. + P_SetNewTarget(§ors[i].soundtarget, mobj_p[P_GetMobj(target,size)]); + } + } + + free(mobj_p); // free translation table + + // killough 3/26/98: Spawn icon landings: + if (gamemode == commercial) + P_SpawnBrainTargets(); +} + +// +// P_ArchiveSpecials +// +enum { + tc_ceiling, + tc_door, + tc_floor, + tc_plat, + tc_flash, + tc_strobe, + tc_glow, + tc_elevator, //jff 2/22/98 new elevator type thinker + tc_scroll, // killough 3/7/98: new scroll effect thinker + tc_pusher, // phares 3/22/98: new push/pull effect thinker + tc_flicker, // killough 10/4/98 + tc_endspecials +} specials_e; + +// +// Things to handle: +// +// T_MoveCeiling, (ceiling_t: sector_t * swizzle), - active list +// T_VerticalDoor, (vldoor_t: sector_t * swizzle), +// T_MoveFloor, (floormove_t: sector_t * swizzle), +// T_LightFlash, (lightflash_t: sector_t * swizzle), +// T_StrobeFlash, (strobe_t: sector_t *), +// T_Glow, (glow_t: sector_t *), +// T_PlatRaise, (plat_t: sector_t *), - active list +// T_MoveElevator, (plat_t: sector_t *), - active list // jff 2/22/98 +// T_Scroll // killough 3/7/98 +// T_Pusher // phares 3/22/98 +// T_FireFlicker // killough 10/4/98 +// + +void P_ArchiveSpecials (void) +{ + thinker_t *th; + size_t size = 0; // killough + + // save off the current thinkers (memory size calculation -- killough) + + for (th = thinkercap.next ; th != &thinkercap ; th=th->next) + if (!th->function) + { + platlist_t *pl; + ceilinglist_t *cl; //jff 2/22/98 need this for ceilings too now + for (pl=activeplats; pl; pl=pl->next) + if (pl->plat == (plat_t *) th) // killough 2/14/98 + { + size += 4+sizeof(plat_t); + goto end; + } + for (cl=activeceilings; cl; cl=cl->next) // search for activeceiling + if (cl->ceiling == (ceiling_t *) th) //jff 2/22/98 + { + size += 4+sizeof(ceiling_t); + goto end; + } + end:; + } + else + size += + th->function==T_MoveCeiling ? 4+sizeof(ceiling_t) : + th->function==T_VerticalDoor ? 4+sizeof(vldoor_t) : + th->function==T_MoveFloor ? 4+sizeof(floormove_t): + th->function==T_PlatRaise ? 4+sizeof(plat_t) : + th->function==T_LightFlash ? 4+sizeof(lightflash_t): + th->function==T_StrobeFlash ? 4+sizeof(strobe_t) : + th->function==T_Glow ? 4+sizeof(glow_t) : + th->function==T_MoveElevator ? 4+sizeof(elevator_t): + th->function==T_Scroll ? 4+sizeof(scroll_t) : + th->function==T_Pusher ? 4+sizeof(pusher_t) : + th->function==T_FireFlicker? 4+sizeof(fireflicker_t) : + 0; + + CheckSaveGame(size + 1); // killough; cph: +1 for the tc_endspecials + + // save off the current thinkers + for (th=thinkercap.next; th!=&thinkercap; th=th->next) + { + if (!th->function) + { + platlist_t *pl; + ceilinglist_t *cl; //jff 2/22/98 add iter variable for ceilings + + // killough 2/8/98: fix plat original height bug. + // Since acv==NULL, this could be a plat in stasis. + // so check the active plats list, and save this + // plat (jff: or ceiling) even if it is in stasis. + + for (pl=activeplats; pl; pl=pl->next) + if (pl->plat == (plat_t *) th) // killough 2/14/98 + goto plat; + + for (cl=activeceilings; cl; cl=cl->next) + if (cl->ceiling == (ceiling_t *) th) //jff 2/22/98 + goto ceiling; + + continue; + } + + if (th->function == T_MoveCeiling) + { + ceiling_t *ceiling; + ceiling: // killough 2/14/98 + *save_p++ = tc_ceiling; + PADSAVEP(); + ceiling = (ceiling_t *)save_p; + memcpy (ceiling, th, sizeof(*ceiling)); + save_p += sizeof(*ceiling); + ceiling->sector = (sector_t *)(ceiling->sector - sectors); + continue; + } + + if (th->function == T_VerticalDoor) + { + vldoor_t *door; + *save_p++ = tc_door; + PADSAVEP(); + door = (vldoor_t *) save_p; + memcpy (door, th, sizeof *door); + save_p += sizeof(*door); + door->sector = (sector_t *)(door->sector - sectors); + //jff 1/31/98 archive line remembered by door as well + door->line = (line_t *) (door->line ? door->line-lines : -1); + continue; + } + + if (th->function == T_MoveFloor) + { + floormove_t *floor; + *save_p++ = tc_floor; + PADSAVEP(); + floor = (floormove_t *)save_p; + memcpy (floor, th, sizeof(*floor)); + save_p += sizeof(*floor); + floor->sector = (sector_t *)(floor->sector - sectors); + continue; + } + + if (th->function == T_PlatRaise) + { + plat_t *plat; + plat: // killough 2/14/98: added fix for original plat height above + *save_p++ = tc_plat; + PADSAVEP(); + plat = (plat_t *)save_p; + memcpy (plat, th, sizeof(*plat)); + save_p += sizeof(*plat); + plat->sector = (sector_t *)(plat->sector - sectors); + continue; + } + + if (th->function == T_LightFlash) + { + lightflash_t *flash; + *save_p++ = tc_flash; + PADSAVEP(); + flash = (lightflash_t *)save_p; + memcpy (flash, th, sizeof(*flash)); + save_p += sizeof(*flash); + flash->sector = (sector_t *)(flash->sector - sectors); + continue; + } + + if (th->function == T_StrobeFlash) + { + strobe_t *strobe; + *save_p++ = tc_strobe; + PADSAVEP(); + strobe = (strobe_t *)save_p; + memcpy (strobe, th, sizeof(*strobe)); + save_p += sizeof(*strobe); + strobe->sector = (sector_t *)(strobe->sector - sectors); + continue; + } + + if (th->function == T_Glow) + { + glow_t *glow; + *save_p++ = tc_glow; + PADSAVEP(); + glow = (glow_t *)save_p; + memcpy (glow, th, sizeof(*glow)); + save_p += sizeof(*glow); + glow->sector = (sector_t *)(glow->sector - sectors); + continue; + } + + // killough 10/4/98: save flickers + if (th->function == T_FireFlicker) + { + fireflicker_t *flicker; + *save_p++ = tc_flicker; + PADSAVEP(); + flicker = (fireflicker_t *)save_p; + memcpy (flicker, th, sizeof(*flicker)); + save_p += sizeof(*flicker); + flicker->sector = (sector_t *)(flicker->sector - sectors); + continue; + } + + //jff 2/22/98 new case for elevators + if (th->function == T_MoveElevator) + { + elevator_t *elevator; //jff 2/22/98 + *save_p++ = tc_elevator; + PADSAVEP(); + elevator = (elevator_t *)save_p; + memcpy (elevator, th, sizeof(*elevator)); + save_p += sizeof(*elevator); + elevator->sector = (sector_t *)(elevator->sector - sectors); + continue; + } + + // killough 3/7/98: Scroll effect thinkers + if (th->function == T_Scroll) + { + *save_p++ = tc_scroll; + memcpy (save_p, th, sizeof(scroll_t)); + save_p += sizeof(scroll_t); + continue; + } + + // phares 3/22/98: Push/Pull effect thinkers + + if (th->function == T_Pusher) + { + *save_p++ = tc_pusher; + memcpy (save_p, th, sizeof(pusher_t)); + save_p += sizeof(pusher_t); + continue; + } + } + + // add a terminating marker + *save_p++ = tc_endspecials; +} + + +// +// P_UnArchiveSpecials +// +void P_UnArchiveSpecials (void) +{ + byte tclass; + + // read in saved thinkers + while ((tclass = *save_p++) != tc_endspecials) // killough 2/14/98 + switch (tclass) + { + case tc_ceiling: + PADSAVEP(); + { + ceiling_t *ceiling = Z_Malloc (sizeof(*ceiling), PU_LEVEL, NULL); + memcpy (ceiling, save_p, sizeof(*ceiling)); + save_p += sizeof(*ceiling); + ceiling->sector = §ors[(int)ceiling->sector]; + ceiling->sector->ceilingdata = ceiling; //jff 2/22/98 + + if (ceiling->thinker.function) + ceiling->thinker.function = T_MoveCeiling; + + P_AddThinker (&ceiling->thinker); + P_AddActiveCeiling(ceiling); + break; + } + + case tc_door: + PADSAVEP(); + { + vldoor_t *door = Z_Malloc (sizeof(*door), PU_LEVEL, NULL); + memcpy (door, save_p, sizeof(*door)); + save_p += sizeof(*door); + door->sector = §ors[(int)door->sector]; + + //jff 1/31/98 unarchive line remembered by door as well + door->line = (int)door->line!=-1? &lines[(int)door->line] : NULL; + + door->sector->ceilingdata = door; //jff 2/22/98 + door->thinker.function = T_VerticalDoor; + P_AddThinker (&door->thinker); + break; + } + + case tc_floor: + PADSAVEP(); + { + floormove_t *floor = Z_Malloc (sizeof(*floor), PU_LEVEL, NULL); + memcpy (floor, save_p, sizeof(*floor)); + save_p += sizeof(*floor); + floor->sector = §ors[(int)floor->sector]; + floor->sector->floordata = floor; //jff 2/22/98 + floor->thinker.function = T_MoveFloor; + P_AddThinker (&floor->thinker); + break; + } + + case tc_plat: + PADSAVEP(); + { + plat_t *plat = Z_Malloc (sizeof(*plat), PU_LEVEL, NULL); + memcpy (plat, save_p, sizeof(*plat)); + save_p += sizeof(*plat); + plat->sector = §ors[(int)plat->sector]; + plat->sector->floordata = plat; //jff 2/22/98 + + if (plat->thinker.function) + plat->thinker.function = T_PlatRaise; + + P_AddThinker (&plat->thinker); + P_AddActivePlat(plat); + break; + } + + case tc_flash: + PADSAVEP(); + { + lightflash_t *flash = Z_Malloc (sizeof(*flash), PU_LEVEL, NULL); + memcpy (flash, save_p, sizeof(*flash)); + save_p += sizeof(*flash); + flash->sector = §ors[(int)flash->sector]; + flash->thinker.function = T_LightFlash; + P_AddThinker (&flash->thinker); + break; + } + + case tc_strobe: + PADSAVEP(); + { + strobe_t *strobe = Z_Malloc (sizeof(*strobe), PU_LEVEL, NULL); + memcpy (strobe, save_p, sizeof(*strobe)); + save_p += sizeof(*strobe); + strobe->sector = §ors[(int)strobe->sector]; + strobe->thinker.function = T_StrobeFlash; + P_AddThinker (&strobe->thinker); + break; + } + + case tc_glow: + PADSAVEP(); + { + glow_t *glow = Z_Malloc (sizeof(*glow), PU_LEVEL, NULL); + memcpy (glow, save_p, sizeof(*glow)); + save_p += sizeof(*glow); + glow->sector = §ors[(int)glow->sector]; + glow->thinker.function = T_Glow; + P_AddThinker (&glow->thinker); + break; + } + + case tc_flicker: // killough 10/4/98 + PADSAVEP(); + { + fireflicker_t *flicker = Z_Malloc (sizeof(*flicker), PU_LEVEL, NULL); + memcpy (flicker, save_p, sizeof(*flicker)); + save_p += sizeof(*flicker); + flicker->sector = §ors[(int)flicker->sector]; + flicker->thinker.function = T_FireFlicker; + P_AddThinker (&flicker->thinker); + break; + } + + //jff 2/22/98 new case for elevators + case tc_elevator: + PADSAVEP(); + { + elevator_t *elevator = Z_Malloc (sizeof(*elevator), PU_LEVEL, NULL); + memcpy (elevator, save_p, sizeof(*elevator)); + save_p += sizeof(*elevator); + elevator->sector = §ors[(int)elevator->sector]; + elevator->sector->floordata = elevator; //jff 2/22/98 + elevator->sector->ceilingdata = elevator; //jff 2/22/98 + elevator->thinker.function = T_MoveElevator; + P_AddThinker (&elevator->thinker); + break; + } + + case tc_scroll: // killough 3/7/98: scroll effect thinkers + { + scroll_t *scroll = Z_Malloc (sizeof(scroll_t), PU_LEVEL, NULL); + memcpy (scroll, save_p, sizeof(scroll_t)); + save_p += sizeof(scroll_t); + scroll->thinker.function = T_Scroll; + P_AddThinker(&scroll->thinker); + break; + } + + case tc_pusher: // phares 3/22/98: new Push/Pull effect thinkers + { + pusher_t *pusher = Z_Malloc (sizeof(pusher_t), PU_LEVEL, NULL); + memcpy (pusher, save_p, sizeof(pusher_t)); + save_p += sizeof(pusher_t); + pusher->thinker.function = T_Pusher; + pusher->source = P_GetPushThing(pusher->affectee); + P_AddThinker(&pusher->thinker); + break; + } + + default: + I_Error("P_UnarchiveSpecials: Unknown tclass %i in savegame", tclass); + } +} + +// killough 2/16/98: save/restore random number generator state information + +void P_ArchiveRNG(void) +{ + CheckSaveGame(sizeof rng); + memcpy(save_p, &rng, sizeof rng); + save_p += sizeof rng; +} + +void P_UnArchiveRNG(void) +{ + memcpy(&rng, save_p, sizeof rng); + save_p += sizeof rng; +} + +// killough 2/22/98: Save/restore automap state +// killough 2/22/98: Save/restore automap state +void P_ArchiveMap(void) +{ + int zero = 0, one = 1; + CheckSaveGame(2 * sizeof zero + sizeof markpointnum + + markpointnum * sizeof *markpoints + + sizeof automapmode + sizeof one); + + memcpy(save_p, &automapmode, sizeof automapmode); + save_p += sizeof automapmode; + memcpy(save_p, &one, sizeof one); // CPhipps - used to be viewactive, now + save_p += sizeof one; // that's worked out locally by D_Display + memcpy(save_p, &zero, sizeof zero); // CPhipps - used to be followplayer + save_p += sizeof zero; // that is now part of automapmode + memcpy(save_p, &zero, sizeof zero); // CPhipps - used to be automap_grid, ditto + save_p += sizeof zero; + memcpy(save_p, &markpointnum, sizeof markpointnum); + save_p += sizeof markpointnum; + + if (markpointnum) + { + memcpy(save_p, markpoints, sizeof *markpoints * markpointnum); + save_p += markpointnum * sizeof *markpoints; + } +} + +void P_UnArchiveMap(void) +{ + int unused; + memcpy(&automapmode, save_p, sizeof automapmode); + save_p += sizeof automapmode; + memcpy(&unused, save_p, sizeof unused); + save_p += sizeof unused; + memcpy(&unused, save_p, sizeof unused); + save_p += sizeof unused; + memcpy(&unused, save_p, sizeof unused); + save_p += sizeof unused; + + if (automapmode & am_active) + AM_Start(); + + memcpy(&markpointnum, save_p, sizeof markpointnum); + save_p += sizeof markpointnum; + + if (markpointnum) + { + while (markpointnum >= markpointnum_max) + markpoints = realloc(markpoints, sizeof *markpoints * + (markpointnum_max = markpointnum_max ? markpointnum_max*2 : 16)); + memcpy(markpoints, save_p, markpointnum * sizeof *markpoints); + save_p += markpointnum * sizeof *markpoints; + } +} + diff --git a/components/doom/prboom/p_saveg.h b/components/doom/prboom/p_saveg.h new file mode 100644 index 0000000..dd986cf --- /dev/null +++ b/components/doom/prboom/p_saveg.h @@ -0,0 +1,66 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Savegame I/O, archiving, persistence. + * + *-----------------------------------------------------------------------------*/ + +#ifndef __P_SAVEG__ +#define __P_SAVEG__ + +#ifdef __GNUG__ +#pragma interface +#endif + +/* Persistent storage/archiving. + * These are the load / save game routines. */ +void P_ArchivePlayers(void); +void P_UnArchivePlayers(void); +void P_ArchiveWorld(void); +void P_UnArchiveWorld(void); +void P_ArchiveThinkers(void); +void P_UnArchiveThinkers(void); +void P_ArchiveSpecials(void); +void P_UnArchiveSpecials(void); +void P_ThinkerToIndex(void); /* phares 9/13/98: save soundtarget in savegame */ +void P_IndexToThinker(void); /* phares 9/13/98: save soundtarget in savegame */ + +/* 1/18/98 killough: add RNG info to savegame */ +void P_ArchiveRNG(void); +void P_UnArchiveRNG(void); + +/* 2/21/98 killough: add automap info to savegame */ +void P_ArchiveMap(void); +void P_UnArchiveMap(void); + +extern byte *save_p; +void CheckSaveGame(size_t,const char*, int); /* killough */ +#define CheckSaveGame(a) (CheckSaveGame)(a, __FILE__, __LINE__) + +#endif diff --git a/components/doom/prboom/p_setup.c b/components/doom/prboom/p_setup.c new file mode 100644 index 0000000..8fbcd7f --- /dev/null +++ b/components/doom/prboom/p_setup.c @@ -0,0 +1,1654 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Do all the WAD I/O, get map description, + * set up initial state and misc. LUTs. + * + *-----------------------------------------------------------------------------*/ + +#include + +#include "doomstat.h" +#include "m_bbox.h" +#include "m_argv.h" +#include "g_game.h" +#include "w_wad.h" +#include "r_main.h" +#include "r_things.h" +#include "p_maputl.h" +#include "p_map.h" +#include "p_setup.h" +#include "p_spec.h" +#include "p_tick.h" +#include "p_enemy.h" +#include "s_sound.h" +#include "lprintf.h" //jff 10/6/98 for debug outputs +#include "v_video.h" +#include "r_demo.h" +#include "r_fps.h" + +// +// MAP related Lookup tables. +// Store VERTEXES, LINEDEFS, SIDEDEFS, etc. +// + +int numvertexes; +vertex_t *vertexes; + +int numsegs; +seg_t *segs; + +int numsectors; +sector_t *sectors; + +int numsubsectors; +subsector_t *subsectors; + +int numnodes; +node_t *nodes; + +int numlines; +line_t *lines; + +int numsides; +side_t *sides; + + +//////////////////////////////////////////////////////////////////////////////////////////// +// figgi 08/21/00 -- constants and globals for glBsp support +#define gNd2 0x32644E67 // figgi -- suppport for new GL_VERT format v2.0 +#define gNd3 0x33644E67 +#define gNd4 0x34644E67 +#define gNd5 0x35644E67 +#define ZNOD 0x444F4E5A +#define ZGLN 0x4E4C475A +#define GL_VERT_OFFSET 4 + +static int firstglvertex = 0; +static int nodesVersion = 0; + +// figgi 08/21/00 -- glSegs +typedef struct +{ + unsigned short v1; // start vertex (16 bit) + unsigned short v2; // end vertex (16 bit) + unsigned short linedef; // linedef, or -1 for minisegs + short side; // side on linedef: 0 for right, 1 for left + unsigned short partner; // corresponding partner seg, or -1 on one-sided walls +} glseg_t; + +// fixed 32 bit gl_vert format v2.0+ (glBsp 1.91) +typedef struct +{ + fixed_t x,y; +} mapglvertex_t; + +enum +{ + ML_GL_LABEL=0, // A separator name, GL_ExMx or GL_MAPxx + ML_GL_VERTS, // Extra Vertices + ML_GL_SEGS, // Segs, from linedefs & minisegs + ML_GL_SSECT, // SubSectors, list of segs + ML_GL_NODES // GL BSP nodes +}; +//////////////////////////////////////////////////////////////////////////////////////////// + + +// BLOCKMAP +// Created from axis aligned bounding box +// of the map, a rectangular array of +// blocks of size ... +// Used to speed up collision detection +// by spatial subdivision in 2D. +// +// Blockmap size. + +int bmapwidth, bmapheight; // size in mapblocks + +// killough 3/1/98: remove blockmap limit internally: +long *blockmap; // was short -- killough + +// offsets in blockmap are from here +long *blockmaplump; // was short -- killough + +fixed_t bmaporgx, bmaporgy; // origin of block map + +mobj_t **blocklinks; // for thing chains + +// +// REJECT +// For fast sight rejection. +// Speeds up enemy AI by skipping detailed +// LineOf Sight calculation. +// Without the special effect, this could +// be used as a PVS lookup as well. +// + +static int rejectlump = -1;// cph - store reject lump num if cached +const byte *rejectmatrix; // cph - const* + +// Maintain single and multi player starting spots. + +// 1/11/98 killough: Remove limit on deathmatch starts +mapthing_t *deathmatchstarts; // killough +size_t num_deathmatchstarts; // killough + +mapthing_t *deathmatch_p; +mapthing_t playerstarts[MAXPLAYERS]; + +// +// P_CheckForZDoomNodes +// + +static boolean P_CheckForZDoomNodes(int lumpnum, int gl_lumpnum) +{ + const void *data; + + data = W_CacheLumpNum(lumpnum + ML_NODES); + if (*(const int *)data == ZNOD) + I_Error("P_CheckForZDoomNodes: ZDoom nodes not supported yet"); + + data = W_CacheLumpNum(lumpnum + ML_SSECTORS); + if (*(const int *)data == ZGLN) + I_Error("P_CheckForZDoomNodes: ZDoom GL nodes not supported yet"); + + return false; +} + +// +// P_GetNodesVersion +// + +static void P_GetNodesVersion(int lumpnum, int gl_lumpnum) +{ + const void *data; + + data = W_CacheLumpNum(gl_lumpnum+ML_GL_VERTS); + if ( (gl_lumpnum > lumpnum) && (compatibility_level >= prboom_2_compatibility) ) { + if (*(const int *)data == gNd2) { + data = W_CacheLumpNum(gl_lumpnum+ML_GL_SEGS); + if (*(const int *)data == gNd3) { + nodesVersion = gNd3; + lprintf(LO_DEBUG, "P_GetNodesVersion: found version 3 nodes\n"); + I_Error("P_GetNodesVersion: version 3 nodes not supported\n"); + } else { + nodesVersion = gNd2; + lprintf(LO_DEBUG, "P_GetNodesVersion: found version 2 nodes\n"); + } + } + if (*(const int *)data == gNd4) { + nodesVersion = gNd4; + lprintf(LO_DEBUG, "P_GetNodesVersion: found version 4 nodes\n"); + I_Error("P_GetNodesVersion: version 4 nodes not supported\n"); + } + if (*(const int *)data == gNd5) { + nodesVersion = gNd5; + lprintf(LO_DEBUG, "P_GetNodesVersion: found version 5 nodes\n"); + I_Error("P_GetNodesVersion: version 5 nodes not supported\n"); + } + } else { + nodesVersion = 0; + lprintf(LO_DEBUG,"P_GetNodesVersion: using normal BSP nodes\n"); + if (P_CheckForZDoomNodes(lumpnum, gl_lumpnum)) + I_Error("P_GetNodesVersion: ZDoom nodes not supported yet"); + } +} + +// +// P_LoadVertexes +// +// killough 5/3/98: reformatted, cleaned up +// +static void P_LoadVertexes (int lump) +{ + const mapvertex_t *data; // cph - const + int i; + + // Determine number of lumps: + // total lump length / vertex record length. + numvertexes = W_LumpLength(lump) / sizeof(mapvertex_t); + + // Allocate zone memory for buffer. + vertexes = Z_Malloc(numvertexes*sizeof(vertex_t),PU_LEVEL,0); + + // Load data into cache. + // cph 2006/07/29 - cast to mapvertex_t here, making the loop below much neater + data = (const mapvertex_t *)W_CacheLumpNum(lump); + + // Copy and convert vertex coordinates, + // internal representation as fixed. + for (i=0; i= 0) // check for glVertices + { + gldata = W_CacheLumpNum(gllump); + + if (nodesVersion == gNd2) // 32 bit GL_VERT format (16.16 fixed) + { + const mapglvertex_t* mgl; + + numvertexes += (W_LumpLength(gllump) - GL_VERT_OFFSET)/sizeof(mapglvertex_t); + vertexes = Z_Malloc (numvertexes*sizeof(vertex_t),PU_LEVEL,0); + mgl = (const mapglvertex_t *) (gldata + GL_VERT_OFFSET); + + for (i = firstglvertex; i < numvertexes; i++) + { + vertexes[i].x = mgl->x; + vertexes[i].y = mgl->y; + mgl++; + } + } + else + { + numvertexes += W_LumpLength(gllump)/sizeof(mapvertex_t); + vertexes = Z_Malloc (numvertexes*sizeof(vertex_t),PU_LEVEL,0); + ml = (const mapvertex_t *)gldata; + + for (i = firstglvertex; i < numvertexes; i++) + { + vertexes[i].x = SHORT(ml->x)<y)<x)<y)<x - v2->x) / (float)FRACUNIT; + b = (float)(v1->y - v2->y) / (float)FRACUNIT; + r = (int)(sqrt(a*a+b*b) * (float)FRACUNIT); + return r; +} + + + +// +// P_LoadSegs +// +// killough 5/3/98: reformatted, cleaned up + +static void P_LoadSegs (int lump) +{ + int i; + const mapseg_t *data; // cph - const + + numsegs = W_LumpLength(lump) / sizeof(mapseg_t); + segs = Z_Calloc(numsegs,sizeof(seg_t),PU_LEVEL,0); + data = (const mapseg_t *)W_CacheLumpNum(lump); // cph - wad lump handling updated + + if ((!data) || (!numsegs)) + I_Error("P_LoadSegs: no segs in level"); + + for (i=0; iv1); + v2 = (unsigned short)SHORT(ml->v2); + li->v1 = &vertexes[v1]; + li->v2 = &vertexes[v2]; + + li->miniseg = false; // figgi -- there are no minisegs in classic BSP nodes + li->angle = (SHORT(ml->angle))<<16; + li->offset =(SHORT(ml->offset))<<16; + linedef = (unsigned short)SHORT(ml->linedef); + ldef = &lines[linedef]; + li->linedef = ldef; + side = SHORT(ml->side); + li->sidedef = &sides[ldef->sidenum[side]]; + + /* cph 2006/09/30 - our frontsector can be the second side of the + * linedef, so must check for NO_INDEX in case we are incorrectly + * referencing the back of a 1S line */ + if (ldef->sidenum[side] != NO_INDEX) + li->frontsector = sides[ldef->sidenum[side]].sector; + else { + li->frontsector = 0; + lprintf(LO_WARN, "P_LoadSegs: front of seg %i has no sidedef\n", i); + } + + if (ldef->flags & ML_TWOSIDED && ldef->sidenum[side^1]!=NO_INDEX) + li->backsector = sides[ldef->sidenum[side^1]].sector; + else + li->backsector = 0; + } + + W_UnlockLumpNum(lump); // cph - release the data +} + + + +/******************************************* + * Name : P_LoadGLSegs * + * created : 08/13/00 * + * modified : 09/18/00, adapted for PrBoom * + * author : figgi * + * what : support for gl nodes * + *******************************************/ +static void P_LoadGLSegs(int lump) +{ + int i; + const glseg_t *ml; + line_t *ldef; + + numsegs = W_LumpLength(lump) / sizeof(glseg_t); + segs = Z_Malloc(numsegs * sizeof(seg_t), PU_LEVEL, 0); + memset(segs, 0, numsegs * sizeof(seg_t)); + ml = (const glseg_t*)W_CacheLumpNum(lump); + + if ((!ml) || (!numsegs)) + I_Error("P_LoadGLSegs: no glsegs in level"); + + for(i = 0; i < numsegs; i++) + { // check for gl-vertices + segs[i].v1 = &vertexes[checkGLVertex(SHORT(ml->v1))]; + segs[i].v2 = &vertexes[checkGLVertex(SHORT(ml->v2))]; + + if(ml->linedef != (unsigned short)-1) // skip minisegs + { + ldef = &lines[ml->linedef]; + segs[i].linedef = ldef; + segs[i].miniseg = false; + segs[i].angle = R_PointToAngle2(segs[i].v1->x,segs[i].v1->y,segs[i].v2->x,segs[i].v2->y); + + segs[i].sidedef = &sides[ldef->sidenum[ml->side]]; + segs[i].frontsector = sides[ldef->sidenum[ml->side]].sector; + if (ldef->flags & ML_TWOSIDED) + segs[i].backsector = sides[ldef->sidenum[ml->side^1]].sector; + else + segs[i].backsector = 0; + + if (ml->side) + segs[i].offset = GetOffset(segs[i].v1, ldef->v2); + else + segs[i].offset = GetOffset(segs[i].v1, ldef->v1); + } + else + { + segs[i].miniseg = true; + segs[i].angle = 0; + segs[i].offset = 0; + segs[i].linedef = NULL; + segs[i].sidedef = NULL; + segs[i].frontsector = NULL; + segs[i].backsector = NULL; + } + ml++; + } + W_UnlockLumpNum(lump); +} + +// +// P_LoadSubsectors +// +// killough 5/3/98: reformatted, cleaned up + +static void P_LoadSubsectors (int lump) +{ + /* cph 2006/07/29 - make data a const mapsubsector_t *, so the loop below is simpler & gives no constness warnings */ + const mapsubsector_t *data; + int i; + + numsubsectors = W_LumpLength (lump) / sizeof(mapsubsector_t); + subsectors = Z_Calloc(numsubsectors,sizeof(subsector_t),PU_LEVEL,0); + data = (const mapsubsector_t *)W_CacheLumpNum(lump); + + if ((!data) || (!numsubsectors)) + I_Error("P_LoadSubsectors: no subsectors in level"); + + for (i=0; ifloorheight = SHORT(ms->floorheight)<ceilingheight = SHORT(ms->ceilingheight)<floorpic = R_FlatNumForName(ms->floorpic); + ss->ceilingpic = R_FlatNumForName(ms->ceilingpic); + ss->lightlevel = SHORT(ms->lightlevel); + ss->special = SHORT(ms->special); + ss->oldspecial = SHORT(ms->special); + ss->tag = SHORT(ms->tag); + ss->thinglist = NULL; + ss->touching_thinglist = NULL; // phares 3/14/98 + + ss->nextsec = -1; //jff 2/26/98 add fields to support locking out + ss->prevsec = -1; // stair retriggering until build completes + + // killough 3/7/98: + ss->floor_xoffs = 0; + ss->floor_yoffs = 0; // floor and ceiling flats offsets + ss->ceiling_xoffs = 0; + ss->ceiling_yoffs = 0; + ss->heightsec = -1; // sector used to get floor and ceiling height + ss->floorlightsec = -1; // sector used to get floor lighting + // killough 3/7/98: end changes + + // killough 4/11/98 sector used to get ceiling lighting: + ss->ceilinglightsec = -1; + + // killough 4/4/98: colormaps: + ss->bottommap = ss->midmap = ss->topmap = 0; + + // killough 10/98: sky textures coming from sidedefs: + ss->sky = 0; + } + + W_UnlockLumpNum(lump); // cph - release the data +} + + +// +// P_LoadNodes +// +// killough 5/3/98: reformatted, cleaned up + +static void P_LoadNodes (int lump) +{ + const byte *data; // cph - const* + int i; + + numnodes = W_LumpLength (lump) / sizeof(mapnode_t); + nodes = Z_Malloc (numnodes*sizeof(node_t),PU_LEVEL,0); + data = W_CacheLumpNum (lump); // cph - wad lump handling updated + + if ((!data) || (!numnodes)) + { + // allow trivial maps + if (numsubsectors == 1) + lprintf(LO_INFO, + "P_LoadNodes: trivial map (no nodes, one subsector)\n"); + else + I_Error("P_LoadNodes: no nodes in level"); + } + + for (i=0; ix = SHORT(mn->x)<y = SHORT(mn->y)<dx = SHORT(mn->dx)<dy = SHORT(mn->dy)<children[j] = SHORT(mn->children[j]); + for (k=0 ; k<4 ; k++) + no->bbox[j][k] = SHORT(mn->bbox[j][k])<flags = (unsigned short)SHORT(mld->flags); + ld->special = SHORT(mld->special); + ld->tag = SHORT(mld->tag); + v1 = ld->v1 = &vertexes[(unsigned short)SHORT(mld->v1)]; + v2 = ld->v2 = &vertexes[(unsigned short)SHORT(mld->v2)]; + ld->dx = v2->x - v1->x; + ld->dy = v2->y - v1->y; + + ld->tranlump = -1; // killough 4/11/98: no translucency by default + + ld->slopetype = !ld->dx ? ST_VERTICAL : !ld->dy ? ST_HORIZONTAL : + FixedDiv(ld->dy, ld->dx) > 0 ? ST_POSITIVE : ST_NEGATIVE; + + if (v1->x < v2->x) + { + ld->bbox[BOXLEFT] = v1->x; + ld->bbox[BOXRIGHT] = v2->x; + } + else + { + ld->bbox[BOXLEFT] = v2->x; + ld->bbox[BOXRIGHT] = v1->x; + } + if (v1->y < v2->y) + { + ld->bbox[BOXBOTTOM] = v1->y; + ld->bbox[BOXTOP] = v2->y; + } + else + { + ld->bbox[BOXBOTTOM] = v2->y; + ld->bbox[BOXTOP] = v1->y; + } + + /* calculate sound origin of line to be its midpoint */ + //e6y: fix sound origin for large levels + // no need for comp_sound test, these are only used when comp_sound = 0 + ld->soundorg.x = ld->bbox[BOXLEFT] / 2 + ld->bbox[BOXRIGHT] / 2; + ld->soundorg.y = ld->bbox[BOXTOP] / 2 + ld->bbox[BOXBOTTOM] / 2; + + ld->sidenum[0] = SHORT(mld->sidenum[0]); + ld->sidenum[1] = SHORT(mld->sidenum[1]); + + { + /* cph 2006/09/30 - fix sidedef errors right away. + * cph 2002/07/20 - these errors are fatal if not fixed, so apply them + * in compatibility mode - a desync is better than a crash! */ + int j; + + for (j=0; j < 2; j++) + { + if (ld->sidenum[j] != NO_INDEX && ld->sidenum[j] >= numsides) { + ld->sidenum[j] = NO_INDEX; + lprintf(LO_WARN, "P_LoadLineDefs: linedef %d has out-of-range sidedef number\n",numlines-i-1); + } + } + + // killough 11/98: fix common wad errors (missing sidedefs): + + if (ld->sidenum[0] == NO_INDEX) { + ld->sidenum[0] = 0; // Substitute dummy sidedef for missing right side + // cph - print a warning about the bug + lprintf(LO_WARN, "P_LoadLineDefs: linedef %d missing first sidedef\n",numlines-i-1); + } + + if ((ld->sidenum[1] == NO_INDEX) && (ld->flags & ML_TWOSIDED)) { + ld->flags &= ~ML_TWOSIDED; // Clear 2s flag for missing left side + // cph - print a warning about the bug + lprintf(LO_WARN, "P_LoadLineDefs: linedef %d has two-sided flag set, but no second sidedef\n",numlines-i-1); + } + } + + // killough 4/4/98: support special sidedef interpretation below + if (ld->sidenum[0] != NO_INDEX && ld->special) + sides[*ld->sidenum].special = ld->special; + } + + W_UnlockLumpNum(lump); // cph - release the lump +} + +// killough 4/4/98: delay using sidedefs until they are loaded +// killough 5/3/98: reformatted, cleaned up + +static void P_LoadLineDefs2(int lump) +{ + int i = numlines; + register line_t *ld = lines; + for (;i--;ld++) + { + ld->frontsector = sides[ld->sidenum[0]].sector; //e6y: Can't be NO_INDEX here + ld->backsector = ld->sidenum[1]!=NO_INDEX ? sides[ld->sidenum[1]].sector : 0; + switch (ld->special) + { // killough 4/11/98: handle special types + int lump, j; + + case 260: // killough 4/11/98: translucent 2s textures + lump = sides[*ld->sidenum].special; // translucency from sidedef + if (!ld->tag) // if tag==0, + ld->tranlump = lump; // affect this linedef only + else + for (j=0;jtag) // affect all matching linedefs + lines[j].tranlump = lump; + break; + } + } +} + +// +// P_LoadSideDefs +// +// killough 4/4/98: split into two functions + +static void P_LoadSideDefs (int lump) +{ + numsides = W_LumpLength(lump) / sizeof(mapsidedef_t); + sides = Z_Calloc(numsides,sizeof(side_t),PU_LEVEL,0); +} + +// killough 4/4/98: delay using texture names until +// after linedefs are loaded, to allow overloading. +// killough 5/3/98: reformatted, cleaned up + +static void P_LoadSideDefs2(int lump) +{ + const byte *data = W_CacheLumpNum(lump); // cph - const*, wad lump handling updated + int i; + + for (i=0; itextureoffset = SHORT(msd->textureoffset)<rowoffset = SHORT(msd->rowoffset)<sector); + if (sector_num >= numsectors) { + lprintf(LO_WARN,"P_LoadSideDefs2: sidedef %i has out-of-range sector num %u\n", i, sector_num); + sector_num = 0; + } + sd->sector = sec = §ors[sector_num]; + } + + // killough 4/4/98: allow sidedef texture names to be overloaded + // killough 4/11/98: refined to allow colormaps to work as wall + // textures if invalid as colormaps but valid as textures. + switch (sd->special) + { + case 242: // variable colormap via 242 linedef + sd->bottomtexture = + (sec->bottommap = R_ColormapNumForName(msd->bottomtexture)) < 0 ? + sec->bottommap = 0, R_TextureNumForName(msd->bottomtexture): 0 ; + sd->midtexture = + (sec->midmap = R_ColormapNumForName(msd->midtexture)) < 0 ? + sec->midmap = 0, R_TextureNumForName(msd->midtexture) : 0 ; + sd->toptexture = + (sec->topmap = R_ColormapNumForName(msd->toptexture)) < 0 ? + sec->topmap = 0, R_TextureNumForName(msd->toptexture) : 0 ; + break; + + case 260: // killough 4/11/98: apply translucency to 2s normal texture + sd->midtexture = strncasecmp("TRANMAP", msd->midtexture, 8) ? + (sd->special = W_CheckNumForName(msd->midtexture)) < 0 || + W_LumpLength(sd->special) != 65536 ? + sd->special=0, R_TextureNumForName(msd->midtexture) : + (sd->special++, 0) : (sd->special=0); + sd->toptexture = R_TextureNumForName(msd->toptexture); + sd->bottomtexture = R_TextureNumForName(msd->bottomtexture); + break; + + default: // normal cases + sd->midtexture = R_SafeTextureNumForName(msd->midtexture, i); + sd->toptexture = R_SafeTextureNumForName(msd->toptexture, i); + sd->bottomtexture = R_SafeTextureNumForName(msd->bottomtexture, i); + break; + } + } + + W_UnlockLumpNum(lump); // cph - release the lump +} + +// +// jff 10/6/98 +// New code added to speed up calculation of internal blockmap +// Algorithm is order of nlines*(ncols+nrows) not nlines*ncols*nrows +// + +#define blkshift 7 /* places to shift rel position for cell num */ +#define blkmask ((1<0 + // jff 10/12/98 0 ok with + 1 in rows,cols + +typedef struct linelist_t // type used to list lines in each block +{ + long num; + struct linelist_t *next; +} linelist_t; + +// +// Subroutine to add a line number to a block list +// It simply returns if the line is already in the block +// + +static void AddBlockLine(linelist_t **lists, int *count, int *done, int blockno, long lineno) +{ + if (done[blockno]) + return; + + linelist_t *l = Z_Malloc(sizeof(linelist_t), PU_STATIC, 0); + l->num = lineno; + l->next = lists[blockno]; + lists[blockno] = l; + count[blockno]++; + done[blockno] = 1; +} + +// +// Actually construct the blockmap lump from the level data +// +// This finds the intersection of each linedef with the column and +// row lines at the left and bottom of each blockmap cell. It then +// adds the line to all block lists touching the intersection. +// + +static void P_CreateBlockMap(void) +{ + int xorg,yorg; // blockmap origin (lower left) + int nrows,ncols; // blockmap dimensions + linelist_t **blocklists=NULL; // array of pointers to lists of lines + int *blockcount=NULL; // array of counters of line lists + int *blockdone=NULL; // array keeping track of blocks/line + int NBlocks; // number of cells = nrows*ncols + long linetotal=0; // total length of all blocklists + int i,j; + int map_minx=INT_MAX; // init for map limits search + int map_miny=INT_MAX; + int map_maxx=INT_MIN; + int map_maxy=INT_MIN; + + // scan for map limits, which the blockmap must enclose + + for (i=0;i map_maxx) + map_maxx = t; + if ((t=vertexes[i].y) < map_miny) + map_miny = t; + else if (t > map_maxy) + map_maxy = t; + } + map_minx >>= FRACBITS; // work in map coords, not fixed_t + map_maxx >>= FRACBITS; + map_miny >>= FRACBITS; + map_maxy >>= FRACBITS; + + // set up blockmap area to enclose level plus margin + + xorg = map_minx-blkmargin; + yorg = map_miny-blkmargin; + ncols = (map_maxx+blkmargin-xorg+1+blkmask)>>blkshift; //jff 10/12/98 + nrows = (map_maxy+blkmargin-yorg+1+blkmask)>>blkshift; //+1 needed for + NBlocks = ncols*nrows; //map exactly 1 cell + + // create the array of pointers on NBlocks to blocklists + // also create an array of linelist counts on NBlocks + // finally make an array in which we can mark blocks done per line + blocklists = Z_Calloc(NBlocks, sizeof(linelist_t *), PU_STATIC, 0); + blockcount = Z_Calloc(NBlocks, sizeof(int), PU_STATIC, 0); + blockdone = Z_Calloc(NBlocks, sizeof(int), PU_STATIC, 0); + + // initialize each blocklist, and enter the trailing -1 in all blocklists + // note the linked list of lines grows backwards + + for (i=0;inum = -1; + blocklists[i]->next = NULL; + blockcount[i]++; + } + + // For each linedef in the wad, determine all blockmap blocks it touches, + // and add the linedef number to the blocklists for those blocks + + for (i=0;ix>>FRACBITS; // lines[i] map coords + int y1 = lines[i].v1->y>>FRACBITS; + int x2 = lines[i].v2->x>>FRACBITS; + int y2 = lines[i].v2->y>>FRACBITS; + int dx = x2-x1; + int dy = y2-y1; + int vert = !dx; // lines[i] slopetype + int horiz = !dy; + int spos = (dx^dy) > 0; + int sneg = (dx^dy) < 0; + int bx,by; // block cell coords + int minx = x1>x2? x2 : x1; // extremal lines[i] coords + int maxx = x1>x2? x1 : x2; + int miny = y1>y2? y2 : y1; + int maxy = y1>y2? y1 : y2; + + // no blocks done for this linedef yet + + memset(blockdone,0,NBlocks*sizeof(int)); + + // The line always belongs to the blocks containing its endpoints + + bx = (x1-xorg)>>blkshift; + by = (y1-yorg)>>blkshift; + AddBlockLine(blocklists,blockcount,blockdone,by*ncols+bx,i); + bx = (x2-xorg)>>blkshift; + by = (y2-yorg)>>blkshift; + AddBlockLine(blocklists,blockcount,blockdone,by*ncols+bx,i); + + + // For each column, see where the line along its left edge, which + // it contains, intersects the Linedef i. Add i to each corresponding + // blocklist. + + if (!vert) // don't interesect vertical lines with columns + { + for (j=0;j>blkshift; // block row number + int yp = (y-yorg)&blkmask; // y position within block + + if (yb<0 || yb>nrows-1) // outside blockmap, continue + continue; + + if (xmaxx) // line doesn't touch column + continue; + + // The cell that contains the intersection point is always added + + AddBlockLine(blocklists,blockcount,blockdone,ncols*yb+j,i); + + // if the intersection is at a corner it depends on the slope + // (and whether the line extends past the intersection) which + // blocks are hit + + if (yp==0) // intersection at a corner + { + if (sneg) // \ - blocks x,y-, x-,y + { + if (yb>0 && miny0 && minx0 && j>0 && minx0 && minx0 && minx>blkshift; // block column number + int xp = (x-xorg)&blkmask; // x position within block + + if (xb<0 || xb>ncols-1) // outside blockmap, continue + continue; + + if (ymaxy) // line doesn't touch row + continue; + + // The cell that contains the intersection point is always added + + AddBlockLine(blocklists,blockcount,blockdone,ncols*j+xb,i); + + // if the intersection is at a corner it depends on the slope + // (and whether the line extends past the intersection) which + // blocks are hit + + if (xp==0) // intersection at a corner + { + if (sneg) // \ - blocks x,y-, x-,y + { + if (j>0 && miny0 && minx0 && miny0 && j>0 && miny0 && minynext; + blockmaplump[offs++] = bl->num; + free(bl); + bl = tmp; + } + } + + // free all temporary storage + + free (blocklists); + free (blockcount); + free (blockdone); +} + +// jff 10/6/98 +// End new code added to speed up calculation of internal blockmap + +// +// P_LoadBlockMap +// +// killough 3/1/98: substantially modified to work +// towards removing blockmap limit (a wad limitation) +// +// killough 3/30/98: Rewritten to remove blockmap limit, +// though current algorithm is brute-force and unoptimal. +// + +static void P_LoadBlockMap (int lump) +{ + long count; + + if (M_CheckParm("-blockmap") || W_LumpLength(lump)<8 || (count = W_LumpLength(lump)/2) >= 0x10000) //e6y + P_CreateBlockMap(); + else + { + long i; + // cph - const*, wad lump handling updated + const short *wadblockmaplump = W_CacheLumpNum(lump); + blockmaplump = Z_Malloc(sizeof(*blockmaplump) * count, PU_LEVEL, 0); + + // killough 3/1/98: Expand wad blockmap into larger internal one, + // by treating all offsets except -1 as unsigned and zero-extending + // them. This potentially doubles the size of blockmaps allowed, + // because Doom originally considered the offsets as always signed. + + blockmaplump[0] = SHORT(wadblockmaplump[0]); + blockmaplump[1] = SHORT(wadblockmaplump[1]); + blockmaplump[2] = (long)(SHORT(wadblockmaplump[2])) & 0xffff; + blockmaplump[3] = (long)(SHORT(wadblockmaplump[3])) & 0xffff; + + for (i=4 ; i= required) + return; // nothing to do + + // allocate a new block and copy the reject table into it; zero the rest + // PU_LEVEL => will be freed on level exit + newreject = Z_Malloc(required, PU_LEVEL, NULL); + rejectmatrix = (const byte *)memmove(newreject, rejectmatrix, length); + memset(newreject + length, 0, required - length); + // unlock the original lump, it is no longer needed + W_UnlockLumpNum(rejectlump); + rejectlump = -1; + + if (demo_compatibility) + { + // merged in RejectOverrunAddInt(), and the 4 calls to it, here + unsigned int rejectpad[4] = { + 0, // size, will be filled in using totallines + 0, // part of the header of a doom.exe z_zone block + 50, // DOOM_CONST_PU_LEVEL + 0x1d4a11 // DOOM_CONST_ZONEID + }; + unsigned int i, pad = 0, *src = rejectpad; + byte *dest = newreject + length; + + rejectpad[0] = ((totallines*4+3)&~3)+24; // doom.exe zone header size + + // copy at most 16 bytes from rejectpad + // emulating a 32-bit, little-endian architecture (can't memmove) + for (i = 0; i < required - length && i < 16; i++) { // 16 hard-coded + if (!(i&3)) // get the next 4 bytes to copy when i=0,4,8,12 + pad = *src++; + *dest++ = pad & 0xff; // store lowest-significant byte + pad >>= 8; // rotate the next byte down + } + } + lprintf(LO_WARN, "P_LoadReject: REJECT too short (%u<%u) - padded\n", + length, required); +} + +// +// P_GroupLines +// Builds sector line lists and subsector sector numbers. +// Finds block bounding boxes for sectors. +// +// killough 5/3/98: reformatted, cleaned up +// cph 18/8/99: rewritten to avoid O(numlines * numsectors) section +// It makes things more complicated, but saves seconds on big levels +// figgi 09/18/00 -- adapted for gl-nodes + +// cph - convenient sub-function +static void P_AddLineToSector(line_t* li, sector_t* sector) +{ + fixed_t *bbox = (void*)sector->blockbox; + + sector->lines[sector->linecount++] = li; + M_AddToBox (bbox, li->v1->x, li->v1->y); + M_AddToBox (bbox, li->v2->x, li->v2->y); +} + +// modified to return totallines (needed by P_LoadReject) +static int P_GroupLines (void) +{ + register line_t *li; + register sector_t *sector; + int i,j, total = numlines; + + // figgi + for (i=0 ; isidedef) + { + subsectors[i].sector = seg->sidedef->sector; + break; + } + seg++; + } + if(subsectors[i].sector == NULL) + I_Error("P_GroupLines: Subsector a part of no sector!\n"); + } + + // count number of lines in each sector + for (i=0,li=lines; ifrontsector->linecount++; + if (li->backsector && li->backsector != li->frontsector) + { + li->backsector->linecount++; + total++; + } + } + + { // allocate line tables for each sector + line_t **linebuffer = Z_Malloc(total*sizeof(line_t *), PU_LEVEL, 0); + + // e6y: REJECT overrun emulation code + // moved to P_LoadReject + + for (i=0, sector = sectors; ilines = linebuffer; + linebuffer += sector->linecount; + sector->linecount = 0; + M_ClearBox(sector->blockbox); + } + } + + // Enter those lines + for (i=0,li=lines; ifrontsector); + if (li->backsector && li->backsector != li->frontsector) + P_AddLineToSector(li, li->backsector); + } + + for (i=0, sector = sectors; iblockbox; // cph - For convenience, so + // I can sue the old code unchanged + int block; + + // set the degenmobj_t to the middle of the bounding box + if (comp[comp_sound]) + { + sector->soundorg.x = (bbox[BOXRIGHT]+bbox[BOXLEFT])/2; + sector->soundorg.y = (bbox[BOXTOP]+bbox[BOXBOTTOM])/2; + } + else + { + //e6y: fix sound origin for large levels + sector->soundorg.x = bbox[BOXRIGHT]/2+bbox[BOXLEFT]/2; + sector->soundorg.y = bbox[BOXTOP]/2+bbox[BOXBOTTOM]/2; + } + + // adjust bounding box to map blocks + block = (bbox[BOXTOP]-bmaporgy+MAXRADIUS)>>MAPBLOCKSHIFT; + block = block >= bmapheight ? bmapheight-1 : block; + sector->blockbox[BOXTOP]=block; + + block = (bbox[BOXBOTTOM]-bmaporgy-MAXRADIUS)>>MAPBLOCKSHIFT; + block = block < 0 ? 0 : block; + sector->blockbox[BOXBOTTOM]=block; + + block = (bbox[BOXRIGHT]-bmaporgx+MAXRADIUS)>>MAPBLOCKSHIFT; + block = block >= bmapwidth ? bmapwidth-1 : block; + sector->blockbox[BOXRIGHT]=block; + + block = (bbox[BOXLEFT]-bmaporgx-MAXRADIUS)>>MAPBLOCKSHIFT; + block = block < 0 ? 0 : block; + sector->blockbox[BOXLEFT]=block; + } + + return total; // this value is needed by the reject overrun emulation code +} + +// +// killough 10/98 +// +// Remove slime trails. +// +// Slime trails are inherent to Doom's coordinate system -- i.e. there is +// nothing that a node builder can do to prevent slime trails ALL of the time, +// because it's a product of the integer coodinate system, and just because +// two lines pass through exact integer coordinates, doesn't necessarily mean +// that they will intersect at integer coordinates. Thus we must allow for +// fractional coordinates if we are to be able to split segs with node lines, +// as a node builder must do when creating a BSP tree. +// +// A wad file does not allow fractional coordinates, so node builders are out +// of luck except that they can try to limit the number of splits (they might +// also be able to detect the degree of roundoff error and try to avoid splits +// with a high degree of roundoff error). But we can use fractional coordinates +// here, inside the engine. It's like the difference between square inches and +// square miles, in terms of granularity. +// +// For each vertex of every seg, check to see whether it's also a vertex of +// the linedef associated with the seg (i.e, it's an endpoint). If it's not +// an endpoint, and it wasn't already moved, move the vertex towards the +// linedef by projecting it using the law of cosines. Formula: +// +// 2 2 2 2 +// dx x0 + dy x1 + dx dy (y0 - y1) dy y0 + dx y1 + dx dy (x0 - x1) +// {---------------------------------, ---------------------------------} +// 2 2 2 2 +// dx + dy dx + dy +// +// (x0,y0) is the vertex being moved, and (x1,y1)-(x1+dx,y1+dy) is the +// reference linedef. +// +// Segs corresponding to orthogonal linedefs (exactly vertical or horizontal +// linedefs), which comprise at least half of all linedefs in most wads, don't +// need to be considered, because they almost never contribute to slime trails +// (because then any roundoff error is parallel to the linedef, which doesn't +// cause slime). Skipping simple orthogonal lines lets the code finish quicker. +// +// Please note: This section of code is not interchangable with TeamTNT's +// code which attempts to fix the same problem. +// +// Firelines (TM) is a Rezistered Trademark of MBF Productions +// + +static void P_RemoveSlimeTrails(void) // killough 10/98 +{ + byte *hit = calloc(1, numvertexes); // Hitlist for vertices + int i; + for (i=0; idx && l->dy) // We can ignore orthogonal lines + { + vertex_t *v = segs[i].v1; + do + if (!hit[v - vertexes]) // If we haven't processed vertex + { + hit[v - vertexes] = 1; // Mark this vertex as processed + if (v != l->v1 && v != l->v2) // Exclude endpoints of linedefs + { // Project the vertex back onto the parent linedef + int_64_t dx2 = (l->dx >> FRACBITS) * (l->dx >> FRACBITS); + int_64_t dy2 = (l->dy >> FRACBITS) * (l->dy >> FRACBITS); + int_64_t dxy = (l->dx >> FRACBITS) * (l->dy >> FRACBITS); + int_64_t s = dx2 + dy2; + int x0 = v->x, y0 = v->y, x1 = l->v1->x, y1 = l->v1->y; + v->x = (int)((dx2 * x0 + dy2 * x1 + dxy * (y0 - y1)) / s); + v->y = (int)((dy2 * y0 + dx2 * y1 + dxy * (x0 - x1)) / s); + } + } // Obsfucated C contest entry: :) + while ((v != segs[i].v2) && (v = segs[i].v2)); + } + } + free(hit); +} + +// +// P_SetupLevel +// +// killough 5/3/98: reformatted, cleaned up + +void P_SetupLevel(int episode, int map, int playermask, skill_t skill) +{ + int i; + char lumpname[9]; + int lumpnum; + + char gl_lumpname[9]; + int gl_lumpnum; + + R_StopAllInterpolations(); + + totallive = totalkills = totalitems = totalsecret = wminfo.maxfrags = 0; + wminfo.partime = 180; + + for (i=0; i 0) + P_LoadVertexes2 (lumpnum+ML_VERTEXES,gl_lumpnum+ML_GL_VERTS); + else + P_LoadVertexes (lumpnum+ML_VERTEXES); + P_LoadSectors (lumpnum+ML_SECTORS); + P_LoadSideDefs (lumpnum+ML_SIDEDEFS); + P_LoadLineDefs (lumpnum+ML_LINEDEFS); + P_LoadSideDefs2 (lumpnum+ML_SIDEDEFS); + P_LoadLineDefs2 (lumpnum+ML_LINEDEFS); + P_LoadBlockMap (lumpnum+ML_BLOCKMAP); + + if (nodesVersion > 0) + { + P_LoadSubsectors(gl_lumpnum + ML_GL_SSECT); + P_LoadNodes(gl_lumpnum + ML_GL_NODES); + P_LoadGLSegs(gl_lumpnum + ML_GL_SEGS); + } + else + { + P_LoadSubsectors(lumpnum + ML_SSECTORS); + P_LoadNodes(lumpnum + ML_NODES); + P_LoadSegs(lumpnum + ML_SEGS); + } + +#else + + P_LoadVertexes (lumpnum+ML_VERTEXES); + P_LoadSectors (lumpnum+ML_SECTORS); + P_LoadSideDefs (lumpnum+ML_SIDEDEFS); // killough 4/4/98 + P_LoadLineDefs (lumpnum+ML_LINEDEFS); // | + P_LoadSideDefs2 (lumpnum+ML_SIDEDEFS); // | + P_LoadLineDefs2 (lumpnum+ML_LINEDEFS); // killough 4/4/98 + P_LoadBlockMap (lumpnum+ML_BLOCKMAP); // killough 3/1/98 + P_LoadSubsectors(lumpnum+ML_SSECTORS); + P_LoadNodes (lumpnum+ML_NODES); + P_LoadSegs (lumpnum+ML_SEGS); + +#endif + + // reject loading and underflow padding separated out into new function + // P_GroupLines modified to return a number the underflow padding needs + P_LoadReject(lumpnum, P_GroupLines()); + + // e6y + // Correction of desync on dv04-423.lmp/dv.wad + // http://www.doomworld.com/vb/showthread.php?s=&postid=627257#post627257 + if (compatibility_level>=lxdoom_1_compatibility || M_CheckParm("-force_remove_slime_trails") > 0) + P_RemoveSlimeTrails(); // killough 10/98: remove slime trails from wad + + // Note: you don't need to clear player queue slots -- + // a much simpler fix is in g_game.c -- killough 10/98 + + bodyqueslot = 0; + + /* cph - reset all multiplayer starts */ + memset(playerstarts,0,sizeof(playerstarts)); + deathmatch_p = deathmatchstarts; + for (i = 0; i < MAXPLAYERS; i++) + players[i].mo = NULL; + + P_MapStart(); + + P_LoadThings(lumpnum+ML_THINGS); + + // if deathmatch, randomly spawn the active players + if (deathmatch) + { + for (i=0; idx ? x == node->x ? 2 : x <= node->x ? node->dy > 0 : node->dy < 0 : + !node->dy ? ( compatibility_level < prboom_4_compatibility ? x : y) == node->y ? 2 : y <= node->y ? node->dx < 0 : node->dx > 0 : + (right = ((y - node->y) >> FRACBITS) * (node->dx >> FRACBITS)) < + (left = ((x - node->x) >> FRACBITS) * (node->dy >> FRACBITS)) ? 0 : + right == left ? 2 : 1; +} + +// +// P_CrossSubsector +// Returns true +// if strace crosses the given subsector successfully. +// +// killough 4/19/98: made static and cleaned up + +static boolean P_CrossSubsector(int num) +{ + seg_t *seg = segs + subsectors[num].firstline; + int count; + fixed_t opentop = 0, openbottom = 0; + const sector_t *front = NULL, *back = NULL; + +#ifdef RANGECHECK + if (num >= numsubsectors) + I_Error("P_CrossSubsector: ss %i with numss = %i", num, numsubsectors); +#endif + + for (count = subsectors[num].numlines; --count >= 0; seg++) { // check lines + line_t *line = seg->linedef; + divline_t divl; + + if(!line) // figgi -- skip minisegs + continue; + + // allready checked other side? + if (line->validcount == validcount) + continue; + + line->validcount = validcount; + + /* OPTIMIZE: killough 4/20/98: Added quick bounding-box rejection test + * cph - this is causing demo desyncs on original Doom demos. + * Who knows why. Exclude test for those. + */ + if (!demo_compatibility) + if (line->bbox[BOXLEFT ] > los.bbox[BOXRIGHT ] || + line->bbox[BOXRIGHT ] < los.bbox[BOXLEFT ] || + line->bbox[BOXBOTTOM] > los.bbox[BOXTOP ] || + line->bbox[BOXTOP] < los.bbox[BOXBOTTOM]) + continue; + + // cph - do what we can before forced to check intersection + if (line->flags & ML_TWOSIDED) { + + // no wall to block sight with? + if ((front = seg->frontsector)->floorheight == + (back = seg->backsector)->floorheight && + front->ceilingheight == back->ceilingheight) + continue; + + // possible occluder + // because of ceiling height differences + opentop = front->ceilingheight < back->ceilingheight ? + front->ceilingheight : back->ceilingheight ; + + // because of floor height differences + openbottom = front->floorheight > back->floorheight ? + front->floorheight : back->floorheight ; + + // cph - reject if does not intrude in the z-space of the possible LOS + if ((opentop >= los.maxz) && (openbottom <= los.minz)) + continue; + } + + { // Forget this line if it doesn't cross the line of sight + const vertex_t *v1,*v2; + + v1 = line->v1; + v2 = line->v2; + + if (P_DivlineSide(v1->x, v1->y, &los.strace) == + P_DivlineSide(v2->x, v2->y, &los.strace)) + continue; + + divl.dx = v2->x - (divl.x = v1->x); + divl.dy = v2->y - (divl.y = v1->y); + + // line isn't crossed? + if (P_DivlineSide(los.strace.x, los.strace.y, &divl) == + P_DivlineSide(los.t2x, los.t2y, &divl)) + continue; + } + + // cph - if bottom >= top or top < minz or bottom > maxz then it must be + // solid wrt this LOS + if (!(line->flags & ML_TWOSIDED) || (openbottom >= opentop) || + (opentop < los.minz) || (openbottom > los.maxz)) + return false; + + { // crosses a two sided line + /* cph 2006/07/15 - oops, we missed this in 2.4.0 & .1; + * use P_InterceptVector2 for those compat levels only. */ + fixed_t frac = (compatibility_level == prboom_5_compatibility || compatibility_level == prboom_6_compatibility) ? + P_InterceptVector2(&los.strace, &divl) : + P_InterceptVector(&los.strace, &divl); + + if (front->floorheight != back->floorheight) { + fixed_t slope = FixedDiv(openbottom - los.sightzstart , frac); + if (slope > los.bottomslope) + los.bottomslope = slope; + } + + if (front->ceilingheight != back->ceilingheight) + { + fixed_t slope = FixedDiv(opentop - los.sightzstart , frac); + if (slope < los.topslope) + los.topslope = slope; + } + + if (los.topslope <= los.bottomslope) + return false; // stop + } + } + // passed the subsector ok + return true; +} + +// +// P_CrossBSPNode +// Returns true +// if strace crosses the given node successfully. +// +// killough 4/20/98: rewritten to remove tail recursion, clean up, and optimize +// cph - Made to use R_PointOnSide instead of P_DivlineSide, since the latter +// could return 2 which was ambigous, and the former is +// better optimised; also removes two casts :-) + +static boolean P_CrossBSPNode_LxDoom(int bspnum) +{ + while (!(bspnum & NF_SUBSECTOR)) + { + register const node_t *bsp = nodes + bspnum; + int side,side2; + side = R_PointOnSide(los.strace.x, los.strace.y, bsp); + side2 = R_PointOnSide(los.t2x, los.t2y, bsp); + if (side == side2) + bspnum = bsp->children[side]; // doesn't touch the other side + else // the partition plane is crossed here + if (!P_CrossBSPNode_LxDoom(bsp->children[side])) + return 0; // cross the starting side + else + bspnum = bsp->children[side^1]; // cross the ending side + } + return P_CrossSubsector(bspnum == -1 ? 0 : bspnum & ~NF_SUBSECTOR); +} + +static boolean P_CrossBSPNode_PrBoom(int bspnum) +{ + while (!(bspnum & NF_SUBSECTOR)) + { + register const node_t *bsp = nodes + bspnum; + int side,side2; + side = P_DivlineSide(los.strace.x,los.strace.y,(const divline_t *)bsp)&1; + side2= P_DivlineSide(los.t2x, los.t2y, (const divline_t *) bsp); + if (side == side2) + bspnum = bsp->children[side]; // doesn't touch the other side + else // the partition plane is crossed here + if (!P_CrossBSPNode_PrBoom(bsp->children[side])) + return 0; // cross the starting side + else + bspnum = bsp->children[side^1]; // cross the ending side + } + return P_CrossSubsector(bspnum == -1 ? 0 : bspnum & ~NF_SUBSECTOR); +} + +/* proff - Moved the compatibility check outside the functions + * this gives a slight speedup + */ +static boolean P_CrossBSPNode(int bspnum) +{ + /* cph - LxDoom used some R_* funcs here */ + if (compatibility_level == lxdoom_1_compatibility) + return P_CrossBSPNode_LxDoom(bspnum); + else + return P_CrossBSPNode_PrBoom(bspnum); +} + +// +// P_CheckSight +// Returns true +// if a straight line between t1 and t2 is unobstructed. +// Uses REJECT. +// +// killough 4/20/98: cleaned up, made to use new LOS struct + +boolean P_CheckSight(mobj_t *t1, mobj_t *t2) +{ + const sector_t *s1 = t1->subsector->sector; + const sector_t *s2 = t2->subsector->sector; + int pnum = (s1-sectors)*numsectors + (s2-sectors); + + // First check for trivial rejection. + // Determine subsector entries in REJECT table. + // + // Check in REJECT table. + + if (rejectmatrix[pnum>>3] & (1 << (pnum&7))) // can't possibly be connected + return false; + + // killough 4/19/98: make fake floors and ceilings block monster view + + if ((s1->heightsec != -1 && + ((t1->z + t1->height <= sectors[s1->heightsec].floorheight && + t2->z >= sectors[s1->heightsec].floorheight) || + (t1->z >= sectors[s1->heightsec].ceilingheight && + t2->z + t1->height <= sectors[s1->heightsec].ceilingheight))) + || + (s2->heightsec != -1 && + ((t2->z + t2->height <= sectors[s2->heightsec].floorheight && + t1->z >= sectors[s2->heightsec].floorheight) || + (t2->z >= sectors[s2->heightsec].ceilingheight && + t1->z + t2->height <= sectors[s2->heightsec].ceilingheight)))) + return false; + + /* killough 11/98: shortcut for melee situations + * same subsector? obviously visible + * cph - compatibility optioned for demo sync, cf HR06-UV.LMP */ + if ((t1->subsector == t2->subsector) && + (compatibility_level >= mbf_compatibility)) + return true; + + // An unobstructed LOS is possible. + // Now look from eyes of t1 to any part of t2. + + validcount++; + + los.topslope = (los.bottomslope = t2->z - (los.sightzstart = + t1->z + t1->height - + (t1->height>>2))) + t2->height; + los.strace.dx = (los.t2x = t2->x) - (los.strace.x = t1->x); + los.strace.dy = (los.t2y = t2->y) - (los.strace.y = t1->y); + + if (t1->x > t2->x) + los.bbox[BOXRIGHT] = t1->x, los.bbox[BOXLEFT] = t2->x; + else + los.bbox[BOXRIGHT] = t2->x, los.bbox[BOXLEFT] = t1->x; + + if (t1->y > t2->y) + los.bbox[BOXTOP] = t1->y, los.bbox[BOXBOTTOM] = t2->y; + else + los.bbox[BOXTOP] = t2->y, los.bbox[BOXBOTTOM] = t1->y; + + /* cph - calculate min and max z of the potential line of sight + * For old demos, we disable this optimisation by setting them to + * the extremes */ + switch (compatibility_level) { + case lxdoom_1_compatibility: + if (los.sightzstart < t2->z) { + los.maxz = t2->z + t2->height; los.minz = los.sightzstart; + } else if (los.sightzstart > t2->z + t2->height) { + los.maxz = los.sightzstart; los.minz = t2->z; + } else { + los.maxz = t2->z + t2->height; los.minz = t2->z; + } + break; + default: + los.maxz = INT_MAX; los.minz = INT_MIN; + } + + // the head node is the last node output + return P_CrossBSPNode(numnodes-1); +} diff --git a/components/doom/prboom/p_spec.c b/components/doom/prboom/p_spec.c new file mode 100644 index 0000000..0005323 --- /dev/null +++ b/components/doom/prboom/p_spec.c @@ -0,0 +1,3330 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * -Loads and initializes texture and flat animation sequences + * -Implements utility functions for all linedef/sector special handlers + * -Dispatches walkover and gun line triggers + * -Initializes and implements special sector types + * -Implements donut linedef triggers + * -Initializes and implements BOOM linedef triggers for + * Scrollers/Conveyors + * Friction + * Wind/Current + * + *-----------------------------------------------------------------------------*/ + +#include "doomstat.h" +#include "p_spec.h" +#include "p_tick.h" +#include "p_setup.h" +#include "m_random.h" +#include "d_englsh.h" +#include "m_argv.h" +#include "w_wad.h" +#include "r_main.h" +#include "p_maputl.h" +#include "p_map.h" +#include "g_game.h" +#include "p_inter.h" +#include "s_sound.h" +#include "sounds.h" +#include "m_bbox.h" // phares 3/20/98 +#include "d_deh.h" +#include "r_plane.h" +#include "lprintf.h" + +// +// Animating textures and planes +// There is another anim_t used in wi_stuff, unrelated. +// +typedef struct +{ + boolean istexture; + int picnum; + int basepic; + int numpics; + int speed; + +} anim_t; + +// +// source animation definition +// +// +#ifdef _MSC_VER // proff: This is the same as __attribute__ ((packed)) in GNUC +#pragma pack(push) +#pragma pack(1) +#endif //_MSC_VER + +#if defined(__MWERKS__) +#pragma options align=packed +#endif + +typedef struct +{ + signed char istexture; //jff 3/23/98 make char for comparison // cph - make signed + char endname[9]; // if false, it is a flat + char startname[9]; + int speed; +} PACKEDATTR animdef_t; //jff 3/23/98 pack to read from memory + +#if defined(__MWERKS__) +#pragma options align=reset +#endif + +#ifdef _MSC_VER +#pragma pack(pop) +#endif //_MSC_VER + +#define MAXANIMS 32 // no longer a strict limit -- killough + +static anim_t* lastanim; +static anim_t* anims; // new structure w/o limits -- killough + +// killough 3/7/98: Initialize generalized scrolling +static void P_SpawnScrollers(void); + +static void P_SpawnFriction(void); // phares 3/16/98 +static void P_SpawnPushers(void); // phares 3/20/98 + +// +// P_InitPicAnims +// +// Load the table of animation definitions, checking for existence of +// the start and end of each frame. If the start doesn't exist the sequence +// is skipped, if the last doesn't exist, BOOM exits. +// +// Wall/Flat animation sequences, defined by name of first and last frame, +// The full animation sequence is given using all lumps between the start +// and end entry, in the order found in the WAD file. +// +// This routine modified to read its data from a predefined lump or +// PWAD lump called ANIMATED rather than a static table in this module to +// allow wad designers to insert or modify animation sequences. +// +// Lump format is an array of byte packed animdef_t structures, terminated +// by a structure with istexture == -1. The lump can be generated from a +// text source file using SWANTBLS.EXE, distributed with the BOOM utils. +// The standard list of switches and animations is contained in the example +// source text file DEFSWANI.DAT also in the BOOM util distribution. +// +// +void P_InitPicAnims (void) +{ + int lump = W_GetNumForName("ANIMATED"); // cph - new wad lump handling + const animdef_t *animdefs = W_CacheLumpNum(lump); //jff 3/23/98 pointer to animation lump + size_t numanims = W_LumpLength(lump) / sizeof(animdef_t); + + anims = Z_Calloc(numanims, sizeof(*anims), PU_STATIC, 0); + lastanim = anims; + + for (int i = 0; i < numanims && animdefs[i].istexture != -1; i++) + { + if (animdefs[i].istexture) + { + // different episode ? + if (R_CheckTextureNumForName(animdefs[i].startname) == -1) + continue; + + lastanim->picnum = R_TextureNumForName (animdefs[i].endname); + lastanim->basepic = R_TextureNumForName (animdefs[i].startname); + } + else + { + if (W_CheckNumForNameNs(animdefs[i].startname, ns_flats) == -1) // killough 4/17/98 + continue; + + lastanim->picnum = R_FlatNumForName (animdefs[i].endname); + lastanim->basepic = R_FlatNumForName (animdefs[i].startname); + } + + lastanim->istexture = animdefs[i].istexture; + lastanim->numpics = lastanim->picnum - lastanim->basepic + 1; + + if (lastanim->numpics < 2) + I_Error ("P_InitPicAnims: bad cycle from %s to %s", + animdefs[i].startname, + animdefs[i].endname); + + lastanim->speed = LONG(animdefs[i].speed); // killough 5/5/98: add LONG() + lastanim++; + } + W_UnlockLumpNum(lump); +} + +/////////////////////////////////////////////////////////////// +// +// Linedef and Sector Special Implementation Utility Functions +// +/////////////////////////////////////////////////////////////// + +// +// getSide() +// +// Will return a side_t* +// given the number of the current sector, +// the line number, and the side (0/1) that you want. +// +// Note: if side=1 is specified, it must exist or results undefined +// +side_t* getSide +( int currentSector, + int line, + int side ) +{ + return &sides[ (sectors[currentSector].lines[line])->sidenum[side] ]; +} + + +// +// getSector() +// +// Will return a sector_t* +// given the number of the current sector, +// the line number and the side (0/1) that you want. +// +// Note: if side=1 is specified, it must exist or results undefined +// +sector_t* getSector +( int currentSector, + int line, + int side ) +{ + return sides[ (sectors[currentSector].lines[line])->sidenum[side] ].sector; +} + + +// +// twoSided() +// +// Given the sector number and the line number, +// it will tell you whether the line is two-sided or not. +// +// modified to return actual two-sidedness rather than presence +// of 2S flag unless compatibility optioned +// +int twoSided +( int sector, + int line ) +{ + //jff 1/26/98 return what is actually needed, whether the line + //has two sidedefs, rather than whether the 2S flag is set + + return comp[comp_model] ? + (sectors[sector].lines[line])->flags & ML_TWOSIDED + : + (sectors[sector].lines[line])->sidenum[1] != NO_INDEX; +} + + +// +// getNextSector() +// +// Return sector_t * of sector next to current across line. +// +// Note: returns NULL if not two-sided line, or both sides refer to sector +// +sector_t* getNextSector +( line_t* line, + sector_t* sec ) +{ + //jff 1/26/98 check unneeded since line->backsector already + //returns NULL if the line is not two sided, and does so from + //the actual two-sidedness of the line, rather than its 2S flag + + if (comp[comp_model]) + { + if (!(line->flags & ML_TWOSIDED)) + return NULL; + } + + if (line->frontsector == sec) { + if (comp[comp_model] || line->backsector!=sec) + return line->backsector; //jff 5/3/98 don't retn sec unless compatibility + else // fixes an intra-sector line breaking functions + return NULL; // like floor->highest floor + } + return line->frontsector; +} + + +// +// P_FindLowestFloorSurrounding() +// +// Returns the fixed point value of the lowest floor height +// in the sector passed or its surrounding sectors. +// +fixed_t P_FindLowestFloorSurrounding(sector_t* sec) +{ + int i; + line_t* check; + sector_t* other; + fixed_t floor = sec->floorheight; + + for (i=0 ;i < sec->linecount ; i++) + { + check = sec->lines[i]; + other = getNextSector(check,sec); + + if (!other) + continue; + + if (other->floorheight < floor) + floor = other->floorheight; + } + return floor; +} + + +// +// P_FindHighestFloorSurrounding() +// +// Passed a sector, returns the fixed point value of the largest +// floor height in the surrounding sectors, not including that passed +// +// NOTE: if no surrounding sector exists -32000*FRACUINT is returned +// if compatibility then -500*FRACUNIT is the smallest return possible +// +fixed_t P_FindHighestFloorSurrounding(sector_t *sec) +{ + int i; + line_t* check; + sector_t* other; + fixed_t floor = -500*FRACUNIT; + + //jff 1/26/98 Fix initial value for floor to not act differently + //in sections of wad that are below -500 units + if (!comp[comp_model]) /* jff 3/12/98 avoid ovf */ + floor = -32000*FRACUNIT; // in height calculations + + for (i=0 ;i < sec->linecount ; i++) + { + check = sec->lines[i]; + other = getNextSector(check,sec); + + if (!other) + continue; + + if (other->floorheight > floor) + floor = other->floorheight; + } + return floor; +} + + +// +// P_FindNextHighestFloor() +// +// Passed a sector and a floor height, returns the fixed point value +// of the smallest floor height in a surrounding sector larger than +// the floor height passed. If no such height exists the floorheight +// passed is returned. +// +// Rewritten by Lee Killough to avoid fixed array and to be faster +// +fixed_t P_FindNextHighestFloor(sector_t *sec, int currentheight) +{ + sector_t *other; + int i; + + for (i=0 ;i < sec->linecount ; i++) + if ((other = getNextSector(sec->lines[i],sec)) && + other->floorheight > currentheight) + { + int height = other->floorheight; + while (++i < sec->linecount) + if ((other = getNextSector(sec->lines[i],sec)) && + other->floorheight < height && + other->floorheight > currentheight) + height = other->floorheight; + return height; + } + /* cph - my guess at doom v1.2 - 1.4beta compatibility here. + * If there are no higher neighbouring sectors, Heretic just returned + * heightlist[0] (local variable), i.e. noise off the stack. 0 is right for + * RETURN01 E1M2, so let's take that. */ + return (compatibility_level < doom_1666_compatibility ? 0 : currentheight); +} + + +// +// P_FindNextLowestFloor() +// +// Passed a sector and a floor height, returns the fixed point value +// of the largest floor height in a surrounding sector smaller than +// the floor height passed. If no such height exists the floorheight +// passed is returned. +// +// jff 02/03/98 Twiddled Lee's P_FindNextHighestFloor to make this +// +fixed_t P_FindNextLowestFloor(sector_t *sec, int currentheight) +{ + sector_t *other; + int i; + + for (i=0 ;i < sec->linecount ; i++) + if ((other = getNextSector(sec->lines[i],sec)) && + other->floorheight < currentheight) + { + int height = other->floorheight; + while (++i < sec->linecount) + if ((other = getNextSector(sec->lines[i],sec)) && + other->floorheight > height && + other->floorheight < currentheight) + height = other->floorheight; + return height; + } + return currentheight; +} + + +// +// P_FindNextLowestCeiling() +// +// Passed a sector and a ceiling height, returns the fixed point value +// of the largest ceiling height in a surrounding sector smaller than +// the ceiling height passed. If no such height exists the ceiling height +// passed is returned. +// +// jff 02/03/98 Twiddled Lee's P_FindNextHighestFloor to make this +// +fixed_t P_FindNextLowestCeiling(sector_t *sec, int currentheight) +{ + sector_t *other; + int i; + + for (i=0 ;i < sec->linecount ; i++) + if ((other = getNextSector(sec->lines[i],sec)) && + other->ceilingheight < currentheight) + { + int height = other->ceilingheight; + while (++i < sec->linecount) + if ((other = getNextSector(sec->lines[i],sec)) && + other->ceilingheight > height && + other->ceilingheight < currentheight) + height = other->ceilingheight; + return height; + } + return currentheight; +} + + +// +// P_FindNextHighestCeiling() +// +// Passed a sector and a ceiling height, returns the fixed point value +// of the smallest ceiling height in a surrounding sector larger than +// the ceiling height passed. If no such height exists the ceiling height +// passed is returned. +// +// jff 02/03/98 Twiddled Lee's P_FindNextHighestFloor to make this +// +fixed_t P_FindNextHighestCeiling(sector_t *sec, int currentheight) +{ + sector_t *other; + int i; + + for (i=0 ;i < sec->linecount ; i++) + if ((other = getNextSector(sec->lines[i],sec)) && + other->ceilingheight > currentheight) + { + int height = other->ceilingheight; + while (++i < sec->linecount) + if ((other = getNextSector(sec->lines[i],sec)) && + other->ceilingheight < height && + other->ceilingheight > currentheight) + height = other->ceilingheight; + return height; + } + return currentheight; +} + + +// +// P_FindLowestCeilingSurrounding() +// +// Passed a sector, returns the fixed point value of the smallest +// ceiling height in the surrounding sectors, not including that passed +// +// NOTE: if no surrounding sector exists 32000*FRACUINT is returned +// but if compatibility then INT_MAX is the return +// +fixed_t P_FindLowestCeilingSurrounding(sector_t* sec) +{ + int i; + line_t* check; + sector_t* other; + fixed_t height = INT_MAX; + + /* jff 3/12/98 avoid ovf in height calculations */ + if (!comp[comp_model]) height = 32000*FRACUNIT; + + for (i=0 ;i < sec->linecount ; i++) + { + check = sec->lines[i]; + other = getNextSector(check,sec); + + if (!other) + continue; + + if (other->ceilingheight < height) + height = other->ceilingheight; + } + return height; +} + + +// +// P_FindHighestCeilingSurrounding() +// +// Passed a sector, returns the fixed point value of the largest +// ceiling height in the surrounding sectors, not including that passed +// +// NOTE: if no surrounding sector exists -32000*FRACUINT is returned +// but if compatibility then 0 is the smallest return possible +// +fixed_t P_FindHighestCeilingSurrounding(sector_t* sec) +{ + int i; + line_t* check; + sector_t* other; + fixed_t height = 0; + + /* jff 1/26/98 Fix initial value for floor to not act differently + * in sections of wad that are below 0 units + * jff 3/12/98 avoid ovf in height calculations */ + if (!comp[comp_model]) height = -32000*FRACUNIT; + + for (i=0 ;i < sec->linecount ; i++) + { + check = sec->lines[i]; + other = getNextSector(check,sec); + + if (!other) + continue; + + if (other->ceilingheight > height) + height = other->ceilingheight; + } + return height; +} + + +// +// P_FindShortestTextureAround() +// +// Passed a sector number, returns the shortest lower texture on a +// linedef bounding the sector. +// +// Note: If no lower texture exists 32000*FRACUNIT is returned. +// but if compatibility then INT_MAX is returned +// +// jff 02/03/98 Add routine to find shortest lower texture +// +fixed_t P_FindShortestTextureAround(int secnum) +{ + int minsize = INT_MAX; + side_t* side; + int i; + sector_t *sec = §ors[secnum]; + + if (!comp[comp_model]) + minsize = 32000<linecount; i++) + { + if (twoSided(secnum, i)) + { + side = getSide(secnum,i,0); + if (side->bottomtexture > 0) //jff 8/14/98 texture 0 is a placeholder + if (textureheight[side->bottomtexture] < minsize) + minsize = textureheight[side->bottomtexture]; + side = getSide(secnum,i,1); + if (side->bottomtexture > 0) //jff 8/14/98 texture 0 is a placeholder + if (textureheight[side->bottomtexture] < minsize) + minsize = textureheight[side->bottomtexture]; + } + } + return minsize; +} + + +// +// P_FindShortestUpperAround() +// +// Passed a sector number, returns the shortest upper texture on a +// linedef bounding the sector. +// +// Note: If no upper texture exists 32000*FRACUNIT is returned. +// but if compatibility then INT_MAX is returned +// +// jff 03/20/98 Add routine to find shortest upper texture +// +fixed_t P_FindShortestUpperAround(int secnum) +{ + int minsize = INT_MAX; + side_t* side; + int i; + sector_t *sec = §ors[secnum]; + + if (!comp[comp_model]) + minsize = 32000<linecount; i++) + { + if (twoSided(secnum, i)) + { + side = getSide(secnum,i,0); + if (side->toptexture > 0) //jff 8/14/98 texture 0 is a placeholder + if (textureheight[side->toptexture] < minsize) + minsize = textureheight[side->toptexture]; + side = getSide(secnum,i,1); + if (side->toptexture > 0) //jff 8/14/98 texture 0 is a placeholder + if (textureheight[side->toptexture] < minsize) + minsize = textureheight[side->toptexture]; + } + } + return minsize; +} + + +// +// P_FindModelFloorSector() +// +// Passed a floor height and a sector number, return a pointer to a +// a sector with that floor height across the lowest numbered two sided +// line surrounding the sector. +// +// Note: If no sector at that height bounds the sector passed, return NULL +// +// jff 02/03/98 Add routine to find numeric model floor +// around a sector specified by sector number +// jff 3/14/98 change first parameter to plain height to allow call +// from routine not using floormove_t +// +sector_t *P_FindModelFloorSector(fixed_t floordestheight,int secnum) +{ + int i; + sector_t *sec=NULL; + int linecount; + + sec = §ors[secnum]; //jff 3/2/98 woops! better do this + //jff 5/23/98 don't disturb sec->linecount while searching + // but allow early exit in old demos + linecount = sec->linecount; + for (i = 0; i < (demo_compatibility && sec->linecountlinecount : linecount); i++) + { + if ( twoSided(secnum, i) ) + { + if (getSide(secnum,i,0)->sector-sectors == secnum) + sec = getSector(secnum,i,1); + else + sec = getSector(secnum,i,0); + + if (sec->floorheight == floordestheight) + return sec; + } + } + return NULL; +} + + +// +// P_FindModelCeilingSector() +// +// Passed a ceiling height and a sector number, return a pointer to a +// a sector with that ceiling height across the lowest numbered two sided +// line surrounding the sector. +// +// Note: If no sector at that height bounds the sector passed, return NULL +// +// jff 02/03/98 Add routine to find numeric model ceiling +// around a sector specified by sector number +// used only from generalized ceiling types +// jff 3/14/98 change first parameter to plain height to allow call +// from routine not using ceiling_t +// +sector_t *P_FindModelCeilingSector(fixed_t ceildestheight,int secnum) +{ + int i; + sector_t *sec=NULL; + int linecount; + + sec = §ors[secnum]; //jff 3/2/98 woops! better do this + //jff 5/23/98 don't disturb sec->linecount while searching + // but allow early exit in old demos + linecount = sec->linecount; + for (i = 0; i < (demo_compatibility && sec->linecountlinecount : linecount); i++) + { + if ( twoSided(secnum, i) ) + { + if (getSide(secnum,i,0)->sector-sectors == secnum) + sec = getSector(secnum,i,1); + else + sec = getSector(secnum,i,0); + + if (sec->ceilingheight == ceildestheight) + return sec; + } + } + return NULL; +} + +// +// RETURN NEXT SECTOR # THAT LINE TAG REFERS TO +// + +// Find the next sector with the same tag as a linedef. +// Rewritten by Lee Killough to use chained hashing to improve speed + +int P_FindSectorFromLineTag(const line_t *line, int start) +{ + start = start >= 0 ? sectors[start].nexttag : + sectors[(unsigned) line->tag % (unsigned) numsectors].firsttag; + while (start >= 0 && sectors[start].tag != line->tag) + start = sectors[start].nexttag; + return start; +} + +// killough 4/16/98: Same thing, only for linedefs + +int P_FindLineFromLineTag(const line_t *line, int start) +{ + start = start >= 0 ? lines[start].nexttag : + lines[(unsigned) line->tag % (unsigned) numlines].firsttag; + while (start >= 0 && lines[start].tag != line->tag) + start = lines[start].nexttag; + return start; +} + +// Hash the sector tags across the sectors and linedefs. +static void P_InitTagLists(void) +{ + register int i; + + for (i=numsectors; --i>=0; ) // Initially make all slots empty. + sectors[i].firsttag = -1; + for (i=numsectors; --i>=0; ) // Proceed from last to first sector + { // so that lower sectors appear first + int j = (unsigned) sectors[i].tag % (unsigned) numsectors; // Hash func + sectors[i].nexttag = sectors[j].firsttag; // Prepend sector to chain + sectors[j].firsttag = i; + } + + // killough 4/17/98: same thing, only for linedefs + + for (i=numlines; --i>=0; ) // Initially make all slots empty. + lines[i].firsttag = -1; + for (i=numlines; --i>=0; ) // Proceed from last to first linedef + { // so that lower linedefs appear first + int j = (unsigned) lines[i].tag % (unsigned) numlines; // Hash func + lines[i].nexttag = lines[j].firsttag; // Prepend linedef to chain + lines[j].firsttag = i; + } +} + +// +// P_FindMinSurroundingLight() +// +// Passed a sector and a light level, returns the smallest light level +// in a surrounding sector less than that passed. If no smaller light +// level exists, the light level passed is returned. +// +int P_FindMinSurroundingLight +( sector_t* sector, + int max ) +{ + int i; + int min; + line_t* line; + sector_t* check; + + min = max; + for (i=0 ; i < sector->linecount ; i++) + { + line = sector->lines[i]; + check = getNextSector(line,sector); + + if (!check) + continue; + + if (check->lightlevel < min) + min = check->lightlevel; + } + return min; +} + + +// +// P_CanUnlockGenDoor() +// +// Passed a generalized locked door linedef and a player, returns whether +// the player has the keys necessary to unlock that door. +// +// Note: The linedef passed MUST be a generalized locked door type +// or results are undefined. +// +// jff 02/05/98 routine added to test for unlockability of +// generalized locked doors +// +boolean P_CanUnlockGenDoor +( line_t* line, + player_t* player) +{ + // does this line special distinguish between skulls and keys? + int skulliscard = (line->special & LockedNKeys)>>LockedNKeysShift; + + // determine for each case of lock type if player's keys are adequate + switch((line->special & LockedKey)>>LockedKeyShift) + { + case AnyKey: + if + ( + !player->cards[it_redcard] && + !player->cards[it_redskull] && + !player->cards[it_bluecard] && + !player->cards[it_blueskull] && + !player->cards[it_yellowcard] && + !player->cards[it_yellowskull] + ) + { + player->message = s_PD_ANY; // Ty 03/27/98 - externalized + S_StartSound(player->mo,sfx_oof); // killough 3/20/98 + return false; + } + break; + case RCard: + if + ( + !player->cards[it_redcard] && + (!skulliscard || !player->cards[it_redskull]) + ) + { + player->message = skulliscard? s_PD_REDK : s_PD_REDC; // Ty 03/27/98 - externalized + S_StartSound(player->mo,sfx_oof); // killough 3/20/98 + return false; + } + break; + case BCard: + if + ( + !player->cards[it_bluecard] && + (!skulliscard || !player->cards[it_blueskull]) + ) + { + player->message = skulliscard? s_PD_BLUEK : s_PD_BLUEC; // Ty 03/27/98 - externalized + S_StartSound(player->mo,sfx_oof); // killough 3/20/98 + return false; + } + break; + case YCard: + if + ( + !player->cards[it_yellowcard] && + (!skulliscard || !player->cards[it_yellowskull]) + ) + { + player->message = skulliscard? s_PD_YELLOWK : s_PD_YELLOWC; // Ty 03/27/98 - externalized + S_StartSound(player->mo,sfx_oof); // killough 3/20/98 + return false; + } + break; + case RSkull: + if + ( + !player->cards[it_redskull] && + (!skulliscard || !player->cards[it_redcard]) + ) + { + player->message = skulliscard? s_PD_REDK : s_PD_REDS; // Ty 03/27/98 - externalized + S_StartSound(player->mo,sfx_oof); // killough 3/20/98 + return false; + } + break; + case BSkull: + if + ( + !player->cards[it_blueskull] && + (!skulliscard || !player->cards[it_bluecard]) + ) + { + player->message = skulliscard? s_PD_BLUEK : s_PD_BLUES; // Ty 03/27/98 - externalized + S_StartSound(player->mo,sfx_oof); // killough 3/20/98 + return false; + } + break; + case YSkull: + if + ( + !player->cards[it_yellowskull] && + (!skulliscard || !player->cards[it_yellowcard]) + ) + { + player->message = skulliscard? s_PD_YELLOWK : s_PD_YELLOWS; // Ty 03/27/98 - externalized + S_StartSound(player->mo,sfx_oof); // killough 3/20/98 + return false; + } + break; + case AllKeys: + if + ( + !skulliscard && + ( + !player->cards[it_redcard] || + !player->cards[it_redskull] || + !player->cards[it_bluecard] || + !player->cards[it_blueskull] || + !player->cards[it_yellowcard] || + !player->cards[it_yellowskull] + ) + ) + { + player->message = s_PD_ALL6; // Ty 03/27/98 - externalized + S_StartSound(player->mo,sfx_oof); // killough 3/20/98 + return false; + } + if + ( + skulliscard && + ( + (!player->cards[it_redcard] && + !player->cards[it_redskull]) || + (!player->cards[it_bluecard] && + !player->cards[it_blueskull]) || + (!player->cards[it_yellowcard] && + !player->cards[it_yellowskull]) + ) + ) + { + player->message = s_PD_ALL3; // Ty 03/27/98 - externalized + S_StartSound(player->mo,sfx_oof); // killough 3/20/98 + return false; + } + break; + } + return true; +} + + +// +// P_SectorActive() +// +// Passed a linedef special class (floor, ceiling, lighting) and a sector +// returns whether the sector is already busy with a linedef special of the +// same class. If old demo compatibility true, all linedef special classes +// are the same. +// +// jff 2/23/98 added to prevent old demos from +// succeeding in starting multiple specials on one sector +// +boolean PUREFUNC P_SectorActive(special_e t, const sector_t *sec) +{ + if (demo_compatibility) // return whether any thinker is active + return sec->floordata != NULL || sec->ceilingdata != NULL || sec->lightingdata != NULL; + else + switch (t) // return whether thinker of same type is active + { + case floor_special: + return sec->floordata != NULL; + case ceiling_special: + return sec->ceilingdata != NULL; + case lighting_special: + return sec->lightingdata != NULL; + } + return true; // don't know which special, must be active, shouldn't be here +} + + +// +// P_CheckTag() +// +// Passed a line, returns true if the tag is non-zero or the line special +// allows no tag without harm. If compatibility, all linedef specials are +// allowed to have zero tag. +// +// Note: Only line specials activated by walkover, pushing, or shooting are +// checked by this routine. +// +// jff 2/27/98 Added to check for zero tag allowed for regular special types +// +int P_CheckTag(line_t *line) +{ + /* tag not zero, allowed, or + * killough 11/98: compatibility option */ + if (comp[comp_zerotags] || line->tag) + return 1; + + switch(line->special) + { + case 1: // Manual door specials + case 26: + case 27: + case 28: + case 31: + case 32: + case 33: + case 34: + case 117: + case 118: + + case 139: // Lighting specials + case 170: + case 79: + case 35: + case 138: + case 171: + case 81: + case 13: + case 192: + case 169: + case 80: + case 12: + case 194: + case 173: + case 157: + case 104: + case 193: + case 172: + case 156: + case 17: + + case 195: // Thing teleporters + case 174: + case 97: + case 39: + case 126: + case 125: + case 210: + case 209: + case 208: + case 207: + + case 11: // Exits + case 52: + case 197: + case 51: + case 124: + case 198: + + case 48: // Scrolling walls + case 85: + return 1; // zero tag allowed + + default: + break; + } + return 0; // zero tag not allowed +} + + +// +// P_IsSecret() +// +// Passed a sector, returns if the sector secret type is still active, i.e. +// secret type is set and the secret has not yet been obtained. +// +// jff 3/14/98 added to simplify checks for whether sector is secret +// in automap and other places +// +boolean PUREFUNC P_IsSecret(const sector_t *sec) +{ + return (sec->special==9 || (sec->special&SECRET_MASK)); +} + + +// +// P_WasSecret() +// +// Passed a sector, returns if the sector secret type is was active, i.e. +// secret type was set and the secret has been obtained already. +// +// jff 3/14/98 added to simplify checks for whether sector is secret +// in automap and other places +// +boolean PUREFUNC P_WasSecret(const sector_t *sec) +{ + return (sec->oldspecial==9 || (sec->oldspecial&SECRET_MASK)); +} + + +////////////////////////////////////////////////////////////////////////// +// +// Events +// +// Events are operations triggered by using, crossing, +// or shooting special lines, or by timed thinkers. +// +///////////////////////////////////////////////////////////////////////// + +// +// P_CrossSpecialLine - Walkover Trigger Dispatcher +// +// Called every time a thing origin is about +// to cross a line with a non 0 special, whether a walkover type or not. +// +// jff 02/12/98 all W1 lines were fixed to check the result from the EV_ +// function before clearing the special. This avoids losing the function +// of the line, should the sector already be active when the line is +// crossed. Change is qualified by demo_compatibility. +// +// CPhipps - take a line_t pointer instead of a line number, as in MBF +void P_CrossSpecialLine(line_t *line, int side, mobj_t *thing) +{ + int ok; + + // Things that should never trigger lines + if (!thing->player) + { + // Things that should NOT trigger specials... + switch(thing->type) + { + case MT_ROCKET: + case MT_PLASMA: + case MT_BFG: + case MT_TROOPSHOT: + case MT_HEADSHOT: + case MT_BRUISERSHOT: + return; + break; + + default: break; + } + } + + //jff 02/04/98 add check here for generalized lindef types + if (!demo_compatibility) // generalized types not recognized if old demo + { + // pointer to line function is NULL by default, set non-null if + // line special is walkover generalized linedef type + int (*linefunc)(line_t *line)=NULL; + + // check each range of generalized linedefs + if ((unsigned)line->special >= GenEnd) + { + // Out of range for GenFloors + } + else if ((unsigned)line->special >= GenFloorBase) + { + if (!thing->player) + if ((line->special & FloorChange) || !(line->special & FloorModel)) + return; // FloorModel is "Allow Monsters" if FloorChange is 0 + if (!line->tag) //jff 2/27/98 all walk generalized types require tag + return; + linefunc = EV_DoGenFloor; + } + else if ((unsigned)line->special >= GenCeilingBase) + { + if (!thing->player) + if ((line->special & CeilingChange) || !(line->special & CeilingModel)) + return; // CeilingModel is "Allow Monsters" if CeilingChange is 0 + if (!line->tag) //jff 2/27/98 all walk generalized types require tag + return; + linefunc = EV_DoGenCeiling; + } + else if ((unsigned)line->special >= GenDoorBase) + { + if (!thing->player) + { + if (!(line->special & DoorMonster)) + return; // monsters disallowed from this door + if (line->flags & ML_SECRET) // they can't open secret doors either + return; + } + if (!line->tag) //3/2/98 move outside the monster check + return; + linefunc = EV_DoGenDoor; + } + else if ((unsigned)line->special >= GenLockedBase) + { + if (!thing->player) + return; // monsters disallowed from unlocking doors + if (((line->special&TriggerType)==WalkOnce) || ((line->special&TriggerType)==WalkMany)) + { //jff 4/1/98 check for being a walk type before reporting door type + if (!P_CanUnlockGenDoor(line,thing->player)) + return; + } + else + return; + linefunc = EV_DoGenLockedDoor; + } + else if ((unsigned)line->special >= GenLiftBase) + { + if (!thing->player) + if (!(line->special & LiftMonster)) + return; // monsters disallowed + if (!line->tag) //jff 2/27/98 all walk generalized types require tag + return; + linefunc = EV_DoGenLift; + } + else if ((unsigned)line->special >= GenStairsBase) + { + if (!thing->player) + if (!(line->special & StairMonster)) + return; // monsters disallowed + if (!line->tag) //jff 2/27/98 all walk generalized types require tag + return; + linefunc = EV_DoGenStairs; + } + + if (linefunc) // if it was a valid generalized type + switch((line->special & TriggerType) >> TriggerTypeShift) + { + case WalkOnce: + if (linefunc(line)) + line->special = 0; // clear special if a walk once type + return; + case WalkMany: + linefunc(line); + return; + default: // if not a walk type, do nothing here + return; + } + } + + if (!thing->player) + { + ok = 0; + switch(line->special) + { + case 39: // teleport trigger + case 97: // teleport retrigger + case 125: // teleport monsteronly trigger + case 126: // teleport monsteronly retrigger + case 4: // raise door + case 10: // plat down-wait-up-stay trigger + case 88: // plat down-wait-up-stay retrigger + //jff 3/5/98 add ability of monsters etc. to use teleporters + case 208: //silent thing teleporters + case 207: + case 243: //silent line-line teleporter + case 244: //jff 3/6/98 make fit within DCK's 256 linedef types + case 262: //jff 4/14/98 add monster only + case 263: //jff 4/14/98 silent thing,line,line rev types + case 264: //jff 4/14/98 plus player/monster silent line + case 265: // reversed types + case 266: + case 267: + case 268: + case 269: + ok = 1; + break; + } + if (!ok) + return; + } + + if (!P_CheckTag(line)) //jff 2/27/98 disallow zero tag on some types + return; + + // Dispatch on the line special value to the line's action routine + // If a once only function, and successful, clear the line special + + switch (line->special) + { + // Regular walk once triggers + + case 2: + // Open Door + if (EV_DoDoor(line,open) || demo_compatibility) + line->special = 0; + break; + + case 3: + // Close Door + if (EV_DoDoor(line,close) || demo_compatibility) + line->special = 0; + break; + + case 4: + // Raise Door + if (EV_DoDoor(line,normal) || demo_compatibility) + line->special = 0; + break; + + case 5: + // Raise Floor + if (EV_DoFloor(line,raiseFloor) || demo_compatibility) + line->special = 0; + break; + + case 6: + // Fast Ceiling Crush & Raise + if (EV_DoCeiling(line,fastCrushAndRaise) || demo_compatibility) + line->special = 0; + break; + + case 8: + // Build Stairs + if (EV_BuildStairs(line,build8) || demo_compatibility) + line->special = 0; + break; + + case 10: + // PlatDownWaitUp + if (EV_DoPlat(line,downWaitUpStay,0) || demo_compatibility) + line->special = 0; + break; + + case 12: + // Light Turn On - brightest near + if (EV_LightTurnOn(line,0) || demo_compatibility) + line->special = 0; + break; + + case 13: + // Light Turn On 255 + if (EV_LightTurnOn(line,255) || demo_compatibility) + line->special = 0; + break; + + case 16: + // Close Door 30 + if (EV_DoDoor(line,close30ThenOpen) || demo_compatibility) + line->special = 0; + break; + + case 17: + // Start Light Strobing + if (EV_StartLightStrobing(line) || demo_compatibility) + line->special = 0; + break; + + case 19: + // Lower Floor + if (EV_DoFloor(line,lowerFloor) || demo_compatibility) + line->special = 0; + break; + + case 22: + // Raise floor to nearest height and change texture + if (EV_DoPlat(line,raiseToNearestAndChange,0) || demo_compatibility) + line->special = 0; + break; + + case 25: + // Ceiling Crush and Raise + if (EV_DoCeiling(line,crushAndRaise) || demo_compatibility) + line->special = 0; + break; + + case 30: + // Raise floor to shortest texture height + // on either side of lines. + if (EV_DoFloor(line,raiseToTexture) || demo_compatibility) + line->special = 0; + break; + + case 35: + // Lights Very Dark + if (EV_LightTurnOn(line,35) || demo_compatibility) + line->special = 0; + break; + + case 36: + // Lower Floor (TURBO) + if (EV_DoFloor(line,turboLower) || demo_compatibility) + line->special = 0; + break; + + case 37: + // LowerAndChange + if (EV_DoFloor(line,lowerAndChange) || demo_compatibility) + line->special = 0; + break; + + case 38: + // Lower Floor To Lowest + if (EV_DoFloor(line, lowerFloorToLowest) || demo_compatibility) + line->special = 0; + break; + + case 39: + // TELEPORT! //jff 02/09/98 fix using up with wrong side crossing + if (EV_Teleport(line, side, thing) || demo_compatibility) + line->special = 0; + break; + + case 40: + // RaiseCeilingLowerFloor + if (demo_compatibility) + { + EV_DoCeiling( line, raiseToHighest ); + EV_DoFloor( line, lowerFloorToLowest ); //jff 02/12/98 doesn't work + line->special = 0; + } + else + if (EV_DoCeiling(line, raiseToHighest)) + line->special = 0; + break; + + case 44: + // Ceiling Crush + if (EV_DoCeiling(line, lowerAndCrush) || demo_compatibility) + line->special = 0; + break; + + case 52: + // EXIT! + // killough 10/98: prevent zombies from exiting levels + if (!(thing->player && thing->player->health <= 0 && !comp[comp_zombie])) + G_ExitLevel (); + break; + + case 53: + // Perpetual Platform Raise + if (EV_DoPlat(line,perpetualRaise,0) || demo_compatibility) + line->special = 0; + break; + + case 54: + // Platform Stop + if (EV_StopPlat(line) || demo_compatibility) + line->special = 0; + break; + + case 56: + // Raise Floor Crush + if (EV_DoFloor(line,raiseFloorCrush) || demo_compatibility) + line->special = 0; + break; + + case 57: + // Ceiling Crush Stop + if (EV_CeilingCrushStop(line) || demo_compatibility) + line->special = 0; + break; + + case 58: + // Raise Floor 24 + if (EV_DoFloor(line,raiseFloor24) || demo_compatibility) + line->special = 0; + break; + + case 59: + // Raise Floor 24 And Change + if (EV_DoFloor(line,raiseFloor24AndChange) || demo_compatibility) + line->special = 0; + break; + + case 100: + // Build Stairs Turbo 16 + if (EV_BuildStairs(line,turbo16) || demo_compatibility) + line->special = 0; + break; + + case 104: + // Turn lights off in sector(tag) + if (EV_TurnTagLightsOff(line) || demo_compatibility) + line->special = 0; + break; + + case 108: + // Blazing Door Raise (faster than TURBO!) + if (EV_DoDoor(line,blazeRaise) || demo_compatibility) + line->special = 0; + break; + + case 109: + // Blazing Door Open (faster than TURBO!) + if (EV_DoDoor (line,blazeOpen) || demo_compatibility) + line->special = 0; + break; + + case 110: + // Blazing Door Close (faster than TURBO!) + if (EV_DoDoor (line,blazeClose) || demo_compatibility) + line->special = 0; + break; + + case 119: + // Raise floor to nearest surr. floor + if (EV_DoFloor(line,raiseFloorToNearest) || demo_compatibility) + line->special = 0; + break; + + case 121: + // Blazing PlatDownWaitUpStay + if (EV_DoPlat(line,blazeDWUS,0) || demo_compatibility) + line->special = 0; + break; + + case 124: + // Secret EXIT + // killough 10/98: prevent zombies from exiting levels + // CPhipps - change for lxdoom's compatibility handling + if (!(thing->player && thing->player->health <= 0 && !comp[comp_zombie])) + G_SecretExitLevel (); + break; + + case 125: + // TELEPORT MonsterONLY + if (!thing->player && + (EV_Teleport(line, side, thing) || demo_compatibility)) + line->special = 0; + break; + + case 130: + // Raise Floor Turbo + if (EV_DoFloor(line,raiseFloorTurbo) || demo_compatibility) + line->special = 0; + break; + + case 141: + // Silent Ceiling Crush & Raise + if (EV_DoCeiling(line,silentCrushAndRaise) || demo_compatibility) + line->special = 0; + break; + + // Regular walk many retriggerable + + case 72: + // Ceiling Crush + EV_DoCeiling( line, lowerAndCrush ); + break; + + case 73: + // Ceiling Crush and Raise + EV_DoCeiling(line,crushAndRaise); + break; + + case 74: + // Ceiling Crush Stop + EV_CeilingCrushStop(line); + break; + + case 75: + // Close Door + EV_DoDoor(line,close); + break; + + case 76: + // Close Door 30 + EV_DoDoor(line,close30ThenOpen); + break; + + case 77: + // Fast Ceiling Crush & Raise + EV_DoCeiling(line,fastCrushAndRaise); + break; + + case 79: + // Lights Very Dark + EV_LightTurnOn(line,35); + break; + + case 80: + // Light Turn On - brightest near + EV_LightTurnOn(line,0); + break; + + case 81: + // Light Turn On 255 + EV_LightTurnOn(line,255); + break; + + case 82: + // Lower Floor To Lowest + EV_DoFloor( line, lowerFloorToLowest ); + break; + + case 83: + // Lower Floor + EV_DoFloor(line,lowerFloor); + break; + + case 84: + // LowerAndChange + EV_DoFloor(line,lowerAndChange); + break; + + case 86: + // Open Door + EV_DoDoor(line,open); + break; + + case 87: + // Perpetual Platform Raise + EV_DoPlat(line,perpetualRaise,0); + break; + + case 88: + // PlatDownWaitUp + EV_DoPlat(line,downWaitUpStay,0); + break; + + case 89: + // Platform Stop + EV_StopPlat(line); + break; + + case 90: + // Raise Door + EV_DoDoor(line,normal); + break; + + case 91: + // Raise Floor + EV_DoFloor(line,raiseFloor); + break; + + case 92: + // Raise Floor 24 + EV_DoFloor(line,raiseFloor24); + break; + + case 93: + // Raise Floor 24 And Change + EV_DoFloor(line,raiseFloor24AndChange); + break; + + case 94: + // Raise Floor Crush + EV_DoFloor(line,raiseFloorCrush); + break; + + case 95: + // Raise floor to nearest height + // and change texture. + EV_DoPlat(line,raiseToNearestAndChange,0); + break; + + case 96: + // Raise floor to shortest texture height + // on either side of lines. + EV_DoFloor(line,raiseToTexture); + break; + + case 97: + // TELEPORT! + EV_Teleport( line, side, thing ); + break; + + case 98: + // Lower Floor (TURBO) + EV_DoFloor(line,turboLower); + break; + + case 105: + // Blazing Door Raise (faster than TURBO!) + EV_DoDoor (line,blazeRaise); + break; + + case 106: + // Blazing Door Open (faster than TURBO!) + EV_DoDoor (line,blazeOpen); + break; + + case 107: + // Blazing Door Close (faster than TURBO!) + EV_DoDoor (line,blazeClose); + break; + + case 120: + // Blazing PlatDownWaitUpStay. + EV_DoPlat(line,blazeDWUS,0); + break; + + case 126: + // TELEPORT MonsterONLY. + if (!thing->player) + EV_Teleport( line, side, thing ); + break; + + case 128: + // Raise To Nearest Floor + EV_DoFloor(line,raiseFloorToNearest); + break; + + case 129: + // Raise Floor Turbo + EV_DoFloor(line,raiseFloorTurbo); + break; + + // Extended walk triggers + + // jff 1/29/98 added new linedef types to fill all functions out so that + // all have varieties SR, S1, WR, W1 + + // killough 1/31/98: "factor out" compatibility test, by + // adding inner switch qualified by compatibility flag. + // relax test to demo_compatibility + + // killough 2/16/98: Fix problems with W1 types being cleared too early + + default: + if (!demo_compatibility) + switch (line->special) + { + // Extended walk once triggers + + case 142: + // Raise Floor 512 + // 142 W1 EV_DoFloor(raiseFloor512) + if (EV_DoFloor(line,raiseFloor512)) + line->special = 0; + break; + + case 143: + // Raise Floor 24 and change + // 143 W1 EV_DoPlat(raiseAndChange,24) + if (EV_DoPlat(line,raiseAndChange,24)) + line->special = 0; + break; + + case 144: + // Raise Floor 32 and change + // 144 W1 EV_DoPlat(raiseAndChange,32) + if (EV_DoPlat(line,raiseAndChange,32)) + line->special = 0; + break; + + case 145: + // Lower Ceiling to Floor + // 145 W1 EV_DoCeiling(lowerToFloor) + if (EV_DoCeiling( line, lowerToFloor )) + line->special = 0; + break; + + case 146: + // Lower Pillar, Raise Donut + // 146 W1 EV_DoDonut() + if (EV_DoDonut(line)) + line->special = 0; + break; + + case 199: + // Lower ceiling to lowest surrounding ceiling + // 199 W1 EV_DoCeiling(lowerToLowest) + if (EV_DoCeiling(line,lowerToLowest)) + line->special = 0; + break; + + case 200: + // Lower ceiling to highest surrounding floor + // 200 W1 EV_DoCeiling(lowerToMaxFloor) + if (EV_DoCeiling(line,lowerToMaxFloor)) + line->special = 0; + break; + + case 207: + // killough 2/16/98: W1 silent teleporter (normal kind) + if (EV_SilentTeleport(line, side, thing)) + line->special = 0; + break; + + //jff 3/16/98 renumber 215->153 + case 153: //jff 3/15/98 create texture change no motion type + // Texture/Type Change Only (Trig) + // 153 W1 Change Texture/Type Only + if (EV_DoChange(line,trigChangeOnly)) + line->special = 0; + break; + + case 239: //jff 3/15/98 create texture change no motion type + // Texture/Type Change Only (Numeric) + // 239 W1 Change Texture/Type Only + if (EV_DoChange(line,numChangeOnly)) + line->special = 0; + break; + + case 219: + // Lower floor to next lower neighbor + // 219 W1 Lower Floor Next Lower Neighbor + if (EV_DoFloor(line,lowerFloorToNearest)) + line->special = 0; + break; + + case 227: + // Raise elevator next floor + // 227 W1 Raise Elevator next floor + if (EV_DoElevator(line,elevateUp)) + line->special = 0; + break; + + case 231: + // Lower elevator next floor + // 231 W1 Lower Elevator next floor + if (EV_DoElevator(line,elevateDown)) + line->special = 0; + break; + + case 235: + // Elevator to current floor + // 235 W1 Elevator to current floor + if (EV_DoElevator(line,elevateCurrent)) + line->special = 0; + break; + + case 243: //jff 3/6/98 make fit within DCK's 256 linedef types + // killough 2/16/98: W1 silent teleporter (linedef-linedef kind) + if (EV_SilentLineTeleport(line, side, thing, false)) + line->special = 0; + break; + + case 262: //jff 4/14/98 add silent line-line reversed + if (EV_SilentLineTeleport(line, side, thing, true)) + line->special = 0; + break; + + case 264: //jff 4/14/98 add monster-only silent line-line reversed + if (!thing->player && + EV_SilentLineTeleport(line, side, thing, true)) + line->special = 0; + break; + + case 266: //jff 4/14/98 add monster-only silent line-line + if (!thing->player && + EV_SilentLineTeleport(line, side, thing, false)) + line->special = 0; + break; + + case 268: //jff 4/14/98 add monster-only silent + if (!thing->player && EV_SilentTeleport(line, side, thing)) + line->special = 0; + break; + + //jff 1/29/98 end of added W1 linedef types + + // Extended walk many retriggerable + + //jff 1/29/98 added new linedef types to fill all functions + //out so that all have varieties SR, S1, WR, W1 + + case 147: + // Raise Floor 512 + // 147 WR EV_DoFloor(raiseFloor512) + EV_DoFloor(line,raiseFloor512); + break; + + case 148: + // Raise Floor 24 and Change + // 148 WR EV_DoPlat(raiseAndChange,24) + EV_DoPlat(line,raiseAndChange,24); + break; + + case 149: + // Raise Floor 32 and Change + // 149 WR EV_DoPlat(raiseAndChange,32) + EV_DoPlat(line,raiseAndChange,32); + break; + + case 150: + // Start slow silent crusher + // 150 WR EV_DoCeiling(silentCrushAndRaise) + EV_DoCeiling(line,silentCrushAndRaise); + break; + + case 151: + // RaiseCeilingLowerFloor + // 151 WR EV_DoCeiling(raiseToHighest), + // EV_DoFloor(lowerFloortoLowest) + EV_DoCeiling( line, raiseToHighest ); + EV_DoFloor( line, lowerFloorToLowest ); + break; + + case 152: + // Lower Ceiling to Floor + // 152 WR EV_DoCeiling(lowerToFloor) + EV_DoCeiling( line, lowerToFloor ); + break; + + //jff 3/16/98 renumber 153->256 + case 256: + // Build stairs, step 8 + // 256 WR EV_BuildStairs(build8) + EV_BuildStairs(line,build8); + break; + + //jff 3/16/98 renumber 154->257 + case 257: + // Build stairs, step 16 + // 257 WR EV_BuildStairs(turbo16) + EV_BuildStairs(line,turbo16); + break; + + case 155: + // Lower Pillar, Raise Donut + // 155 WR EV_DoDonut() + EV_DoDonut(line); + break; + + case 156: + // Start lights strobing + // 156 WR Lights EV_StartLightStrobing() + EV_StartLightStrobing(line); + break; + + case 157: + // Lights to dimmest near + // 157 WR Lights EV_TurnTagLightsOff() + EV_TurnTagLightsOff(line); + break; + + case 201: + // Lower ceiling to lowest surrounding ceiling + // 201 WR EV_DoCeiling(lowerToLowest) + EV_DoCeiling(line,lowerToLowest); + break; + + case 202: + // Lower ceiling to highest surrounding floor + // 202 WR EV_DoCeiling(lowerToMaxFloor) + EV_DoCeiling(line,lowerToMaxFloor); + break; + + case 208: + // killough 2/16/98: WR silent teleporter (normal kind) + EV_SilentTeleport(line, side, thing); + break; + + case 212: //jff 3/14/98 create instant toggle floor type + // Toggle floor between C and F instantly + // 212 WR Instant Toggle Floor + EV_DoPlat(line,toggleUpDn,0); + break; + + //jff 3/16/98 renumber 216->154 + case 154: //jff 3/15/98 create texture change no motion type + // Texture/Type Change Only (Trigger) + // 154 WR Change Texture/Type Only + EV_DoChange(line,trigChangeOnly); + break; + + case 240: //jff 3/15/98 create texture change no motion type + // Texture/Type Change Only (Numeric) + // 240 WR Change Texture/Type Only + EV_DoChange(line,numChangeOnly); + break; + + case 220: + // Lower floor to next lower neighbor + // 220 WR Lower Floor Next Lower Neighbor + EV_DoFloor(line,lowerFloorToNearest); + break; + + case 228: + // Raise elevator next floor + // 228 WR Raise Elevator next floor + EV_DoElevator(line,elevateUp); + break; + + case 232: + // Lower elevator next floor + // 232 WR Lower Elevator next floor + EV_DoElevator(line,elevateDown); + break; + + case 236: + // Elevator to current floor + // 236 WR Elevator to current floor + EV_DoElevator(line,elevateCurrent); + break; + + case 244: //jff 3/6/98 make fit within DCK's 256 linedef types + // killough 2/16/98: WR silent teleporter (linedef-linedef kind) + EV_SilentLineTeleport(line, side, thing, false); + break; + + case 263: //jff 4/14/98 add silent line-line reversed + EV_SilentLineTeleport(line, side, thing, true); + break; + + case 265: //jff 4/14/98 add monster-only silent line-line reversed + if (!thing->player) + EV_SilentLineTeleport(line, side, thing, true); + break; + + case 267: //jff 4/14/98 add monster-only silent line-line + if (!thing->player) + EV_SilentLineTeleport(line, side, thing, false); + break; + + case 269: //jff 4/14/98 add monster-only silent + if (!thing->player) + EV_SilentTeleport(line, side, thing); + break; + + //jff 1/29/98 end of added WR linedef types + } + break; + } +} + +// +// P_ShootSpecialLine - Gun trigger special dispatcher +// +// Called when a thing shoots a special line with bullet, shell, saw, or fist. +// +// jff 02/12/98 all G1 lines were fixed to check the result from the EV_ +// function before clearing the special. This avoids losing the function +// of the line, should the sector already be in motion when the line is +// impacted. Change is qualified by demo_compatibility. +// +void P_ShootSpecialLine +( mobj_t* thing, + line_t* line ) +{ + //jff 02/04/98 add check here for generalized linedef + if (!demo_compatibility) + { + // pointer to line function is NULL by default, set non-null if + // line special is gun triggered generalized linedef type + int (*linefunc)(line_t *line)=NULL; + + // check each range of generalized linedefs + if ((unsigned)line->special >= GenEnd) + { + // Out of range for GenFloors + } + else if ((unsigned)line->special >= GenFloorBase) + { + if (!thing->player) + if ((line->special & FloorChange) || !(line->special & FloorModel)) + return; // FloorModel is "Allow Monsters" if FloorChange is 0 + if (!line->tag) //jff 2/27/98 all gun generalized types require tag + return; + + linefunc = EV_DoGenFloor; + } + else if ((unsigned)line->special >= GenCeilingBase) + { + if (!thing->player) + if ((line->special & CeilingChange) || !(line->special & CeilingModel)) + return; // CeilingModel is "Allow Monsters" if CeilingChange is 0 + if (!line->tag) //jff 2/27/98 all gun generalized types require tag + return; + linefunc = EV_DoGenCeiling; + } + else if ((unsigned)line->special >= GenDoorBase) + { + if (!thing->player) + { + if (!(line->special & DoorMonster)) + return; // monsters disallowed from this door + if (line->flags & ML_SECRET) // they can't open secret doors either + return; + } + if (!line->tag) //jff 3/2/98 all gun generalized types require tag + return; + linefunc = EV_DoGenDoor; + } + else if ((unsigned)line->special >= GenLockedBase) + { + if (!thing->player) + return; // monsters disallowed from unlocking doors + if (((line->special&TriggerType)==GunOnce) || ((line->special&TriggerType)==GunMany)) + { //jff 4/1/98 check for being a gun type before reporting door type + if (!P_CanUnlockGenDoor(line,thing->player)) + return; + } + else + return; + if (!line->tag) //jff 2/27/98 all gun generalized types require tag + return; + + linefunc = EV_DoGenLockedDoor; + } + else if ((unsigned)line->special >= GenLiftBase) + { + if (!thing->player) + if (!(line->special & LiftMonster)) + return; // monsters disallowed + linefunc = EV_DoGenLift; + } + else if ((unsigned)line->special >= GenStairsBase) + { + if (!thing->player) + if (!(line->special & StairMonster)) + return; // monsters disallowed + if (!line->tag) //jff 2/27/98 all gun generalized types require tag + return; + linefunc = EV_DoGenStairs; + } + else if ((unsigned)line->special >= GenCrusherBase) + { + if (!thing->player) + if (!(line->special & StairMonster)) + return; // monsters disallowed + if (!line->tag) //jff 2/27/98 all gun generalized types require tag + return; + linefunc = EV_DoGenCrusher; + } + + if (linefunc) + switch((line->special & TriggerType) >> TriggerTypeShift) + { + case GunOnce: + if (linefunc(line)) + P_ChangeSwitchTexture(line,0); + return; + case GunMany: + if (linefunc(line)) + P_ChangeSwitchTexture(line,1); + return; + default: // if not a gun type, do nothing here + return; + } + } + + // Impacts that other things can activate. + if (!thing->player) + { + int ok = 0; + switch(line->special) + { + case 46: + // 46 GR Open door on impact weapon is monster activatable + ok = 1; + break; + } + if (!ok) + return; + } + + if (!P_CheckTag(line)) //jff 2/27/98 disallow zero tag on some types + return; + + switch(line->special) + { + case 24: + // 24 G1 raise floor to highest adjacent + if (EV_DoFloor(line,raiseFloor) || demo_compatibility) + P_ChangeSwitchTexture(line,0); + break; + + case 46: + // 46 GR open door, stay open + EV_DoDoor(line,open); + P_ChangeSwitchTexture(line,1); + break; + + case 47: + // 47 G1 raise floor to nearest and change texture and type + if (EV_DoPlat(line,raiseToNearestAndChange,0) || demo_compatibility) + P_ChangeSwitchTexture(line,0); + break; + + //jff 1/30/98 added new gun linedefs here + // killough 1/31/98: added demo_compatibility check, added inner switch + + default: + if (!demo_compatibility) + switch (line->special) + { + case 197: + // Exit to next level + // killough 10/98: prevent zombies from exiting levels + if(thing->player && thing->player->health<=0 && !comp[comp_zombie]) + break; + P_ChangeSwitchTexture(line,0); + G_ExitLevel(); + break; + + case 198: + // Exit to secret level + // killough 10/98: prevent zombies from exiting levels + if(thing->player && thing->player->health<=0 && !comp[comp_zombie]) + break; + P_ChangeSwitchTexture(line,0); + G_SecretExitLevel(); + break; + //jff end addition of new gun linedefs + } + break; + } +} + + +// +// P_PlayerInSpecialSector() +// +// Called every tick frame +// that the player origin is in a special sector +// +// Changed to ignore sector types the engine does not recognize +// +void P_PlayerInSpecialSector (player_t* player) +{ + sector_t* sector; + + sector = player->mo->subsector->sector; + + // Falling, not all the way down yet? + // Sector specials don't apply in mid-air + if (player->mo->z != sector->floorheight) + return; + + // Has hit ground. + //jff add if to handle old vs generalized types + if (sector->special<32) // regular sector specials + { + switch (sector->special) + { + case 5: + // 5/10 unit damage per 31 ticks + if (!player->powers[pw_ironfeet]) + if (!(leveltime&0x1f)) + P_DamageMobj (player->mo, NULL, NULL, 10); + break; + + case 7: + // 2/5 unit damage per 31 ticks + if (!player->powers[pw_ironfeet]) + if (!(leveltime&0x1f)) + P_DamageMobj (player->mo, NULL, NULL, 5); + break; + + case 16: + // 10/20 unit damage per 31 ticks + case 4: + // 10/20 unit damage plus blinking light (light already spawned) + if (!player->powers[pw_ironfeet] + || (P_Random(pr_slimehurt)<5) ) // even with suit, take damage + { + if (!(leveltime&0x1f)) + P_DamageMobj (player->mo, NULL, NULL, 20); + } + break; + + case 9: + // Tally player in secret sector, clear secret special + player->secretcount++; + sector->special = 0; + break; + + case 11: + // Exit on health < 11, take 10/20 damage per 31 ticks + if (comp[comp_god]) /* killough 2/21/98: add compatibility switch */ + player->cheats &= ~CF_GODMODE; // on godmode cheat clearing + // does not affect invulnerability + if (!(leveltime&0x1f)) + P_DamageMobj (player->mo, NULL, NULL, 20); + + if (player->health <= 10) + G_ExitLevel(); + break; + + default: + //jff 1/24/98 Don't exit as DOOM2 did, just ignore + break; + }; + } + else //jff 3/14/98 handle extended sector types for secrets and damage + { + switch ((sector->special&DAMAGE_MASK)>>DAMAGE_SHIFT) + { + case 0: // no damage + break; + case 1: // 2/5 damage per 31 ticks + if (!player->powers[pw_ironfeet]) + if (!(leveltime&0x1f)) + P_DamageMobj (player->mo, NULL, NULL, 5); + break; + case 2: // 5/10 damage per 31 ticks + if (!player->powers[pw_ironfeet]) + if (!(leveltime&0x1f)) + P_DamageMobj (player->mo, NULL, NULL, 10); + break; + case 3: // 10/20 damage per 31 ticks + if (!player->powers[pw_ironfeet] + || (P_Random(pr_slimehurt)<5)) // take damage even with suit + { + if (!(leveltime&0x1f)) + P_DamageMobj (player->mo, NULL, NULL, 20); + } + break; + } + if (sector->special&SECRET_MASK) + { + player->secretcount++; + sector->special &= ~SECRET_MASK; + if (sector->special<32) // if all extended bits clear, + sector->special=0; // sector is not special anymore + } + + // phares 3/19/98: + // + // If FRICTION_MASK or PUSH_MASK is set, we don't care at this + // point, since the code to deal with those situations is + // handled by Thinkers. + + } +} + +// +// P_UpdateSpecials() +// +// Check level timer, frag counter, +// animate flats, scroll walls, +// change button textures +// +// Reads and modifies globals: +// levelTimer, levelTimeCount, +// levelFragLimit, levelFragLimitCount +// + +static boolean levelTimer; +static int levelTimeCount; +boolean levelFragLimit; // Ty 03/18/98 Added -frags support +int levelFragLimitCount; // Ty 03/18/98 Added -frags support + +void P_UpdateSpecials (void) +{ + anim_t* anim; + int pic; + int i; + + // Downcount level timer, exit level if elapsed + if (levelTimer == true) + { + levelTimeCount--; + if (!levelTimeCount) + G_ExitLevel(); + } + + // Check frag counters, if frag limit reached, exit level // Ty 03/18/98 + // Seems like the total frags should be kept in a simple + // array somewhere, but until they are... + if (levelFragLimit == true) // we used -frags so compare count + { + int k,m,fragcount,exitflag=false; + for (k=0;k= levelFragLimitCount) exitflag = true; + if (exitflag == true) break; // skip out of the loop--we're done + } + if (exitflag == true) + G_ExitLevel(); + } + + // Animate flats and textures globally + for (anim = anims ; anim < lastanim ; anim++) + { + for (i=anim->basepic ; ibasepic+anim->numpics ; i++) + { + pic = anim->basepic + ( (leveltime/anim->speed + i)%anim->numpics ); + if (anim->istexture) + texturetranslation[i] = pic; + else + flattranslation[i] = pic; + } + } + + // Check buttons (retriggerable switches) and change texture on timeout + for (i = 0; i < MAXBUTTONS; i++) + if (buttonlist[i].btimer) + { + buttonlist[i].btimer--; + if (!buttonlist[i].btimer) + { + switch(buttonlist[i].where) + { + case top: + sides[buttonlist[i].line->sidenum[0]].toptexture = + buttonlist[i].btexture; + break; + + case middle: + sides[buttonlist[i].line->sidenum[0]].midtexture = + buttonlist[i].btexture; + break; + + case bottom: + sides[buttonlist[i].line->sidenum[0]].bottomtexture = + buttonlist[i].btexture; + break; + } + { + /* don't take the address of the switch's sound origin, + * unless in a compatibility mode. */ + mobj_t *so = (mobj_t *)buttonlist[i].soundorg; + if (comp[comp_sound] || compatibility_level < prboom_6_compatibility) + /* since the buttonlist array is usually zeroed out, + * button popouts generally appear to come from (0,0) */ + so = (mobj_t *)&buttonlist[i].soundorg; + S_StartSound(so, sfx_swtchn); + } + memset(&buttonlist[i],0,sizeof(button_t)); + } + } +} + +////////////////////////////////////////////////////////////////////// +// +// Sector and Line special thinker spawning at level startup +// +////////////////////////////////////////////////////////////////////// + +// +// P_SpawnSpecials +// After the map has been loaded, +// scan for specials that spawn thinkers +// + +// Parses command line parameters. +void P_SpawnSpecials (void) +{ + sector_t* sector; + int i; + + // See if -timer needs to be used. + levelTimer = false; + + i = M_CheckParm("-timer"); // user defined timer on game play + if (i && deathmatch) + { + int time; + time = atoi(myargv[i+1]) * 60 * TICRATE; + levelTimer = true; + levelTimeCount = time; + } + + // See if -frags has been used + levelFragLimit = false; + i = M_CheckParm("-frags"); // Ty 03/18/98 Added -frags support + if (i && deathmatch) + { + int frags; + frags = atoi(myargv[i+1]); + if (frags <= 0) frags = 10; // default 10 if no count provided + levelFragLimit = true; + levelFragLimitCount = frags; + } + + + // Init special sectors. + sector = sectors; + for (i=0 ; ispecial) + continue; + + if (sector->special&SECRET_MASK) //jff 3/15/98 count extended + totalsecret++; // secret sectors too + + switch (sector->special&31) + { + case 1: + // random off + P_SpawnLightFlash (sector); + break; + + case 2: + // strobe fast + P_SpawnStrobeFlash(sector,FASTDARK,0); + break; + + case 3: + // strobe slow + P_SpawnStrobeFlash(sector,SLOWDARK,0); + break; + + case 4: + // strobe fast/death slime + P_SpawnStrobeFlash(sector,FASTDARK,0); + sector->special |= 3<special<32) //jff 3/14/98 bits don't count unless not + totalsecret++; // a generalized sector type + break; + + case 10: + // door close in 30 seconds + P_SpawnDoorCloseIn30 (sector); + break; + + case 12: + // sync strobe slow + P_SpawnStrobeFlash (sector, SLOWDARK, 1); + break; + + case 13: + // sync strobe fast + P_SpawnStrobeFlash (sector, FASTDARK, 1); + break; + + case 14: + // door raise in 5 minutes + P_SpawnDoorRaiseIn5Mins (sector, i); + break; + + case 17: + // fire flickering + P_SpawnFireFlicker(sector); + break; + } + } + + P_RemoveAllActiveCeilings(); // jff 2/22/98 use killough's scheme + + P_RemoveAllActivePlats(); // killough + + for (i = 0;i < MAXBUTTONS;i++) + memset(&buttonlist[i],0,sizeof(button_t)); + + // P_InitTagLists() must be called before P_FindSectorFromLineTag() + // or P_FindLineFromLineTag() can be called. + + P_InitTagLists(); // killough 1/30/98: Create xref tables for tags + + P_SpawnScrollers(); // killough 3/7/98: Add generalized scrollers + + P_SpawnFriction(); // phares 3/12/98: New friction model using linedefs + + P_SpawnPushers(); // phares 3/20/98: New pusher model using linedefs + + for (i=0; i= 0;) + sectors[s].heightsec = sec; + break; + + // killough 3/16/98: Add support for setting + // floor lighting independently (e.g. lava) + case 213: + sec = sides[*lines[i].sidenum].sector-sectors; + for (s = -1; (s = P_FindSectorFromLineTag(lines+i,s)) >= 0;) + sectors[s].floorlightsec = sec; + break; + + // killough 4/11/98: Add support for setting + // ceiling lighting independently + case 261: + sec = sides[*lines[i].sidenum].sector-sectors; + for (s = -1; (s = P_FindSectorFromLineTag(lines+i,s)) >= 0;) + sectors[s].ceilinglightsec = sec; + break; + + // killough 10/98: + // + // Support for sky textures being transferred from sidedefs. + // Allows scrolling and other effects (but if scrolling is + // used, then the same sector tag needs to be used for the + // sky sector, the sky-transfer linedef, and the scroll-effect + // linedef). Still requires user to use F_SKY1 for the floor + // or ceiling texture, to distinguish floor and ceiling sky. + + case 271: // Regular sky + case 272: // Same, only flipped + for (s = -1; (s = P_FindSectorFromLineTag(lines+i,s)) >= 0;) + sectors[s].sky = i | PL_SKYFLAT; + break; + } +} + +// killough 2/28/98: +// +// This function, with the help of r_plane.c and r_bsp.c, supports generalized +// scrolling floors and walls, with optional mobj-carrying properties, e.g. +// conveyor belts, rivers, etc. A linedef with a special type affects all +// tagged sectors the same way, by creating scrolling and/or object-carrying +// properties. Multiple linedefs may be used on the same sector and are +// cumulative, although the special case of scrolling a floor and carrying +// things on it, requires only one linedef. The linedef's direction determines +// the scrolling direction, and the linedef's length determines the scrolling +// speed. This was designed so that an edge around the sector could be used to +// control the direction of the sector's scrolling, which is usually what is +// desired. +// +// Process the active scrollers. +// +// This is the main scrolling code +// killough 3/7/98 + +void T_Scroll(scroll_t *s) +{ + fixed_t dx = s->dx, dy = s->dy; + + if (s->control != -1) + { // compute scroll amounts based on a sector's height changes + fixed_t height = sectors[s->control].floorheight + + sectors[s->control].ceilingheight; + fixed_t delta = height - s->last_height; + s->last_height = height; + dx = FixedMul(dx, delta); + dy = FixedMul(dy, delta); + } + + // killough 3/14/98: Add acceleration + if (s->accel) + { + s->vdx = dx += s->vdx; + s->vdy = dy += s->vdy; + } + + if (!(dx | dy)) // no-op if both (x,y) offsets 0 + return; + + switch (s->type) + { + side_t *side; + sector_t *sec; + fixed_t height, waterheight; // killough 4/4/98: add waterheight + msecnode_t *node; + mobj_t *thing; + + case sc_side: // killough 3/7/98: Scroll wall texture + side = sides + s->affectee; + side->textureoffset += dx; + side->rowoffset += dy; + break; + + case sc_floor: // killough 3/7/98: Scroll floor texture + sec = sectors + s->affectee; + sec->floor_xoffs += dx; + sec->floor_yoffs += dy; + break; + + case sc_ceiling: // killough 3/7/98: Scroll ceiling texture + sec = sectors + s->affectee; + sec->ceiling_xoffs += dx; + sec->ceiling_yoffs += dy; + break; + + case sc_carry: + + // killough 3/7/98: Carry things on floor + // killough 3/20/98: use new sector list which reflects true members + // killough 3/27/98: fix carrier bug + // killough 4/4/98: Underwater, carry things even w/o gravity + + sec = sectors + s->affectee; + height = sec->floorheight; + waterheight = sec->heightsec != -1 && + sectors[sec->heightsec].floorheight > height ? + sectors[sec->heightsec].floorheight : INT_MIN; + + for (node = sec->touching_thinglist; node; node = node->m_snext) + if (!((thing = node->m_thing)->flags & MF_NOCLIP) && + (!(thing->flags & MF_NOGRAVITY || thing->z > height) || + thing->z < waterheight)) + { + // Move objects only if on floor or underwater, + // non-floating, and clipped. + thing->momx += dx; + thing->momy += dy; + } + break; + + case sc_carry_ceiling: // to be added later + break; + } +} + +// +// Add_Scroller() +// +// Add a generalized scroller to the thinker list. +// +// type: the enumerated type of scrolling: floor, ceiling, floor carrier, +// wall, floor carrier & scroller +// +// (dx,dy): the direction and speed of the scrolling or its acceleration +// +// control: the sector whose heights control this scroller's effect +// remotely, or -1 if no control sector +// +// affectee: the index of the affected object (sector or sidedef) +// +// accel: non-zero if this is an accelerative effect +// + +static void Add_Scroller(int type, fixed_t dx, fixed_t dy, + int control, int affectee, int accel) +{ + scroll_t *s = Z_Malloc(sizeof *s, PU_LEVSPEC, 0); + s->thinker.function = T_Scroll; + s->type = type; + s->dx = dx; + s->dy = dy; + s->accel = accel; + s->vdx = s->vdy = 0; + if ((s->control = control) != -1) + s->last_height = + sectors[control].floorheight + sectors[control].ceilingheight; + s->affectee = affectee; + P_AddThinker(&s->thinker); +} + +// Adds wall scroller. Scroll amount is rotated with respect to wall's +// linedef first, so that scrolling towards the wall in a perpendicular +// direction is translated into vertical motion, while scrolling along +// the wall in a parallel direction is translated into horizontal motion. +// +// killough 5/25/98: cleaned up arithmetic to avoid drift due to roundoff +// +// killough 10/98: +// fix scrolling aliasing problems, caused by long linedefs causing overflowing + +static void Add_WallScroller(fixed_t dx, fixed_t dy, const line_t *l, + int control, int accel) +{ + fixed_t x = D_abs(l->dx), y = D_abs(l->dy), d; + if (y > x) + d = x, x = y, y = d; + d = FixedDiv(x, finesine[(tantoangle[FixedDiv(y,x) >> DBITS] + ANG90) + >> ANGLETOFINESHIFT]); + + // CPhipps - Import scroller calc overflow fix, compatibility optioned + if (compatibility_level >= lxdoom_1_compatibility) { + x = (fixed_t)(((int_64_t)dy * -(int_64_t)l->dy - (int_64_t)dx * (int_64_t)l->dx) / (int_64_t)d); // killough 10/98: + y = (fixed_t)(((int_64_t)dy * (int_64_t)l->dx - (int_64_t)dx * (int_64_t)l->dy) / (int_64_t)d); // Use long long arithmetic + } else { + x = -FixedDiv(FixedMul(dy, l->dy) + FixedMul(dx, l->dx), d); + y = -FixedDiv(FixedMul(dx, l->dy) - FixedMul(dy, l->dx), d); + } + Add_Scroller(sc_side, x, y, control, *l->sidenum, accel); +} + +// Amount (dx,dy) vector linedef is shifted right to get scroll amount +#define SCROLL_SHIFT 5 + +// Factor to scale scrolling effect into mobj-carrying properties = 3/32. +// (This is so scrolling floors and objects on them can move at same speed.) +#define CARRYFACTOR ((fixed_t)(FRACUNIT*.09375)) + +// Initialize the scrollers +static void P_SpawnScrollers(void) +{ + int i; + line_t *l = lines; + + for (i=0;idx >> SCROLL_SHIFT; // direction and speed of scrolling + fixed_t dy = l->dy >> SCROLL_SHIFT; + int control = -1, accel = 0; // no control sector or acceleration + int special = l->special; + + // killough 3/7/98: Types 245-249 are same as 250-254 except that the + // first side's sector's heights cause scrolling when they change, and + // this linedef controls the direction and speed of the scrolling. The + // most complicated linedef since donuts, but powerful :) + // + // killough 3/15/98: Add acceleration. Types 214-218 are the same but + // are accelerative. + + if (special >= 245 && special <= 249) // displacement scrollers + { + special += 250-245; + control = sides[*l->sidenum].sector - sectors; + } + else + if (special >= 214 && special <= 218) // accelerative scrollers + { + accel = 1; + special += 250-214; + control = sides[*l->sidenum].sector - sectors; + } + + switch (special) + { + register int s; + + case 250: // scroll effect ceiling + for (s=-1; (s = P_FindSectorFromLineTag(l,s)) >= 0;) + Add_Scroller(sc_ceiling, -dx, dy, control, s, accel); + break; + + case 251: // scroll effect floor + case 253: // scroll and carry objects on floor + for (s=-1; (s = P_FindSectorFromLineTag(l,s)) >= 0;) + Add_Scroller(sc_floor, -dx, dy, control, s, accel); + if (special != 253) + break; + /* fallthrough */ + + case 252: // carry objects on floor + dx = FixedMul(dx,CARRYFACTOR); + dy = FixedMul(dy,CARRYFACTOR); + for (s=-1; (s = P_FindSectorFromLineTag(l,s)) >= 0;) + Add_Scroller(sc_carry, dx, dy, control, s, accel); + break; + + // killough 3/1/98: scroll wall according to linedef + // (same direction and speed as scrolling floors) + case 254: + for (s=-1; (s = P_FindLineFromLineTag(l,s)) >= 0;) + if (s != i) + Add_WallScroller(dx, dy, lines+s, control, accel); + break; + + case 255: // killough 3/2/98: scroll according to sidedef offsets + s = lines[i].sidenum[0]; + Add_Scroller(sc_side, -sides[s].textureoffset, + sides[s].rowoffset, -1, s, accel); + break; + + case 48: // scroll first side + Add_Scroller(sc_side, FRACUNIT, 0, -1, lines[i].sidenum[0], accel); + break; + + case 85: // jff 1/30/98 2-way scroll + Add_Scroller(sc_side, -FRACUNIT, 0, -1, lines[i].sidenum[0], accel); + break; + } + } +} + +// e6y +// restored boom's friction code + +///////////////////////////// +// +// Add a friction thinker to the thinker list +// +// Add_Friction adds a new friction thinker to the list of active thinkers. +// + +static void Add_Friction(int friction, int movefactor, int affectee) + { + friction_t *f = Z_Malloc(sizeof *f, PU_LEVSPEC, 0); + + f->thinker.function/*.acp1*/ = /*(actionf_p1) */T_Friction; + f->friction = friction; + f->movefactor = movefactor; + f->affectee = affectee; + P_AddThinker(&f->thinker); + } + +///////////////////////////// +// +// This is where abnormal friction is applied to objects in the sectors. +// A friction thinker has been spawned for each sector where less or +// more friction should be applied. The amount applied is proportional to +// the length of the controlling linedef. + +void T_Friction(friction_t *f) + { + sector_t *sec; + mobj_t *thing; + msecnode_t* node; + + if (compatibility || !variable_friction) + return; + + sec = sectors + f->affectee; + + // Be sure the special sector type is still turned on. If so, proceed. + // Else, bail out; the sector type has been changed on us. + + if (!(sec->special & FRICTION_MASK)) + return; + + // Assign the friction value to players on the floor, non-floating, + // and clipped. Normally the object's friction value is kept at + // ORIG_FRICTION and this thinker changes it for icy or muddy floors. + + // In Phase II, you can apply friction to Things other than players. + + // When the object is straddling sectors with the same + // floorheight that have different frictions, use the lowest + // friction value (muddy has precedence over icy). + + node = sec->touching_thinglist; // things touching this sector + while (node) + { + thing = node->m_thing; + if (thing->player && + !(thing->flags & (MF_NOGRAVITY | MF_NOCLIP)) && + thing->z <= sec->floorheight) + { + if ((thing->friction == ORIG_FRICTION) || // normal friction? + (f->friction < thing->friction)) + { + thing->friction = f->friction; + thing->movefactor = f->movefactor; + } + } + node = node->m_snext; + } + } + + +// killough 3/7/98 -- end generalized scroll effects + +//////////////////////////////////////////////////////////////////////////// +// +// FRICTION EFFECTS +// +// phares 3/12/98: Start of friction effects +// +// As the player moves, friction is applied by decreasing the x and y +// momentum values on each tic. By varying the percentage of decrease, +// we can simulate muddy or icy conditions. In mud, the player slows +// down faster. In ice, the player slows down more slowly. +// +// The amount of friction change is controlled by the length of a linedef +// with type 223. A length < 100 gives you mud. A length > 100 gives you ice. +// +// Also, each sector where these effects are to take place is given a +// new special type _______. Changing the type value at runtime allows +// these effects to be turned on or off. +// +// Sector boundaries present problems. The player should experience these +// friction changes only when his feet are touching the sector floor. At +// sector boundaries where floor height changes, the player can find +// himself still 'in' one sector, but with his feet at the floor level +// of the next sector (steps up or down). To handle this, Thinkers are used +// in icy/muddy sectors. These thinkers examine each object that is touching +// their sectors, looking for players whose feet are at the same level as +// their floors. Players satisfying this condition are given new friction +// values that are applied by the player movement code later. +// +// killough 8/28/98: +// +// Completely redid code, which did not need thinkers, and which put a heavy +// drag on CPU. Friction is now a property of sectors, NOT objects inside +// them. All objects, not just players, are affected by it, if they touch +// the sector's floor. Code simpler and faster, only calling on friction +// calculations when an object needs friction considered, instead of doing +// friction calculations on every sector during every tic. +// +// Although this -might- ruin Boom demo sync involving friction, it's the only +// way, short of code explosion, to fix the original design bug. Fixing the +// design bug in Boom's original friction code, while maintaining demo sync +// under every conceivable circumstance, would double or triple code size, and +// would require maintenance of buggy legacy code which is only useful for old +// demos. Doom demos, which are more important IMO, are not affected by this +// change. +// +///////////////////////////// +// +// Initialize the sectors where friction is increased or decreased + +static void P_SpawnFriction(void) +{ + int i; + line_t *l = lines; + + // killough 8/28/98: initialize all sectors to normal friction first + for (i = 0; i < numsectors; i++) + { + sectors[i].friction = ORIG_FRICTION; + sectors[i].movefactor = ORIG_FRICTION_FACTOR; + } + + for (i = 0 ; i < numlines ; i++,l++) + if (l->special == 223) + { + int length = P_AproxDistance(l->dx,l->dy)>>FRACBITS; + int friction = (0x1EB8*length)/0x80 + 0xD000; + int movefactor, s; + + // The following check might seem odd. At the time of movement, + // the move distance is multiplied by 'friction/0x10000', so a + // higher friction value actually means 'less friction'. + + if (friction > ORIG_FRICTION) // ice + movefactor = ((0x10092 - friction)*(0x70))/0x158; + else + movefactor = ((friction - 0xDB34)*(0xA))/0x80; + + if (mbf_features) + { // killough 8/28/98: prevent odd situations + if (friction > FRACUNIT) + friction = FRACUNIT; + if (friction < 0) + friction = 0; + if (movefactor < 32) + movefactor = 32; + } + + for (s = -1; (s = P_FindSectorFromLineTag(l,s)) >= 0 ; ) + { + // killough 8/28/98: + // + // Instead of spawning thinkers, which are slow and expensive, + // modify the sector's own friction values. Friction should be + // a property of sectors, not objects which reside inside them. + // Original code scanned every object in every friction sector + // on every tic, adjusting its friction, putting unnecessary + // drag on CPU. New code adjusts friction of sector only once + // at level startup, and then uses this friction value. + + //e6y: boom's friction code for boom compatibility + if (!demo_compatibility && !mbf_features) + Add_Friction(friction,movefactor,s); + + sectors[s].friction = friction; + sectors[s].movefactor = movefactor; + } + } +} + +// +// phares 3/12/98: End of friction effects +// +//////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////// +// +// PUSH/PULL EFFECT +// +// phares 3/20/98: Start of push/pull effects +// +// This is where push/pull effects are applied to objects in the sectors. +// +// There are four kinds of push effects +// +// 1) Pushing Away +// +// Pushes you away from a point source defined by the location of an +// MT_PUSH Thing. The force decreases linearly with distance from the +// source. This force crosses sector boundaries and is felt w/in a circle +// whose center is at the MT_PUSH. The force is felt only if the point +// MT_PUSH can see the target object. +// +// 2) Pulling toward +// +// Same as Pushing Away except you're pulled toward an MT_PULL point +// source. This force crosses sector boundaries and is felt w/in a circle +// whose center is at the MT_PULL. The force is felt only if the point +// MT_PULL can see the target object. +// +// 3) Wind +// +// Pushes you in a constant direction. Full force above ground, half +// force on the ground, nothing if you're below it (water). +// +// 4) Current +// +// Pushes you in a constant direction. No force above ground, full +// force if on the ground or below it (water). +// +// The magnitude of the force is controlled by the length of a controlling +// linedef. The force vector for types 3 & 4 is determined by the angle +// of the linedef, and is constant. +// +// For each sector where these effects occur, the sector special type has +// to have the PUSH_MASK bit set. If this bit is turned off by a switch +// at run-time, the effect will not occur. The controlling sector for +// types 1 & 2 is the sector containing the MT_PUSH/MT_PULL Thing. + + +#define PUSH_FACTOR 7 + +///////////////////////////// +// +// Add a push thinker to the thinker list + +static void Add_Pusher(int type, int x_mag, int y_mag, mobj_t* source, int affectee) + { + pusher_t *p = Z_Malloc(sizeof *p, PU_LEVSPEC, 0); + + p->thinker.function = T_Pusher; + p->source = source; + p->type = type; + p->x_mag = x_mag>>FRACBITS; + p->y_mag = y_mag>>FRACBITS; + p->magnitude = P_AproxDistance(p->x_mag,p->y_mag); + if (source) // point source exist? + { + p->radius = (p->magnitude)<<(FRACBITS+1); // where force goes to zero + p->x = p->source->x; + p->y = p->source->y; + } + p->affectee = affectee; + P_AddThinker(&p->thinker); + } + +///////////////////////////// +// +// PIT_PushThing determines the angle and magnitude of the effect. +// The object's x and y momentum values are changed. +// +// tmpusher belongs to the point source (MT_PUSH/MT_PULL). +// +// killough 10/98: allow to affect things besides players + +pusher_t* tmpusher; // pusher structure for blockmap searches + +static boolean PIT_PushThing(mobj_t* thing) +{ + /* killough 10/98: made more general */ + if (!mbf_features ? + thing->player && !(thing->flags & (MF_NOCLIP | MF_NOGRAVITY)) : + (sentient(thing) || thing->flags & MF_SHOOTABLE) && + !(thing->flags & MF_NOCLIP)) + { + angle_t pushangle; + fixed_t speed; + fixed_t sx = tmpusher->x; + fixed_t sy = tmpusher->y; + + speed = (tmpusher->magnitude - + ((P_AproxDistance(thing->x - sx,thing->y - sy) + >>FRACBITS)>>1))<<(FRACBITS-PUSH_FACTOR-1); + + // killough 10/98: make magnitude decrease with square + // of distance, making it more in line with real nature, + // so long as it's still in range with original formula. + // + // Removes angular distortion, and makes effort required + // to stay close to source, grow increasingly hard as you + // get closer, as expected. Still, it doesn't consider z :( + + if (speed > 0 && mbf_features) + { + int x = (thing->x-sx) >> FRACBITS; + int y = (thing->y-sy) >> FRACBITS; + speed = (int)(((uint_64_t) tmpusher->magnitude << 23) / (x*x+y*y+1)); + } + + // If speed <= 0, you're outside the effective radius. You also have + // to be able to see the push/pull source point. + + if (speed > 0 && P_CheckSight(thing,tmpusher->source)) + { + pushangle = R_PointToAngle2(thing->x,thing->y,sx,sy); + if (tmpusher->source->type == MT_PUSH) + pushangle += ANG180; // away + pushangle >>= ANGLETOFINESHIFT; + thing->momx += FixedMul(speed,finecosine[pushangle]); + thing->momy += FixedMul(speed,finesine[pushangle]); + } + } + return true; +} + +///////////////////////////// +// +// T_Pusher looks for all objects that are inside the radius of +// the effect. +// + +void T_Pusher(pusher_t *p) + { + sector_t *sec; + mobj_t *thing; + msecnode_t* node; + int xspeed,yspeed; + int xl,xh,yl,yh,bx,by; + int radius; + int ht = 0; + + if (!allow_pushers) + return; + + sec = sectors + p->affectee; + + // Be sure the special sector type is still turned on. If so, proceed. + // Else, bail out; the sector type has been changed on us. + + if (!(sec->special & PUSH_MASK)) + return; + + // For constant pushers (wind/current) there are 3 situations: + // + // 1) Affected Thing is above the floor. + // + // Apply the full force if wind, no force if current. + // + // 2) Affected Thing is on the ground. + // + // Apply half force if wind, full force if current. + // + // 3) Affected Thing is below the ground (underwater effect). + // + // Apply no force if wind, full force if current. + + if (p->type == p_push) + { + + // Seek out all pushable things within the force radius of this + // point pusher. Crosses sectors, so use blockmap. + + tmpusher = p; // MT_PUSH/MT_PULL point source + radius = p->radius; // where force goes to zero + tmbbox[BOXTOP] = p->y + radius; + tmbbox[BOXBOTTOM] = p->y - radius; + tmbbox[BOXRIGHT] = p->x + radius; + tmbbox[BOXLEFT] = p->x - radius; + + xl = (tmbbox[BOXLEFT] - bmaporgx - MAXRADIUS)>>MAPBLOCKSHIFT; + xh = (tmbbox[BOXRIGHT] - bmaporgx + MAXRADIUS)>>MAPBLOCKSHIFT; + yl = (tmbbox[BOXBOTTOM] - bmaporgy - MAXRADIUS)>>MAPBLOCKSHIFT; + yh = (tmbbox[BOXTOP] - bmaporgy + MAXRADIUS)>>MAPBLOCKSHIFT; + for (bx=xl ; bx<=xh ; bx++) + for (by=yl ; by<=yh ; by++) + P_BlockThingsIterator(bx,by,PIT_PushThing); + return; + } + + // constant pushers p_wind and p_current + + if (sec->heightsec != -1) // special water sector? + ht = sectors[sec->heightsec].floorheight; + node = sec->touching_thinglist; // things touching this sector + for ( ; node ; node = node->m_snext) + { + thing = node->m_thing; + if (!thing->player || (thing->flags & (MF_NOGRAVITY | MF_NOCLIP))) + continue; + if (p->type == p_wind) + { + if (sec->heightsec == -1) // NOT special water sector + if (thing->z > thing->floorz) // above ground + { + xspeed = p->x_mag; // full force + yspeed = p->y_mag; + } + else // on ground + { + xspeed = (p->x_mag)>>1; // half force + yspeed = (p->y_mag)>>1; + } + else // special water sector + { + if (thing->z > ht) // above ground + { + xspeed = p->x_mag; // full force + yspeed = p->y_mag; + } + else if (thing->player->viewz < ht) // underwater + xspeed = yspeed = 0; // no force + else // wading in water + { + xspeed = (p->x_mag)>>1; // half force + yspeed = (p->y_mag)>>1; + } + } + } + else // p_current + { + if (sec->heightsec == -1) // NOT special water sector + if (thing->z > sec->floorheight) // above ground + xspeed = yspeed = 0; // no force + else // on ground + { + xspeed = p->x_mag; // full force + yspeed = p->y_mag; + } + else // special water sector + if (thing->z > ht) // above ground + xspeed = yspeed = 0; // no force + else // underwater + { + xspeed = p->x_mag; // full force + yspeed = p->y_mag; + } + } + thing->momx += xspeed<<(FRACBITS-PUSH_FACTOR); + thing->momy += yspeed<<(FRACBITS-PUSH_FACTOR); + } + } + +///////////////////////////// +// +// P_GetPushThing() returns a pointer to an MT_PUSH or MT_PULL thing, +// NULL otherwise. + +mobj_t* P_GetPushThing(int s) + { + mobj_t* thing; + sector_t* sec; + + sec = sectors + s; + thing = sec->thinglist; + while (thing) + { + switch(thing->type) + { + case MT_PUSH: + case MT_PULL: + return thing; + default: + break; + } + thing = thing->snext; + } + return NULL; + } + +///////////////////////////// +// +// Initialize the sectors where pushers are present +// + +static void P_SpawnPushers(void) + { + int i; + line_t *l = lines; + register int s; + mobj_t* thing; + + for (i = 0 ; i < numlines ; i++,l++) + switch(l->special) + { + case 224: // wind + for (s = -1; (s = P_FindSectorFromLineTag(l,s)) >= 0 ; ) + Add_Pusher(p_wind,l->dx,l->dy,NULL,s); + break; + case 225: // current + for (s = -1; (s = P_FindSectorFromLineTag(l,s)) >= 0 ; ) + Add_Pusher(p_current,l->dx,l->dy,NULL,s); + break; + case 226: // push/pull + for (s = -1; (s = P_FindSectorFromLineTag(l,s)) >= 0 ; ) + { + thing = P_GetPushThing(s); + if (thing) // No MT_P* means no effect + Add_Pusher(p_push,l->dx,l->dy,thing,s); + } + break; + } + } + +// +// phares 3/20/98: End of Pusher effects +// +//////////////////////////////////////////////////////////////////////////// diff --git a/components/doom/prboom/p_spec.h b/components/doom/prboom/p_spec.h new file mode 100644 index 0000000..1d5aa2b --- /dev/null +++ b/components/doom/prboom/p_spec.h @@ -0,0 +1,1141 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: definitions, declarations and prototypes for specials + * + *-----------------------------------------------------------------------------*/ + +#ifndef __P_SPEC__ +#define __P_SPEC__ + +#include "r_defs.h" +#include "d_player.h" + +// Define values for map objects +#define MO_TELEPORTMAN 14 + +// p_floor + +#define ELEVATORSPEED (FRACUNIT*4) +#define FLOORSPEED FRACUNIT + +// p_ceilng + +#define CEILSPEED FRACUNIT +#define CEILWAIT 150 + +// p_doors + +#define VDOORSPEED (FRACUNIT*2) +#define VDOORWAIT 150 + +// p_plats + +#define PLATWAIT 3 +#define PLATSPEED FRACUNIT + +// p_switch + +// 4 players, 4 buttons each at once, max. +// killough 2/14/98: redefine in terms of MAXPLAYERS +#define MAXBUTTONS (MAXPLAYERS*4) + +// 1 second, in ticks. +#define BUTTONTIME TICRATE + +// p_lights + +#define GLOWSPEED 8 +#define STROBEBRIGHT 5 +#define FASTDARK 15 +#define SLOWDARK 35 + +//jff 3/14/98 add bits and shifts for generalized sector types + +#define DAMAGE_MASK 0x60 +#define DAMAGE_SHIFT 5 +#define SECRET_MASK 0x80 +#define SECRET_SHIFT 7 +#define FRICTION_MASK 0x100 +#define FRICTION_SHIFT 8 +#define PUSH_MASK 0x200 +#define PUSH_SHIFT 9 + +//jff 02/04/98 Define masks, shifts, for fields in +// generalized linedef types + +#define GenEnd 0x8000 +#define GenFloorBase 0x6000 +#define GenCeilingBase 0x4000 +#define GenDoorBase 0x3c00 +#define GenLockedBase 0x3800 +#define GenLiftBase 0x3400 +#define GenStairsBase 0x3000 +#define GenCrusherBase 0x2F80 + +#define TriggerType 0x0007 +#define TriggerTypeShift 0 + +// define masks and shifts for the floor type fields + +#define FloorCrush 0x1000 +#define FloorChange 0x0c00 +#define FloorTarget 0x0380 +#define FloorDirection 0x0040 +#define FloorModel 0x0020 +#define FloorSpeed 0x0018 + +#define FloorCrushShift 12 +#define FloorChangeShift 10 +#define FloorTargetShift 7 +#define FloorDirectionShift 6 +#define FloorModelShift 5 +#define FloorSpeedShift 3 + +// define masks and shifts for the ceiling type fields + +#define CeilingCrush 0x1000 +#define CeilingChange 0x0c00 +#define CeilingTarget 0x0380 +#define CeilingDirection 0x0040 +#define CeilingModel 0x0020 +#define CeilingSpeed 0x0018 + +#define CeilingCrushShift 12 +#define CeilingChangeShift 10 +#define CeilingTargetShift 7 +#define CeilingDirectionShift 6 +#define CeilingModelShift 5 +#define CeilingSpeedShift 3 + +// define masks and shifts for the lift type fields + +#define LiftTarget 0x0300 +#define LiftDelay 0x00c0 +#define LiftMonster 0x0020 +#define LiftSpeed 0x0018 + +#define LiftTargetShift 8 +#define LiftDelayShift 6 +#define LiftMonsterShift 5 +#define LiftSpeedShift 3 + +// define masks and shifts for the stairs type fields + +#define StairIgnore 0x0200 +#define StairDirection 0x0100 +#define StairStep 0x00c0 +#define StairMonster 0x0020 +#define StairSpeed 0x0018 + +#define StairIgnoreShift 9 +#define StairDirectionShift 8 +#define StairStepShift 6 +#define StairMonsterShift 5 +#define StairSpeedShift 3 + +// define masks and shifts for the crusher type fields + +#define CrusherSilent 0x0040 +#define CrusherMonster 0x0020 +#define CrusherSpeed 0x0018 + +#define CrusherSilentShift 6 +#define CrusherMonsterShift 5 +#define CrusherSpeedShift 3 + +// define masks and shifts for the door type fields + +#define DoorDelay 0x0300 +#define DoorMonster 0x0080 +#define DoorKind 0x0060 +#define DoorSpeed 0x0018 + +#define DoorDelayShift 8 +#define DoorMonsterShift 7 +#define DoorKindShift 5 +#define DoorSpeedShift 3 + +// define masks and shifts for the locked door type fields + +#define LockedNKeys 0x0200 +#define LockedKey 0x01c0 +#define LockedKind 0x0020 +#define LockedSpeed 0x0018 + +#define LockedNKeysShift 9 +#define LockedKeyShift 6 +#define LockedKindShift 5 +#define LockedSpeedShift 3 + +// define names for the TriggerType field of the general linedefs + +typedef enum +{ + WalkOnce, + WalkMany, + SwitchOnce, + SwitchMany, + GunOnce, + GunMany, + PushOnce, + PushMany, +} triggertype_e; + +// define names for the Speed field of the general linedefs + +typedef enum +{ + SpeedSlow, + SpeedNormal, + SpeedFast, + SpeedTurbo, +} motionspeed_e; + +// define names for the Target field of the general floor + +typedef enum +{ + FtoHnF, + FtoLnF, + FtoNnF, + FtoLnC, + FtoC, + FbyST, + Fby24, + Fby32, +} floortarget_e; + +// define names for the Changer Type field of the general floor + +typedef enum +{ + FNoChg, + FChgZero, + FChgTxt, + FChgTyp, +} floorchange_e; + +// define names for the Change Model field of the general floor + +typedef enum +{ + FTriggerModel, + FNumericModel, +} floormodel_t; + +// define names for the Target field of the general ceiling + +typedef enum +{ + CtoHnC, + CtoLnC, + CtoNnC, + CtoHnF, + CtoF, + CbyST, + Cby24, + Cby32, +} ceilingtarget_e; + +// define names for the Changer Type field of the general ceiling + +typedef enum +{ + CNoChg, + CChgZero, + CChgTxt, + CChgTyp, +} ceilingchange_e; + +// define names for the Change Model field of the general ceiling + +typedef enum +{ + CTriggerModel, + CNumericModel, +} ceilingmodel_t; + +// define names for the Target field of the general lift + +typedef enum +{ + F2LnF, + F2NnF, + F2LnC, + LnF2HnF, +} lifttarget_e; + +// define names for the door Kind field of the general ceiling + +typedef enum +{ + OdCDoor, + ODoor, + CdODoor, + CDoor, +} doorkind_e; + +// define names for the locked door Kind field of the general ceiling + +typedef enum +{ + AnyKey, + RCard, + BCard, + YCard, + RSkull, + BSkull, + YSkull, + AllKeys, +} keykind_e; + +////////////////////////////////////////////////////////////////// +// +// enums for classes of linedef triggers +// +////////////////////////////////////////////////////////////////// + +//jff 2/23/98 identify the special classes that can share sectors + +typedef enum +{ + floor_special, + ceiling_special, + lighting_special, +} special_e; + +//jff 3/15/98 pure texture/type change for better generalized support +typedef enum +{ + trigChangeOnly, + numChangeOnly, +} change_e; + +// p_plats + +typedef enum +{ + up, + down, + waiting, + in_stasis +} plat_e; + +typedef enum +{ + perpetualRaise, + downWaitUpStay, + raiseAndChange, + raiseToNearestAndChange, + blazeDWUS, + genLift, //jff added to support generalized Plat types + genPerpetual, + toggleUpDn, //jff 3/14/98 added to support instant toggle type + +} plattype_e; + +// p_doors + +typedef enum +{ + normal, + close30ThenOpen, + close, + open, + raiseIn5Mins, + blazeRaise, + blazeOpen, + blazeClose, + + //jff 02/05/98 add generalize door types + genRaise, + genBlazeRaise, + genOpen, + genBlazeOpen, + genClose, + genBlazeClose, + genCdO, + genBlazeCdO, +} vldoor_e; + +// p_ceilng + +typedef enum +{ + lowerToFloor, + raiseToHighest, + lowerToLowest, + lowerToMaxFloor, + lowerAndCrush, + crushAndRaise, + fastCrushAndRaise, + silentCrushAndRaise, + + //jff 02/04/98 add types for generalized ceiling mover + genCeiling, + genCeilingChg, + genCeilingChg0, + genCeilingChgT, + + //jff 02/05/98 add types for generalized ceiling mover + genCrusher, + genSilentCrusher, + +} ceiling_e; + +// p_floor + +typedef enum +{ + // lower floor to highest surrounding floor + lowerFloor, + + // lower floor to lowest surrounding floor + lowerFloorToLowest, + + // lower floor to highest surrounding floor VERY FAST + turboLower, + + // raise floor to lowest surrounding CEILING + raiseFloor, + + // raise floor to next highest surrounding floor + raiseFloorToNearest, + + //jff 02/03/98 lower floor to next lowest neighbor + lowerFloorToNearest, + + //jff 02/03/98 lower floor 24 absolute + lowerFloor24, + + //jff 02/03/98 lower floor 32 absolute + lowerFloor32Turbo, + + // raise floor to shortest height texture around it + raiseToTexture, + + // lower floor to lowest surrounding floor + // and change floorpic + lowerAndChange, + + raiseFloor24, + + //jff 02/03/98 raise floor 32 absolute + raiseFloor32Turbo, + + raiseFloor24AndChange, + raiseFloorCrush, + + // raise to next highest floor, turbo-speed + raiseFloorTurbo, + donutRaise, + raiseFloor512, + + //jff 02/04/98 add types for generalized floor mover + genFloor, + genFloorChg, + genFloorChg0, + genFloorChgT, + + //new types for stair builders + buildStair, + genBuildStair, +} floor_e; + +typedef enum +{ + build8, // slowly build by 8 + turbo16 // quickly build by 16 + +} stair_e; + +typedef enum +{ + elevateUp, + elevateDown, + elevateCurrent, +} elevator_e; + +////////////////////////////////////////////////////////////////// +// +// general enums +// +////////////////////////////////////////////////////////////////// + +// texture type enum +typedef enum +{ + top, + middle, + bottom + +} bwhere_e; + +// crush check returns +typedef enum +{ + ok, + crushed, + pastdest +} result_e; + +////////////////////////////////////////////////////////////////// +// +// linedef and sector special data types +// +////////////////////////////////////////////////////////////////// + +// p_switch + +// switch animation structure type + +#if defined(__MWERKS__) +#pragma options align=packed +#endif + +typedef struct +{ + char name1[9]; + char name2[9]; + short episode; +} PACKEDATTR switchlist_t; //jff 3/23/98 pack to read from memory + +#if defined(__MWERKS__) +#pragma options align=reset +#endif + +typedef struct +{ + line_t* line; + bwhere_e where; + int btexture; + int btimer; + mobj_t* soundorg; + +} button_t; + +// p_lights + +typedef struct +{ + thinker_t thinker; + sector_t* sector; + int count; + int maxlight; + int minlight; + +} fireflicker_t; + +typedef struct +{ + thinker_t thinker; + sector_t* sector; + int count; + int maxlight; + int minlight; + int maxtime; + int mintime; + +} lightflash_t; + +typedef struct +{ + thinker_t thinker; + sector_t* sector; + int count; + int minlight; + int maxlight; + int darktime; + int brighttime; + +} strobe_t; + +typedef struct +{ + thinker_t thinker; + sector_t* sector; + int minlight; + int maxlight; + int direction; + +} glow_t; + +// p_plats + +typedef struct +{ + thinker_t thinker; + sector_t* sector; + fixed_t speed; + fixed_t low; + fixed_t high; + int wait; + int count; + plat_e status; + plat_e oldstatus; + boolean crush; + int tag; + plattype_e type; + + struct platlist *list; // killough +} plat_t; + +// New limit-free plat structure -- killough + +typedef struct platlist { + plat_t *plat; + struct platlist *next,**prev; +} platlist_t; + +// p_ceilng + +typedef struct +{ + thinker_t thinker; + vldoor_e type; + sector_t* sector; + fixed_t topheight; + fixed_t speed; + + // 1 = up, 0 = waiting at top, -1 = down + int direction; + + // tics to wait at the top + int topwait; + // (keep in case a door going down is reset) + // when it reaches 0, start going down + int topcountdown; + + //jff 1/31/98 keep track of line door is triggered by + line_t *line; + + /* killough 10/98: sector tag for gradual lighting effects */ + int lighttag; +} vldoor_t; + +// p_doors + +typedef struct +{ + thinker_t thinker; + ceiling_e type; + sector_t* sector; + fixed_t bottomheight; + fixed_t topheight; + fixed_t speed; + fixed_t oldspeed; + boolean crush; + + //jff 02/04/98 add these to support ceiling changers + int newspecial; + int oldspecial; //jff 3/14/98 add to fix bug in change transfers + short texture; + + // 1 = up, 0 = waiting, -1 = down + int direction; + + // ID + int tag; + int olddirection; + struct ceilinglist *list; // jff 2/22/98 copied from killough's plats +} ceiling_t; + +typedef struct ceilinglist { + ceiling_t *ceiling; + struct ceilinglist *next,**prev; +} ceilinglist_t; + +// p_floor + +typedef struct +{ + thinker_t thinker; + floor_e type; + boolean crush; + sector_t* sector; + int direction; + int newspecial; + int oldspecial; //jff 3/14/98 add to fix bug in change transfers + short texture; + fixed_t floordestheight; + fixed_t speed; + +} floormove_t; + +typedef struct +{ + thinker_t thinker; + elevator_e type; + sector_t* sector; + int direction; + fixed_t floordestheight; + fixed_t ceilingdestheight; + fixed_t speed; +} elevator_t; + +// p_spec + +// killough 3/7/98: Add generalized scroll effects + +typedef struct { + thinker_t thinker; // Thinker structure for scrolling + fixed_t dx, dy; // (dx,dy) scroll speeds + int affectee; // Number of affected sidedef, sector, tag, or whatever + int control; // Control sector (-1 if none) used to control scrolling + fixed_t last_height; // Last known height of control sector + fixed_t vdx, vdy; // Accumulated velocity if accelerative + int accel; // Whether it's accelerative + enum + { + sc_side, + sc_floor, + sc_ceiling, + sc_carry, + sc_carry_ceiling, // killough 4/11/98: carry objects hanging on ceilings + } type; // Type of scroll effect +} scroll_t; + +// phares 3/12/98: added new model of friction for ice/sludge effects + +typedef struct { + thinker_t thinker; // Thinker structure for friction + int friction; // friction value (E800 = normal) + int movefactor; // inertia factor when adding to momentum + int affectee; // Number of affected sector +} friction_t; + +// phares 3/20/98: added new model of Pushers for push/pull effects + +typedef struct { + thinker_t thinker; // Thinker structure for Pusher + enum + { + p_push, + p_pull, + p_wind, + p_current, + } type; + mobj_t* source; // Point source if point pusher + int x_mag; // X Strength + int y_mag; // Y Strength + int magnitude; // Vector strength for point pusher + int radius; // Effective radius for point pusher + int x; // X of point source if point pusher + int y; // Y of point source if point pusher + int affectee; // Number of affected sector +} pusher_t; + +////////////////////////////////////////////////////////////////// +// +// external data declarations +// +////////////////////////////////////////////////////////////////// + +// list of retriggerable buttons active +extern button_t buttonlist[MAXBUTTONS]; + +extern platlist_t *activeplats; // killough 2/14/98 + +extern ceilinglist_t *activeceilings; // jff 2/22/98 + +//////////////////////////////////////////////////////////////// +// +// Linedef and sector special utility function prototypes +// +//////////////////////////////////////////////////////////////// + +int twoSided +( int sector, + int line ); + +sector_t* getSector +( int currentSector, + int line, + int side ); + +side_t* getSide +( int currentSector, + int line, + int side ); + +fixed_t P_FindLowestFloorSurrounding +( sector_t* sec ); + +fixed_t P_FindHighestFloorSurrounding +( sector_t* sec ); + +fixed_t P_FindNextHighestFloor +( sector_t* sec, + int currentheight ); + +fixed_t P_FindNextLowestFloor +( sector_t* sec, + int currentheight ); + +fixed_t P_FindLowestCeilingSurrounding +( sector_t* sec ); // jff 2/04/98 + +fixed_t P_FindHighestCeilingSurrounding +( sector_t* sec ); // jff 2/04/98 + +fixed_t P_FindNextLowestCeiling +( sector_t *sec, + int currentheight ); // jff 2/04/98 + +fixed_t P_FindNextHighestCeiling +( sector_t *sec, + int currentheight ); // jff 2/04/98 + +fixed_t P_FindShortestTextureAround +( int secnum ); // jff 2/04/98 + +fixed_t P_FindShortestUpperAround +( int secnum ); // jff 2/04/98 + +sector_t* P_FindModelFloorSector +( fixed_t floordestheight, + int secnum ); //jff 02/04/98 + +sector_t* P_FindModelCeilingSector +( fixed_t ceildestheight, + int secnum ); //jff 02/04/98 + +int P_FindSectorFromLineTag +( const line_t *line, + int start ); // killough 4/17/98 + +int P_FindLineFromLineTag +( const line_t *line, + int start ); // killough 4/17/98 + +int P_FindMinSurroundingLight +( sector_t* sector, + int max ); + +sector_t* getNextSector +( line_t* line, + sector_t* sec ); + +int P_CheckTag +(line_t *line); // jff 2/27/98 + +boolean P_CanUnlockGenDoor +( line_t* line, + player_t* player); + +boolean PUREFUNC P_SectorActive +( special_e t, + const sector_t* s ); + +boolean PUREFUNC P_IsSecret +( const sector_t *sec ); + +boolean PUREFUNC P_WasSecret +( const sector_t *sec ); + +void P_ChangeSwitchTexture +( line_t* line, + int useAgain ); + +//////////////////////////////////////////////////////////////// +// +// Linedef and sector special action function prototypes +// +//////////////////////////////////////////////////////////////// + +// p_lights + +void T_LightFlash +( lightflash_t* flash ); + +void T_StrobeFlash +( strobe_t* flash ); + +// jff 8/8/98 add missing thinker for flicker +void T_FireFlicker +( fireflicker_t* flick ); + +void T_Glow +( glow_t* g ); + +// p_plats + +void T_PlatRaise +( plat_t* plat ); + +// p_doors + +void T_VerticalDoor +( vldoor_t* door ); + +// p_ceilng + +void T_MoveCeiling +( ceiling_t* ceiling ); + +// p_floor + +result_e T_MovePlane +( sector_t* sector, + fixed_t speed, + fixed_t dest, + boolean crush, + int floorOrCeiling, + int direction ); + +void T_MoveFloor +( floormove_t* floor ); + +void T_MoveElevator +( elevator_t* elevator ); + +// p_spec + +void T_Scroll +( scroll_t * ); // killough 3/7/98: scroll effect thinker + +void T_Friction +( friction_t * ); // phares 3/12/98: friction thinker + +void T_Pusher +( pusher_t * ); // phares 3/20/98: Push thinker + +//////////////////////////////////////////////////////////////// +// +// Linedef and sector special handler prototypes +// +//////////////////////////////////////////////////////////////// + +// p_telept + +int EV_Teleport +( line_t* line, + int side, + mobj_t* thing ); + +// killough 2/14/98: Add silent teleporter +int EV_SilentTeleport +( line_t* line, + int side, + mobj_t* thing ); + +// killough 1/31/98: Add silent line teleporter +int EV_SilentLineTeleport +( line_t* line, + int side, + mobj_t* thing, + boolean reverse); + +// p_floor + +int +EV_DoElevator +( line_t* line, + elevator_e type ); + +int EV_BuildStairs +( line_t* line, + stair_e type ); + +int EV_DoFloor +( line_t* line, + floor_e floortype ); + +// p_ceilng + +int EV_DoCeiling +( line_t* line, + ceiling_e type ); + +int EV_CeilingCrushStop +( line_t* line ); + +// p_doors + +int EV_VerticalDoor +( line_t* line, + mobj_t* thing ); + +int EV_DoDoor +( line_t* line, + vldoor_e type ); + +int EV_DoLockedDoor +( line_t* line, + vldoor_e type, + mobj_t* thing ); + +// p_lights + +int EV_StartLightStrobing +( line_t* line ); + +int EV_TurnTagLightsOff +( line_t* line ); + +int EV_LightTurnOn +( line_t* line, + int bright ); + +int EV_LightTurnOnPartway(line_t* line, fixed_t level); // killough 10/10/98 + +// p_floor + +int EV_DoChange +( line_t* line, + change_e changetype ); + +int EV_DoDonut +( line_t* line ); + +// p_plats + +int EV_DoPlat +( line_t* line, + plattype_e type, + int amount ); + +int EV_StopPlat +( line_t* line ); + +// p_genlin + +int EV_DoGenFloor +( line_t* line ); + +int EV_DoGenCeiling +( line_t* line ); + +int EV_DoGenLift +( line_t* line ); + +int EV_DoGenStairs +( line_t* line ); + +int EV_DoGenCrusher +( line_t* line ); + +int EV_DoGenDoor +( line_t* line ); + +int EV_DoGenLockedDoor +( line_t* line ); + +//////////////////////////////////////////////////////////////// +// +// Linedef and sector special thinker spawning +// +//////////////////////////////////////////////////////////////// + +// at game start +void P_InitPicAnims +( void ); + +void P_InitSwitchList +( void ); + +// at map load +void P_SpawnSpecials +( void ); + +// every tic +void P_UpdateSpecials +( void ); + +// when needed +boolean P_UseSpecialLine +( mobj_t* thing, + line_t* line, + int side ); + +void P_ShootSpecialLine +( mobj_t* thing, + line_t* line ); + +void P_CrossSpecialLine(line_t *line, int side, mobj_t *thing); + +void P_PlayerInSpecialSector +( player_t* player ); + +// p_lights + +void P_SpawnFireFlicker +( sector_t* sector ); + +void P_SpawnLightFlash +( sector_t* sector ); + +void P_SpawnStrobeFlash +( sector_t* sector, + int fastOrSlow, + int inSync ); + +void P_SpawnGlowingLight +( sector_t* sector ); + +// p_plats + +void P_AddActivePlat +( plat_t* plat ); + +void P_RemoveActivePlat +( plat_t* plat ); + +void P_RemoveAllActivePlats +( void ); // killough + +void P_ActivateInStasis +( int tag ); + +// p_doors + +void P_SpawnDoorCloseIn30 +( sector_t* sec ); + +void P_SpawnDoorRaiseIn5Mins +( sector_t* sec, + int secnum ); + +// p_ceilng + +void P_RemoveActiveCeiling +( ceiling_t* ceiling ); //jff 2/22/98 + +void P_RemoveAllActiveCeilings +( void ); //jff 2/22/98 + +void P_AddActiveCeiling +( ceiling_t* c ); + +int P_ActivateInStasisCeiling +( line_t* line ); + +mobj_t* P_GetPushThing(int); // phares 3/23/98 + +#endif diff --git a/components/doom/prboom/p_switch.c b/components/doom/prboom/p_switch.c new file mode 100644 index 0000000..05883fa --- /dev/null +++ b/components/doom/prboom/p_switch.c @@ -0,0 +1,1145 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Switches, buttons. Two-state animation. Exits. + * + *-----------------------------------------------------------------------------*/ + +#include "doomstat.h" +#include "w_wad.h" +#include "r_main.h" +#include "p_spec.h" +#include "g_game.h" +#include "s_sound.h" +#include "sounds.h" +#include "lprintf.h" + +// killough 2/8/98: Remove switch limit + +static int *switchlist; // killough +static int numswitches; // killough + +button_t buttonlist[MAXBUTTONS]; + +// +// P_InitSwitchList() +// +// Only called at game initialization in order to list the set of switches +// and buttons known to the engine. This enables their texture to change +// when activated, and in the case of buttons, change back after a timeout. +// +// This routine modified to read its data from a predefined lump or +// PWAD lump called SWITCHES rather than a static table in this module to +// allow wad designers to insert or modify switches. +// +// Lump format is an array of byte packed switchlist_t structures, terminated +// by a structure with episode == -0. The lump can be generated from a +// text source file using SWANTBLS.EXE, distributed with the BOOM utils. +// The standard list of switches and animations is contained in the example +// source text file DEFSWANI.DAT also in the BOOM util distribution. +// +// Rewritten by Lee Killough to remove limit 2/8/98 +// +void P_InitSwitchList(void) +{ + int episode = (gamemode == registered || gamemode==retail) ? 2 : gamemode == commercial ? 3 : 1; + int lump = W_GetNumForName("SWITCHES"); // cph - new wad lump handling + const switchlist_t *alphSwitchList = W_CacheLumpNum(lump); //jff 3/23/98 pointer to switch table + size_t max_numswitches = W_LumpLength(lump) / sizeof(switchlist_t); + int index = 0; + + switchlist = Z_Calloc(max_numswitches * 2 + 1, sizeof(*switchlist), PU_STATIC, 0); + + for (int i=0; i < max_numswitches; i++) + { + int swepisode = SHORT(alphSwitchList[i].episode); + if (!swepisode) + break; + + if (swepisode <= episode) //jff 5/11/98 endianess + { + int texture1 = R_CheckTextureNumForName(alphSwitchList[i].name1); + int texture2 = R_CheckTextureNumForName(alphSwitchList[i].name2); + + // Warn if either one is missing, but only add if both are valid. + if (texture1 == -1) + lprintf(LO_WARN, "P_InitSwitchList: unknown texture %s\n", alphSwitchList[i].name1); + if (texture2 == -1) + lprintf(LO_WARN, "P_InitSwitchList: unknown texture %s\n", alphSwitchList[i].name2); + + // Ignore switches referencing unknown texture names, instead of exiting. + if (texture1 != -1 && texture2 != -1) + { + switchlist[index++] = texture1; + switchlist[index++] = texture2; + } + } + } + + numswitches = index/2; + switchlist[index] = -1; + W_UnlockLumpNum(lump); +} + +// +// P_StartButton() +// +// Start a button (retriggerable switch) counting down till it turns off. +// +// Passed the linedef the button is on, which texture on the sidedef contains +// the button, the texture number of the button, and the time the button is +// to remain active in gametics. +// No return. +// +static void P_StartButton +( line_t* line, + bwhere_e w, + int texture, + int time ) +{ + int i; + + // See if button is already pressed + for (i = 0;i < MAXBUTTONS;i++) + if (buttonlist[i].btimer && buttonlist[i].line == line) + return; + + for (i = 0;i < MAXBUTTONS;i++) + if (!buttonlist[i].btimer) // use first unused element of list + { + buttonlist[i].line = line; + buttonlist[i].where = w; + buttonlist[i].btexture = texture; + buttonlist[i].btimer = time; + /* use sound origin of line itself - no need to compatibility-wrap + * as the popout code gets it wrong whatever its value */ + buttonlist[i].soundorg = (mobj_t *)&line->soundorg; + return; + } + + I_Error("P_StartButton: no button slots left!"); +} + +// +// P_ChangeSwitchTexture() +// +// Function that changes switch wall texture on activation. +// +// Passed the line which the switch is on, and whether its retriggerable. +// If not retriggerable, this function clears the line special to insure that +// +// No return +// +void P_ChangeSwitchTexture +( line_t* line, + int useAgain ) +{ + /* Rearranged a bit to avoid too much code duplication */ + mobj_t *soundorg; + int i, sound; + short *texture, *ttop, *tmid, *tbot; + bwhere_e position; + + ttop = &sides[line->sidenum[0]].toptexture; + tmid = &sides[line->sidenum[0]].midtexture; + tbot = &sides[line->sidenum[0]].bottomtexture; + + sound = sfx_swtchn; + /* use the sound origin of the linedef (its midpoint) + * unless in a compatibility mode */ + soundorg = (mobj_t *)&line->soundorg; + if (comp[comp_sound] || compatibility_level < prboom_6_compatibility) { + /* usually NULL, unless there is another button already pressed in, + * in which case it's the sound origin of that button press... */ + soundorg = buttonlist->soundorg; + } else { + // EXIT SWITCH? + /* don't do this unless you're in a compatibility mode */ + // proff - this works as advertised, but I don't like the sound + // if (line->special == 11 || line->special == 51) // exit or secret exit + // sound = sfx_swtchx; + } + + /* don't zero line->special until after exit switch test */ + if (!useAgain) + line->special = 0; + + /* search for a texture to change */ + texture = NULL; position = 0; + for (i = 0;i < numswitches*2;i++) { /* this could be more efficient... */ + if (switchlist[i] == *ttop) { + texture = ttop; position = top; break; + } else if (switchlist[i] == *tmid) { + texture = tmid; position = middle; break; + } else if (switchlist[i] == *tbot) { + texture = tbot; position = bottom; break; + } + } + if (texture == NULL) + return; /* no switch texture was found to change */ + *texture = switchlist[i^1]; + + S_StartSound(soundorg, sound); + + if (useAgain) + P_StartButton(line, position, switchlist[i], BUTTONTIME); +} + + +// +// P_UseSpecialLine +// +// +// Called when a thing uses (pushes) a special line. +// Only the front sides of lines are usable. +// Dispatches to the appropriate linedef function handler. +// +// Passed the thing using the line, the line being used, and the side used +// Returns true if a thinker was created +// +boolean +P_UseSpecialLine +( mobj_t* thing, + line_t* line, + int side ) +{ + + // e6y + // b.m. side test was broken in boom201 + if ((demoplayback ? (demover != 201) : (compatibility_level != boom_201_compatibility))) + if (side) //jff 6/1/98 fix inadvertent deletion of side test + return false; + + //jff 02/04/98 add check here for generalized floor/ceil mover + if (!demo_compatibility) + { + // pointer to line function is NULL by default, set non-null if + // line special is push or switch generalized linedef type + int (*linefunc)(line_t *line)=NULL; + + // check each range of generalized linedefs + if ((unsigned)line->special >= GenEnd) + { + // Out of range for GenFloors + } + else if ((unsigned)line->special >= GenFloorBase) + { + if (!thing->player) + if ((line->special & FloorChange) || !(line->special & FloorModel)) + return false; // FloorModel is "Allow Monsters" if FloorChange is 0 + if (!line->tag && ((line->special&6)!=6)) //jff 2/27/98 all non-manual + return false; // generalized types require tag + linefunc = EV_DoGenFloor; + } + else if ((unsigned)line->special >= GenCeilingBase) + { + if (!thing->player) + if ((line->special & CeilingChange) || !(line->special & CeilingModel)) + return false; // CeilingModel is "Allow Monsters" if CeilingChange is 0 + if (!line->tag && ((line->special&6)!=6)) //jff 2/27/98 all non-manual + return false; // generalized types require tag + linefunc = EV_DoGenCeiling; + } + else if ((unsigned)line->special >= GenDoorBase) + { + if (!thing->player) + { + if (!(line->special & DoorMonster)) + return false; // monsters disallowed from this door + if (line->flags & ML_SECRET) // they can't open secret doors either + return false; + } + if (!line->tag && ((line->special&6)!=6)) //jff 3/2/98 all non-manual + return false; // generalized types require tag + linefunc = EV_DoGenDoor; + } + else if ((unsigned)line->special >= GenLockedBase) + { + if (!thing->player) + return false; // monsters disallowed from unlocking doors + if (!P_CanUnlockGenDoor(line,thing->player)) + return false; + if (!line->tag && ((line->special&6)!=6)) //jff 2/27/98 all non-manual + return false; // generalized types require tag + + linefunc = EV_DoGenLockedDoor; + } + else if ((unsigned)line->special >= GenLiftBase) + { + if (!thing->player) + if (!(line->special & LiftMonster)) + return false; // monsters disallowed + if (!line->tag && ((line->special&6)!=6)) //jff 2/27/98 all non-manual + return false; // generalized types require tag + linefunc = EV_DoGenLift; + } + else if ((unsigned)line->special >= GenStairsBase) + { + if (!thing->player) + if (!(line->special & StairMonster)) + return false; // monsters disallowed + if (!line->tag && ((line->special&6)!=6)) //jff 2/27/98 all non-manual + return false; // generalized types require tag + linefunc = EV_DoGenStairs; + } + else if ((unsigned)line->special >= GenCrusherBase) + { + if (!thing->player) + if (!(line->special & CrusherMonster)) + return false; // monsters disallowed + if (!line->tag && ((line->special&6)!=6)) //jff 2/27/98 all non-manual + return false; // generalized types require tag + linefunc = EV_DoGenCrusher; + } + + if (linefunc) + switch((line->special & TriggerType) >> TriggerTypeShift) + { + case PushOnce: + if (!side) + if (linefunc(line)) + line->special = 0; + return true; + case PushMany: + if (!side) + linefunc(line); + return true; + case SwitchOnce: + if (linefunc(line)) + P_ChangeSwitchTexture(line,0); + return true; + case SwitchMany: + if (linefunc(line)) + P_ChangeSwitchTexture(line,1); + return true; + default: // if not a switch/push type, do nothing here + return false; + } + } + + // Switches that other things can activate. + if (!thing->player) + { + // never open secret doors + if (line->flags & ML_SECRET) + return false; + + switch(line->special) + { + case 1: // MANUAL DOOR RAISE + case 32: // MANUAL BLUE + case 33: // MANUAL RED + case 34: // MANUAL YELLOW + //jff 3/5/98 add ability to use teleporters for monsters + case 195: // switch teleporters + case 174: + case 210: // silent switch teleporters + case 209: + break; + + default: + return false; + break; + } + } + + if (!P_CheckTag(line)) //jff 2/27/98 disallow zero tag on some types + return false; + + // Dispatch to handler according to linedef type + switch (line->special) + { + // Manual doors, push type with no tag + case 1: // Vertical Door + case 26: // Blue Door/Locked + case 27: // Yellow Door /Locked + case 28: // Red Door /Locked + + case 31: // Manual door open + case 32: // Blue locked door open + case 33: // Red locked door open + case 34: // Yellow locked door open + + case 117: // Blazing door raise + case 118: // Blazing door open + EV_VerticalDoor (line, thing); + break; + + // Switches (non-retriggerable) + case 7: + // Build Stairs + if (EV_BuildStairs(line,build8)) + P_ChangeSwitchTexture(line,0); + break; + + case 9: + // Change Donut + if (EV_DoDonut(line)) + P_ChangeSwitchTexture(line,0); + break; + + case 11: + /* Exit level + * killough 10/98: prevent zombies from exiting levels + */ + if (thing->player && thing->player->health <= 0 && !comp[comp_zombie]) + { + S_StartSound(thing, sfx_noway); + return false; + } + + P_ChangeSwitchTexture(line,0); + G_ExitLevel (); + break; + + case 14: + // Raise Floor 32 and change texture + if (EV_DoPlat(line,raiseAndChange,32)) + P_ChangeSwitchTexture(line,0); + break; + + case 15: + // Raise Floor 24 and change texture + if (EV_DoPlat(line,raiseAndChange,24)) + P_ChangeSwitchTexture(line,0); + break; + + case 18: + // Raise Floor to next highest floor + if (EV_DoFloor(line, raiseFloorToNearest)) + P_ChangeSwitchTexture(line,0); + break; + + case 20: + // Raise Plat next highest floor and change texture + if (EV_DoPlat(line,raiseToNearestAndChange,0)) + P_ChangeSwitchTexture(line,0); + break; + + case 21: + // PlatDownWaitUpStay + if (EV_DoPlat(line,downWaitUpStay,0)) + P_ChangeSwitchTexture(line,0); + break; + + case 23: + // Lower Floor to Lowest + if (EV_DoFloor(line,lowerFloorToLowest)) + P_ChangeSwitchTexture(line,0); + break; + + case 29: + // Raise Door + if (EV_DoDoor(line,normal)) + P_ChangeSwitchTexture(line,0); + break; + + case 41: + // Lower Ceiling to Floor + if (EV_DoCeiling(line,lowerToFloor)) + P_ChangeSwitchTexture(line,0); + break; + + case 71: + // Turbo Lower Floor + if (EV_DoFloor(line,turboLower)) + P_ChangeSwitchTexture(line,0); + break; + + case 49: + // Ceiling Crush And Raise + if (EV_DoCeiling(line,crushAndRaise)) + P_ChangeSwitchTexture(line,0); + break; + + case 50: + // Close Door + if (EV_DoDoor(line,close)) + P_ChangeSwitchTexture(line,0); + break; + + case 51: + /* Secret EXIT + * killough 10/98: prevent zombies from exiting levels + */ + if (thing->player && thing->player->health <= 0 && !comp[comp_zombie]) + { + S_StartSound(thing, sfx_noway); + return false; + } + + P_ChangeSwitchTexture(line,0); + G_SecretExitLevel (); + break; + + case 55: + // Raise Floor Crush + if (EV_DoFloor(line,raiseFloorCrush)) + P_ChangeSwitchTexture(line,0); + break; + + case 101: + // Raise Floor + if (EV_DoFloor(line,raiseFloor)) + P_ChangeSwitchTexture(line,0); + break; + + case 102: + // Lower Floor to Surrounding floor height + if (EV_DoFloor(line,lowerFloor)) + P_ChangeSwitchTexture(line,0); + break; + + case 103: + // Open Door + if (EV_DoDoor(line,open)) + P_ChangeSwitchTexture(line,0); + break; + + case 111: + // Blazing Door Raise (faster than TURBO!) + if (EV_DoDoor (line,blazeRaise)) + P_ChangeSwitchTexture(line,0); + break; + + case 112: + // Blazing Door Open (faster than TURBO!) + if (EV_DoDoor (line,blazeOpen)) + P_ChangeSwitchTexture(line,0); + break; + + case 113: + // Blazing Door Close (faster than TURBO!) + if (EV_DoDoor (line,blazeClose)) + P_ChangeSwitchTexture(line,0); + break; + + case 122: + // Blazing PlatDownWaitUpStay + if (EV_DoPlat(line,blazeDWUS,0)) + P_ChangeSwitchTexture(line,0); + break; + + case 127: + // Build Stairs Turbo 16 + if (EV_BuildStairs(line,turbo16)) + P_ChangeSwitchTexture(line,0); + break; + + case 131: + // Raise Floor Turbo + if (EV_DoFloor(line,raiseFloorTurbo)) + P_ChangeSwitchTexture(line,0); + break; + + case 133: + // BlzOpenDoor BLUE + case 135: + // BlzOpenDoor RED + case 137: + // BlzOpenDoor YELLOW + if (EV_DoLockedDoor (line,blazeOpen,thing)) + P_ChangeSwitchTexture(line,0); + break; + + case 140: + // Raise Floor 512 + if (EV_DoFloor(line,raiseFloor512)) + P_ChangeSwitchTexture(line,0); + break; + + // killough 1/31/98: factored out compatibility check; + // added inner switch, relaxed check to demo_compatibility + + default: + if (!demo_compatibility) + switch (line->special) + { + //jff 1/29/98 added linedef types to fill all functions out so that + // all possess SR, S1, WR, W1 types + + case 158: + // Raise Floor to shortest lower texture + // 158 S1 EV_DoFloor(raiseToTexture), CSW(0) + if (EV_DoFloor(line,raiseToTexture)) + P_ChangeSwitchTexture(line,0); + break; + + case 159: + // Raise Floor to shortest lower texture + // 159 S1 EV_DoFloor(lowerAndChange) + if (EV_DoFloor(line,lowerAndChange)) + P_ChangeSwitchTexture(line,0); + break; + + case 160: + // Raise Floor 24 and change + // 160 S1 EV_DoFloor(raiseFloor24AndChange) + if (EV_DoFloor(line,raiseFloor24AndChange)) + P_ChangeSwitchTexture(line,0); + break; + + case 161: + // Raise Floor 24 + // 161 S1 EV_DoFloor(raiseFloor24) + if (EV_DoFloor(line,raiseFloor24)) + P_ChangeSwitchTexture(line,0); + break; + + case 162: + // Moving floor min n to max n + // 162 S1 EV_DoPlat(perpetualRaise,0) + if (EV_DoPlat(line,perpetualRaise,0)) + P_ChangeSwitchTexture(line,0); + break; + + case 163: + // Stop Moving floor + // 163 S1 EV_DoPlat(perpetualRaise,0) + EV_StopPlat(line); + P_ChangeSwitchTexture(line,0); + break; + + case 164: + // Start fast crusher + // 164 S1 EV_DoCeiling(fastCrushAndRaise) + if (EV_DoCeiling(line,fastCrushAndRaise)) + P_ChangeSwitchTexture(line,0); + break; + + case 165: + // Start slow silent crusher + // 165 S1 EV_DoCeiling(silentCrushAndRaise) + if (EV_DoCeiling(line,silentCrushAndRaise)) + P_ChangeSwitchTexture(line,0); + break; + + case 166: + // Raise ceiling, Lower floor + // 166 S1 EV_DoCeiling(raiseToHighest), EV_DoFloor(lowerFloortoLowest) + if (EV_DoCeiling(line, raiseToHighest) || + EV_DoFloor(line, lowerFloorToLowest)) + P_ChangeSwitchTexture(line,0); + break; + + case 167: + // Lower floor and Crush + // 167 S1 EV_DoCeiling(lowerAndCrush) + if (EV_DoCeiling(line, lowerAndCrush)) + P_ChangeSwitchTexture(line,0); + break; + + case 168: + // Stop crusher + // 168 S1 EV_CeilingCrushStop() + if (EV_CeilingCrushStop(line)) + P_ChangeSwitchTexture(line,0); + break; + + case 169: + // Lights to brightest neighbor sector + // 169 S1 EV_LightTurnOn(0) + EV_LightTurnOn(line,0); + P_ChangeSwitchTexture(line,0); + break; + + case 170: + // Lights to near dark + // 170 S1 EV_LightTurnOn(35) + EV_LightTurnOn(line,35); + P_ChangeSwitchTexture(line,0); + break; + + case 171: + // Lights on full + // 171 S1 EV_LightTurnOn(255) + EV_LightTurnOn(line,255); + P_ChangeSwitchTexture(line,0); + break; + + case 172: + // Start Lights Strobing + // 172 S1 EV_StartLightStrobing() + EV_StartLightStrobing(line); + P_ChangeSwitchTexture(line,0); + break; + + case 173: + // Lights to Dimmest Near + // 173 S1 EV_TurnTagLightsOff() + EV_TurnTagLightsOff(line); + P_ChangeSwitchTexture(line,0); + break; + + case 174: + // Teleport + // 174 S1 EV_Teleport(side,thing) + if (EV_Teleport(line,side,thing)) + P_ChangeSwitchTexture(line,0); + break; + + case 175: + // Close Door, Open in 30 secs + // 175 S1 EV_DoDoor(close30ThenOpen) + if (EV_DoDoor(line,close30ThenOpen)) + P_ChangeSwitchTexture(line,0); + break; + + case 189: //jff 3/15/98 create texture change no motion type + // Texture Change Only (Trigger) + // 189 S1 Change Texture/Type Only + if (EV_DoChange(line,trigChangeOnly)) + P_ChangeSwitchTexture(line,0); + break; + + case 203: + // Lower ceiling to lowest surrounding ceiling + // 203 S1 EV_DoCeiling(lowerToLowest) + if (EV_DoCeiling(line,lowerToLowest)) + P_ChangeSwitchTexture(line,0); + break; + + case 204: + // Lower ceiling to highest surrounding floor + // 204 S1 EV_DoCeiling(lowerToMaxFloor) + if (EV_DoCeiling(line,lowerToMaxFloor)) + P_ChangeSwitchTexture(line,0); + break; + + case 209: + // killough 1/31/98: silent teleporter + //jff 209 S1 SilentTeleport + if (EV_SilentTeleport(line, side, thing)) + P_ChangeSwitchTexture(line,0); + break; + + case 241: //jff 3/15/98 create texture change no motion type + // Texture Change Only (Numeric) + // 241 S1 Change Texture/Type Only + if (EV_DoChange(line,numChangeOnly)) + P_ChangeSwitchTexture(line,0); + break; + + case 221: + // Lower floor to next lowest floor + // 221 S1 Lower Floor To Nearest Floor + if (EV_DoFloor(line,lowerFloorToNearest)) + P_ChangeSwitchTexture(line,0); + break; + + case 229: + // Raise elevator next floor + // 229 S1 Raise Elevator next floor + if (EV_DoElevator(line,elevateUp)) + P_ChangeSwitchTexture(line,0); + break; + + case 233: + // Lower elevator next floor + // 233 S1 Lower Elevator next floor + if (EV_DoElevator(line,elevateDown)) + P_ChangeSwitchTexture(line,0); + break; + + case 237: + // Elevator to current floor + // 237 S1 Elevator to current floor + if (EV_DoElevator(line,elevateCurrent)) + P_ChangeSwitchTexture(line,0); + break; + + + // jff 1/29/98 end of added S1 linedef types + + //jff 1/29/98 added linedef types to fill all functions out so that + // all possess SR, S1, WR, W1 types + + case 78: //jff 3/15/98 create texture change no motion type + // Texture Change Only (Numeric) + // 78 SR Change Texture/Type Only + if (EV_DoChange(line,numChangeOnly)) + P_ChangeSwitchTexture(line,1); + break; + + case 176: + // Raise Floor to shortest lower texture + // 176 SR EV_DoFloor(raiseToTexture), CSW(1) + if (EV_DoFloor(line,raiseToTexture)) + P_ChangeSwitchTexture(line,1); + break; + + case 177: + // Raise Floor to shortest lower texture + // 177 SR EV_DoFloor(lowerAndChange) + if (EV_DoFloor(line,lowerAndChange)) + P_ChangeSwitchTexture(line,1); + break; + + case 178: + // Raise Floor 512 + // 178 SR EV_DoFloor(raiseFloor512) + if (EV_DoFloor(line,raiseFloor512)) + P_ChangeSwitchTexture(line,1); + break; + + case 179: + // Raise Floor 24 and change + // 179 SR EV_DoFloor(raiseFloor24AndChange) + if (EV_DoFloor(line,raiseFloor24AndChange)) + P_ChangeSwitchTexture(line,1); + break; + + case 180: + // Raise Floor 24 + // 180 SR EV_DoFloor(raiseFloor24) + if (EV_DoFloor(line,raiseFloor24)) + P_ChangeSwitchTexture(line,1); + break; + + case 181: + // Moving floor min n to max n + // 181 SR EV_DoPlat(perpetualRaise,0) + + EV_DoPlat(line,perpetualRaise,0); + P_ChangeSwitchTexture(line,1); + break; + + case 182: + // Stop Moving floor + // 182 SR EV_DoPlat(perpetualRaise,0) + EV_StopPlat(line); + P_ChangeSwitchTexture(line,1); + break; + + case 183: + // Start fast crusher + // 183 SR EV_DoCeiling(fastCrushAndRaise) + if (EV_DoCeiling(line,fastCrushAndRaise)) + P_ChangeSwitchTexture(line,1); + break; + + case 184: + // Start slow crusher + // 184 SR EV_DoCeiling(crushAndRaise) + if (EV_DoCeiling(line,crushAndRaise)) + P_ChangeSwitchTexture(line,1); + break; + + case 185: + // Start slow silent crusher + // 185 SR EV_DoCeiling(silentCrushAndRaise) + if (EV_DoCeiling(line,silentCrushAndRaise)) + P_ChangeSwitchTexture(line,1); + break; + + case 186: + // Raise ceiling, Lower floor + // 186 SR EV_DoCeiling(raiseToHighest), EV_DoFloor(lowerFloortoLowest) + if (EV_DoCeiling(line, raiseToHighest) || + EV_DoFloor(line, lowerFloorToLowest)) + P_ChangeSwitchTexture(line,1); + break; + + case 187: + // Lower floor and Crush + // 187 SR EV_DoCeiling(lowerAndCrush) + if (EV_DoCeiling(line, lowerAndCrush)) + P_ChangeSwitchTexture(line,1); + break; + + case 188: + // Stop crusher + // 188 SR EV_CeilingCrushStop() + if (EV_CeilingCrushStop(line)) + P_ChangeSwitchTexture(line,1); + break; + + case 190: //jff 3/15/98 create texture change no motion type + // Texture Change Only (Trigger) + // 190 SR Change Texture/Type Only + if (EV_DoChange(line,trigChangeOnly)) + P_ChangeSwitchTexture(line,1); + break; + + case 191: + // Lower Pillar, Raise Donut + // 191 SR EV_DoDonut() + if (EV_DoDonut(line)) + P_ChangeSwitchTexture(line,1); + break; + + case 192: + // Lights to brightest neighbor sector + // 192 SR EV_LightTurnOn(0) + EV_LightTurnOn(line,0); + P_ChangeSwitchTexture(line,1); + break; + + case 193: + // Start Lights Strobing + // 193 SR EV_StartLightStrobing() + EV_StartLightStrobing(line); + P_ChangeSwitchTexture(line,1); + break; + + case 194: + // Lights to Dimmest Near + // 194 SR EV_TurnTagLightsOff() + EV_TurnTagLightsOff(line); + P_ChangeSwitchTexture(line,1); + break; + + case 195: + // Teleport + // 195 SR EV_Teleport(side,thing) + if (EV_Teleport(line,side,thing)) + P_ChangeSwitchTexture(line,1); + break; + + case 196: + // Close Door, Open in 30 secs + // 196 SR EV_DoDoor(close30ThenOpen) + if (EV_DoDoor(line,close30ThenOpen)) + P_ChangeSwitchTexture(line,1); + break; + + case 205: + // Lower ceiling to lowest surrounding ceiling + // 205 SR EV_DoCeiling(lowerToLowest) + if (EV_DoCeiling(line,lowerToLowest)) + P_ChangeSwitchTexture(line,1); + break; + + case 206: + // Lower ceiling to highest surrounding floor + // 206 SR EV_DoCeiling(lowerToMaxFloor) + if (EV_DoCeiling(line,lowerToMaxFloor)) + P_ChangeSwitchTexture(line,1); + break; + + case 210: + // killough 1/31/98: silent teleporter + //jff 210 SR SilentTeleport + if (EV_SilentTeleport(line, side, thing)) + P_ChangeSwitchTexture(line,1); + break; + + case 211: //jff 3/14/98 create instant toggle floor type + // Toggle Floor Between C and F Instantly + // 211 SR Toggle Floor Instant + if (EV_DoPlat(line,toggleUpDn,0)) + P_ChangeSwitchTexture(line,1); + break; + + case 222: + // Lower floor to next lowest floor + // 222 SR Lower Floor To Nearest Floor + if (EV_DoFloor(line,lowerFloorToNearest)) + P_ChangeSwitchTexture(line,1); + break; + + case 230: + // Raise elevator next floor + // 230 SR Raise Elevator next floor + if (EV_DoElevator(line,elevateUp)) + P_ChangeSwitchTexture(line,1); + break; + + case 234: + // Lower elevator next floor + // 234 SR Lower Elevator next floor + if (EV_DoElevator(line,elevateDown)) + P_ChangeSwitchTexture(line,1); + break; + + case 238: + // Elevator to current floor + // 238 SR Elevator to current floor + if (EV_DoElevator(line,elevateCurrent)) + P_ChangeSwitchTexture(line,1); + break; + + case 258: + // Build stairs, step 8 + // 258 SR EV_BuildStairs(build8) + if (EV_BuildStairs(line,build8)) + P_ChangeSwitchTexture(line,1); + break; + + case 259: + // Build stairs, step 16 + // 259 SR EV_BuildStairs(turbo16) + if (EV_BuildStairs(line,turbo16)) + P_ChangeSwitchTexture(line,1); + break; + + // 1/29/98 jff end of added SR linedef types + + } + break; + + // Buttons (retriggerable switches) + case 42: + // Close Door + if (EV_DoDoor(line,close)) + P_ChangeSwitchTexture(line,1); + break; + + case 43: + // Lower Ceiling to Floor + if (EV_DoCeiling(line,lowerToFloor)) + P_ChangeSwitchTexture(line,1); + break; + + case 45: + // Lower Floor to Surrounding floor height + if (EV_DoFloor(line,lowerFloor)) + P_ChangeSwitchTexture(line,1); + break; + + case 60: + // Lower Floor to Lowest + if (EV_DoFloor(line,lowerFloorToLowest)) + P_ChangeSwitchTexture(line,1); + break; + + case 61: + // Open Door + if (EV_DoDoor(line,open)) + P_ChangeSwitchTexture(line,1); + break; + + case 62: + // PlatDownWaitUpStay + if (EV_DoPlat(line,downWaitUpStay,1)) + P_ChangeSwitchTexture(line,1); + break; + + case 63: + // Raise Door + if (EV_DoDoor(line,normal)) + P_ChangeSwitchTexture(line,1); + break; + + case 64: + // Raise Floor to ceiling + if (EV_DoFloor(line,raiseFloor)) + P_ChangeSwitchTexture(line,1); + break; + + case 66: + // Raise Floor 24 and change texture + if (EV_DoPlat(line,raiseAndChange,24)) + P_ChangeSwitchTexture(line,1); + break; + + case 67: + // Raise Floor 32 and change texture + if (EV_DoPlat(line,raiseAndChange,32)) + P_ChangeSwitchTexture(line,1); + break; + + case 65: + // Raise Floor Crush + if (EV_DoFloor(line,raiseFloorCrush)) + P_ChangeSwitchTexture(line,1); + break; + + case 68: + // Raise Plat to next highest floor and change texture + if (EV_DoPlat(line,raiseToNearestAndChange,0)) + P_ChangeSwitchTexture(line,1); + break; + + case 69: + // Raise Floor to next highest floor + if (EV_DoFloor(line, raiseFloorToNearest)) + P_ChangeSwitchTexture(line,1); + break; + + case 70: + // Turbo Lower Floor + if (EV_DoFloor(line,turboLower)) + P_ChangeSwitchTexture(line,1); + break; + + case 114: + // Blazing Door Raise (faster than TURBO!) + if (EV_DoDoor (line,blazeRaise)) + P_ChangeSwitchTexture(line,1); + break; + + case 115: + // Blazing Door Open (faster than TURBO!) + if (EV_DoDoor (line,blazeOpen)) + P_ChangeSwitchTexture(line,1); + break; + + case 116: + // Blazing Door Close (faster than TURBO!) + if (EV_DoDoor (line,blazeClose)) + P_ChangeSwitchTexture(line,1); + break; + + case 123: + // Blazing PlatDownWaitUpStay + if (EV_DoPlat(line,blazeDWUS,0)) + P_ChangeSwitchTexture(line,1); + break; + + case 132: + // Raise Floor Turbo + if (EV_DoFloor(line,raiseFloorTurbo)) + P_ChangeSwitchTexture(line,1); + break; + + case 99: + // BlzOpenDoor BLUE + case 134: + // BlzOpenDoor RED + case 136: + // BlzOpenDoor YELLOW + if (EV_DoLockedDoor (line,blazeOpen,thing)) + P_ChangeSwitchTexture(line,1); + break; + + case 138: + // Light Turn On + EV_LightTurnOn(line,255); + P_ChangeSwitchTexture(line,1); + break; + + case 139: + // Light Turn Off + EV_LightTurnOn(line,35); + P_ChangeSwitchTexture(line,1); + break; + } + return true; +} diff --git a/components/doom/prboom/p_telept.c b/components/doom/prboom/p_telept.c new file mode 100644 index 0000000..2fe39c6 --- /dev/null +++ b/components/doom/prboom/p_telept.c @@ -0,0 +1,345 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2002 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Teleportation. + * + *-----------------------------------------------------------------------------*/ + +#include "doomdef.h" +#include "doomstat.h" +#include "p_spec.h" +#include "p_maputl.h" +#include "p_map.h" +#include "r_main.h" +#include "p_tick.h" +#include "s_sound.h" +#include "sounds.h" +#include "p_user.h" +#include "r_demo.h" + +static mobj_t* P_TeleportDestination(line_t* line) +{ + int i; + for (i = -1; (i = P_FindSectorFromLineTag(line, i)) >= 0;) { + register thinker_t* th = NULL; + while ((th = P_NextThinker(th,th_misc)) != NULL) + if (th->function == P_MobjThinker) { + register mobj_t* m = (mobj_t*)th; + if (m->type == MT_TELEPORTMAN && + m->subsector->sector-sectors == i) + return m; + } + } + return NULL; +} +// +// TELEPORTATION +// +// killough 5/3/98: reformatted, cleaned up + +int EV_Teleport(line_t *line, int side, mobj_t *thing) +{ + mobj_t *m; + + // don't teleport missiles + // Don't teleport if hit back of line, + // so you can get out of teleporter. + if (side || thing->flags & MF_MISSILE) + return 0; + + // killough 1/31/98: improve performance by using + // P_FindSectorFromLineTag instead of simple linear search. + + if ((m = P_TeleportDestination(line)) != NULL) + { + fixed_t oldx = thing->x, oldy = thing->y, oldz = thing->z; + player_t *player = thing->player; + + // killough 5/12/98: exclude voodoo dolls: + if (player && player->mo != thing) + player = NULL; + + if (!P_TeleportMove(thing, m->x, m->y, false)) /* killough 8/9/98 */ + return 0; + + if (compatibility_level != finaldoom_compatibility) + thing->z = thing->floorz; + + if (player) + player->viewz = thing->z + player->viewheight; + + // spawn teleport fog and emit sound at source + S_StartSound(P_SpawnMobj(oldx, oldy, oldz, MT_TFOG), sfx_telept); + + // spawn teleport fog and emit sound at destination + S_StartSound(P_SpawnMobj(m->x + + 20*finecosine[m->angle>>ANGLETOFINESHIFT], + m->y + + 20*finesine[m->angle>>ANGLETOFINESHIFT], + thing->z, MT_TFOG), + sfx_telept); + + /* don't move for a bit + * cph - DEMOSYNC - BOOM had (player) here? */ + if (thing->player) + thing->reactiontime = 18; + + thing->angle = m->angle; + + thing->momx = thing->momy = thing->momz = 0; + + /* killough 10/98: kill all bobbing momentum too */ + if (player) + player->momx = player->momy = 0; + + // e6y + if (player && player->mo == thing) + R_ResetAfterTeleport(player); + + return 1; + } + return 0; +} + +// +// Silent TELEPORTATION, by Lee Killough +// Primarily for rooms-over-rooms etc. +// + +int EV_SilentTeleport(line_t *line, int side, mobj_t *thing) +{ + mobj_t *m; + + // don't teleport missiles + // Don't teleport if hit back of line, + // so you can get out of teleporter. + + if (side || thing->flags & MF_MISSILE) + return 0; + + if ((m = P_TeleportDestination(line)) != NULL) + { + // Height of thing above ground, in case of mid-air teleports: + fixed_t z = thing->z - thing->floorz; + + // Get the angle between the exit thing and source linedef. + // Rotate 90 degrees, so that walking perpendicularly across + // teleporter linedef causes thing to exit in the direction + // indicated by the exit thing. + angle_t angle = + R_PointToAngle2(0, 0, line->dx, line->dy) - m->angle + ANG90; + + // Sine, cosine of angle adjustment + fixed_t s = finesine[angle>>ANGLETOFINESHIFT]; + fixed_t c = finecosine[angle>>ANGLETOFINESHIFT]; + + // Momentum of thing crossing teleporter linedef + fixed_t momx = thing->momx; + fixed_t momy = thing->momy; + + // Whether this is a player, and if so, a pointer to its player_t + player_t *player = thing->player; + + // Attempt to teleport, aborting if blocked + if (!P_TeleportMove(thing, m->x, m->y, false)) /* killough 8/9/98 */ + return 0; + + // Rotate thing according to difference in angles + thing->angle += angle; + + // Adjust z position to be same height above ground as before + thing->z = z + thing->floorz; + + // Rotate thing's momentum to come out of exit just like it entered + thing->momx = FixedMul(momx, c) - FixedMul(momy, s); + thing->momy = FixedMul(momy, c) + FixedMul(momx, s); + + // Adjust player's view, in case there has been a height change + // Voodoo dolls are excluded by making sure player->mo == thing. + if (player && player->mo == thing) + { + // Save the current deltaviewheight, used in stepping + fixed_t deltaviewheight = player->deltaviewheight; + + // Clear deltaviewheight, since we don't want any changes + player->deltaviewheight = 0; + + // Set player's view according to the newly set parameters + P_CalcHeight(player); + + // Reset the delta to have the same dynamics as before + player->deltaviewheight = deltaviewheight; + } + + // e6y + if (player && player->mo == thing) + R_ResetAfterTeleport(player); + + return 1; + } + return 0; +} + +// +// Silent linedef-based TELEPORTATION, by Lee Killough +// Primarily for rooms-over-rooms etc. +// This is the complete player-preserving kind of teleporter. +// It has advantages over the teleporter with thing exits. +// + +// maximum fixed_t units to move object to avoid hiccups +#define FUDGEFACTOR 10 + +int EV_SilentLineTeleport(line_t *line, int side, mobj_t *thing, + boolean reverse) +{ + int i; + line_t *l; + + if (side || thing->flags & MF_MISSILE) + return 0; + + for (i = -1; (i = P_FindLineFromLineTag(line, i)) >= 0;) + if ((l=lines+i) != line && l->backsector) + { + // Get the thing's position along the source linedef + fixed_t pos = D_abs(line->dx) > D_abs(line->dy) ? + FixedDiv(thing->x - line->v1->x, line->dx) : + FixedDiv(thing->y - line->v1->y, line->dy) ; + + // Get the angle between the two linedefs, for rotating + // orientation and momentum. Rotate 180 degrees, and flip + // the position across the exit linedef, if reversed. + angle_t angle = (reverse ? pos = FRACUNIT-pos, 0 : ANG180) + + R_PointToAngle2(0, 0, l->dx, l->dy) - + R_PointToAngle2(0, 0, line->dx, line->dy); + + // Interpolate position across the exit linedef + fixed_t x = l->v2->x - FixedMul(pos, l->dx); + fixed_t y = l->v2->y - FixedMul(pos, l->dy); + + // Sine, cosine of angle adjustment + fixed_t s = finesine[angle>>ANGLETOFINESHIFT]; + fixed_t c = finecosine[angle>>ANGLETOFINESHIFT]; + + // Maximum distance thing can be moved away from interpolated + // exit, to ensure that it is on the correct side of exit linedef + int fudge = FUDGEFACTOR; + + // Whether this is a player, and if so, a pointer to its player_t. + // Voodoo dolls are excluded by making sure thing->player->mo==thing. + player_t *player = thing->player && thing->player->mo == thing ? + thing->player : NULL; + + // Whether walking towards first side of exit linedef steps down + int stepdown = + l->frontsector->floorheight < l->backsector->floorheight; + + // Height of thing above ground + fixed_t z = thing->z - thing->floorz; + + // Side to exit the linedef on positionally. + // + // Notes: + // + // This flag concerns exit position, not momentum. Due to + // roundoff error, the thing can land on either the left or + // the right side of the exit linedef, and steps must be + // taken to make sure it does not end up on the wrong side. + // + // Exit momentum is always towards side 1 in a reversed + // teleporter, and always towards side 0 otherwise. + // + // Exiting positionally on side 1 is always safe, as far + // as avoiding oscillations and stuck-in-wall problems, + // but may not be optimum for non-reversed teleporters. + // + // Exiting on side 0 can cause oscillations if momentum + // is towards side 1, as it is with reversed teleporters. + // + // Exiting on side 1 slightly improves player viewing + // when going down a step on a non-reversed teleporter. + + int side = reverse || (player && stepdown); + + // Make sure we are on correct side of exit linedef. + while (P_PointOnLineSide(x, y, l) != side && --fudge>=0) + if (D_abs(l->dx) > D_abs(l->dy)) + y -= (l->dx < 0) != side ? -1 : 1; + else + x += (l->dy < 0) != side ? -1 : 1; + + // Attempt to teleport, aborting if blocked + if (!P_TeleportMove(thing, x, y, false)) /* killough 8/9/98 */ + return 0; + + // e6y + if (player && player->mo == thing) + R_ResetAfterTeleport(player); + + // Adjust z position to be same height above ground as before. + // Ground level at the exit is measured as the higher of the + // two floor heights at the exit linedef. + thing->z = z + sides[l->sidenum[stepdown]].sector->floorheight; + + // Rotate thing's orientation according to difference in linedef angles + thing->angle += angle; + + // Momentum of thing crossing teleporter linedef + x = thing->momx; + y = thing->momy; + + // Rotate thing's momentum to come out of exit just like it entered + thing->momx = FixedMul(x, c) - FixedMul(y, s); + thing->momy = FixedMul(y, c) + FixedMul(x, s); + + // Adjust a player's view, in case there has been a height change + if (player) + { + // Save the current deltaviewheight, used in stepping + fixed_t deltaviewheight = player->deltaviewheight; + + // Clear deltaviewheight, since we don't want any changes now + player->deltaviewheight = 0; + + // Set player's view according to the newly set parameters + P_CalcHeight(player); + + // Reset the delta to have the same dynamics as before + player->deltaviewheight = deltaviewheight; + } + + // e6y + if (player && player->mo == thing) + R_ResetAfterTeleport(player); + + return 1; + } + return 0; +} diff --git a/components/doom/prboom/p_tick.c b/components/doom/prboom/p_tick.c new file mode 100644 index 0000000..6046046 --- /dev/null +++ b/components/doom/prboom/p_tick.c @@ -0,0 +1,291 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000,2002 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Thinker, Ticker. + * + *-----------------------------------------------------------------------------*/ + +#include "doomstat.h" +#include "p_user.h" +#include "p_spec.h" +#include "p_tick.h" +#include "p_map.h" +#include "r_fps.h" + +int leveltime; + +static boolean newthinkerpresent; + +// +// THINKERS +// All thinkers should be allocated by Z_Malloc +// so they can be operated on uniformly. +// The actual structures will vary in size, +// but the first element must be thinker_t. +// + +// killough 8/29/98: we maintain several separate threads, each containing +// a special class of thinkers, to allow more efficient searches. +thinker_t thinkerclasscap[th_all+1]; + +// +// P_InitThinkers +// + +void P_InitThinkers(void) +{ + int i; + + for (i=0; ifunction == P_RemoveThinkerDelayed ? th_delete : + thinker->function == P_MobjThinker && + ((mobj_t *) thinker)->health > 0 && + (((mobj_t *) thinker)->flags & MF_COUNTKILL || + ((mobj_t *) thinker)->type == MT_SKULL) ? + ((mobj_t *) thinker)->flags & MF_FRIEND ? + th_friends : th_enemies : th_misc; + + { + /* Remove from current thread, if in one */ + if ((th = thinker->cnext)!= NULL) + (th->cprev = thinker->cprev)->cnext = th; + } + + // Add to appropriate thread + th = &thinkerclasscap[class]; + th->cprev->cnext = thinker; + thinker->cnext = th; + thinker->cprev = th->cprev; + th->cprev = thinker; +} + +// +// P_AddThinker +// Adds a new thinker at the end of the list. +// + +void P_AddThinker(thinker_t* thinker) +{ + thinkercap.prev->next = thinker; + thinker->next = &thinkercap; + thinker->prev = thinkercap.prev; + thinkercap.prev = thinker; + + thinker->references = 0; // killough 11/98: init reference counter to 0 + + // killough 8/29/98: set sentinel pointers, and then add to appropriate list + thinker->cnext = thinker->cprev = NULL; + P_UpdateThinker(thinker); + newthinkerpresent = true; +} + +// +// killough 11/98: +// +// Make currentthinker external, so that P_RemoveThinkerDelayed +// can adjust currentthinker when thinkers self-remove. + +static thinker_t *currentthinker; + +// +// P_RemoveThinkerDelayed() +// +// Called automatically as part of the thinker loop in P_RunThinkers(), +// on nodes which are pending deletion. +// +// If this thinker has no more pointers referencing it indirectly, +// remove it, and set currentthinker to one node preceeding it, so +// that the next step in P_RunThinkers() will get its successor. +// + +void P_RemoveThinkerDelayed(thinker_t *thinker) +{ + if (!thinker->references) + { + { /* Remove from main thinker list */ + thinker_t *next = thinker->next; + /* Note that currentthinker is guaranteed to point to us, + * and since we're freeing our memory, we had better change that. So + * point it to thinker->prev, so the iterator will correctly move on to + * thinker->prev->next = thinker->next */ + (next->prev = currentthinker = thinker->prev)->next = next; + } + { + /* Remove from current thinker class list */ + thinker_t *th = thinker->cnext; + (th->cprev = thinker->cprev)->cnext = th; + } + Z_Free(thinker); + } +} + +// +// P_RemoveThinker +// +// Deallocation is lazy -- it will not actually be freed +// until its thinking turn comes up. +// +// killough 4/25/98: +// +// Instead of marking the function with -1 value cast to a function pointer, +// set the function to P_RemoveThinkerDelayed(), so that later, it will be +// removed automatically as part of the thinker process. +// + +void P_RemoveThinker(thinker_t *thinker) +{ + R_StopInterpolationIfNeeded(thinker); + thinker->function = P_RemoveThinkerDelayed; + + P_UpdateThinker(thinker); +} + +/* cph 2002/01/13 - iterator for thinker list + * WARNING: Do not modify thinkers between calls to this functin + */ +thinker_t* P_NextThinker(thinker_t* th, th_class cl) +{ + thinker_t* top = &thinkerclasscap[cl]; + if (!th) th = top; + th = cl == th_all ? th->next : th->cnext; + return th == top ? NULL : th; +} + +/* + * P_SetTarget + * + * This function is used to keep track of pointer references to mobj thinkers. + * In Doom, objects such as lost souls could sometimes be removed despite + * their still being referenced. In Boom, 'target' mobj fields were tested + * during each gametic, and any objects pointed to by them would be prevented + * from being removed. But this was incomplete, and was slow (every mobj was + * checked during every gametic). Now, we keep a count of the number of + * references, and delay removal until the count is 0. + */ + +void P_SetTarget(mobj_t **mop, mobj_t *targ) +{ + if (*mop) // If there was a target already, decrease its refcount + (*mop)->thinker.references--; + if ((*mop = targ)) // Set new target and if non-NULL, increase its counter + targ->thinker.references++; +} + +// +// P_RunThinkers +// +// killough 4/25/98: +// +// Fix deallocator to stop using "next" pointer after node has been freed +// (a Doom bug). +// +// Process each thinker. For thinkers which are marked deleted, we must +// load the "next" pointer prior to freeing the node. In Doom, the "next" +// pointer was loaded AFTER the thinker was freed, which could have caused +// crashes. +// +// But if we are not deleting the thinker, we should reload the "next" +// pointer after calling the function, in case additional thinkers are +// added at the end of the list. +// +// killough 11/98: +// +// Rewritten to delete nodes implicitly, by making currentthinker +// external and using P_RemoveThinkerDelayed() implicitly. +// + +static void P_RunThinkers (void) +{ + for (currentthinker = thinkercap.next; + currentthinker != &thinkercap; + currentthinker = currentthinker->next) + { + if (newthinkerpresent) + R_ActivateThinkerInterpolations(currentthinker); + if (currentthinker->function) + currentthinker->function(currentthinker); + } + newthinkerpresent = false; +} + +// +// P_Ticker +// + +void P_Ticker (void) +{ + int i; + + /* pause if in menu and at least one tic has been run + * + * killough 9/29/98: note that this ties in with basetic, + * since G_Ticker does the pausing during recording or + * playback, and compenates by incrementing basetic. + * + * All of this complicated mess is used to preserve demo sync. + */ + + if (paused || (menuactive && !demoplayback && !netgame && + players[consoleplayer].viewz != 1)) + return; + + R_UpdateInterpolations (); + + P_MapStart(); + // not if this is an intermission screen + if(gamestate==GS_LEVEL) + for (i=0; i>= ANGLETOFINESHIFT; + player->mo->momx += FixedMul(move,finecosine[angle]); + player->mo->momy += FixedMul(move,finesine[angle]); + } + + +/* + * P_Bob + * Same as P_Thrust, but only affects bobbing. + * + * killough 10/98: We apply thrust separately between the real physical player + * and the part which affects bobbing. This way, bobbing only comes from player + * motion, nothing external, avoiding many problems, e.g. bobbing should not + * occur on conveyors, unless the player walks on one, and bobbing should be + * reduced at a regular rate, even on ice (where the player coasts). + */ + +static void P_Bob(player_t *player, angle_t angle, fixed_t move) +{ + //e6y + if (!mbf_features) + return; + + player->momx += FixedMul(move,finecosine[angle >>= ANGLETOFINESHIFT]); + player->momy += FixedMul(move,finesine[angle]); +} + +// +// P_CalcHeight +// Calculate the walking / running height adjustment +// + +void P_CalcHeight (player_t* player) + { + int angle; + fixed_t bob; + + // Regular movement bobbing + // (needs to be calculated for gun swing + // even if not on ground) + // OPTIMIZE: tablify angle + // Note: a LUT allows for effects + // like a ramp with low health. + + + /* killough 10/98: Make bobbing depend only on player-applied motion. + * + * Note: don't reduce bobbing here if on ice: if you reduce bobbing here, + * it causes bobbing jerkiness when the player moves from ice to non-ice, + * and vice-versa. + */ + player->bob = !mbf_features ? + (FixedMul (player->mo->momx, player->mo->momx) + + FixedMul (player->mo->momy,player->mo->momy))>>2 : + player_bobbing ? (FixedMul(player->momx,player->momx) + + FixedMul(player->momy,player->momy))>>2 : 0; + + //e6y + if (compatibility_level >= boom_202_compatibility && + compatibility_level <= lxdoom_1_compatibility && + player->mo->friction > ORIG_FRICTION) // ice? + { + if (player->bob > (MAXBOB>>2)) + player->bob = MAXBOB>>2; + } + else + + if (player->bob > MAXBOB) + player->bob = MAXBOB; + + if (!onground || player->cheats & CF_NOMOMENTUM) + { + player->viewz = player->mo->z + VIEWHEIGHT; + + if (player->viewz > player->mo->ceilingz-4*FRACUNIT) + player->viewz = player->mo->ceilingz-4*FRACUNIT; + +// The following line was in the Id source and appears // phares 2/25/98 +// to be a bug. player->viewz is checked in a similar +// manner at a different exit below. + +// player->viewz = player->mo->z + player->viewheight; + return; + } + + angle = (FINEANGLES/20*leveltime)&FINEMASK; + bob = FixedMul(player->bob/2,finesine[angle]); + + // move viewheight + + if (player->playerstate == PST_LIVE) + { + player->viewheight += player->deltaviewheight; + + if (player->viewheight > VIEWHEIGHT) + { + player->viewheight = VIEWHEIGHT; + player->deltaviewheight = 0; + } + + if (player->viewheight < VIEWHEIGHT/2) + { + player->viewheight = VIEWHEIGHT/2; + if (player->deltaviewheight <= 0) + player->deltaviewheight = 1; + } + + if (player->deltaviewheight) + { + player->deltaviewheight += FRACUNIT/4; + if (!player->deltaviewheight) + player->deltaviewheight = 1; + } + } + + player->viewz = player->mo->z + player->viewheight + bob; + + if (player->viewz > player->mo->ceilingz-4*FRACUNIT) + player->viewz = player->mo->ceilingz-4*FRACUNIT; + } + + +// +// P_MovePlayer +// +// Adds momentum if the player is not in the air +// +// killough 10/98: simplified + +void P_MovePlayer (player_t* player) +{ + ticcmd_t *cmd = &player->cmd; + mobj_t *mo = player->mo; + + mo->angle += cmd->angleturn << 16; + onground = mo->z <= mo->floorz; + + // e6y + if (demo_smoothturns && player == &players[displayplayer]) + R_SmoothPlaying_Add(cmd->angleturn << 16); + + // killough 10/98: + // + // We must apply thrust to the player and bobbing separately, to avoid + // anomalies. The thrust applied to bobbing is always the same strength on + // ice, because the player still "works just as hard" to move, while the + // thrust applied to the movement varies with 'movefactor'. + + //e6y + if ((!demo_compatibility && !mbf_features) || (cmd->forwardmove | cmd->sidemove)) // killough 10/98 + { + if (onground || mo->flags & MF_BOUNCES) // killough 8/9/98 + { + int friction, movefactor = P_GetMoveFactor(mo, &friction); + + // killough 11/98: + // On sludge, make bobbing depend on efficiency. + // On ice, make it depend on effort. + + int bobfactor = + friction < ORIG_FRICTION ? movefactor : ORIG_FRICTION_FACTOR; + + if (cmd->forwardmove) + { + P_Bob(player,mo->angle,cmd->forwardmove*bobfactor); + P_Thrust(player,mo->angle,cmd->forwardmove*movefactor); + } + + if (cmd->sidemove) + { + P_Bob(player,mo->angle-ANG90,cmd->sidemove*bobfactor); + P_Thrust(player,mo->angle-ANG90,cmd->sidemove*movefactor); + } + } + if (mo->state == states+S_PLAY) + P_SetMobjState(mo,S_PLAY_RUN1); + } +} + +#define ANG5 (ANG90/18) + +// +// P_DeathThink +// Fall on your face when dying. +// Decrease POV height to floor height. +// + +void P_DeathThink (player_t* player) + { + angle_t angle; + angle_t delta; + + P_MovePsprites (player); + + // fall to the ground + + if (player->viewheight > 6*FRACUNIT) + player->viewheight -= FRACUNIT; + + if (player->viewheight < 6*FRACUNIT) + player->viewheight = 6*FRACUNIT; + + player->deltaviewheight = 0; + onground = (player->mo->z <= player->mo->floorz); + P_CalcHeight (player); + + if (player->attacker && player->attacker != player->mo) + { + angle = R_PointToAngle2 (player->mo->x, + player->mo->y, + player->attacker->x, + player->attacker->y); + + delta = angle - player->mo->angle; + + if (delta < ANG5 || delta > (unsigned)-ANG5) + { + // Looking at killer, + // so fade damage flash down. + + player->mo->angle = angle; + + if (player->damagecount) + player->damagecount--; + } + else if (delta < ANG180) + player->mo->angle += ANG5; + else + player->mo->angle -= ANG5; + } + else if (player->damagecount) + player->damagecount--; + + if (player->cmd.buttons & BT_USE) + player->playerstate = PST_REBORN; + R_SmoothPlaying_Reset(player); // e6y + } + + +// +// P_PlayerThink +// + +void P_PlayerThink (player_t* player) + { + ticcmd_t* cmd; + weapontype_t newweapon; + + if (movement_smooth && players!=NULL && (&players[displayplayer] == player)) + { + original_view_vars.viewx = player->mo->x; + original_view_vars.viewy = player->mo->y; + original_view_vars.viewz = player->viewz; + original_view_vars.viewangle = R_SmoothPlaying_Get(player->mo->angle) + viewangleoffset; + } + + // killough 2/8/98, 3/21/98: + if (player->cheats & CF_NOCLIP) + player->mo->flags |= MF_NOCLIP; + else + player->mo->flags &= ~MF_NOCLIP; + + // chain saw run forward + + cmd = &player->cmd; + if (player->mo->flags & MF_JUSTATTACKED) + { + cmd->angleturn = 0; + cmd->forwardmove = 0xc800/512; + cmd->sidemove = 0; + player->mo->flags &= ~MF_JUSTATTACKED; + } + + if (player->playerstate == PST_DEAD) + { + P_DeathThink (player); + return; + } + + // Move around. + // Reactiontime is used to prevent movement + // for a bit after a teleport. + + if (player->mo->reactiontime) + player->mo->reactiontime--; + else + P_MovePlayer (player); + + P_CalcHeight (player); // Determines view height and bobbing + + // Determine if there's anything about the sector you're in that's + // going to affect you, like painful floors. + + if (player->mo->subsector->sector->special) + P_PlayerInSpecialSector (player); + + // Check for weapon change. + + if (cmd->buttons & BT_CHANGE) + { + // The actual changing of the weapon is done + // when the weapon psprite can do it + // (read: not in the middle of an attack). + + newweapon = (cmd->buttons & BT_WEAPONMASK)>>BT_WEAPONSHIFT; + + // killough 3/22/98: For demo compatibility we must perform the fist + // and SSG weapons switches here, rather than in G_BuildTiccmd(). For + // other games which rely on user preferences, we must use the latter. + + if (demo_compatibility) + { // compatibility mode -- required for old demos -- killough + if (newweapon == wp_fist && player->weaponowned[wp_chainsaw] && + (player->readyweapon != wp_chainsaw || + !player->powers[pw_strength])) + newweapon = wp_chainsaw; + if (gamemode == commercial && + newweapon == wp_shotgun && + player->weaponowned[wp_supershotgun] && + player->readyweapon != wp_supershotgun) + newweapon = wp_supershotgun; + } + + // killough 2/8/98, 3/22/98 -- end of weapon selection changes + + if (player->weaponowned[newweapon] && newweapon != player->readyweapon) + + // Do not go to plasma or BFG in shareware, + // even if cheated. + + if ((newweapon != wp_plasma && newweapon != wp_bfg) + || (gamemode != shareware) ) + player->pendingweapon = newweapon; + } + + // check for use + + if (cmd->buttons & BT_USE) + { + if (!player->usedown) + { + P_UseLines (player); + player->usedown = true; + } + } + else + player->usedown = false; + + // cycle psprites + + P_MovePsprites (player); + + // Counters, time dependent power ups. + + // Strength counts up to diminish fade. + + if (player->powers[pw_strength]) + player->powers[pw_strength]++; + + // killough 1/98: Make idbeholdx toggle: + + if (player->powers[pw_invulnerability] > 0) // killough + player->powers[pw_invulnerability]--; + + if (player->powers[pw_invisibility] > 0) // killough + if (! --player->powers[pw_invisibility] ) + player->mo->flags &= ~MF_SHADOW; + + if (player->powers[pw_infrared] > 0) // killough + player->powers[pw_infrared]--; + + if (player->powers[pw_ironfeet] > 0) // killough + player->powers[pw_ironfeet]--; + + if (player->damagecount) + player->damagecount--; + + if (player->bonuscount) + player->bonuscount--; + + // Handling colormaps. + // killough 3/20/98: reformat to terse C syntax + + player->fixedcolormap = player->powers[pw_invulnerability] > 4*32 || + player->powers[pw_invulnerability] & 8 ? INVERSECOLORMAP : + player->powers[pw_infrared] > 4*32 || player->powers[pw_infrared] & 8; + } diff --git a/components/doom/prboom/p_user.h b/components/doom/prboom/p_user.h new file mode 100644 index 0000000..b0540e8 --- /dev/null +++ b/components/doom/prboom/p_user.h @@ -0,0 +1,47 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Player related stuff. + * Bobbing POV/weapon, movement. + * Pending weapon. + * + *-----------------------------------------------------------------------------*/ + +#ifndef __P_USER__ +#define __P_USER__ + +#include "d_player.h" + +void P_PlayerThink(player_t *player); +void P_CalcHeight(player_t *player); +void P_DeathThink(player_t *player); +void P_MovePlayer(player_t *player); +void P_Thrust(player_t *player, angle_t angle, fixed_t move); + +#endif /* __P_USER__ */ diff --git a/components/doom/prboom/prboom_wad.h b/components/doom/prboom/prboom_wad.h new file mode 100644 index 0000000..3ed4256 --- /dev/null +++ b/components/doom/prboom/prboom_wad.h @@ -0,0 +1,1312 @@ +#include + +// This is the prboom.wad from PrBoom 2.5.0 with the following lumps removed: +// - M_COLORS +// - M_VERSEN +// - M_HORSEN +// - M_HORSEN +// - M_ENEM +// - M_MESS +// - M_STAT +// - M_WEAP +// - M_KEYBND +// - M_COMPAT +// - M_AUTO +// - M_GENERL +// - WATERMAP +// - SINETABL +// - TANGTABL +// - TANTOANG +// - GAMMATBL +// - BFGDEH + +static const unsigned char prboom_wad[] = { + "\x50\x57\x41\x44\x4F\x00\x00\x00\x7C\x4B\x00\x00\x53\x57\x31\x42" + "\x52\x43\x4F\x4D\x00\x53\x57\x32\x42\x52\x43\x4F\x4D\x00\x01\x00" + "\x53\x57\x31\x42\x52\x4E\x31\x00\x00\x53\x57\x32\x42\x52\x4E\x31" + "\x00\x00\x01\x00\x53\x57\x31\x42\x52\x4E\x32\x00\x00\x53\x57\x32" + "\x42\x52\x4E\x32\x00\x00\x01\x00\x53\x57\x31\x42\x52\x4E\x47\x4E" + "\x00\x53\x57\x32\x42\x52\x4E\x47\x4E\x00\x01\x00\x53\x57\x31\x42" + "\x52\x4F\x57\x4E\x00\x53\x57\x32\x42\x52\x4F\x57\x4E\x00\x01\x00" + "\x53\x57\x31\x43\x4F\x4D\x4D\x00\x00\x53\x57\x32\x43\x4F\x4D\x4D" + "\x00\x00\x01\x00\x53\x57\x31\x43\x4F\x4D\x50\x00\x00\x53\x57\x32" + "\x43\x4F\x4D\x50\x00\x00\x01\x00\x53\x57\x31\x44\x49\x52\x54\x00" + "\x00\x53\x57\x32\x44\x49\x52\x54\x00\x00\x01\x00\x53\x57\x31\x45" + "\x58\x49\x54\x00\x00\x53\x57\x32\x45\x58\x49\x54\x00\x00\x01\x00" + "\x53\x57\x31\x47\x52\x41\x59\x00\x00\x53\x57\x32\x47\x52\x41\x59" + "\x00\x00\x01\x00\x53\x57\x31\x47\x52\x41\x59\x31\x00\x53\x57\x32" + "\x47\x52\x41\x59\x31\x00\x01\x00\x53\x57\x31\x4D\x45\x54\x41\x4C" + "\x00\x53\x57\x32\x4D\x45\x54\x41\x4C\x00\x01\x00\x53\x57\x31\x50" + "\x49\x50\x45\x00\x00\x53\x57\x32\x50\x49\x50\x45\x00\x00\x01\x00" + "\x53\x57\x31\x53\x4C\x41\x44\x00\x00\x53\x57\x32\x53\x4C\x41\x44" + "\x00\x00\x01\x00\x53\x57\x31\x53\x54\x41\x52\x47\x00\x53\x57\x32" + "\x53\x54\x41\x52\x47\x00\x01\x00\x53\x57\x31\x53\x54\x4F\x4E\x31" + "\x00\x53\x57\x32\x53\x54\x4F\x4E\x31\x00\x01\x00\x53\x57\x31\x53" + "\x54\x4F\x4E\x32\x00\x53\x57\x32\x53\x54\x4F\x4E\x32\x00\x01\x00" + "\x53\x57\x31\x53\x54\x4F\x4E\x45\x00\x53\x57\x32\x53\x54\x4F\x4E" + "\x45\x00\x01\x00\x53\x57\x31\x53\x54\x52\x54\x4E\x00\x53\x57\x32" + "\x53\x54\x52\x54\x4E\x00\x01\x00\x53\x57\x31\x42\x4C\x55\x45\x00" + "\x00\x53\x57\x32\x42\x4C\x55\x45\x00\x00\x02\x00\x53\x57\x31\x43" + "\x4D\x54\x00\x00\x00\x53\x57\x32\x43\x4D\x54\x00\x00\x00\x02\x00" + "\x53\x57\x31\x47\x41\x52\x47\x00\x00\x53\x57\x32\x47\x41\x52\x47" + "\x00\x00\x02\x00\x53\x57\x31\x47\x53\x54\x4F\x4E\x00\x53\x57\x32" + "\x47\x53\x54\x4F\x4E\x00\x02\x00\x53\x57\x31\x48\x4F\x54\x00\x00" + "\x00\x53\x57\x32\x48\x4F\x54\x00\x00\x00\x02\x00\x53\x57\x31\x4C" + "\x49\x4F\x4E\x00\x00\x53\x57\x32\x4C\x49\x4F\x4E\x00\x00\x02\x00" + "\x53\x57\x31\x53\x41\x54\x59\x52\x00\x53\x57\x32\x53\x41\x54\x59" + "\x52\x00\x02\x00\x53\x57\x31\x53\x4B\x49\x4E\x00\x00\x53\x57\x32" + "\x53\x4B\x49\x4E\x00\x00\x02\x00\x53\x57\x31\x56\x49\x4E\x45\x00" + "\x00\x53\x57\x32\x56\x49\x4E\x45\x00\x00\x02\x00\x53\x57\x31\x57" + "\x4F\x4F\x44\x00\x00\x53\x57\x32\x57\x4F\x4F\x44\x00\x00\x02\x00" + "\x53\x57\x31\x50\x41\x4E\x45\x4C\x00\x53\x57\x32\x50\x41\x4E\x45" + "\x4C\x00\x03\x00\x53\x57\x31\x52\x4F\x43\x4B\x00\x00\x53\x57\x32" + "\x52\x4F\x43\x4B\x00\x00\x03\x00\x53\x57\x31\x4D\x45\x54\x32\x00" + "\x00\x53\x57\x32\x4D\x45\x54\x32\x00\x00\x03\x00\x53\x57\x31\x57" + "\x44\x4D\x45\x54\x00\x53\x57\x32\x57\x44\x4D\x45\x54\x00\x03\x00" + "\x53\x57\x31\x42\x52\x49\x4B\x00\x00\x53\x57\x32\x42\x52\x49\x4B" + "\x00\x00\x03\x00\x53\x57\x31\x4D\x4F\x44\x31\x00\x00\x53\x57\x32" + "\x4D\x4F\x44\x31\x00\x00\x03\x00\x53\x57\x31\x5A\x49\x4D\x00\x00" + "\x00\x53\x57\x32\x5A\x49\x4D\x00\x00\x00\x03\x00\x53\x57\x31\x53" + "\x54\x4F\x4E\x36\x00\x53\x57\x32\x53\x54\x4F\x4E\x36\x00\x03\x00" + "\x53\x57\x31\x54\x45\x4B\x00\x00\x00\x53\x57\x32\x54\x45\x4B\x00" + "\x00\x00\x03\x00\x53\x57\x31\x4D\x41\x52\x42\x00\x00\x53\x57\x32" + "\x4D\x41\x52\x42\x00\x00\x03\x00\x53\x57\x31\x53\x4B\x55\x4C\x4C" + "\x00\x53\x57\x32\x53\x4B\x55\x4C\x4C\x00\x03\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x4E\x55\x4B\x41\x47\x45\x33\x00\x00\x4E\x55\x4B\x41\x47\x45" + "\x31\x00\x00\x08\x00\x00\x00\x00\x46\x57\x41\x54\x45\x52\x34\x00" + "\x00\x46\x57\x41\x54\x45\x52\x31\x00\x00\x08\x00\x00\x00\x00\x53" + "\x57\x41\x54\x45\x52\x34\x00\x00\x53\x57\x41\x54\x45\x52\x31\x00" + "\x00\x08\x00\x00\x00\x00\x4C\x41\x56\x41\x34\x00\x00\x00\x00\x4C" + "\x41\x56\x41\x31\x00\x00\x00\x00\x08\x00\x00\x00\x00\x42\x4C\x4F" + "\x4F\x44\x33\x00\x00\x00\x42\x4C\x4F\x4F\x44\x31\x00\x00\x00\x08" + "\x00\x00\x00\x00\x52\x52\x4F\x43\x4B\x30\x38\x00\x00\x52\x52\x4F" + "\x43\x4B\x30\x35\x00\x00\x08\x00\x00\x00\x00\x53\x4C\x49\x4D\x45" + "\x30\x34\x00\x00\x53\x4C\x49\x4D\x45\x30\x31\x00\x00\x08\x00\x00" + "\x00\x00\x53\x4C\x49\x4D\x45\x30\x38\x00\x00\x53\x4C\x49\x4D\x45" + "\x30\x35\x00\x00\x08\x00\x00\x00\x00\x53\x4C\x49\x4D\x45\x31\x32" + "\x00\x00\x53\x4C\x49\x4D\x45\x30\x39\x00\x00\x08\x00\x00\x00\x01" + "\x42\x4C\x4F\x44\x47\x52\x34\x00\x00\x42\x4C\x4F\x44\x47\x52\x31" + "\x00\x00\x08\x00\x00\x00\x01\x53\x4C\x41\x44\x52\x49\x50\x33\x00" + "\x53\x4C\x41\x44\x52\x49\x50\x31\x00\x08\x00\x00\x00\x01\x42\x4C" + "\x4F\x44\x52\x49\x50\x34\x00\x42\x4C\x4F\x44\x52\x49\x50\x31\x00" + "\x08\x00\x00\x00\x01\x46\x49\x52\x45\x57\x41\x4C\x4C\x00\x46\x49" + "\x52\x45\x57\x41\x4C\x41\x00\x08\x00\x00\x00\x01\x47\x53\x54\x46" + "\x4F\x4E\x54\x33\x00\x47\x53\x54\x46\x4F\x4E\x54\x31\x00\x08\x00" + "\x00\x00\x01\x46\x49\x52\x45\x4C\x41\x56\x41\x00\x46\x49\x52\x45" + "\x4C\x41\x56\x33\x00\x08\x00\x00\x00\x01\x46\x49\x52\x45\x4D\x41" + "\x47\x33\x00\x46\x49\x52\x45\x4D\x41\x47\x31\x00\x08\x00\x00\x00" + "\x01\x46\x49\x52\x45\x42\x4C\x55\x32\x00\x46\x49\x52\x45\x42\x4C" + "\x55\x31\x00\x08\x00\x00\x00\x01\x52\x4F\x43\x4B\x52\x45\x44\x33" + "\x00\x52\x4F\x43\x4B\x52\x45\x44\x31\x00\x08\x00\x00\x00\x01\x42" + "\x46\x41\x4C\x4C\x34\x00\x00\x00\x42\x46\x41\x4C\x4C\x31\x00\x00" + "\x00\x08\x00\x00\x00\x01\x53\x46\x41\x4C\x4C\x34\x00\x00\x00\x53" + "\x46\x41\x4C\x4C\x31\x00\x00\x00\x08\x00\x00\x00\x01\x57\x46\x41" + "\x4C\x4C\x34\x00\x00\x00\x57\x46\x41\x4C\x4C\x31\x00\x00\x00\x08" + "\x00\x00\x00\x01\x44\x42\x52\x41\x49\x4E\x34\x00\x00\x44\x42\x52" + "\x41\x49\x4E\x31\x00\x00\x08\x00\x00\x00\xFF\xFF\xFF\xFF\x00\x01" + "\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11" + "\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21" + "\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2E\x2E\x2E\x2E\x30\x31" + "\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41" + "\x42\x2E\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51" + "\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61" + "\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71" + "\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81" + "\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91" + "\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1" + "\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\x10\x12" + "\x14\x16\x18\x1A\x1C\x1E\x20\x22\x24\x26\x28\x2A\x2C\x2E\xC0\xC1" + "\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1" + "\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1" + "\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1" + "\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF\x00\x01" + "\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11" + "\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21" + "\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x4E\x2D\x4E\x4E\x30\x31" + "\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41" + "\x42\x4E\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51" + "\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61" + "\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71" + "\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81" + "\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91" + "\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1" + "\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\x30\x32" + "\x34\x36\x38\x3A\x3C\x3E\x40\x42\x44\x46\x48\x4A\x4C\x4E\xC0\xC1" + "\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1" + "\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1" + "\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1" + "\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF\x00\x01" + "\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11" + "\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21" + "\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x6E\x6E\x2E\x6E\x30\x31" + "\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41" + "\x42\x6E\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51" + "\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61" + "\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71" + "\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81" + "\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91" + "\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1" + "\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\x50\x52" + "\x54\x56\x58\x5A\x5C\x5E\x60\x62\x64\x66\x68\x6A\x6C\x6E\xC0\xC1" + "\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1" + "\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1" + "\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1" + "\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF\x00\x01" + "\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11" + "\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21" + "\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x7F\x7F\x2E\x7F\x30\x31" + "\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41" + "\x42\x7F\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51" + "\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61" + "\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71" + "\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81" + "\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91" + "\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1" + "\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\x70\x71" + "\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\xC0\xC1" + "\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1" + "\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1" + "\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1" + "\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF\x00\x01" + "\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11" + "\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21" + "\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x8F\x8F\x2E\x8F\x30\x31" + "\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41" + "\x42\x8F\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51" + "\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61" + "\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71" + "\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81" + "\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91" + "\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1" + "\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\x80\x81" + "\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\xC0\xC1" + "\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1" + "\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1" + "\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1" + "\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF\x00\x01" + "\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11" + "\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21" + "\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\xA7\xA7\x2E\xA7\x30\x31" + "\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41" + "\x42\xA7\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51" + "\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61" + "\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71" + "\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81" + "\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91" + "\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1" + "\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xA0\xA0" + "\xA1\xA1\xA2\xA2\xA3\xA3\xA4\xA4\xA5\xA5\xA6\xA6\xA7\xA7\xC0\xC1" + "\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1" + "\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1" + "\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1" + "\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF\x00\x01" + "\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11" + "\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21" + "\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\xBF\xBF\x2E\xBF\x30\x31" + "\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41" + "\x42\xBF\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51" + "\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61" + "\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71" + "\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81" + "\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91" + "\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1" + "\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1" + "\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1" + "\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1" + "\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1" + "\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1" + "\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF\x00\x01" + "\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11" + "\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21" + "\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\xCB\xCB\x2E\xCB\x30\x31" + "\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41" + "\x42\xCB\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51" + "\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61" + "\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71" + "\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81" + "\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91" + "\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1" + "\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xC4\xC4" + "\xC5\xC5\xC6\xC6\xC7\xC7\xC8\xC8\xC9\xC9\xCA\xCA\xCB\xCB\xC0\xC1" + "\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1" + "\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1" + "\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1" + "\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF\x00\x01" + "\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11" + "\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21" + "\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\xCF\xCF\x2E\xCF\x30\x31" + "\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41" + "\x42\xCF\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51" + "\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61" + "\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71" + "\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81" + "\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91" + "\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1" + "\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xC8\xC8" + "\xC9\xC9\xCA\xCA\xCB\xCB\xCC\xCC\xCD\xCD\xCE\xCE\xCF\xCF\xC0\xC1" + "\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1" + "\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1" + "\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1" + "\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF\x00\x01" + "\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11" + "\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21" + "\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\xDF\xDF\x2E\xDF\x30\x31" + "\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41" + "\x42\xDF\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51" + "\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61" + "\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71" + "\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81" + "\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91" + "\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1" + "\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xD0\xD1" + "\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xC0\xC1" + "\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1" + "\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1" + "\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1" + "\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF\x00\x01" + "\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11" + "\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21" + "\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\xE7\xE7\x2E\xE7\x30\x31" + "\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41" + "\x42\xE7\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51" + "\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61" + "\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71" + "\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81" + "\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91" + "\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1" + "\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xE0\xE0" + "\xE1\xE1\xE2\xE2\xE3\xE3\xE4\xE4\xE5\xE5\xE6\xE6\xE7\xE7\xC0\xC1" + "\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1" + "\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1" + "\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1" + "\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF\x05\x00" + "\x07\x00\x00\x00\x00\x00\x1C\x00\x00\x00\x26\x00\x00\x00\x31\x00" + "\x00\x00\x3E\x00\x00\x00\x49\x00\x00\x00\x01\x05\x00\xB0\xB0\xB0" + "\xB0\xB0\x00\xFF\x01\x06\x00\xB0\x00\x00\x00\xB0\x00\x00\xFF\x01" + "\x02\x00\xB0\x00\x00\x05\x02\x00\xB0\x00\x00\xFF\x01\x06\x00\xB0" + "\xB0\xB0\xB0\xB0\x00\x00\xFF\x02\x05\x00\x00\x00\x00\x00\x00\x00" + "\xFF\x05\x00\x07\x00\x00\x00\x00\x00\x1C\x00\x00\x00\x22\x00\x00" + "\x00\x2E\x00\x00\x00\x39\x00\x00\x00\x43\x00\x00\x00\x05\x01\x00" + "\xB0\x00\xFF\x01\x01\x00\xB0\x00\x05\x02\x00\xB0\x00\x00\xFF\x01" + "\x06\x00\xB0\xB0\xB0\xB0\xB0\x00\x00\xFF\x02\x05\x00\x00\x00\x00" + "\xB0\x00\x00\xFF\x04\x03\x00\x00\x00\x00\x00\xFF\x05\x00\x07\x00" + "\x00\x00\x00\x00\x1C\x00\x00\x00\x29\x00\x00\x00\x34\x00\x00\x00" + "\x3F\x00\x00\x00\x4A\x00\x00\x00\x01\x01\x00\xB0\x00\x03\x03\x00" + "\xB0\xB0\xB0\x00\xFF\x01\x06\x00\xB0\x00\xB0\x00\xB0\x00\x00\xFF" + "\x01\x06\x00\xB0\x00\xB0\x00\xB0\x00\x00\xFF\x01\x06\x00\xB0\xB0" + "\xB0\x00\xB0\x00\x00\xFF\x02\x03\x00\x00\x00\x00\x00\x06\x01\x00" + "\x00\x00\xFF\x05\x00\x07\x00\x00\x00\x00\x00\x1C\x00\x00\x00\x29" + "\x00\x00\x00\x37\x00\x00\x00\x45\x00\x00\x00\x50\x00\x00\x00\x01" + "\x02\x00\xB0\xB0\x00\x04\x02\x00\xB0\xB0\x00\xFF\x01\x03\x00\xB0" + "\x00\x00\x00\x05\x02\x00\xB0\x00\x00\xFF\x01\x03\x00\xB0\x00\xB0" + "\x00\x05\x02\x00\xB0\x00\x00\xFF\x01\x06\x00\xB0\xB0\xB0\xB0\xB0" + "\x00\x00\xFF\x02\x05\x00\x00\x00\x00\x00\x00\x00\xFF\x05\x00\x07" + "\x00\x00\x00\x00\x00\x1C\x00\x00\x00\x25\x00\x00\x00\x2E\x00\x00" + "\x00\x39\x00\x00\x00\x43\x00\x00\x00\x01\x04\x00\xB0\xB0\xB0\xB0" + "\x00\xFF\x02\x04\x00\x00\x00\xB0\x00\x00\xFF\x01\x06\x00\xB0\xB0" + "\xB0\xB0\xB0\x00\x00\xFF\x02\x05\x00\x00\x00\xB0\x00\x00\x00\xFF" + "\x04\x02\x00\x00\x00\x00\xFF\x05\x00\x07\x00\x00\x00\x00\x00\x1C" + "\x00\x00\x00\x29\x00\x00\x00\x34\x00\x00\x00\x3F\x00\x00\x00\x4A" + "\x00\x00\x00\x01\x03\x00\xB0\xB0\xB0\x00\x05\x01\x00\xB0\x00\xFF" + "\x01\x06\x00\xB0\x00\xB0\x00\xB0\x00\x00\xFF\x01\x06\x00\xB0\x00" + "\xB0\x00\xB0\x00\x00\xFF\x01\x06\x00\xB0\x00\xB0\xB0\xB0\x00\x00" + "\xFF\x02\x05\x00\x00\x00\x00\x00\x00\x00\xFF\x05\x00\x07\x00\x00" + "\x00\x00\x00\x1C\x00\x00\x00\x26\x00\x00\x00\x31\x00\x00\x00\x3C" + "\x00\x00\x00\x47\x00\x00\x00\x01\x05\x00\xB0\xB0\xB0\xB0\xB0\x00" + "\xFF\x01\x06\x00\xB0\x00\xB0\x00\xB0\x00\x00\xFF\x01\x06\x00\xB0" + "\x00\xB0\x00\xB0\x00\x00\xFF\x01\x06\x00\xB0\x00\xB0\xB0\xB0\x00" + "\x00\xFF\x02\x05\x00\x00\x00\x00\x00\x00\x00\xFF\x05\x00\x07\x00" + "\x00\x00\x00\x00\x1C\x00\x00\x00\x22\x00\x00\x00\x29\x00\x00\x00" + "\x33\x00\x00\x00\x3E\x00\x00\x00\x01\x01\x00\xB0\x00\xFF\x01\x02" + "\x00\xB0\x00\x00\xFF\x01\x05\x00\xB0\x00\xB0\xB0\xB0\x00\xFF\x01" + "\x06\x00\xB0\xB0\x00\x00\x00\x00\x00\xFF\x02\x02\x00\x00\x00\x00" + "\xFF\x05\x00\x07\x00\x00\x00\x00\x00\x1C\x00\x00\x00\x26\x00\x00" + "\x00\x31\x00\x00\x00\x3C\x00\x00\x00\x47\x00\x00\x00\x01\x05\x00" + "\xB0\xB0\xB0\xB0\xB0\x00\xFF\x01\x06\x00\xB0\x00\xB0\x00\xB0\x00" + "\x00\xFF\x01\x06\x00\xB0\x00\xB0\x00\xB0\x00\x00\xFF\x01\x06\x00" + "\xB0\xB0\xB0\xB0\xB0\x00\x00\xFF\x02\x05\x00\x00\x00\x00\x00\x00" + "\x00\xFF\x05\x00\x07\x00\x00\x00\x00\x00\x1C\x00\x00\x00\x29\x00" + "\x00\x00\x34\x00\x00\x00\x3F\x00\x00\x00\x4A\x00\x00\x00\x01\x03" + "\x00\xB0\xB0\xB0\x00\x05\x01\x00\xB0\x00\xFF\x01\x06\x00\xB0\x00" + "\xB0\x00\xB0\x00\x00\xFF\x01\x06\x00\xB0\x00\xB0\x00\xB0\x00\x00" + "\xFF\x01\x06\x00\xB0\xB0\xB0\xB0\xB0\x00\x00\xFF\x02\x05\x00\x00" + "\x00\x00\x00\x00\x00\xFF\x05\x00\x07\x00\x00\x00\x00\x00\x1C\x00" + "\x00\x00\x26\x00\x00\x00\x31\x00\x00\x00\x3A\x00\x00\x00\x44\x00" + "\x00\x00\x01\x05\x00\xB0\xB0\xB0\xB0\xB0\x00\xFF\x01\x06\x00\xB0" + "\x00\xB0\x00\x00\x00\x00\xFF\x01\x04\x00\xB0\x00\xB0\x00\x00\xFF" + "\x01\x05\x00\xB0\xB0\xB0\xB0\xB0\x00\xFF\x02\x05\x00\x00\x00\x00" + "\x00\x00\x00\xFF\x05\x00\x07\x00\x00\x00\x00\x00\x1C\x00\x00\x00" + "\x26\x00\x00\x00\x31\x00\x00\x00\x3C\x00\x00\x00\x46\x00\x00\x00" + "\x01\x05\x00\xB0\xB0\xB0\xB0\xB0\x00\xFF\x01\x06\x00\xB0\x00\xB0" + "\x00\xB0\x00\x00\xFF\x01\x06\x00\xB0\xB0\xB0\x00\xB0\x00\x00\xFF" + "\x02\x05\x00\x00\xB0\xB0\xB0\x00\x00\xFF\x03\x04\x00\x00\x00\x00" + "\x00\x00\xFF\x05\x00\x07\x00\x00\x00\x00\x00\x1C\x00\x00\x00\x26" + "\x00\x00\x00\x31\x00\x00\x00\x3E\x00\x00\x00\x4B\x00\x00\x00\x01" + "\x05\x00\xB0\xB0\xB0\xB0\xB0\x00\xFF\x01\x06\x00\xB0\x00\x00\x00" + "\xB0\x00\x00\xFF\x01\x02\x00\xB0\x00\x00\x05\x02\x00\xB0\x00\x00" + "\xFF\x01\x02\x00\xB0\x00\x00\x05\x02\x00\xB0\x00\x00\xFF\x02\x01" + "\x00\x00\x00\x06\x01\x00\x00\x00\xFF\x05\x00\x07\x00\x00\x00\x00" + "\x00\x1C\x00\x00\x00\x26\x00\x00\x00\x31\x00\x00\x00\x3E\x00\x00" + "\x00\x48\x00\x00\x00\x01\x05\x00\xB0\xB0\xB0\xB0\xB0\x00\xFF\x01" + "\x06\x00\xB0\x00\x00\x00\xB0\x00\x00\xFF\x01\x02\x00\xB0\x00\x00" + "\x05\x02\x00\xB0\x00\x00\xFF\x02\x05\x00\xB0\xB0\xB0\x00\x00\x00" + "\xFF\x03\x03\x00\x00\x00\x00\x00\xFF\x05\x00\x07\x00\x00\x00\x00" + "\x00\x1C\x00\x00\x00\x26\x00\x00\x00\x31\x00\x00\x00\x3C\x00\x00" + "\x00\x4A\x00\x00\x00\x01\x05\x00\xB0\xB0\xB0\xB0\xB0\x00\xFF\x01" + "\x06\x00\xB0\x00\xB0\x00\xB0\x00\x00\xFF\x01\x06\x00\xB0\x00\xB0" + "\x00\xB0\x00\x00\xFF\x01\x02\x00\xB0\x00\x00\x04\x03\x00\x00\xB0" + "\x00\x00\xFF\x02\x01\x00\x00\x00\x06\x01\x00\x00\x00\xFF\x05\x00" + "\x07\x00\x00\x00\x00\x00\x1C\x00\x00\x00\x26\x00\x00\x00\x31\x00" + "\x00\x00\x3A\x00\x00\x00\x46\x00\x00\x00\x01\x05\x00\xB0\xB0\xB0" + "\xB0\xB0\x00\xFF\x01\x06\x00\xB0\x00\xB0\x00\x00\x00\x00\xFF\x01" + "\x04\x00\xB0\x00\xB0\x00\x00\xFF\x01\x02\x00\xB0\x00\x00\x04\x01" + "\x00\x00\x00\xFF\x02\x01\x00\x00\x00\xFF\x05\x00\x07\x00\x00\x00" + "\x00\x00\x1C\x00\x00\x00\x26\x00\x00\x00\x31\x00\x00\x00\x3F\x00" + "\x00\x00\x4A\x00\x00\x00\x01\x05\x00\xB0\xB0\xB0\xB0\xB0\x00\xFF" + "\x01\x06\x00\xB0\x00\x00\x00\xB0\x00\x00\xFF\x01\x03\x00\xB0\x00" + "\xB0\x00\x05\x02\x00\xB0\x00\x00\xFF\x01\x06\x00\xB0\x00\xB0\xB0" + "\xB0\x00\x00\xFF\x02\x01\x00\x00\x00\x04\x03\x00\x00\x00\x00\x00" + "\xFF\x05\x00\x07\x00\x00\x00\x00\x00\x1C\x00\x00\x00\x26\x00\x00" + "\x00\x30\x00\x00\x00\x37\x00\x00\x00\x41\x00\x00\x00\x01\x05\x00" + "\xB0\xB0\xB0\xB0\xB0\x00\xFF\x02\x05\x00\x00\xB0\x00\x00\x00\x00" + "\xFF\x03\x02\x00\xB0\x00\x00\xFF\x01\x05\x00\xB0\xB0\xB0\xB0\xB0" + "\x00\xFF\x02\x05\x00\x00\x00\x00\x00\x00\x00\xFF\x05\x00\x07\x00" + "\x00\x00\x00\x00\x1C\x00\x00\x00\x1D\x00\x00\x00\x28\x00\x00\x00" + "\x33\x00\x00\x00\x3E\x00\x00\x00\xFF\x01\x01\x00\xB0\x00\x05\x01" + "\x00\xB0\x00\xFF\x01\x06\x00\xB0\xB0\xB0\xB0\xB0\x00\x00\xFF\x01" + "\x06\x00\xB0\x00\x00\x00\xB0\x00\x00\xFF\x05\x02\x00\x00\x00\x00" + "\xFF\x05\x00\x07\x00\x00\x00\x00\x00\x1C\x00\x00\x00\x28\x00\x00" + "\x00\x35\x00\x00\x00\x40\x00\x00\x00\x4B\x00\x00\x00\x01\x01\x00" + "\xB0\x00\x04\x02\x00\xB0\xB0\x00\xFF\x01\x02\x00\xB0\x00\x00\x05" + "\x02\x00\xB0\x00\x00\xFF\x01\x06\x00\xB0\xB0\xB0\xB0\xB0\x00\x00" + "\xFF\x01\x06\x00\xB0\x00\x00\x00\x00\x00\x00\xFF\x02\x01\x00\x00" + "\x00\xFF\x05\x00\x07\x00\x00\x00\x00\x00\x1C\x00\x00\x00\x26\x00" + "\x00\x00\x30\x00\x00\x00\x39\x00\x00\x00\x44\x00\x00\x00\x01\x05" + "\x00\xB0\xB0\xB0\xB0\xB0\x00\xFF\x02\x05\x00\x00\xB0\x00\x00\x00" + "\x00\xFF\x01\x04\x00\xB0\xB0\xB0\x00\x00\xFF\x01\x06\x00\xB0\x00" + "\xB0\xB0\xB0\x00\x00\xFF\x02\x01\x00\x00\x00\x04\x03\x00\x00\x00" + "\x00\x00\xFF\x05\x00\x07\x00\x00\x00\x00\x00\x1C\x00\x00\x00\x26" + "\x00\x00\x00\x30\x00\x00\x00\x37\x00\x00\x00\x3E\x00\x00\x00\x01" + "\x05\x00\xB0\xB0\xB0\xB0\xB0\x00\xFF\x02\x05\x00\x00\x00\x00\xB0" + "\x00\x00\xFF\x05\x02\x00\xB0\x00\x00\xFF\x05\x02\x00\xB0\x00\x00" + "\xFF\x06\x01\x00\x00\x00\xFF\x05\x00\x07\x00\x00\x00\x00\x00\x1C" + "\x00\x00\x00\x26\x00\x00\x00\x30\x00\x00\x00\x38\x00\x00\x00\x42" + "\x00\x00\x00\x01\x05\x00\xB0\xB0\xB0\xB0\xB0\x00\xFF\x02\x05\x00" + "\xB0\xB0\x00\x00\x00\x00\xFF\x02\x03\x00\xB0\xB0\x00\x00\xFF\x01" + "\x05\x00\xB0\xB0\xB0\xB0\xB0\x00\xFF\x02\x05\x00\x00\x00\x00\x00" + "\x00\x00\xFF\x05\x00\x07\x00\x00\x00\x00\x00\x1C\x00\x00\x00\x26" + "\x00\x00\x00\x30\x00\x00\x00\x37\x00\x00\x00\x41\x00\x00\x00\x01" + "\x05\x00\xB0\xB0\xB0\xB0\xB0\x00\xFF\x02\x05\x00\xB0\xB0\x00\x00" + "\x00\x00\xFF\x03\x02\x00\xB0\xB0\x00\xFF\x01\x05\x00\xB0\xB0\xB0" + "\xB0\xB0\x00\xFF\x02\x05\x00\x00\x00\x00\x00\x00\x00\xFF\x05\x00" + "\x07\x00\x00\x00\x00\x00\x1C\x00\x00\x00\x26\x00\x00\x00\x31\x00" + "\x00\x00\x3A\x00\x00\x00\x43\x00\x00\x00\x01\x05\x00\xB0\xB0\xB0" + "\xB0\xB0\x00\xFF\x01\x06\x00\xB0\x00\xB0\x00\x00\x00\x00\xFF\x01" + "\x04\x00\xB0\x00\xB0\x00\x00\xFF\x01\x04\x00\xB0\xB0\xB0\x00\x00" + "\xFF\x02\x03\x00\x00\x00\x00\x00\xFF\x05\x00\x07\x00\x00\x00\x00" + "\x00\x1C\x00\x00\x00\x26\x00\x00\x00\x31\x00\x00\x00\x3F\x00\x00" + "\x00\x4A\x00\x00\x00\x01\x05\x00\xB0\xB0\xB0\xB0\xB0\x00\xFF\x01" + "\x06\x00\xB0\x00\x00\xB0\xB0\x00\x00\xFF\x01\x02\x00\xB0\x00\x00" + "\x04\x03\x00\x00\xB0\xB0\x00\xFF\x01\x06\x00\xB0\xB0\xB0\xB0\xB0" + "\x00\x00\xFF\x02\x05\x00\x00\x00\x00\x00\x00\x00\xFF\x05\x00\x07" + "\x00\x00\x00\x00\x00\x1C\x00\x00\x00\x26\x00\x00\x00\x31\x00\x00" + "\x00\x3A\x00\x00\x00\x43\x00\x00\x00\x01\x05\x00\xB0\xB0\xB0\xB0" + "\xB0\x00\xFF\x01\x06\x00\xB0\x00\xB0\x00\x00\x00\x00\xFF\x01\x04" + "\x00\xB0\xB0\xB0\x00\x00\xFF\x02\x04\x00\x00\xB0\xB0\xB0\x00\xFF" + "\x03\x04\x00\x00\x00\x00\x00\x00\xFF\x05\x00\x07\x00\x00\x00\x00" + "\x00\x1C\x00\x00\x00\x22\x00\x00\x00\x29\x00\x00\x00\x33\x00\x00" + "\x00\x3E\x00\x00\x00\x01\x01\x00\xB0\x00\xFF\x01\x02\x00\xB0\x00" + "\x00\xFF\x01\x05\x00\xB0\xB0\xB0\xB0\xB0\x00\xFF\x01\x06\x00\xB0" + "\x00\x00\x00\x00\x00\x00\xFF\x02\x01\x00\x00\x00\xFF\x05\x00\x07" + "\x00\x00\x00\x00\x00\x1C\x00\x00\x00\x26\x00\x00\x00\x30\x00\x00" + "\x00\x37\x00\x00\x00\x42\x00\x00\x00\x01\x05\x00\xB0\xB0\xB0\xB0" + "\xB0\x00\xFF\x02\x05\x00\x00\x00\x00\xB0\x00\x00\xFF\x05\x02\x00" + "\xB0\x00\x00\xFF\x01\x06\x00\xB0\xB0\xB0\xB0\xB0\x00\x00\xFF\x02" + "\x05\x00\x00\x00\x00\x00\x00\x00\xFF\x05\x00\x07\x00\x00\x00\x00" + "\x00\x1C\x00\x00\x00\x24\x00\x00\x00\x2D\x00\x00\x00\x35\x00\x00" + "\x00\x40\x00\x00\x00\x01\x03\x00\xB0\xB0\xB0\x00\xFF\x02\x04\x00" + "\x00\x00\xB0\xB0\x00\xFF\x04\x03\x00\xB0\xB0\x00\x00\xFF\x01\x06" + "\x00\xB0\xB0\xB0\x00\x00\x00\x00\xFF\x02\x03\x00\x00\x00\x00\x00" + "\xFF\x05\x00\x07\x00\x00\x00\x00\x00\x1C\x00\x00\x00\x26\x00\x00" + "\x00\x2F\x00\x00\x00\x38\x00\x00\x00\x43\x00\x00\x00\x01\x05\x00" + "\xB0\xB0\xB0\xB0\xB0\x00\xFF\x03\x04\x00\xB0\xB0\x00\x00\x00\xFF" + "\x03\x04\x00\xB0\xB0\x00\x00\x00\xFF\x01\x06\x00\xB0\xB0\xB0\xB0" + "\xB0\x00\x00\xFF\x02\x05\x00\x00\x00\x00\x00\x00\x00\xFF\x05\x00" + "\x07\x00\x00\x00\x00\x00\x1C\x00\x00\x00\x29\x00\x00\x00\x33\x00" + "\x00\x00\x3C\x00\x00\x00\x47\x00\x00\x00\x01\x02\x00\xB0\xB0\x00" + "\x04\x02\x00\xB0\xB0\x00\xFF\x02\x05\x00\xB0\xB0\xB0\x00\x00\x00" + "\xFF\x02\x04\x00\xB0\xB0\xB0\x00\x00\xFF\x01\x06\x00\xB0\xB0\x00" + "\xB0\xB0\x00\x00\xFF\x02\x05\x00\x00\x00\x00\x00\x00\x00\xFF\x05" + "\x00\x07\x00\x00\x00\x00\x00\x1C\x00\x00\x00\x2A\x00\x00\x00\x34" + "\x00\x00\x00\x3D\x00\x00\x00\x48\x00\x00\x00\x01\x03\x00\xB0\xB0" + "\xB0\x00\x05\x02\x00\xB0\x00\x00\xFF\x02\x05\x00\x00\xB0\x00\xB0" + "\x00\x00\xFF\x03\x04\x00\xB0\x00\xB0\x00\x00\xFF\x01\x06\x00\xB0" + "\xB0\xB0\xB0\xB0\x00\x00\xFF\x02\x05\x00\x00\x00\x00\x00\x00\x00" + "\xFF\x05\x00\x07\x00\x00\x00\x00\x00\x1C\x00\x00\x00\x28\x00\x00" + "\x00\x33\x00\x00\x00\x3E\x00\x00\x00\x49\x00\x00\x00\x01\x01\x00" + "\xB0\x00\x04\x02\x00\xB0\xB0\x00\xFF\x01\x06\x00\xB0\x00\xB0\xB0" + "\xB0\x00\x00\xFF\x01\x06\x00\xB0\xB0\xB0\x00\xB0\x00\x00\xFF\x01" + "\x06\x00\xB0\xB0\x00\x00\xB0\x00\x00\xFF\x02\x02\x00\x00\x00\x00" + "\x06\x01\x00\x00\x00\xFF\x05\x00\x07\x00\x00\x00\x00\x00\x1C\x00" + "\x00\x00\x1D\x00\x00\x00\x23\x00\x00\x00\x2A\x00\x00\x00\x31\x00" + "\x00\x00\xFF\x03\x01\x00\xB0\x00\xFF\x03\x02\x00\xB0\x00\x00\xFF" + "\x03\x02\x00\xB0\x00\x00\xFF\x04\x01\x00\x00\x00\xFF\x05\x00\x07" + "\x00\x00\x00\x00\x00\x1C\x00\x00\x00\x1D\x00\x00\x00\x24\x00\x00" + "\x00\x2B\x00\x00\x00\x32\x00\x00\x00\xFF\x04\x02\x00\xB0\x00\x00" + "\xFF\x03\x02\x00\xB0\x00\x00\xFF\x02\x02\x00\xB0\x00\x00\xFF\xFF" + "\x05\x00\x07\x00\x00\x00\x00\x00\x1C\x00\x00\x00\x1D\x00\x00\x00" + "\x1E\x00\x00\x00\x29\x00\x00\x00\x34\x00\x00\x00\xFF\xFF\x02\x01" + "\x00\xB0\x00\x04\x01\x00\xB0\x00\xFF\x03\x01\x00\x00\x00\x05\x01" + "\x00\x00\x00\xFF\xFF\x05\x00\x07\x00\x00\x00\x00\x00\x1C\x00\x00" + "\x00\x1D\x00\x00\x00\x27\x00\x00\x00\x32\x00\x00\x00\x3D\x00\x00" + "\x00\xFF\x01\x05\x00\xB0\xB0\xB0\xB0\xB0\x00\xFF\x01\x06\x00\xB0" + "\x00\x00\x00\xB0\x00\x00\xFF\x02\x01\x00\x00\x00\x06\x01\x00\x00" + "\x00\xFF\xFF\x05\x00\x07\x00\x00\x00\x00\x00\x1C\x00\x00\x00\x1D" + "\x00\x00\x00\x28\x00\x00\x00\x33\x00\x00\x00\x3D\x00\x00\x00\xFF" + "\x01\x01\x00\xB0\x00\x05\x01\x00\xB0\x00\xFF\x01\x06\x00\xB0\xB0" + "\xB0\xB0\xB0\x00\x00\xFF\x02\x05\x00\x00\x00\x00\x00\x00\x00\xFF" + "\xFF\x08\x00\x08\x00\x00\x00\x00\x00\x28\x00\x00\x00\x34\x00\x00" + "\x00\x35\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x4E\x00\x00" + "\x00\x4F\x00\x00\x00\x5B\x00\x00\x00\x00\x07\x00\x2F\xB9\xB4\xB0" + "\xB4\xB9\x2F\x00\xFF\xFF\x00\x07\x00\x2F\xB9\xB4\xB0\xB4\xB9\x2F" + "\x00\xFF\xFF\x00\x07\x00\x2F\xB9\xB4\xB0\xB4\xB9\x2F\x00\xFF\xFF" + "\x00\x07\x00\x2F\xB9\xB4\xB0\xB4\xB9\x2F\x00\xFF\xFF\x08\x00\x08" + "\x00\x00\x00\x00\x00\x28\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00" + "\x00\x41\x00\x00\x00\x42\x00\x00\x00\x4E\x00\x00\x00\x4F\x00\x00" + "\x00\x50\x00\x00\x00\x00\x07\x00\x2F\xB9\xB4\xB0\xB4\xB9\x2F\x00" + "\xFF\xFF\x00\x07\x00\x2F\xB9\xB4\xB0\xB4\xB9\x2F\x00\xFF\xFF\x00" + "\x07\x00\x2F\xB9\xB4\xB0\xB4\xB9\x2F\x00\xFF\xFF\xFF\xFF\x08\x00" + "\x08\x00\x00\x00\x00\x00\x28\x00\x00\x00\x34\x00\x00\x00\x35\x00" + "\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00" + "\x00\x00\x45\x00\x00\x00\x00\x07\x00\x2F\xB9\xB4\xB0\xB4\xB9\x2F" + "\x00\xFF\xFF\x00\x07\x00\x2F\xB9\xB4\xB0\xB4\xB9\x2F\x00\xFF\xFF" + "\xFF\xFF\xFF\xFF\x08\x00\x08\x00\x00\x00\x00\x00\x28\x00\x00\x00" + "\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00" + "\x38\x00\x00\x00\x39\x00\x00\x00\x3A\x00\x00\x00\x00\x07\x00\x2F" + "\xB9\xB4\xB0\xB4\xB9\x2F\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x08" + "\x00\x08\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2A" + "\x00\x00\x00\x2B\x00\x00\x00\x2C\x00\x00\x00\x2D\x00\x00\x00\x2E" + "\x00\x00\x00\x2F\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x08" + "\x00\x08\x00\x00\x00\x00\x00\x28\x00\x00\x00\x35\x00\x00\x00\x42" + "\x00\x00\x00\x4F\x00\x00\x00\x5C\x00\x00\x00\x69\x00\x00\x00\x76" + "\x00\x00\x00\x83\x00\x00\x00\x00\x08\x00\x9F\x0A\x0A\x0A\x0A\x09" + "\x0A\x09\x00\xFF\x00\x08\x00\x0A\x0B\x7E\x0B\x7E\x7E\x7E\x7E\x00" + "\xFF\x00\x08\x00\x0A\x7E\xEF\xEE\xEE\xEE\xEE\xEE\x00\xFF\x00\x08" + "\x00\x0A\x0B\xEF\x97\x97\x4C\x4D\x97\x00\xFF\x00\x08\x00\x0A\x7E" + "\xEF\x97\x4C\x97\x97\x97\x00\xFF\x00\x08\x00\x09\x7E\xEF\x97\x97" + "\x97\x4D\x4D\x00\xFF\x00\x08\x00\x0A\x7E\xEF\x4D\x4E\x4D\x4D\x4E" + "\x00\xFF\x00\x08\x00\x09\x7E\xEF\x97\x97\x4D\x4D\x4D\x00\xFF\x08" + "\x00\x08\x00\x00\x00\x00\x00\x28\x00\x00\x00\x35\x00\x00\x00\x42" + "\x00\x00\x00\x4F\x00\x00\x00\x5C\x00\x00\x00\x69\x00\x00\x00\x76" + "\x00\x00\x00\x83\x00\x00\x00\x00\x08\x00\x09\x0B\xEF\x97\x97\x97" + "\x4D\x4D\x00\xFF\x00\x08\x00\x0A\x7E\xEF\x4D\x4D\x4E\x4D\x4D\x00" + "\xFF\x00\x08\x00\x09\x7E\xEF\x4E\x97\x4D\x4E\x4E\x00\xFF\x00\x08" + "\x00\x0A\x0B\xEF\x4D\x4D\x4E\x4D\x4D\x00\xFF\x00\x08\x00\x0A\x7E" + "\xEF\x97\x4D\x4D\x97\x4D\x00\xFF\x00\x08\x00\x09\x7E\xEF\x4D\x4E" + "\x4D\x4D\x4D\x00\xFF\x00\x08\x00\x0A\x7E\xEF\x4E\x4D\x4D\x97\x4D" + "\x00\xFF\x00\x08\x00\x09\x7E\xEF\x4D\x4E\x4D\x4D\x4D\x00\xFF\x08" + "\x00\x08\x00\x00\x00\x00\x00\x28\x00\x00\x00\x35\x00\x00\x00\x42" + "\x00\x00\x00\x4F\x00\x00\x00\x5C\x00\x00\x00\x69\x00\x00\x00\x76" + "\x00\x00\x00\x83\x00\x00\x00\x00\x08\x00\x09\x0B\xEF\x4E\x4E\x4D" + "\x97\x97\x00\xFF\x00\x08\x00\x0A\x7E\xEF\x4D\x97\x4D\x97\x4D\x00" + "\xFF\x00\x08\x00\x09\x7E\xEF\x97\x4E\x97\x4C\x97\x00\xFF\x00\x08" + "\x00\x0A\x7E\xEF\x97\x97\x4D\x4C\x4C\x00\xFF\x00\x08\x00\x09\x7E" + "\xEF\x97\x97\x97\x97\x4C\x00\xFF\x00\x08\x00\x0A\x7E\xEF\xEE\xEE" + "\xEE\xEE\xEE\x00\xFF\x00\x08\x00\x0A\x0B\x7E\x0B\x7E\x7E\x7E\x7E" + "\x00\xFF\x00\x08\x00\x9F\x0A\x0A\x0A\x0A\x09\x0A\x09\x00\xFF\x08" + "\x00\x08\x00\x00\x00\x00\x00\x28\x00\x00\x00\x35\x00\x00\x00\x42" + "\x00\x00\x00\x4F\x00\x00\x00\x5C\x00\x00\x00\x69\x00\x00\x00\x76" + "\x00\x00\x00\x83\x00\x00\x00\x00\x08\x00\x0A\x0A\x09\x0A\x09\x09" + "\x0A\x09\x00\xFF\x00\x08\x00\x0B\x7E\x7E\x7E\x7E\x0B\x7E\x7E\x00" + "\xFF\x00\x08\x00\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\x00\xFF\x00\x08" + "\x00\x97\x97\x4C\x4D\x97\x97\x97\x97\x00\xFF\x00\x08\x00\x97\x4C" + "\x97\x97\x97\x4D\x97\x97\x00\xFF\x00\x08\x00\x97\x97\x97\x4D\x4D" + "\x97\x4E\x97\x00\xFF\x00\x08\x00\x4D\x4E\x4D\x4D\x4E\x4D\x97\x4D" + "\x00\xFF\x00\x08\x00\x97\x97\x4D\x4D\x4D\x4D\x4E\x4E\x00\xFF\x08" + "\x00\x08\x00\x00\x00\x00\x00\x28\x00\x00\x00\x35\x00\x00\x00\x42" + "\x00\x00\x00\x4F\x00\x00\x00\x5C\x00\x00\x00\x69\x00\x00\x00\x76" + "\x00\x00\x00\x83\x00\x00\x00\x00\x08\x00\x97\x97\x97\x4D\x4D\x4D" + "\x4E\x4D\x00\xFF\x00\x08\x00\x4D\x4D\x4E\x4D\x4D\x4D\x4D\x4E\x00" + "\xFF\x00\x08\x00\x4E\x97\x4D\x4E\x4E\x4D\x4E\x4D\x00\xFF\x00\x08" + "\x00\x4D\x4D\x4E\x4D\x4D\x4D\x4D\x97\x00\xFF\x00\x08\x00\x97\x4D" + "\x4D\x97\x4D\x4E\x4D\x4D\x00\xFF\x00\x08\x00\x4D\x4E\x4D\x4D\x4D" + "\x4D\x97\x4E\x00\xFF\x00\x08\x00\x4E\x4D\x4D\x97\x4D\x4E\x4D\x4D" + "\x00\xFF\x00\x08\x00\x4D\x4E\x4D\x4D\x4D\x97\x97\x97\x00\xFF\x08" + "\x00\x08\x00\x00\x00\x00\x00\x28\x00\x00\x00\x35\x00\x00\x00\x42" + "\x00\x00\x00\x4F\x00\x00\x00\x5C\x00\x00\x00\x69\x00\x00\x00\x76" + "\x00\x00\x00\x83\x00\x00\x00\x00\x08\x00\x4E\x4E\x4D\x97\x97\x4D" + "\x97\x97\x00\xFF\x00\x08\x00\x4D\x97\x4D\x97\x4D\x4D\x4E\x4D\x00" + "\xFF\x00\x08\x00\x97\x4E\x97\x4C\x97\x97\x97\x97\x00\xFF\x00\x08" + "\x00\x97\x97\x4D\x4C\x4C\x97\x4C\x97\x00\xFF\x00\x08\x00\x97\x97" + "\x97\x97\x4C\x4C\x97\x97\x00\xFF\x00\x08\x00\xEE\xEE\xEE\xEE\xEE" + "\xEE\xEE\xEE\x00\xFF\x00\x08\x00\x0B\x7E\x7E\x7E\x7E\x0B\x7E\x7E" + "\x00\xFF\x00\x08\x00\x0A\x0A\x09\x0A\x09\x09\x0A\x09\x00\xFF\x08" + "\x00\x08\x00\x00\x00\x00\x00\x28\x00\x00\x00\x35\x00\x00\x00\x42" + "\x00\x00\x00\x4F\x00\x00\x00\x5C\x00\x00\x00\x69\x00\x00\x00\x76" + "\x00\x00\x00\x83\x00\x00\x00\x00\x08\x00\x0A\x09\x09\x0A\x09\x0A" + "\x09\x0A\x00\xFF\x00\x08\x00\x7E\x7E\x0B\x7E\x7E\x7E\x0A\x0B\x00" + "\xFF\x00\x08\x00\xEE\xEE\xEE\xEE\xEE\x0A\x0A\x7E\x00\xFF\x00\x08" + "\x00\x4D\x97\x97\x97\x97\x9F\x0A\x0B\x00\xFF\x00\x08\x00\x97\x97" + "\x4D\x97\x97\x09\x0A\x7E\x00\xFF\x00\x08\x00\x4D\x4D\x97\x4E\x97" + "\x09\x09\x7E\x00\xFF\x00\x08\x00\x4D\x4E\x4D\x97\x4D\x9F\x0A\x7E" + "\x00\xFF\x00\x08\x00\x4D\x4D\x4D\x4E\x4E\x9F\x09\x7E\x00\xFF\x08" + "\x00\x08\x00\x00\x00\x00\x00\x28\x00\x00\x00\x35\x00\x00\x00\x42" + "\x00\x00\x00\x4F\x00\x00\x00\x5C\x00\x00\x00\x69\x00\x00\x00\x76" + "\x00\x00\x00\x83\x00\x00\x00\x00\x08\x00\x4D\x4D\x4D\x4E\x4D\x09" + "\x09\x0B\x00\xFF\x00\x08\x00\x4D\x4D\x4D\x4D\x4E\x9F\x0A\x7E\x00" + "\xFF\x00\x08\x00\x4E\x4E\x4D\x4E\x4D\x09\x09\x7E\x00\xFF\x00\x08" + "\x00\x4D\x4D\x4D\x4D\x97\x9F\x0A\x0B\x00\xFF\x00\x08\x00\x97\x4D" + "\x4E\x4D\x4D\x09\x0A\x7E\x00\xFF\x00\x08\x00\x4D\x4D\x4D\x97\x4E" + "\x09\x09\x7E\x00\xFF\x00\x08\x00\x97\x4D\x4E\x4D\x4D\x9F\x0A\x7E" + "\x00\xFF\x00\x08\x00\x4D\x4D\x97\x97\x97\x9F\x09\x7E\x00\xFF\x08" + "\x00\x08\x00\x00\x00\x00\x00\x28\x00\x00\x00\x35\x00\x00\x00\x42" + "\x00\x00\x00\x4F\x00\x00\x00\x5C\x00\x00\x00\x69\x00\x00\x00\x76" + "\x00\x00\x00\x83\x00\x00\x00\x00\x08\x00\x97\x97\x4D\x97\x97\x09" + "\x09\x0B\x00\xFF\x00\x08\x00\x97\x4D\x4D\x4E\x4D\x9F\x0A\x7E\x00" + "\xFF\x00\x08\x00\x4C\x97\x97\x97\x97\x09\x09\x7E\x00\xFF\x00\x08" + "\x00\x4C\x4C\x97\x4C\x97\x9F\x0A\x7E\x00\xFF\x00\x08\x00\x97\x4C" + "\x4C\x97\x97\x09\x09\x7E\x00\xFF\x00\x08\x00\xEE\xEE\xEE\xEE\xEE" + "\x09\x0A\x7E\x00\xFF\x00\x08\x00\x7E\x7E\x0B\x7E\x7E\x7E\x0A\x0B" + "\x00\xFF\x00\x08\x00\x0A\x09\x09\x0A\x09\x0A\x09\x0A\x00\xFF\x07" + "\x00\x07\x00\x00\x00\x00\x00\x24\x00\x00\x00\x2B\x00\x00\x00\x33" + "\x00\x00\x00\x3E\x00\x00\x00\x4A\x00\x00\x00\x56\x00\x00\x00\x60" + "\x00\x00\x00\x01\x02\x00\xC6\xC8\x00\xFF\x00\x03\x00\xC6\xCA\xCB" + "\x00\xFF\x00\x06\x00\xC6\x00\xCA\xCC\xC7\xC5\x00\xFF\x00\x07\x00" + "\xC6\xCA\xCA\xC6\xCF\xC7\xCB\x00\xFF\x00\x07\x00\xC8\x00\xC9\xC7" + "\xC8\xCF\xCA\x00\xFF\x02\x05\x00\xCA\xC7\xCF\xC7\xCA\x00\xFF\x03" + "\x03\x00\xCC\xC7\xC5\x00\xFF\x07\x00\x07\x00\x00\x00\x00\x00\x24" + "\x00\x00\x00\x2B\x00\x00\x00\x33\x00\x00\x00\x3E\x00\x00\x00\x4A" + "\x00\x00\x00\x56\x00\x00\x00\x60\x00\x00\x00\x01\x02\x00\xA1\xA1" + "\x00\xFF\x00\x03\x00\xA1\xA3\xA3\x00\xFF\x00\x06\x00\xA1\x00\xA3" + "\xDC\xA2\xEB\x00\xFF\x00\x07\x00\xA1\xA3\xD9\xA2\xF6\xD6\xDD\x00" + "\xFF\x00\x07\x00\xA1\x00\xD6\xD5\xD6\xF6\xDA\x00\xFF\x02\x05\x00" + "\xD9\xA2\xF6\xD6\xDD\x00\xFF\x03\x03\x00\xDC\xA2\xEB\x00\xFF\x07" + "\x00\x07\x00\x00\x00\x00\x00\x24\x00\x00\x00\x2B\x00\x00\x00\x33" + "\x00\x00\x00\x3E\x00\x00\x00\x4A\x00\x00\x00\x56\x00\x00\x00\x60" + "\x00\x00\x00\x01\x02\x00\xAE\xB0\x00\xFF\x00\x03\x00\xAE\xB3\xB3" + "\x00\xFF\x00\x06\x00\xB0\x00\xB3\xB8\xAE\xAE\x00\xFF\x00\x07\x00" + "\xB0\xB3\xB9\xAF\xF6\xB9\xB6\x00\xFF\x00\x07\x00\xB0\x00\xB7\xB1" + "\xB0\xF6\xB3\x00\xFF\x02\x05\x00\xB9\xB1\xF6\xB9\xB6\x00\xFF\x03" + "\x03\x00\xB9\xAF\xAE\x00\xFF\x04\x00\x04\x00\x00\x00\x00\x00\x18" + "\x00\x00\x00\x20\x00\x00\x00\x29\x00\x00\x00\x32\x00\x00\x00\x00" + "\x03\x00\x2F\x2F\x2F\x00\xFF\x00\x04\x00\x2F\xB3\xB3\x2F\x00\xFF" + "\x00\x04\x00\x2F\xB5\x2F\x2F\x00\xFF\x00\x03\x00\x2F\x2F\x2F\x00" + "\xFF\x0F\x00\x0F\x00\x00\x00\x00\x00\x44\x00\x00\x00\x58\x00\x00" + "\x00\x6C\x00\x00\x00\x80\x00\x00\x00\x94\x00\x00\x00\xA8\x00\x00" + "\x00\xBC\x00\x00\x00\xD0\x00\x00\x00\xE4\x00\x00\x00\xF8\x00\x00" + "\x00\x0C\x01\x00\x00\x20\x01\x00\x00\x34\x01\x00\x00\x48\x01\x00" + "\x00\x5C\x01\x00\x00\x00\x0F\x00\x3B\x3B\x39\x3B\x38\x3B\x3B\x39" + "\x38\x39\x38\x3B\x3B\x3B\x3F\x00\xFF\x00\x0F\x00\x3B\x43\x43\x43" + "\x41\x44\x41\x43\x43\x43\x43\x41\x43\x43\x49\x00\xFF\x00\x0F\x00" + "\x39\x43\x43\x43\x43\x41\x43\x43\x41\x43\x43\x41\x43\x43\x4B\x00" + "\xFF\x00\x0F\x00\x39\x41\x43\x77\x78\x76\x77\x75\x77\x76\x78\x7B" + "\x46\x41\x49\x00\xFF\x00\x0F\x00\x39\x41\x43\x77\x75\x77\x77\x78" + "\x77\x77\x7B\x7C\x49\x43\x4B\x00\xFF\x00\x0F\x00\x39\x43\x41\x76" + "\x77\x2F\x2F\x2F\x2F\x2F\x7D\x7E\x49\x43\x4A\x00\xFF\x00\x0F\x00" + "\x39\x43\x43\x77\x77\x2F\xBC\xBC\xBC\x2F\x7C\x7D\x49\x41\x4A\x00" + "\xFF\x00\x0F\x00\x3B\x43\x41\x77\x77\x2F\xBC\xBC\xBC\x2F\x7D\x7C" + "\x49\x44\x4A\x00\xFF\x00\x0F\x00\x3C\x43\x43\x75\x78\x2F\xBC\xBC" + "\xBC\x2F\x7D\x7D\x49\x41\x49\x00\xFF\x00\x0F\x00\x39\x43\x43\x77" + "\x77\x2F\x2F\x2F\x2F\x2F\x7E\x7D\x49\x41\x49\x00\xFF\x00\x0F\x00" + "\x3B\x41\x43\x77\x7B\x7D\x7D\x7C\x7D\x7D\x7D\x7D\x49\x41\x4B\x00" + "\xFF\x00\x0F\x00\x3B\x44\x43\x7B\x7C\x7E\x7D\x7D\x7D\x7C\x7D\x7D" + "\x49\x44\x49\x00\xFF\x00\x0F\x00\x3B\x43\x41\x46\x49\x49\x49\x49" + "\x49\x49\x49\x49\x49\x43\x4A\x00\xFF\x00\x0F\x00\x3B\x43\x43\x41" + "\x43\x43\x41\x44\x43\x43\x43\x43\x43\x43\x49\x00\xFF\x00\x0F\x00" + "\x40\x49\x49\x4B\x49\x49\x4B\x4A\x4A\x4A\x4A\x4A\x49\x49\x49\x00" + "\xFF\x0F\x00\x0F\x00\x00\x00\x00\x00\x44\x00\x00\x00\x58\x00\x00" + "\x00\x6C\x00\x00\x00\x80\x00\x00\x00\x94\x00\x00\x00\xA8\x00\x00" + "\x00\xBC\x00\x00\x00\xD0\x00\x00\x00\xE4\x00\x00\x00\xF8\x00\x00" + "\x00\x0C\x01\x00\x00\x20\x01\x00\x00\x34\x01\x00\x00\x48\x01\x00" + "\x00\x5C\x01\x00\x00\x00\x0F\x00\x3B\x3B\x39\x3B\x38\x3B\x3B\x39" + "\x38\x39\x38\x3B\x3B\x3B\x3F\x00\xFF\x00\x0F\x00\x3B\x43\x43\x43" + "\x41\x44\x41\x43\x43\x43\x43\x41\x43\x43\x49\x00\xFF\x00\x0F\x00" + "\x39\x43\x43\x43\x43\x41\x43\x43\x41\x43\x43\x41\x43\x43\x4B\x00" + "\xFF\x00\x0F\x00\x39\x41\x43\x77\x78\x76\x77\x75\x77\x76\x78\x7B" + "\x46\x41\x49\x00\xFF\x00\x0F\x00\x39\x41\x43\x77\x75\x77\x77\x78" + "\x77\x77\x7B\x7C\x49\x43\x4B\x00\xFF\x00\x0F\x00\x39\x43\x41\x76" + "\x77\x2F\x2F\x2F\x2F\x2F\x7D\x7E\x49\x43\x4A\x00\xFF\x00\x0F\x00" + "\x39\x43\x43\x77\x77\x2F\xB0\xB0\xB0\x2F\x7C\x7D\x49\x41\x4A\x00" + "\xFF\x00\x0F\x00\x3B\x43\x41\x77\x77\x2F\xB0\xB0\xB0\x2F\x7D\x7C" + "\x49\x44\x4A\x00\xFF\x00\x0F\x00\x3C\x43\x43\x75\x78\x2F\xB0\xB0" + "\xB0\x2F\x7D\x7D\x49\x41\x49\x00\xFF\x00\x0F\x00\x39\x43\x43\x77" + "\x77\x2F\x2F\x2F\x2F\x2F\x7E\x7D\x49\x41\x49\x00\xFF\x00\x0F\x00" + "\x3B\x41\x43\x77\x7B\x7D\x7D\x7C\x7D\x7D\x7D\x7D\x49\x41\x4B\x00" + "\xFF\x00\x0F\x00\x3B\x44\x43\x7B\x7C\x7E\x7D\x7D\x7D\x7C\x7D\x7D" + "\x49\x44\x49\x00\xFF\x00\x0F\x00\x3B\x43\x41\x46\x49\x49\x49\x49" + "\x49\x49\x49\x49\x49\x43\x4A\x00\xFF\x00\x0F\x00\x3B\x43\x43\x41" + "\x43\x43\x41\x44\x43\x43\x43\x43\x43\x43\x49\x00\xFF\x00\x0F\x00" + "\x40\x49\x49\x4B\x49\x49\x4B\x4A\x4A\x4A\x4A\x4A\x49\x49\x49\x00" + "\xFF\x07\x00\x07\x00\x00\x00\x00\x00\x24\x00\x00\x00\x30\x00\x00" + "\x00\x3C\x00\x00\x00\x48\x00\x00\x00\x54\x00\x00\x00\x60\x00\x00" + "\x00\x6C\x00\x00\x00\x00\x07\x00\x04\x00\x00\x00\x00\x00\x04\x00" + "\xFF\x00\x07\x00\x00\x04\x00\x00\x00\x04\x00\x00\xFF\x00\x07\x00" + "\x00\x00\x04\x00\x04\x00\x00\x00\xFF\x00\x07\x00\x00\x00\x00\x04" + "\x00\x00\x00\x00\xFF\x00\x07\x00\x00\x00\x04\x00\x04\x00\x00\x00" + "\xFF\x00\x07\x00\x00\x04\x00\x00\x00\x04\x00\x00\xFF\x00\x07\x00" + "\x04\x00\x00\x00\x00\x00\x04\x00\xFF\x09\x00\x09\x00\x00\x00\x00" + "\x00\x2C\x00\x00\x00\x3A\x00\x00\x00\x45\x00\x00\x00\x50\x00\x00" + "\x00\x5B\x00\x00\x00\x66\x00\x00\x00\x71\x00\x00\x00\x7C\x00\x00" + "\x00\x87\x00\x00\x00\x00\x09\x00\x04\x04\x04\x04\x04\x04\x04\x04" + "\x04\x00\xFF\x00\x01\x00\x04\x00\x08\x01\x00\x04\x00\xFF\x00\x01" + "\x00\x04\x00\x08\x01\x00\x04\x00\xFF\x00\x01\x00\x04\x00\x08\x01" + "\x00\x04\x00\xFF\x00\x01\x00\x04\x00\x08\x01\x00\x04\x00\xFF\x00" + "\x01\x00\x04\x00\x08\x01\x00\x04\x00\xFF\x00\x01\x00\x04\x00\x08" + "\x01\x00\x04\x00\xFF\x00\x01\x00\x04\x00\x08\x01\x00\x04\x00\xFF" + "\x00\x09\x00\x04\x04\x04\x04\x04\x04\x04\x04\x04\x00\xFF\xBB\x00" + "\x17\x00\x00\x00\x00\x00\xF4\x02\x00\x00\x10\x03\x00\x00\x2C\x03" + "\x00\x00\x48\x03\x00\x00\x64\x03\x00\x00\x80\x03\x00\x00\x9C\x03" + "\x00\x00\xB8\x03\x00\x00\xD4\x03\x00\x00\xF0\x03\x00\x00\x0C\x04" + "\x00\x00\x28\x04\x00\x00\x44\x04\x00\x00\x60\x04\x00\x00\x7C\x04" + "\x00\x00\x98\x04\x00\x00\xB4\x04\x00\x00\xD0\x04\x00\x00\xEC\x04" + "\x00\x00\x08\x05\x00\x00\x24\x05\x00\x00\x40\x05\x00\x00\x5C\x05" + "\x00\x00\x78\x05\x00\x00\x94\x05\x00\x00\xB0\x05\x00\x00\xCC\x05" + "\x00\x00\xE8\x05\x00\x00\x04\x06\x00\x00\x20\x06\x00\x00\x3C\x06" + "\x00\x00\x58\x06\x00\x00\x74\x06\x00\x00\x90\x06\x00\x00\xAC\x06" + "\x00\x00\xC8\x06\x00\x00\xE4\x06\x00\x00\x00\x07\x00\x00\x1C\x07" + "\x00\x00\x38\x07\x00\x00\x54\x07\x00\x00\x70\x07\x00\x00\x8C\x07" + "\x00\x00\xA8\x07\x00\x00\xC4\x07\x00\x00\xE0\x07\x00\x00\xFC\x07" + "\x00\x00\x18\x08\x00\x00\x34\x08\x00\x00\x50\x08\x00\x00\x6C\x08" + "\x00\x00\x88\x08\x00\x00\xA4\x08\x00\x00\xC0\x08\x00\x00\xDC\x08" + "\x00\x00\xF8\x08\x00\x00\x14\x09\x00\x00\x30\x09\x00\x00\x4C\x09" + "\x00\x00\x68\x09\x00\x00\x84\x09\x00\x00\xA0\x09\x00\x00\xBC\x09" + "\x00\x00\xD8\x09\x00\x00\xF4\x09\x00\x00\x10\x0A\x00\x00\x2C\x0A" + "\x00\x00\x48\x0A\x00\x00\x64\x0A\x00\x00\x80\x0A\x00\x00\x9C\x0A" + "\x00\x00\xB8\x0A\x00\x00\xD4\x0A\x00\x00\xF0\x0A\x00\x00\x0C\x0B" + "\x00\x00\x28\x0B\x00\x00\x44\x0B\x00\x00\x60\x0B\x00\x00\x7C\x0B" + "\x00\x00\x98\x0B\x00\x00\xB4\x0B\x00\x00\xD0\x0B\x00\x00\xEC\x0B" + "\x00\x00\x08\x0C\x00\x00\x24\x0C\x00\x00\x40\x0C\x00\x00\x5C\x0C" + "\x00\x00\x78\x0C\x00\x00\x94\x0C\x00\x00\xB0\x0C\x00\x00\xCC\x0C" + "\x00\x00\xE8\x0C\x00\x00\x04\x0D\x00\x00\x20\x0D\x00\x00\x3C\x0D" + "\x00\x00\x58\x0D\x00\x00\x74\x0D\x00\x00\x90\x0D\x00\x00\xAC\x0D" + "\x00\x00\xC8\x0D\x00\x00\xE4\x0D\x00\x00\x00\x0E\x00\x00\x1C\x0E" + "\x00\x00\x38\x0E\x00\x00\x54\x0E\x00\x00\x70\x0E\x00\x00\x8C\x0E" + "\x00\x00\xA8\x0E\x00\x00\xC4\x0E\x00\x00\xE0\x0E\x00\x00\xFC\x0E" + "\x00\x00\x18\x0F\x00\x00\x34\x0F\x00\x00\x50\x0F\x00\x00\x6C\x0F" + "\x00\x00\x88\x0F\x00\x00\xA4\x0F\x00\x00\xC0\x0F\x00\x00\xDC\x0F" + "\x00\x00\xF8\x0F\x00\x00\x14\x10\x00\x00\x30\x10\x00\x00\x4C\x10" + "\x00\x00\x68\x10\x00\x00\x84\x10\x00\x00\xA0\x10\x00\x00\xBC\x10" + "\x00\x00\xD8\x10\x00\x00\xF4\x10\x00\x00\x10\x11\x00\x00\x2C\x11" + "\x00\x00\x48\x11\x00\x00\x64\x11\x00\x00\x80\x11\x00\x00\x9C\x11" + "\x00\x00\xB8\x11\x00\x00\xD4\x11\x00\x00\xF0\x11\x00\x00\x0C\x12" + "\x00\x00\x28\x12\x00\x00\x44\x12\x00\x00\x60\x12\x00\x00\x7C\x12" + "\x00\x00\x98\x12\x00\x00\xB4\x12\x00\x00\xD0\x12\x00\x00\xEC\x12" + "\x00\x00\x08\x13\x00\x00\x24\x13\x00\x00\x40\x13\x00\x00\x5C\x13" + "\x00\x00\x78\x13\x00\x00\x94\x13\x00\x00\xB0\x13\x00\x00\xCC\x13" + "\x00\x00\xE8\x13\x00\x00\x04\x14\x00\x00\x20\x14\x00\x00\x3C\x14" + "\x00\x00\x58\x14\x00\x00\x74\x14\x00\x00\x90\x14\x00\x00\xAC\x14" + "\x00\x00\xC8\x14\x00\x00\xE4\x14\x00\x00\x00\x15\x00\x00\x1C\x15" + "\x00\x00\x38\x15\x00\x00\x54\x15\x00\x00\x70\x15\x00\x00\x8C\x15" + "\x00\x00\xA8\x15\x00\x00\xC4\x15\x00\x00\xE0\x15\x00\x00\xFC\x15" + "\x00\x00\x18\x16\x00\x00\x34\x16\x00\x00\x50\x16\x00\x00\x6C\x16" + "\x00\x00\x88\x16\x00\x00\xA4\x16\x00\x00\xC0\x16\x00\x00\xDC\x16" + "\x00\x00\xF8\x16\x00\x00\x14\x17\x00\x00\x30\x17\x00\x00\x4C\x17" + "\x00\x00\x00\x17\x00\x5B\x5B\x5B\x5B\x5B\x5B\x5B\x5B\x5B\x5B\x5B" + "\x5B\x5B\x5B\x5B\x5B\x5B\x5B\x5B\x5B\x5B\x5B\x69\x00\xFF\x00\x17" + "\x00\x5B\x62\x62\x62\x62\x62\x62\x62\x62\x62\x62\x62\x62\x62\x62" + "\x62\x62\x62\x62\x62\x62\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69" + "\x69\x69\x69\x69\x69\x69\x69\x69\x69\x69\x69\x69\x69\x69\x69\x69" + "\x69\x69\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69" + "\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17" + "\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69" + "\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17" + "\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69" + "\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17" + "\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69" + "\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17" + "\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69" + "\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17" + "\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69" + "\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17" + "\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69" + "\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17" + "\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69" + "\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17" + "\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69" + "\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17" + "\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69" + "\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17" + "\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69" + "\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17" + "\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69" + "\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17" + "\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69" + "\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17" + "\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69" + "\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17" + "\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69" + "\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17" + "\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69" + "\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17" + "\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69" + "\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17" + "\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69" + "\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17" + "\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69" + "\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17" + "\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69" + "\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17" + "\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69" + "\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17" + "\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69" + "\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17" + "\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69" + "\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17" + "\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69" + "\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17" + "\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69" + "\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17" + "\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69" + "\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17" + "\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69" + "\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17" + "\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69" + "\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17" + "\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69" + "\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17" + "\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69" + "\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17" + "\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69" + "\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17" + "\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69" + "\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17" + "\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69" + "\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17" + "\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69" + "\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17" + "\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69" + "\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17" + "\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69" + "\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17" + "\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69" + "\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17" + "\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69" + "\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17" + "\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69" + "\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17" + "\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69" + "\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17" + "\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69" + "\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17" + "\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69" + "\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17" + "\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69" + "\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17" + "\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69" + "\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17" + "\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69" + "\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17" + "\x00\x5B\x62\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x5B\x62\x69\x00\xFF\x00\x17\x00\x5B\x62\x69\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5B\x62\x69" + "\x00\xFF\x00\x17\x00\x5B\x62\x69\x5B\x5B\x5B\x5B\x5B\x5B\x5B\x5B" + "\x5B\x5B\x5B\x5B\x5B\x5B\x5B\x5B\x5B\x5B\x62\x69\x00\xFF\x00\x17" + "\x00\x5B\x62\x62\x62\x62\x62\x62\x62\x62\x62\x62\x62\x62\x62\x62" + "\x62\x62\x62\x62\x62\x62\x62\x69\x00\xFF\x00\x17\x00\x69\x69\x69" + "\x69\x69\x69\x69\x69\x69\x69\x69\x69\x69\x69\x69\x69\x69\x69\x69" + "\x69\x69\x69\x69\x00\xFF\x43\x00\x0F\x00\x00\x00\x00\x00\x14\x01" + "\x00\x00\x1D\x01\x00\x00\x31\x01\x00\x00\x47\x01\x00\x00\x5A\x01" + "\x00\x00\x6E\x01\x00\x00\x82\x01\x00\x00\x96\x01\x00\x00\xAA\x01" + "\x00\x00\xBE\x01\x00\x00\xD2\x01\x00\x00\xE6\x01\x00\x00\xFA\x01" + "\x00\x00\x0D\x02\x00\x00\x23\x02\x00\x00\x37\x02\x00\x00\x41\x02" + "\x00\x00\x4E\x02\x00\x00\x5D\x02\x00\x00\x6C\x02\x00\x00\x7D\x02" + "\x00\x00\x8E\x02\x00\x00\x9F\x02\x00\x00\xB0\x02\x00\x00\xC1\x02" + "\x00\x00\xD2\x02\x00\x00\xE3\x02\x00\x00\xF4\x02\x00\x00\x05\x03" + "\x00\x00\x16\x03\x00\x00\x1F\x03\x00\x00\x28\x03\x00\x00\x39\x03" + "\x00\x00\x4A\x03\x00\x00\x5B\x03\x00\x00\x6C\x03\x00\x00\x7D\x03" + "\x00\x00\x8E\x03\x00\x00\x97\x03\x00\x00\xA4\x03\x00\x00\xB3\x03" + "\x00\x00\xC3\x03\x00\x00\xD3\x03\x00\x00\xE4\x03\x00\x00\xF5\x03" + "\x00\x00\xFE\x03\x00\x00\x07\x04\x00\x00\x10\x04\x00\x00\x19\x04" + "\x00\x00\x2A\x04\x00\x00\x3B\x04\x00\x00\x4B\x04\x00\x00\x5B\x04" + "\x00\x00\x6A\x04\x00\x00\x7B\x04\x00\x00\x8C\x04\x00\x00\x9D\x04" + "\x00\x00\xAE\x04\x00\x00\xBF\x04\x00\x00\xD0\x04\x00\x00\xDD\x04" + "\x00\x00\xEA\x04\x00\x00\xF7\x04\x00\x00\x04\x05\x00\x00\x11\x05" + "\x00\x00\x1E\x05\x00\x00\x29\x05\x00\x00\x03\x04\x00\x2F\x2F\x2F" + "\x2F\x00\xFF\x02\x06\x00\x2F\xBA\xB8\xB8\xBA\x2F\x00\x0A\x05\x00" + "\x2F\x2F\x2F\x2F\x2F\x00\xFF\x01\x08\x00\x2F\xBA\xB5\xB5\xB4\xB6" + "\xBA\x2F\x00\x0A\x05\x00\x2F\xB6\xB8\xB9\x2F\x00\xFF\x01\x0E\x00" + "\xBC\xB9\xB8\xB7\xB6\xB5\xB5\xBB\x2F\x2F\xB1\xB2\xB7\x2F\x00\xFF" + "\x00\x0F\x00\x2F\xB7\xBA\xB8\xBA\xBA\xB5\xB5\xB9\x2F\x2F\xB1\xB3" + "\xB7\x2F\x00\xFF\x00\x0F\x00\x2F\xB6\xB8\xBB\x2F\x2F\xB4\xB6\xB9" + "\x2F\x2F\xB1\xB5\xB8\x2F\x00\xFF\x00\x0F\x00\x2F\xB4\xB8\xBA\x2F" + "\x2F\xB3\xB7\xBA\x2F\x2F\xB1\xB5\xB9\x2F\x00\xFF\x00\x0F\x00\x2F" + "\xB4\xB6\xBA\x2F\x2F\xB2\xBA\xBC\x2F\x2F\xB1\xB5\xB9\x2F\x00\xFF" + "\x00\x0F\x00\x2F\xB2\xB7\xBA\x2F\x2F\xB1\xBA\xBB\x2F\x2F\xB3\xB8" + "\xBA\x2F\x00\xFF\x00\x0F\x00\x2F\xB3\xBA\xBB\x2F\x2F\xB2\xB9\xBB" + "\x2F\x2F\xB4\xB8\xB9\x2F\x00\xFF\x00\x0F\x00\x2F\xB3\xB9\xBB\x2F" + "\x2F\xB2\xB7\xB9\x2F\x2F\xB9\xB8\xBA\x2F\x00\xFF\x00\x0F\x00\x2F" + "\xB3\xB7\xBB\x2F\x2F\xB4\xB6\xB6\xBA\xBA\xB7\xB7\xBB\x2F\x00\xFF" + "\x00\x0E\x00\x2F\xB7\xB9\xB9\x2F\x2F\xBA\xB8\xB7\xB8\xB7\xB6\xB5" + "\xBA\x00\xFF\x00\x05\x00\x2F\xB9\xBA\xBB\x2F\x00\x06\x08\x00\x2F" + "\xBA\xB8\xB8\xB7\xB8\xBA\x2F\x00\xFF\x00\x05\x00\x2F\x2F\x2F\x2F" + "\x2F\x00\x07\x06\x00\x2F\xBA\xB6\xB6\xBA\x2F\x00\xFF\x07\x05\x00" + "\x2F\x2F\x2F\x2F\x2F\x00\xFF\x05\x08\x00\x2F\x2F\xBA\xB9\xB9\xBA" + "\x2F\x2F\x00\xFF\x04\x0A\x00\x2F\xBC\xB9\xB6\xB6\xB6\xB5\xB7\xBC" + "\x2F\x00\xFF\x04\x0A\x00\x2F\xB7\xB5\xB5\xB5\xB6\xB5\xB2\xB9\x2F" + "\x00\xFF\x03\x0C\x00\x2F\xB9\xB6\xB5\xB5\xB5\xB5\xB4\xB3\xB3\xBA" + "\x2F\x00\xFF\x03\x0C\x00\x2F\xB4\xB6\xB9\xB9\xB5\xB6\xB9\xB9\xB5" + "\xB8\x2F\x00\xFF\x03\x0C\x00\x2F\xB6\xBA\x2F\x2F\xB5\xBA\x2F\x2F" + "\xB3\xB9\x2F\x00\xFF\x03\x0C\x00\x2F\xB3\xBB\x2F\x2F\xB4\xBC\x2F" + "\x2F\xB2\xB9\x2F\x00\xFF\x03\x0C\x00\x2F\xB3\xBA\x2F\x2F\xB4\xBB" + "\x2F\x2F\xB2\xBA\x2F\x00\xFF\x03\x0C\x00\x2F\xB4\xBC\x2F\x2F\xB4" + "\xBC\x2F\x2F\xB2\xB9\x2F\x00\xFF\x03\x0C\x00\x2F\xB4\xBC\x2F\x2F" + "\xB2\xBA\x2F\x2F\xB3\xBA\x2F\x00\xFF\x03\x0C\x00\x2F\xB3\xB9\x2F" + "\x2F\xB2\xB9\x2F\x2F\xB4\xBA\x2F\x00\xFF\x03\x0C\x00\x2F\xB8\xBB" + "\x2F\x2F\xB9\xBB\x2F\x2F\xB7\xBA\x2F\x00\xFF\x03\x0C\x00\x2F\x2F" + "\x2F\x2F\x2F\x2F\x2F\x2F\x2F\x2F\x2F\x2F\x00\xFF\x03\x04\x00\x2F" + "\xB8\xBB\x2F\x00\xFF\x03\x04\x00\x2F\xB2\xBB\x2F\x00\xFF\x03\x0C" + "\x00\x2F\xB1\xB6\x2F\x2F\x2F\x2F\x2F\x2F\x2F\x2F\x2F\x00\xFF\x03" + "\x0C\x00\x2F\xB1\xB6\xB5\xB5\xB5\xB5\xB5\xB5\xB6\xB9\x2F\x00\xFF" + "\x03\x0C\x00\x2F\xB1\xB1\xB2\xB3\xB1\xB1\xB2\xB3\xB3\xB8\x2F\x00" + "\xFF\x03\x0C\x00\x2F\xB1\xB3\xB3\xB6\xB5\xB5\xB4\xB3\xB3\xB8\x2F" + "\x00\xFF\x03\x0C\x00\x2F\xB2\xB6\xB7\xB6\xB8\xB8\xB8\xB7\xB6\xB9" + "\x2F\x00\xFF\x03\x0C\x00\x2F\xB2\xB9\x2F\x2F\x2F\x2F\x2F\x2F\x2F" + "\x2F\x2F\x00\xFF\x03\x04\x00\x2F\xB2\xBB\x2F\x00\xFF\x03\x08\x00" + "\x2F\x2F\x2F\x2F\x2F\x2F\x2F\x2F\x00\xFF\x03\x0A\x00\x2F\xB7\xBA" + "\xBB\xBB\xBC\xBC\xBB\x2F\x2F\x00\xFF\x03\x0B\x00\x2F\xB2\xBB\xBB" + "\xBB\xBB\xBB\xBB\xBB\xBD\x2F\x00\xFF\x03\x0B\x00\x2F\xB2\xBB\xBB" + "\xBB\xBA\xBA\xBA\xBA\xB8\x2F\x00\xFF\x03\x0C\x00\x2F\xB9\xBB\xBA" + "\xBA\xBA\xB9\xB8\xB6\xB8\xBC\x2F\x00\xFF\x03\x0C\x00\x2F\x2F\x2F" + "\x2F\x2F\x2F\x2F\x2F\xB4\xB2\xBA\x2F\x00\xFF\x0B\x04\x00\x2F\xB1" + "\xBA\x2F\x00\xFF\x0B\x04\x00\x2F\xB2\xBB\x2F\x00\xFF\x0B\x04\x00" + "\x2F\xB4\xBD\x2F\x00\xFF\x0B\x04\x00\x2F\xB4\xBC\x2F\x00\xFF\x03" + "\x0C\x00\x2F\x2F\x2F\x2F\x2F\x2F\x2F\x2F\xBA\xB8\xB9\x2F\x00\xFF" + "\x03\x0C\x00\x2F\xB8\xBA\xB9\xB9\xBB\xBB\xBB\xB9\xB7\xBC\x2F\x00" + "\xFF\x03\x0B\x00\x2F\xB4\xB9\xB7\xB8\xBA\xBB\xBA\xB8\xB6\x2F\x00" + "\xFF\x03\x0B\x00\x2F\xB2\xB5\xB7\xB8\xBA\xBA\xB9\xB8\xBC\x2F\x00" + "\xFF\x03\x0A\x00\x2F\xB6\xB6\xB7\xB8\xB9\xB9\xBB\x2F\x2F\x00\xFF" + "\x03\x0C\x00\x2F\x2F\x2F\x2F\x2F\x2F\x2F\x2F\x2F\x2F\x2F\x2F\x00" + "\xFF\x03\x0C\x00\x2F\xB7\xBA\x2F\x2F\xB7\xB9\xBA\xB9\xBA\xBB\x2F" + "\x00\xFF\x03\x0C\x00\x2F\xB2\xBC\x2F\x2F\xB2\xB7\xBA\xBA\xB8\xBC" + "\x2F\x00\xFF\x03\x0C\x00\x2F\xB2\xB9\x2F\x2F\xB1\xB1\xB3\xB4\xB5" + "\xBB\x2F\x00\xFF\x03\x0C\x00\x2F\xB2\xB9\x2F\x2F\xB1\xB2\xB1\xB3" + "\xB4\xB9\x2F\x00\xFF\x03\x0C\x00\x2F\xB1\xB6\x2F\x2F\xB2\xB9\x2F" + "\x2F\x2F\x2F\x2F\x00\xFF\x03\x08\x00\x2F\xB1\xB8\x2F\x2F\xB1\xB6" + "\x2F\x00\xFF\x03\x08\x00\x2F\xB1\xB6\x2F\x2F\xB1\xB6\x2F\x00\xFF" + "\x03\x08\x00\x2F\xB1\xB8\x2F\x2F\xB3\xB9\x2F\x00\xFF\x03\x08\x00" + "\x2F\xB4\xB6\xB4\xB3\xB5\xB9\x2F\x00\xFF\x03\x08\x00\x2F\xB6\xB6" + "\xB3\xB3\xB3\xB7\x2F\x00\xFF\x03\x08\x00\x2F\xBA\xB5\xB4\xB5\xB3" + "\xBA\x2F\x00\xFF\x04\x06\x00\x2F\xBA\xB6\xB6\xBA\x2F\x00\xFF\x05" + "\x04\x00\x2F\x2F\x2F\x2F\x00\xFF\x5A\x00\x0F\x00\x00\x00\x00\x00" + "\x70\x01\x00\x00\x84\x01\x00\x00\x98\x01\x00\x00\xAC\x01\x00\x00" + "\xC0\x01\x00\x00\xD4\x01\x00\x00\xE8\x01\x00\x00\xF7\x01\x00\x00" + "\x06\x02\x00\x00\x15\x02\x00\x00\x24\x02\x00\x00\x33\x02\x00\x00" + "\x42\x02\x00\x00\x4F\x02\x00\x00\x5C\x02\x00\x00\x67\x02\x00\x00" + "\x78\x02\x00\x00\x89\x02\x00\x00\x9A\x02\x00\x00\xAB\x02\x00\x00" + "\xBC\x02\x00\x00\xCD\x02\x00\x00\xDA\x02\x00\x00\xE7\x02\x00\x00" + "\xF4\x02\x00\x00\x05\x03\x00\x00\x16\x03\x00\x00\x27\x03\x00\x00" + "\x38\x03\x00\x00\x48\x03\x00\x00\x59\x03\x00\x00\x5A\x03\x00\x00" + "\x6E\x03\x00\x00\x82\x03\x00\x00\x96\x03\x00\x00\xAA\x03\x00\x00" + "\xBE\x03\x00\x00\xD2\x03\x00\x00\xE9\x03\x00\x00\x00\x04\x00\x00" + "\x17\x04\x00\x00\x2E\x04\x00\x00\x42\x04\x00\x00\x56\x04\x00\x00" + "\x68\x04\x00\x00\x7A\x04\x00\x00\x8A\x04\x00\x00\x99\x04\x00\x00" + "\xA8\x04\x00\x00\xB7\x04\x00\x00\xC8\x04\x00\x00\xD9\x04\x00\x00" + "\xEA\x04\x00\x00\xFB\x04\x00\x00\x0C\x05\x00\x00\x1D\x05\x00\x00" + "\x2E\x05\x00\x00\x3F\x05\x00\x00\x50\x05\x00\x00\x5F\x05\x00\x00" + "\x6E\x05\x00\x00\x7B\x05\x00\x00\x8A\x05\x00\x00\x99\x05\x00\x00" + "\xAA\x05\x00\x00\xBB\x05\x00\x00\xCC\x05\x00\x00\xDD\x05\x00\x00" + "\xEE\x05\x00\x00\xFF\x05\x00\x00\x10\x06\x00\x00\x21\x06\x00\x00" + "\x32\x06\x00\x00\x41\x06\x00\x00\x50\x06\x00\x00\x5F\x06\x00\x00" + "\x6F\x06\x00\x00\x80\x06\x00\x00\x91\x06\x00\x00\xA2\x06\x00\x00" + "\xB2\x06\x00\x00\xBE\x06\x00\x00\xCA\x06\x00\x00\xD6\x06\x00\x00" + "\xE2\x06\x00\x00\xF2\x06\x00\x00\x03\x07\x00\x00\x14\x07\x00\x00" + "\x25\x07\x00\x00\x35\x07\x00\x00\x00\x0F\x00\x2F\x2F\x2F\x2F\x2F" + "\x2F\x2F\x2F\x2F\x2F\x2F\x2F\x2F\x2F\x2F\x00\xFF\x00\x0F\x00\x2F" + "\xB7\xB8\xBB\x2F\x2F\xB7\xB8\xB9\xB8\xB8\xB8\xB7\xBA\x2F\x00\xFF" + "\x00\x0F\x00\x2F\xB4\xB7\xBA\x2F\x2F\xB3\xB7\xB7\xB6\xB6\xB5\xB4" + "\xB8\x2F\x00\xFF\x00\x0F\x00\x2F\xB3\xB8\xBB\x2F\x2F\xB4\xB8\xB7" + "\xB7\xB6\xB5\xB4\xB8\x2F\x00\xFF\x00\x0F\x00\x2F\xB3\xBA\xBC\x2F" + "\x2F\xB4\xB8\xBA\xB9\xB9\xB8\xB7\xBA\x2F\x00\xFF\x00\x0F\x00\x2F" + "\xB4\xBA\xBC\x2F\x2F\xB6\xB8\xBA\x2F\x2F\x2F\x2F\x2F\x2F\x00\xFF" + "\x00\x0A\x00\x2F\xB4\xBA\xBC\x2F\x2F\xB4\xB9\xBB\x2F\x00\xFF\x00" + "\x0A\x00\x2F\xB4\xB9\xBC\x2F\x2F\xB4\xB9\xBC\x2F\x00\xFF\x00\x0A" + "\x00\x2F\xB4\xB9\xBB\x2F\x2F\xB7\xBA\xBC\x2F\x00\xFF\x00\x0A\x00" + "\x2F\xB5\xB8\xBB\x2F\x2F\xB7\xBA\xBC\x2F\x00\xFF\x00\x0A\x00\x2F" + "\xB5\xB7\xBA\x2F\x2F\xB8\xBB\xBC\x2F\x00\xFF\x00\x0A\x00\x2F\xB7" + "\xB8\xB8\xB9\xB9\xBB\xBB\xBC\x2F\x00\xFF\x01\x08\x00\x2F\xB7\xB7" + "\xB8\xB8\xB9\xBC\x2F\x00\xFF\x01\x08\x00\x2F\xB9\xB9\xB9\xB9\xB9" + "\xBB\x2F\x00\xFF\x02\x06\x00\x2F\xBC\xB8\xB8\xBC\x2F\x00\xFF\x03" + "\x0C\x00\x2F\x2F\x2F\x2F\x2F\x2F\x2F\x2F\x2F\x2F\x2F\x2F\x00\xFF" + "\x03\x0C\x00\x2F\xB8\xBA\x2F\x2F\xB7\xB8\xB7\xB6\xB6\xB9\x2F\x00" + "\xFF\x03\x0C\x00\x2F\xB1\xB8\x2F\x2F\xB2\xB4\xB4\xB5\xB5\xBA\x2F" + "\x00\xFF\x03\x0C\x00\x2F\xB2\xB9\x2F\x2F\xB1\xB6\xB5\xB4\xB4\xBA" + "\x2F\x00\xFF\x03\x0C\x00\x2F\xB1\xB8\x2F\x2F\xB1\xB6\xB5\xB6\xB6" + "\xB9\x2F\x00\xFF\x03\x0C\x00\x2F\xB1\xB9\x2F\x2F\xB1\xB8\x2F\x2F" + "\x2F\x2F\x2F\x00\xFF\x03\x08\x00\x2F\xB1\xB9\x2F\x2F\xB1\xBA\x2F" + "\x00\xFF\x03\x08\x00\x2F\xB1\xB9\x2F\x2F\xB1\xBA\x2F\x00\xFF\x03" + "\x08\x00\x2F\xB1\xB8\x2F\x2F\xB3\xB9\x2F\x00\xFF\x03\x0C\x00\x2F" + "\xB2\xB7\x2F\x2F\xB2\xB7\xBA\x2F\x2F\x2F\x2F\x00\xFF\x03\x0C\x00" + "\x2F\xB2\xB7\xB8\xB8\xB3\xB3\xB2\xB2\xB3\xB8\x2F\x00\xFF\x03\x0C" + "\x00\x2F\xB2\xB4\xB5\xB4\xB3\xB3\xB3\xB3\xB2\xBA\x2F\x00\xFF\x03" + "\x0C\x00\x2F\xBA\xB2\xB3\xB5\xB5\xB4\xB4\xB3\xB2\xB9\x2F\x00\xFF" + "\x04\x0B\x00\x2F\xBA\xB6\xB8\x2F\x2F\xB7\xB8\xB6\xB9\x2F\x00\xFF" + "\x05\x03\x00\x2F\x2F\x2F\x00\x0A\x05\x00\x2F\x2F\x2F\x2F\x2F\x00" + "\xFF\xFF\x00\x0F\x00\x2F\x2F\x2F\x2F\x2F\x2F\x2F\x2F\x2F\x2F\x2F" + "\x2F\x2F\x2F\x2F\x00\xFF\x00\x0F\x00\x2F\xB6\xB8\xBA\x2F\x2F\xBA" + "\xBA\xB9\xB9\xB9\xBA\xBA\xBA\x2F\x00\xFF\x00\x0F\x00\x2F\xB3\xB7" + "\xBA\x2F\x2F\xB4\xB8\xB8\xB7\xB6\xB7\xB7\xB8\x2F\x00\xFF\x00\x0F" + "\x00\x2F\xB4\xB8\xBA\x2F\x2F\xB4\xB8\xB8\xB7\xB7\xB7\xB8\xB9\x2F" + "\x00\xFF\x00\x0F\x00\x2F\xB4\xB7\xBA\x2F\x2F\xB4\xB7\xB8\xB9\xB9" + "\xB8\xB7\xB9\x2F\x00\xFF\x00\x0F\x00\x2F\xB1\xB5\xB9\x2F\x2F\xB4" + "\xBB\x2F\x2F\x2F\xB1\xB5\xB9\x2F\x00\xFF\x00\x09\x00\x2F\xB1\xB6" + "\xB8\x2F\x2F\xB1\xBB\x2F\x00\x0A\x05\x00\x2F\xB1\xB6\xB9\x2F\x00" + "\xFF\x00\x09\x00\x2F\xB1\xB6\xB9\x2F\x2F\xB2\xB9\x2F\x00\x0A\x05" + "\x00\x2F\xB1\xB6\xB9\x2F\x00\xFF\x00\x09\x00\x2F\xB2\xB7\xB9\x2F" + "\x2F\xB3\xB9\x2D\x00\x0A\x05\x00\x2F\xB1\xB7\xB9\x2F\x00\xFF\x00" + "\x09\x00\x2F\xB4\xB7\xB9\x2F\x2F\xB4\xBB\x2F\x00\x0A\x05\x00\x2F" + "\xB1\xB7\xB9\x2F\x00\xFF\x00\x0F\x00\x2F\xB5\xB8\xBA\x2F\x2F\xB4" + "\xB6\xBB\x2F\xB5\xB8\xB8\xB9\x2F\x00\xFF\x00\x0F\x00\x2F\xB6\xB9" + "\xB8\xBA\xBA\xB5\xB5\xB5\xB5\xB6\xB8\xB9\xB9\x2F\x00\xFF\x01\x0D" + "\x00\x2F\xB7\xB8\xB7\xB5\xB4\xB2\xB2\xB2\xB7\xB8\xB7\x2F\x00\xFF" + "\x01\x0D\x00\x2F\xBB\xB7\xB7\xB8\xB6\xB6\xB6\xB3\xB7\xB7\xBB\x2F" + "\x00\xFF\x02\x0B\x00\x2F\xBB\xB8\xB8\xBB\x2F\xBB\xB8\xB8\xBB\x2F" + "\x00\xFF\x03\x0A\x00\x2F\x2F\x2F\x2F\x2F\x2F\x2F\x2F\x2F\x2F\x00" + "\xFF\x04\x0A\x00\x2F\xBB\xB2\xB4\xB4\xB4\xB4\xB2\xBB\x2F\x00\xFF" + "\x04\x0A\x00\x2F\xB1\xB3\xB5\xB5\xB4\xB3\xB2\xB7\x2F\x00\xFF\x03" + "\x0C\x00\x2F\xB9\xB5\xB5\xB8\xB8\xB8\xB6\xB3\xB2\xB9\x2F\x00\xFF" + "\x03\x0C\x00\x2F\xB3\xB5\xBB\x2F\x2F\x2F\x2F\xB5\xB5\xB9\x2F\x00" + "\xFF\x03\x04\x00\x2F\xB1\xB8\x2F\x00\x0B\x04\x00\x2F\xB1\xB8\x2F" + "\x00\xFF\x03\x04\x00\x2F\xB1\xB8\x2F\x00\x0B\x04\x00\x2F\xB1\xB7" + "\x2F\x00\xFF\x03\x04\x00\x2F\xB1\xBB\x2F\x00\x0B\x04\x00\x2F\xB1" + "\xB9\x2F\x00\xFF\x03\x04\x00\x2F\xB1\xBB\x2F\x00\x0B\x04\x00\x2F" + "\xB3\xBC\x2F\x00\xFF\x03\x04\x00\x2F\xB1\xBA\x2F\x00\x0B\x04\x00" + "\x2F\xB4\xBA\x2F\x00\xFF\x03\x0C\x00\x2F\xB4\xB6\xBC\x2F\x2F\x2F" + "\x2F\xB6\xB8\xBB\x2F\x00\xFF\x03\x0C\x00\x2F\xB9\xB7\xB7\xB9\xB9" + "\xB9\xBA\xB9\xBA\xBB\x2F\x00\xFF\x04\x0A\x00\x2F\xB8\xB8\xB8\xBA" + "\xBB\xBB\xBA\xB8\x2F\x00\xFF\x04\x0A\x00\x2F\xBB\xB5\xB6\xB9\xBB" + "\xBB\xBA\xBC\x2F\x00\xFF\x05\x08\x00\x2F\x2F\x2F\x2F\x2F\x2F\x2F" + "\x2F\x00\xFF\x04\x0A\x00\x2F\xBB\xB2\xB4\xB4\xB4\xB4\xB2\xBB\x2F" + "\x00\xFF\x04\x0A\x00\x2F\xB1\xB3\xB5\xB5\xB4\xB3\xB2\xB7\x2F\x00" + "\xFF\x03\x0C\x00\x2F\xB9\xB5\xB5\xB8\xB8\xB8\xB6\xB3\xB2\xB9\x2F" + "\x00\xFF\x03\x0C\x00\x2F\xB3\xB5\xBB\x2F\x2F\x2F\x2F\xB5\xB5\xB9" + "\x2F\x00\xFF\x03\x04\x00\x2F\xB1\xB8\x2F\x00\x0B\x04\x00\x2F\xB1" + "\xB8\x2F\x00\xFF\x03\x04\x00\x2F\xB1\xB8\x2F\x00\x0B\x04\x00\x2F" + "\xB1\xB7\x2F\x00\xFF\x03\x04\x00\x2F\xB1\xBB\x2F\x00\x0B\x04\x00" + "\x2F\xB1\xB9\x2F\x00\xFF\x03\x04\x00\x2F\xB1\xBB\x2F\x00\x0B\x04" + "\x00\x2F\xB3\xBC\x2F\x00\xFF\x03\x04\x00\x2F\xB1\xBA\x2F\x00\x0B" + "\x04\x00\x2F\xB4\xBA\x2F\x00\xFF\x03\x0C\x00\x2F\xB4\xB6\xBC\x2F" + "\x2F\x2F\x2F\xB6\xB8\xBB\x2F\x00\xFF\x03\x0C\x00\x2F\xB9\xB7\xB7" + "\xB9\xB9\xB9\xBA\xB9\xBA\xBB\x2F\x00\xFF\x04\x0A\x00\x2F\xB8\xB8" + "\xB8\xBA\xBB\xBB\xBA\xB8\x2F\x00\xFF\x04\x0A\x00\x2F\xBB\xB5\xB6" + "\xB9\xBB\xBB\xBA\xBC\x2F\x00\xFF\x05\x0A\x00\x2F\x2F\x2F\x2F\x2F" + "\x2F\x2F\x2F\x2F\x2F\x00\xFF\x04\x0B\x00\x2F\xB8\xB7\xB8\xB6\xB6" + "\xB6\xB5\xB5\xB8\x2F\x00\xFF\x03\x0C\x00\x2F\xB5\xB2\xB3\xB3\xB3" + "\xB3\xB4\xB4\xB3\xB8\x2F\x00\xFF\x03\x0C\x00\x2F\xB1\xB1\xB3\xB5" + "\xB5\xB4\xB3\xB4\xB3\xB8\x2F\x00\xFF\x03\x0C\x00\x2F\xB6\xB5\xB6" + "\xB8\xB6\xB7\xB8\xB7\xB7\xB9\x2F\x00\xFF\x04\x0B\x00\x2F\xB6\xBB" + "\xBB\xBC\xBC\x2F\x2F\x2F\x2F\x2F\x00\xFF\x05\x07\x00\x2F\xB7\xBB" + "\xBB\xBB\xBC\x2F\x00\xFF\x06\x07\x00\x2F\xB4\xBA\xBA\xBA\xBA\x2F" + "\x00\xFF\x06\x07\x00\x2F\xB4\xB9\xB8\xB6\xB9\x2F\x00\xFF\x05\x07" + "\x00\x2F\xB3\xB5\xB5\xB6\xB9\x2F\x00\xFF\x04\x0B\x00\x2F\xB5\xB9" + "\xB7\xB6\xB5\x2F\x2F\x2F\x2F\x2F\x00\xFF\x03\x0C\x00\x2F\xB4\xB8" + "\xB7\xB5\xB4\xB3\xB7\xB8\xB8\xBA\x2F\x00\xFF\x03\x0C\x00\x2F\xB1" + "\xB4\xB6\xB7\xB8\xBA\xBA\xBA\xBB\xBC\x2F\x00\xFF\x03\x0C\x00\x2F" + "\xB3\xB6\xB8\xB8\xBA\xBA\xBB\xBA\xB9\xBB\x2F\x00\xFF\x04\x0B\x00" + "\x2F\xB8\xBB\xBB\xBC\x2F\xBB\xBB\xB9\xBA\x2F\x00\xFF\x05\x0A\x00" + "\x2F\x2F\x2F\x2F\x2F\x2F\x2F\x2F\x2F\x2F\x00\xFF\x0C\x00\x00\x00" + "\x34\x03\x00\x00\x53\x57\x49\x54\x43\x48\x45\x53\x40\x03\x00\x00" + "\xFE\x01\x00\x00\x41\x4E\x49\x4D\x41\x54\x45\x44\x3E\x05\x00\x00" + "\x00\x01\x00\x00\x43\x52\x42\x52\x49\x43\x4B\x00\x3E\x06\x00\x00" + "\x00\x01\x00\x00\x43\x52\x54\x41\x4E\x00\x00\x00\x3E\x07\x00\x00" + "\x00\x01\x00\x00\x43\x52\x47\x52\x41\x59\x00\x00\x3E\x08\x00\x00" + "\x00\x01\x00\x00\x43\x52\x47\x52\x45\x45\x4E\x00\x3E\x09\x00\x00" + "\x00\x01\x00\x00\x43\x52\x42\x52\x4F\x57\x4E\x00\x3E\x0A\x00\x00" + "\x00\x01\x00\x00\x43\x52\x47\x4F\x4C\x44\x00\x00\x3E\x0B\x00\x00" + "\x00\x01\x00\x00\x43\x52\x52\x45\x44\x00\x00\x00\x3E\x0C\x00\x00" + "\x00\x01\x00\x00\x43\x52\x42\x4C\x55\x45\x00\x00\x3E\x0D\x00\x00" + "\x00\x01\x00\x00\x43\x52\x42\x4C\x55\x45\x32\x00\x3E\x0E\x00\x00" + "\x00\x01\x00\x00\x43\x52\x4F\x52\x41\x4E\x47\x45\x3E\x0F\x00\x00" + "\x00\x01\x00\x00\x43\x52\x59\x45\x4C\x4C\x4F\x57\x3E\x10\x00\x00" + "\x53\x00\x00\x00\x44\x49\x47\x30\x00\x00\x00\x00\x91\x10\x00\x00" + "\x4B\x00\x00\x00\x44\x49\x47\x31\x00\x00\x00\x00\xDC\x10\x00\x00" + "\x57\x00\x00\x00\x44\x49\x47\x32\x00\x00\x00\x00\x33\x11\x00\x00" + "\x5A\x00\x00\x00\x44\x49\x47\x33\x00\x00\x00\x00\x8D\x11\x00\x00" + "\x4A\x00\x00\x00\x44\x49\x47\x34\x00\x00\x00\x00\xD7\x11\x00\x00" + "\x54\x00\x00\x00\x44\x49\x47\x35\x00\x00\x00\x00\x2B\x12\x00\x00" + "\x51\x00\x00\x00\x44\x49\x47\x36\x00\x00\x00\x00\x7C\x12\x00\x00" + "\x45\x00\x00\x00\x44\x49\x47\x37\x00\x00\x00\x00\xC1\x12\x00\x00" + "\x51\x00\x00\x00\x44\x49\x47\x38\x00\x00\x00\x00\x12\x13\x00\x00" + "\x54\x00\x00\x00\x44\x49\x47\x39\x00\x00\x00\x00\x66\x13\x00\x00" + "\x4E\x00\x00\x00\x44\x49\x47\x41\x00\x00\x00\x00\xB4\x13\x00\x00" + "\x4F\x00\x00\x00\x44\x49\x47\x42\x00\x00\x00\x00\x03\x14\x00\x00" + "\x56\x00\x00\x00\x44\x49\x47\x43\x00\x00\x00\x00\x59\x14\x00\x00" + "\x50\x00\x00\x00\x44\x49\x47\x44\x00\x00\x00\x00\xA9\x14\x00\x00" + "\x55\x00\x00\x00\x44\x49\x47\x45\x00\x00\x00\x00\xFE\x14\x00\x00" + "\x4C\x00\x00\x00\x44\x49\x47\x46\x00\x00\x00\x00\x4A\x15\x00\x00" + "\x57\x00\x00\x00\x44\x49\x47\x47\x00\x00\x00\x00\xA1\x15\x00\x00" + "\x4B\x00\x00\x00\x44\x49\x47\x48\x00\x00\x00\x00\xEC\x15\x00\x00" + "\x45\x00\x00\x00\x44\x49\x47\x49\x00\x00\x00\x00\x31\x16\x00\x00" + "\x51\x00\x00\x00\x44\x49\x47\x4A\x00\x00\x00\x00\x82\x16\x00\x00" + "\x51\x00\x00\x00\x44\x49\x47\x4B\x00\x00\x00\x00\xD3\x16\x00\x00" + "\x44\x00\x00\x00\x44\x49\x47\x4C\x00\x00\x00\x00\x17\x17\x00\x00" + "\x4C\x00\x00\x00\x44\x49\x47\x4D\x00\x00\x00\x00\x63\x17\x00\x00" + "\x4B\x00\x00\x00\x44\x49\x47\x4E\x00\x00\x00\x00\x3E\x10\x00\x00" + "\x53\x00\x00\x00\x44\x49\x47\x4F\x00\x00\x00\x00\xAE\x17\x00\x00" + "\x4B\x00\x00\x00\x44\x49\x47\x50\x00\x00\x00\x00\xF9\x17\x00\x00" + "\x54\x00\x00\x00\x44\x49\x47\x51\x00\x00\x00\x00\x4D\x18\x00\x00" + "\x4C\x00\x00\x00\x44\x49\x47\x52\x00\x00\x00\x00\xD7\x11\x00\x00" + "\x54\x00\x00\x00\x44\x49\x47\x53\x00\x00\x00\x00\x99\x18\x00\x00" + "\x44\x00\x00\x00\x44\x49\x47\x54\x00\x00\x00\x00\xDD\x18\x00\x00" + "\x4C\x00\x00\x00\x44\x49\x47\x55\x00\x00\x00\x00\x29\x19\x00\x00" + "\x48\x00\x00\x00\x44\x49\x47\x56\x00\x00\x00\x00\x71\x19\x00\x00" + "\x4D\x00\x00\x00\x44\x49\x47\x57\x00\x00\x00\x00\xBE\x19\x00\x00" + "\x51\x00\x00\x00\x44\x49\x47\x58\x00\x00\x00\x00\x0F\x1A\x00\x00" + "\x52\x00\x00\x00\x44\x49\x47\x59\x00\x00\x00\x00\x61\x1A\x00\x00" + "\x55\x00\x00\x00\x44\x49\x47\x5A\x00\x00\x00\x00\xB6\x1A\x00\x00" + "\x37\x00\x00\x00\x44\x49\x47\x34\x35\x00\x00\x00\xED\x1A\x00\x00" + "\x33\x00\x00\x00\x44\x49\x47\x34\x37\x00\x00\x00\x20\x1B\x00\x00" + "\x35\x00\x00\x00\x44\x49\x47\x35\x38\x00\x00\x00\x55\x1B\x00\x00" + "\x3E\x00\x00\x00\x44\x49\x47\x39\x31\x00\x00\x00\x93\x1B\x00\x00" + "\x3E\x00\x00\x00\x44\x49\x47\x39\x33\x00\x00\x00\xD1\x1B\x00\x00" + "\x5C\x00\x00\x00\x53\x54\x42\x52\x31\x32\x33\x00\x2D\x1C\x00\x00" + "\x51\x00\x00\x00\x53\x54\x42\x52\x31\x32\x34\x00\x7E\x1C\x00\x00" + "\x46\x00\x00\x00\x53\x54\x42\x52\x31\x32\x35\x00\xC4\x1C\x00\x00" + "\x3B\x00\x00\x00\x53\x54\x42\x52\x31\x32\x36\x00\xFF\x1C\x00\x00" + "\x30\x00\x00\x00\x53\x54\x42\x52\x31\x32\x37\x00\x2F\x1D\x00\x00" + "\x90\x00\x00\x00\x42\x4F\x58\x55\x4C\x00\x00\x00\xBF\x1D\x00\x00" + "\x90\x00\x00\x00\x42\x4F\x58\x55\x43\x00\x00\x00\x4F\x1E\x00\x00" + "\x90\x00\x00\x00\x42\x4F\x58\x55\x52\x00\x00\x00\xDF\x1E\x00\x00" + "\x90\x00\x00\x00\x42\x4F\x58\x43\x4C\x00\x00\x00\x6F\x1F\x00\x00" + "\x90\x00\x00\x00\x42\x4F\x58\x43\x43\x00\x00\x00\xFF\x1F\x00\x00" + "\x90\x00\x00\x00\x42\x4F\x58\x43\x52\x00\x00\x00\x8F\x20\x00\x00" + "\x90\x00\x00\x00\x42\x4F\x58\x4C\x4C\x00\x00\x00\x1F\x21\x00\x00" + "\x90\x00\x00\x00\x42\x4F\x58\x4C\x43\x00\x00\x00\xAF\x21\x00\x00" + "\x90\x00\x00\x00\x42\x4F\x58\x4C\x52\x00\x00\x00\x3F\x22\x00\x00" + "\x68\x00\x00\x00\x53\x54\x4B\x45\x59\x53\x36\x00\xA7\x22\x00\x00" + "\x68\x00\x00\x00\x53\x54\x4B\x45\x59\x53\x37\x00\x0F\x23\x00\x00" + "\x68\x00\x00\x00\x53\x54\x4B\x45\x59\x53\x38\x00\x77\x23\x00\x00" + "\x3A\x00\x00\x00\x53\x54\x43\x46\x4E\x30\x39\x36\xB1\x23\x00\x00" + "\x70\x01\x00\x00\x4D\x5F\x42\x55\x54\x54\x31\x00\x21\x25\x00\x00" + "\x70\x01\x00\x00\x4D\x5F\x42\x55\x54\x54\x32\x00\x91\x26\x00\x00" + "\x78\x00\x00\x00\x4D\x5F\x50\x41\x4C\x4E\x4F\x00\x09\x27\x00\x00" + "\x95\x00\x00\x00\x4D\x5F\x50\x41\x4C\x53\x45\x4C\x9E\x27\x00\x00" + "\x68\x17\x00\x00\x4D\x5F\x56\x42\x4F\x58\x00\x00\x06\x3F\x00\x00" + "\x32\x05\x00\x00\x4D\x5F\x53\x45\x54\x55\x50\x00\x38\x44\x00\x00" + "\x44\x07\x00\x00\x50\x52\x42\x4F\x4F\x4D\x00\x00" +}; +static const size_t prboom_wad_size = sizeof(prboom_wad); diff --git a/components/doom/prboom/protocol.h b/components/doom/prboom/protocol.h new file mode 100644 index 0000000..42cb2a5 --- /dev/null +++ b/components/doom/prboom/protocol.h @@ -0,0 +1,97 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Doom Network protocol packet definitions. + *-----------------------------------------------------------------------------*/ + +#include "doomtype.h" +#include "d_ticcmd.h" +#include "m_swap.h" +#include "config.h" + +enum packet_type_e { + PKT_INIT, // initial packet to server + PKT_SETUP, // game information packet + PKT_GO, // game has started + PKT_TICC, // tics from client + PKT_TICS, // tics from server + PKT_RETRANS, // Request for retransmission + PKT_EXTRA, // Extra info packet + PKT_QUIT, // Player quit game + PKT_DOWN, // Server downed + PKT_WAD, // Wad file request + PKT_BACKOFF, // Request for client back-off +}; + +typedef struct { + byte checksum; // Simple checksum of the entire packet + byte type; /* Type of packet */ + byte reserved[2]; /* Was random in prboom <=2.2.4, now 0 */ + unsigned tic; // Timestamp +} PACKEDATTR packet_header_t; + +static inline void packet_set(packet_header_t* p, enum packet_type_e t, unsigned long tic) +{ p->tic = doom_htonl(tic); p->type = t; p->reserved[0] = 0; p->reserved[1] = 0; } + +#ifndef GAME_OPTIONS_SIZE +// From g_game.h +#define GAME_OPTIONS_SIZE 64 +#endif + +struct setup_packet_s { + byte players, yourplayer, skill, episode, level, deathmatch, complevel, ticdup, extratic; + byte game_options[GAME_OPTIONS_SIZE]; + byte numwads; + byte wadnames[1]; // Actually longer +}; + +/* cph - convert network byte stream to usable ticcmd_t and visa-versa + * - the functions are functionally identical apart from parameters + * - the void* param can be unaligned. By using void* as the parameter + * it means gcc won't assume alignment so won't make false assumptions + * when optimising. So I'm told. + */ +inline static void RawToTic(ticcmd_t* dst, const void* src) +{ + memcpy(dst,src,sizeof *dst); + dst->angleturn = doom_ntohs(dst->angleturn); + dst->consistancy = doom_ntohs(dst->consistancy); +} + +inline static void TicToRaw(void* dst, const ticcmd_t* src) +{ + /* We have to make a copy of the source struct, then do byte swaps, + * and fnially copy to the destination (can't do the swaps in the + * destination, because it might not be aligned). + */ + ticcmd_t tmp = *src; + tmp.angleturn = doom_ntohs(tmp.angleturn); + tmp.consistancy = doom_ntohs(tmp.consistancy); + memcpy(dst,&tmp,sizeof tmp); +} diff --git a/components/doom/prboom/r_bsp.c b/components/doom/prboom/r_bsp.c new file mode 100644 index 0000000..1661666 --- /dev/null +++ b/components/doom/prboom/r_bsp.c @@ -0,0 +1,570 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * BSP traversal, handling of LineSegs for rendering. + * + *-----------------------------------------------------------------------------*/ + +#include "doomstat.h" +#include "m_bbox.h" +#include "r_main.h" +#include "r_segs.h" +#include "r_plane.h" +#include "r_things.h" +#include "r_bsp.h" // cph - sanity checking +#include "v_video.h" +#include "lprintf.h" + +seg_t *curline; +side_t *sidedef; +line_t *linedef; +sector_t *frontsector; +sector_t *backsector; +drawseg_t *ds_p; + +// killough 4/7/98: indicates doors closed wrt automap bugfix: +// cph - replaced by linedef rendering flags - int doorclosed; + +// killough: New code which removes 2s linedef limit +drawseg_t *drawsegs; +unsigned maxdrawsegs; +// drawseg_t drawsegs[MAXDRAWSEGS]; // old code -- killough + +// +// R_ClearDrawSegs +// + +void R_ClearDrawSegs(void) +{ + ds_p = drawsegs; +} + +// CPhipps - +// Instead of clipsegs, let's try using an array with one entry for each column, +// indicating whether it's blocked by a solid wall yet or not. + +byte solidcol[MAX_SCREENWIDTH]; + +// CPhipps - +// R_ClipWallSegment +// +// Replaces the old R_Clip*WallSegment functions. It draws bits of walls in those +// columns which aren't solid, and updates the solidcol[] array appropriately + +static void R_ClipWallSegment(int first, int last, boolean solid) +{ + byte *p; + while (first < last) { + if (solidcol[first]) { + if (!(p = memchr(solidcol+first, 0, last-first))) return; // All solid + first = p - solidcol; + } else { + int to; + if (!(p = memchr(solidcol+first, 1, last-first))) to = last; + else to = p - solidcol; + R_StoreWallRange(first, to-1); + if (solid) { + memset(solidcol+first,1,to-first); + } + first = to; + } + } +} + +// +// R_ClearClipSegs +// + +void R_ClearClipSegs (void) +{ + memset(solidcol, 0, SCREENWIDTH); +} + +// killough 1/18/98 -- This function is used to fix the automap bug which +// showed lines behind closed doors simply because the door had a dropoff. +// +// cph - converted to R_RecalcLineFlags. This recalculates all the flags for +// a line, including closure and texture tiling. + +static void R_RecalcLineFlags(void) +{ + linedef->r_validcount = gametic; + + /* First decide if the line is closed, normal, or invisible */ + if (!(linedef->flags & ML_TWOSIDED) + || backsector->ceilingheight <= frontsector->floorheight + || backsector->floorheight >= frontsector->ceilingheight + || ( + // if door is closed because back is shut: + backsector->ceilingheight <= backsector->floorheight + + // preserve a kind of transparent door/lift special effect: + && (backsector->ceilingheight >= frontsector->ceilingheight || + curline->sidedef->toptexture) + + && (backsector->floorheight <= frontsector->floorheight || + curline->sidedef->bottomtexture) + + // properly render skies (consider door "open" if both ceilings are sky): + && (backsector->ceilingpic !=skyflatnum || + frontsector->ceilingpic!=skyflatnum) + ) + ) + linedef->r_flags = RF_CLOSED; + else { + // Reject empty lines used for triggers + // and special events. + // Identical floor and ceiling on both sides, + // identical light levels on both sides, + // and no middle texture. + // CPhipps - recode for speed, not certain if this is portable though + if (backsector->ceilingheight != frontsector->ceilingheight + || backsector->floorheight != frontsector->floorheight + || curline->sidedef->midtexture + || memcmp(&backsector->floor_xoffs, &frontsector->floor_xoffs, + sizeof(frontsector->floor_xoffs) + sizeof(frontsector->floor_yoffs) + + sizeof(frontsector->ceiling_xoffs) + sizeof(frontsector->ceiling_yoffs) + + sizeof(frontsector->ceilingpic) + sizeof(frontsector->floorpic) + + sizeof(frontsector->lightlevel) + sizeof(frontsector->floorlightsec) + + sizeof(frontsector->ceilinglightsec))) { + linedef->r_flags = 0; return; + } else + linedef->r_flags = RF_IGNORE; + } + + /* cph - I'm too lazy to try and work with offsets in this */ + if (curline->sidedef->rowoffset) return; + + /* Now decide on texture tiling */ + if (linedef->flags & ML_TWOSIDED) { + int c; + + /* Does top texture need tiling */ + if ((c = frontsector->ceilingheight - backsector->ceilingheight) > 0 && + (textureheight[texturetranslation[curline->sidedef->toptexture]] > c)) + linedef->r_flags |= RF_TOP_TILE; + + /* Does bottom texture need tiling */ + if ((c = frontsector->floorheight - backsector->floorheight) > 0 && + (textureheight[texturetranslation[curline->sidedef->bottomtexture]] > c)) + linedef->r_flags |= RF_BOT_TILE; + } else { + int c; + /* Does middle texture need tiling */ + if ((c = frontsector->ceilingheight - frontsector->floorheight) > 0 && + (textureheight[texturetranslation[curline->sidedef->midtexture]] > c)) + linedef->r_flags |= RF_MID_TILE; + } +} + +// +// killough 3/7/98: Hack floor/ceiling heights for deep water etc. +// +// If player's view height is underneath fake floor, lower the +// drawn ceiling to be just under the floor height, and replace +// the drawn floor and ceiling textures, and light level, with +// the control sector's. +// +// Similar for ceiling, only reflected. +// +// killough 4/11/98, 4/13/98: fix bugs, add 'back' parameter +// + +sector_t *R_FakeFlat(sector_t *sec, sector_t *tempsec, + int *floorlightlevel, int *ceilinglightlevel, + boolean back) +{ + if (floorlightlevel) + *floorlightlevel = sec->floorlightsec == -1 ? + sec->lightlevel : sectors[sec->floorlightsec].lightlevel; + + if (ceilinglightlevel) + *ceilinglightlevel = sec->ceilinglightsec == -1 ? // killough 4/11/98 + sec->lightlevel : sectors[sec->ceilinglightsec].lightlevel; + + if (sec->heightsec != -1) + { + const sector_t *s = §ors[sec->heightsec]; + int heightsec = viewplayer->mo->subsector->sector->heightsec; + int underwater = heightsec!=-1 && viewz<=sectors[heightsec].floorheight; + + // Replace sector being drawn, with a copy to be hacked + *tempsec = *sec; + + // Replace floor and ceiling height with other sector's heights. + tempsec->floorheight = s->floorheight; + tempsec->ceilingheight = s->ceilingheight; + + // killough 11/98: prevent sudden light changes from non-water sectors: + if (underwater && (tempsec-> floorheight = sec->floorheight, + tempsec->ceilingheight = s->floorheight-1, !back)) + { // head-below-floor hack + tempsec->floorpic = s->floorpic; + tempsec->floor_xoffs = s->floor_xoffs; + tempsec->floor_yoffs = s->floor_yoffs; + + if (underwater) { + if (s->ceilingpic == skyflatnum) { + tempsec->floorheight = tempsec->ceilingheight+1; + tempsec->ceilingpic = tempsec->floorpic; + tempsec->ceiling_xoffs = tempsec->floor_xoffs; + tempsec->ceiling_yoffs = tempsec->floor_yoffs; + } else { + tempsec->ceilingpic = s->ceilingpic; + tempsec->ceiling_xoffs = s->ceiling_xoffs; + tempsec->ceiling_yoffs = s->ceiling_yoffs; + } + } + + tempsec->lightlevel = s->lightlevel; + + if (floorlightlevel) + *floorlightlevel = s->floorlightsec == -1 ? s->lightlevel : + sectors[s->floorlightsec].lightlevel; // killough 3/16/98 + + if (ceilinglightlevel) + *ceilinglightlevel = s->ceilinglightsec == -1 ? s->lightlevel : + sectors[s->ceilinglightsec].lightlevel; // killough 4/11/98 + } + else + if (heightsec != -1 && viewz >= sectors[heightsec].ceilingheight && + sec->ceilingheight > s->ceilingheight) + { // Above-ceiling hack + tempsec->ceilingheight = s->ceilingheight; + tempsec->floorheight = s->ceilingheight + 1; + + tempsec->floorpic = tempsec->ceilingpic = s->ceilingpic; + tempsec->floor_xoffs = tempsec->ceiling_xoffs = s->ceiling_xoffs; + tempsec->floor_yoffs = tempsec->ceiling_yoffs = s->ceiling_yoffs; + + if (s->floorpic != skyflatnum) + { + tempsec->ceilingheight = sec->ceilingheight; + tempsec->floorpic = s->floorpic; + tempsec->floor_xoffs = s->floor_xoffs; + tempsec->floor_yoffs = s->floor_yoffs; + } + + tempsec->lightlevel = s->lightlevel; + + if (floorlightlevel) + *floorlightlevel = s->floorlightsec == -1 ? s->lightlevel : + sectors[s->floorlightsec].lightlevel; // killough 3/16/98 + + if (ceilinglightlevel) + *ceilinglightlevel = s->ceilinglightsec == -1 ? s->lightlevel : + sectors[s->ceilinglightsec].lightlevel; // killough 4/11/98 + } + sec = tempsec; // Use other sector + } + return sec; +} + +// +// R_AddLine +// Clips the given segment +// and adds any visible pieces to the line list. +// + +static void R_AddLine (seg_t *line) +{ + int x1; + int x2; + angle_t angle1; + angle_t angle2; + angle_t span; + angle_t tspan; + static sector_t tempsec; // killough 3/8/98: ceiling/water hack + + curline = line; + + angle1 = R_PointToAngle (line->v1->x, line->v1->y); + angle2 = R_PointToAngle (line->v2->x, line->v2->y); + + // Clip to view edges. + span = angle1 - angle2; + + // Back side, i.e. backface culling + if (span >= ANG180) + return; + + // Global angle needed by segcalc. + rw_angle1 = angle1; + angle1 -= viewangle; + angle2 -= viewangle; + + tspan = angle1 + clipangle; + if (tspan > 2*clipangle) + { + tspan -= 2*clipangle; + + // Totally off the left edge? + if (tspan >= span) + return; + + angle1 = clipangle; + } + + tspan = clipangle - angle2; + if (tspan > 2*clipangle) + { + tspan -= 2*clipangle; + + // Totally off the left edge? + if (tspan >= span) + return; + angle2 = 0-clipangle; + } + + // The seg is in the view range, + // but not necessarily visible. + + angle1 = (angle1+ANG90)>>ANGLETOFINESHIFT; + angle2 = (angle2+ANG90)>>ANGLETOFINESHIFT; + + // killough 1/31/98: Here is where "slime trails" can SOMETIMES occur: + x1 = viewangletox[angle1]; + x2 = viewangletox[angle2]; + + // Does not cross a pixel? + if (x1 >= x2) // killough 1/31/98 -- change == to >= for robustness + return; + + backsector = line->backsector; + + // Single sided line? + if (backsector) + // killough 3/8/98, 4/4/98: hack for invisible ceilings / deep water + backsector = R_FakeFlat(backsector, &tempsec, NULL, NULL, true); + + /* cph - roll up linedef properties in flags */ + if ((linedef = curline->linedef)->r_validcount != gametic) + R_RecalcLineFlags(); + + if (linedef->r_flags & RF_IGNORE) + { + return; + } + else + R_ClipWallSegment (x1, x2, linedef->r_flags & RF_CLOSED); +} + +// +// R_CheckBBox +// Checks BSP node/subtree bounding box. +// Returns true +// if some part of the bbox might be visible. +// + +static const int checkcoord[12][4] = // killough -- static const +{ + {3,0,2,1}, + {3,0,2,0}, + {3,1,2,0}, + {0}, + {2,0,2,1}, + {0,0,0,0}, + {3,1,3,0}, + {0}, + {2,0,3,1}, + {2,1,3,1}, + {2,1,3,0} +}; + +// killough 1/28/98: static // CPhipps - const parameter, reformatted +static boolean R_CheckBBox(const fixed_t *bspcoord) +{ + angle_t angle1, angle2; + + { + int boxpos; + const int* check; + + // Find the corners of the box + // that define the edges from current viewpoint. + boxpos = (viewx <= bspcoord[BOXLEFT] ? 0 : viewx < bspcoord[BOXRIGHT ] ? 1 : 2) + + (viewy >= bspcoord[BOXTOP ] ? 0 : viewy > bspcoord[BOXBOTTOM] ? 4 : 8); + + if (boxpos == 5) + return true; + + check = checkcoord[boxpos]; + angle1 = R_PointToAngle (bspcoord[check[0]], bspcoord[check[1]]) - viewangle; + angle2 = R_PointToAngle (bspcoord[check[2]], bspcoord[check[3]]) - viewangle; + } + + // cph - replaced old code, which was unclear and badly commented + // Much more efficient code now + if ((signed)angle1 < (signed)angle2) { /* it's "behind" us */ + /* Either angle1 or angle2 is behind us, so it doesn't matter if we + * change it to the corect sign + */ + if ((angle1 >= ANG180) && (angle1 < ANG270)) + angle1 = INT_MAX; /* which is ANG180-1 */ + else + angle2 = INT_MIN; + } + + if ((signed)angle2 >= (signed)clipangle) return false; // Both off left edge + if ((signed)angle1 <= -(signed)clipangle) return false; // Both off right edge + if ((signed)angle1 >= (signed)clipangle) angle1 = clipangle; // Clip at left edge + if ((signed)angle2 <= -(signed)clipangle) angle2 = 0-clipangle; // Clip at right edge + + // Find the first clippost + // that touches the source post + // (adjacent pixels are touching). + angle1 = (angle1+ANG90)>>ANGLETOFINESHIFT; + angle2 = (angle2+ANG90)>>ANGLETOFINESHIFT; + { + int sx1 = viewangletox[angle1]; + int sx2 = viewangletox[angle2]; + // const cliprange_t *start; + + // Does not cross a pixel. + if (sx1 == sx2) + return false; + + if (!memchr(solidcol+sx1, 0, sx2-sx1)) return false; + // All columns it covers are already solidly covered + } + + return true; +} + +// +// R_Subsector +// Determine floor/ceiling planes. +// Add sprites of things in sector. +// Draw one or more line segments. +// +// killough 1/31/98 -- made static, polished + +static void R_Subsector(int num) +{ + int count; + seg_t *line; + subsector_t *sub; + sector_t tempsec; // killough 3/7/98: deep water hack + int floorlightlevel; // killough 3/16/98: set floor lightlevel + int ceilinglightlevel; // killough 4/11/98 + +#ifdef RANGECHECK + if (num>=numsubsectors) + I_Error ("R_Subsector: ss %i with numss = %i", num, numsubsectors); +#endif + + sub = &subsectors[num]; + frontsector = sub->sector; + count = sub->numlines; + line = &segs[sub->firstline]; + + // killough 3/8/98, 4/4/98: Deep water / fake ceiling effect + frontsector = R_FakeFlat(frontsector, &tempsec, &floorlightlevel, + &ceilinglightlevel, false); // killough 4/11/98 + + // killough 3/7/98: Add (x,y) offsets to flats, add deep water check + // killough 3/16/98: add floorlightlevel + // killough 10/98: add support for skies transferred from sidedefs + + floorplane = frontsector->floorheight < viewz || // killough 3/7/98 + (frontsector->heightsec != -1 && + sectors[frontsector->heightsec].ceilingpic == skyflatnum) ? + R_FindPlane(frontsector->floorheight, + frontsector->floorpic == skyflatnum && // kilough 10/98 + frontsector->sky & PL_SKYFLAT ? frontsector->sky : + frontsector->floorpic, + floorlightlevel, // killough 3/16/98 + frontsector->floor_xoffs, // killough 3/7/98 + frontsector->floor_yoffs + ) : NULL; + + ceilingplane = frontsector->ceilingheight > viewz || + frontsector->ceilingpic == skyflatnum || + (frontsector->heightsec != -1 && + sectors[frontsector->heightsec].floorpic == skyflatnum) ? + R_FindPlane(frontsector->ceilingheight, // killough 3/8/98 + frontsector->ceilingpic == skyflatnum && // kilough 10/98 + frontsector->sky & PL_SKYFLAT ? frontsector->sky : + frontsector->ceilingpic, + ceilinglightlevel, // killough 4/11/98 + frontsector->ceiling_xoffs, // killough 3/7/98 + frontsector->ceiling_yoffs + ) : NULL; + + // killough 9/18/98: Fix underwater slowdown, by passing real sector + // instead of fake one. Improve sprite lighting by basing sprite + // lightlevels on floor & ceiling lightlevels in the surrounding area. + // + // 10/98 killough: + // + // NOTE: TeamTNT fixed this bug incorrectly, messing up sprite lighting!!! + // That is part of the 242 effect!!! If you simply pass sub->sector to + // the old code you will not get correct lighting for underwater sprites!!! + // Either you must pass the fake sector and handle validcount here, on the + // real sector, or you must account for the lighting in some other way, + // like passing it as an argument. + + R_AddSprites(sub, (floorlightlevel+ceilinglightlevel)/2); + while (count--) + { + if (line->miniseg == false) + R_AddLine (line); + line++; + curline = NULL; /* cph 2001/11/18 - must clear curline now we're done with it, so R_ColourMap doesn't try using it for other things */ + } +} + +// +// RenderBSPNode +// Renders all subsectors below a given node, +// traversing subtree recursively. +// Just call with BSP root. +// +// killough 5/2/98: reformatted, removed tail recursion + +void R_RenderBSPNode(int bspnum) +{ + while (!(bspnum & NF_SUBSECTOR)) // Found a subsector? + { + const node_t *bsp = &nodes[bspnum]; + + // Decide which side the view point is on. + int side = R_PointOnSide(viewx, viewy, bsp); + // Recursively divide front space. + R_RenderBSPNode(bsp->children[side]); + + // Possibly divide back space. + + if (!R_CheckBBox(bsp->bbox[side^1])) + return; + + bspnum = bsp->children[side^1]; + } + R_Subsector(bspnum == -1 ? 0 : bspnum & ~NF_SUBSECTOR); +} diff --git a/components/doom/prboom/r_bsp.h b/components/doom/prboom/r_bsp.h new file mode 100644 index 0000000..4ba9190 --- /dev/null +++ b/components/doom/prboom/r_bsp.h @@ -0,0 +1,64 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Refresh module, BSP traversal and handling. + * + *-----------------------------------------------------------------------------*/ + +#ifndef __R_BSP__ +#define __R_BSP__ + +#ifdef __GNUG__ +#pragma interface +#endif + +extern seg_t *curline; +extern side_t *sidedef; +extern line_t *linedef; +extern sector_t *frontsector; +extern sector_t *backsector; + +/* old code -- killough: + * extern drawseg_t drawsegs[MAXDRAWSEGS]; + * new code -- killough: */ +extern drawseg_t *drawsegs; +extern unsigned maxdrawsegs; + +extern byte solidcol[MAX_SCREENWIDTH]; + +extern drawseg_t *ds_p; + +void R_ClearClipSegs(void); +void R_ClearDrawSegs(void); +void R_RenderBSPNode(int bspnum); + +/* killough 4/13/98: fake floors/ceilings for deep water / fake ceilings: */ +sector_t *R_FakeFlat(sector_t *, sector_t *, int *, int *, boolean); + +#endif diff --git a/components/doom/prboom/r_data.c b/components/doom/prboom/r_data.c new file mode 100644 index 0000000..52fc051 --- /dev/null +++ b/components/doom/prboom/r_data.c @@ -0,0 +1,704 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2002 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Preparation of data for rendering, + * generation of lookups, caching, retrieval by name. + * + *-----------------------------------------------------------------------------*/ + +#include "doomstat.h" +#include "w_wad.h" +#include "r_draw.h" +#include "r_main.h" +#include "r_sky.h" +#include "i_system.h" +#include "r_bsp.h" +#include "r_things.h" +#include "p_tick.h" +#include "lprintf.h" // jff 08/03/98 - declaration of lprintf +#include "p_tick.h" + +// +// Graphics. +// DOOM graphics for walls and sprites +// is stored in vertical runs of opaque pixels (posts). +// A column is composed of zero or more posts, +// a patch or sprite is composed of zero or more columns. +// + +// +// Texture definition. +// Each texture is composed of one or more patches, +// with patches being lumps stored in the WAD. +// The lumps are referenced by number, and patched +// into the rectangular texture space using origin +// and possibly other attributes. +// + +typedef struct +{ + short originx; + short originy; + short patch; + short stepdir; // unused in Doom but might be used in Phase 2 Boom + short colormap; // unused in Doom but might be used in Phase 2 Boom +} PACKEDATTR mappatch_t; + + +typedef struct +{ + char name[8]; + char pad2[4]; // unused + short width; + short height; + char pad[4]; // unused in Doom but might be used in Boom Phase 2 + short patchcount; + mappatch_t patches[1]; +} PACKEDATTR maptexture_t; + +// A maptexturedef_t describes a rectangular texture, which is composed +// of one or more mappatch_t structures that arrange graphic patches. + +// killough 4/17/98: make firstcolormaplump,lastcolormaplump external +int firstcolormaplump, lastcolormaplump; // killough 4/17/98 + +int firstflat, lastflat, numflats; +int firstspritelump, lastspritelump, numspritelumps; +int numtextures; +texture_t **textures; // proff - 04/05/2000 removed static for OpenGL +fixed_t *textureheight; //needed for texture pegging (and TFE fix - killough) +int *flattranslation; // for global animation +int *texturetranslation; + +// +// R_GetTextureColumn +// + +const byte *R_GetTextureColumn(const rpatch_t *texpatch, int col) { + while (col < 0) + col += texpatch->width; + col &= texpatch->widthmask; + + return texpatch->columns[col].pixels; +} + +// +// R_InitTextures +// Initializes the texture list +// with the textures from the world map. +// + +static void R_InitTextures (void) +{ + const maptexture_t *mtexture; + texture_t *texture; + const mappatch_t *mpatch; + texpatch_t *patch; + int i, j; + int maptex_lump[2] = {-1, -1}; + const int *maptex; + const int *maptex1, *maptex2; + char name[9]; + int names_lump; // cph - new wad lump handling + const char *names; // cph - + const char *name_p;// const*'s + int *patchlookup; + int totalwidth; + int nummappatches; + int offset; + int maxoff, maxoff2; + int numtextures1, numtextures2; + const int *directory; + int errors = 0; + + // Load the patch names from pnames.lmp. + name[8] = 0; + names = W_CacheLumpNum(names_lump = W_GetNumForName("PNAMES")); + nummappatches = LONG(*((const int *)names)); + name_p = names+4; + patchlookup = malloc(nummappatches*sizeof(*patchlookup)); // killough + + for (i=0 ; i maxoff) + I_Error("R_InitTextures: Bad texture directory"); + + mtexture = (const maptexture_t *) ( (const byte *)maptex + offset); + + texture = textures[i] = + Z_Malloc(sizeof(texture_t) + + sizeof(texpatch_t)*(SHORT(mtexture->patchcount)-1), + PU_STATIC, 0); + + texture->width = SHORT(mtexture->width); + texture->height = SHORT(mtexture->height); + texture->patchcount = SHORT(mtexture->patchcount); + + /* Mattias Engdeg�rd emailed me of the following explenation of + * why memcpy doesnt work on some systems: + * "I suppose it is the mad unaligned allocation + * going on (and which gcc in some way manages to cope with + * through the __attribute__ ((packed))), and which it forgets + * when optimizing memcpy (to a single word move) since it appears + * to be aligned. Technically a gcc bug, but I can't blame it when + * it's stressed with that amount of + * non-standard nonsense." + * So in short the unaligned struct confuses gcc's optimizer so + * i took the memcpy out alltogether to avoid future problems-Jess + */ + /* The above was #ifndef SPARC, but i got a mail from + * Putera Joseph F NPRI containing: + * I had to use the memcpy function on a sparc machine. The + * other one would give me a core dump. + * cph - I find it hard to believe that sparc memcpy is broken, + * but I don't believe the pointers to memcpy have to be aligned + * either. Use fast memcpy on other machines anyway. + */ +/* + proff - I took this out, because Oli Kraus (olikraus@yahoo.com) told + me the memcpy produced a buserror. Since this function isn't time- + critical I'm using the for loop now. +*/ +/* +#ifndef GCC + memcpy(texture->name, mtexture->name, sizeof(texture->name)); +#else +*/ + { + int j; + for(j=0;jname);j++) + texture->name[j]=mtexture->name[j]; + } +/* #endif */ + + mpatch = mtexture->patches; + patch = texture->patches; + + for (j=0 ; jpatchcount ; j++, mpatch++, patch++) + { + patch->originx = SHORT(mpatch->originx); + patch->originy = SHORT(mpatch->originy); + patch->patch = patchlookup[SHORT(mpatch->patch)]; + if (patch->patch == -1) + { + //jff 8/3/98 use logical output routine + lprintf(LO_ERROR,"\nR_InitTextures: Missing patch %d in texture %.8s", + SHORT(mpatch->patch), texture->name); // killough 4/17/98 + ++errors; + } + } + + for (j=1; j*2 <= texture->width; j<<=1) + ; + texture->widthmask = j-1; + textureheight[i] = texture->height<width; + } + + free(patchlookup); // killough + + for (i=0; i<2; i++) // cph - release the TEXTUREx lumps + if (maptex_lump[i] != -1) + W_UnlockLumpNum(maptex_lump[i]); + + if (errors) + I_Error("R_InitTextures: %d errors", errors); + + // Precalculate whatever possible. + if (devparm) // cph - If in development mode, generate now so all errors are found at once + for (i=0 ; iindex = -1; + while (--i >= 0) + { + int j = W_LumpNameHash(textures[i]->name) % (unsigned) numtextures; + textures[i]->next = textures[j]->index; // Prepend to chain + textures[j]->index = i; + } +} + +// +// R_InitFlats +// +static void R_InitFlats(void) +{ + int i; + + firstflat = W_GetNumForName("F_START") + 1; + lastflat = W_GetNumForName("F_END") - 1; + numflats = lastflat - firstflat + 1; + + // Create translation table for global animation. + // killough 4/9/98: make column offsets 32-bit; + // clean up malloc-ing to use sizeof + + flattranslation = + Z_Malloc((numflats+1)*sizeof(*flattranslation), PU_STATIC, 0); + + for (i=0 ; i 1 && strncasecmp(name, "COLORMAP", 8)) // COLORMAP predefined to return 0 + if ((i = W_CheckNumForNameNs(name, ns_colormaps)) != -1) + i -= firstcolormaplump; + return i; +} + +/* + * R_ColourMap + * + * cph 2001/11/17 - unify colour maping logic in a single place; + * obsoletes old c_scalelight stuff + */ + +static inline int between(int l,int u,int x) +{ return (l > x ? l : x > u ? u : x); } + +const lighttable_t* R_ColourMap(int lightlevel, fixed_t spryscale) +{ + if (fixedcolormap) + return fixedcolormap; + + if (curline) { + if (curline->v1->y == curline->v2->y) + lightlevel -= 1 << LIGHTSEGSHIFT; + else if (curline->v1->x == curline->v2->x) + lightlevel += 1 << LIGHTSEGSHIFT; + } + lightlevel += extralight << LIGHTSEGSHIFT; + + /* cph 2001/11/17 - + * Work out what colour map to use, remembering to clamp it to the number of + * colour maps we actually have. This formula is basically the one from the + * original source, just brought into one place. The main difference is it + * throws away less precision in the lightlevel half, so it supports 32 + * light levels in WADs compared to Doom's 16. + * + * Note we can make it more accurate if we want - we should keep all the + * precision until the final step, so slight scale differences can count + * against slight light level variations. + */ + return fullcolormap + between(0,NUMCOLORMAPS-1, + ((256-lightlevel)*2*NUMCOLORMAPS/256) - 4 + - (FixedMul(spryscale,pspriteiscale)/2 >> LIGHTSCALESHIFT) + )*256; +} + +// +// R_InitTranMap +// +// Initialize translucency filter map +// +// By Lee Killough 2/21/98 +// + +int tran_filter_pct = 66; // filter percent + +#define TSC 12 /* number of fixed point digits in filter percent */ + +void R_InitTranMap(int progress) +{ + int lump; + + // If a tranlucency filter map lump is present, use it + if ((lump = W_CheckNumForName("TRANMAP")) != -1) + { + lprintf(LO_INFO, "R_InitTranMap: Using TRANMAP(%d) directly\n", lump); + main_tranmap = W_CacheLumpNum(lump); + } + // Compose a default transparent filter map based on PLAYPAL. + else if ((lump = W_CheckNumForName("PLAYPAL")) != -1) + { + lprintf(LO_INFO, "R_InitTranMap: Gen from PLAYPAL(%d)...\n", lump); + + const struct PACKEDATTR {byte r, g, b;} *pal = W_CacheLumpNum(lump); + byte *my_tranmap = Z_Malloc(256*256, PU_STATIC, 0); + int w1 = (tran_filter_pct << TSC) / 100; + int w2 = (1 << TSC) - w1; + int total[256]; + + for (int i = 0; i < 256; ++i) + { + int r = pal[i].r; + int g = pal[i].g; + int b = pal[i].b; + total[i] = (r * r + g * g + b * b) << (TSC-1); + } + + // Next, compute all entries using minimum arithmetic. + byte *tp = my_tranmap; + for (int i = 0; i < 256; ++i) + { + int r1 = pal[i].r * w2; + int g1 = pal[i].g * w2; + int b1 = pal[i].b * w2; + + for (int j = 0; j < 256; j++) + { + int r = r1 + (pal[j].r * w1); + int g = g1 + (pal[j].g * w1); + int b = b1 + (pal[j].b * w1); + int bc = 0, best = INT_MAX; + for (int color = 255; color >= 0; --color) + { + int err = total[color] - pal[color].r*r - pal[color].g*g - pal[color].b*b; + if (err < best) + best = err, bc = color; + } + *tp++ = bc; + } + } + + main_tranmap = my_tranmap; + + W_UnlockLumpName("PLAYPAL"); + + lprintf(LO_INFO, "done.\n"); + } +} + +// +// R_InitData +// Locates all the lumps +// that will be used by all views +// Must be called after W_Init. +// + +void R_InitData(void) +{ + lprintf(LO_INFO, "R_InitData: Textures\n"); + R_InitTextures(); + lprintf(LO_INFO, "R_InitData: Flats\n"); + R_InitFlats(); + lprintf(LO_INFO, "R_InitData: Sprites\n"); + R_InitSpriteLumps(); + lprintf(LO_INFO, "R_InitData: Translucency\n"); + if (default_translucency) // killough 3/1/98 + R_InitTranMap(1); // killough 2/21/98, 3/6/98 + lprintf(LO_INFO, "R_InitData: Colourmaps\n"); + R_InitColormaps(); // killough 3/20/98 +} + +// +// R_FlatNumForName +// Retrieval, get a flat number for a flat name. +// +// killough 4/17/98: changed to use ns_flats namespace +// + +int R_FlatNumForName(const char *name) // killough -- const added +{ + int i = W_CheckNumForNameNs(name, ns_flats); + if (i == -1) + I_Error("R_FlatNumForName: %.8s not found", name); + return i - firstflat; +} + +// +// R_CheckTextureNumForName +// Check whether texture is available. +// Filter out NoTexture indicator. +// +// Rewritten by Lee Killough to use hash table for fast lookup. Considerably +// reduces the time needed to start new levels. See w_wad.c for comments on +// the hashing algorithm, which is also used for lump searches. +// +// killough 1/21/98, 1/31/98 +// + +int PUREFUNC R_CheckTextureNumForName(const char *name) +{ + int i = NO_TEXTURE; + if (*name != '-') // "NoTexture" marker. + { + i = textures[W_LumpNameHash(name) % (unsigned) numtextures]->index; + while (i >= 0 && strncasecmp(textures[i]->name,name,8)) + i = textures[i]->next; + } + return i; +} + +// +// R_TextureNumForName +// Calls R_CheckTextureNumForName, +// aborts with error message. +// + +int PUREFUNC R_TextureNumForName(const char *name) // const added -- killough +{ + int i = R_CheckTextureNumForName(name); + if (i == -1) + I_Error("R_TextureNumForName: %.8s not found", name); + return i; +} + +// +// R_SafeTextureNumForName +// Calls R_CheckTextureNumForName, and changes any error to NO_TEXTURE +int PUREFUNC R_SafeTextureNumForName(const char *name, int snum) +{ + int i = R_CheckTextureNumForName(name); + if (i == -1) { + i = NO_TEXTURE; // e6y - return "no texture" + lprintf(LO_DEBUG,"bad texture '%s' in sidedef %d\n",name,snum); + } + return i; +} + +// +// R_PrecacheLevel +// Preloads all relevant graphics for the level. +// +// Totally rewritten by Lee Killough to use less memory, +// to avoid using alloca(), and to improve performance. +// cph - new wad lump handling, calls cache functions but acquires no locks + +static inline void precache_lump(int l) +{ + W_CacheLumpNum(l); W_UnlockLumpNum(l); +} + +void R_PrecacheLevel(void) +{ + if (demoplayback) + return; + + size_t maxitems = MAX(numtextures, MAX(numflats, numsprites)); + byte hitlist[maxitems]; + size_t count = 0; + + // Precache flats. + memset(hitlist, 0, maxitems); + count = 0; + + for (int i = numsectors; --i >= 0; ) + { + hitlist[sectors[i].floorpic] = 1; + hitlist[sectors[i].ceilingpic] = 1; + } + + for (int i = numflats; --i >= 0; ) + { + if (hitlist[i]) + { + precache_lump(firstflat + i); + count++; + } + } + + lprintf(LO_INFO, "R_PrecacheLevel: pre-cached %d flats\n", count); + + + // Precache textures. + memset(hitlist, 0, maxitems); + count = 0; + + for (int i = numsides; --i >= 0; ) + { + hitlist[sides[i].bottomtexture] = 1; + hitlist[sides[i].toptexture] = 1; + hitlist[sides[i].midtexture] = 1; + } + hitlist[skytexture] = 1; + + for (int i = numtextures; --i >= 0; ) + if (hitlist[i]) + { + texture_t *texture = textures[i]; + for (int j = texture->patchcount; --j >= 0; ) + { + precache_lump(texture->patches[j].patch); + count++; + } + } + + lprintf(LO_INFO, "R_PrecacheLevel: pre-cached %d textures\n", count); + + + // Precache sprites. + memset(hitlist, 0, maxitems); + count = 0; + + thinker_t *th = NULL; + while ((th = P_NextThinker(th,th_all))) + if (th->function == P_MobjThinker) + hitlist[((mobj_t *)th)->sprite] = 1; + + for (int i = numsprites; --i >= 0; ) + if (hitlist[i]) + { + for (int j = sprites[i].numframes; --j >= 0; ) + { + short *sflump = sprites[i].spriteframes[j].lump; + for (int k = 7; --k >= 0; ) + { + precache_lump(firstspritelump + sflump[k]); + count++; + } + } + } + + lprintf(LO_INFO, "R_PrecacheLevel: pre-cached %d sprites\n", count); +} + +// Proff - Added for OpenGL +void R_SetPatchNum(patchnum_t *patchnum, const char *name) +{ + const rpatch_t *patch = R_CachePatchName(name); + patchnum->width = patch->width; + patchnum->height = patch->height; + patchnum->leftoffset = patch->leftoffset; + patchnum->topoffset = patch->topoffset; + patchnum->lumpnum = W_GetNumForName(name); + R_UnlockPatchName(name); +} diff --git a/components/doom/prboom/r_data.h b/components/doom/prboom/r_data.h new file mode 100644 index 0000000..1d386af --- /dev/null +++ b/components/doom/prboom/r_data.h @@ -0,0 +1,109 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Refresh module, data I/O, caching, retrieval of graphics + * by name. + * + *-----------------------------------------------------------------------------*/ + + +#ifndef __R_DATA__ +#define __R_DATA__ + +#include "r_defs.h" +#include "r_state.h" +#include "r_patch.h" + +#ifdef __GNUG__ +#pragma interface +#endif + +// A single patch from a texture definition, basically +// a rectangular area within the texture rectangle. +typedef struct +{ + int originx, originy; // Block origin, which has already accounted + int patch; // for the internal origin of the patch. +} texpatch_t; + +// +// Texture definition. +// A DOOM wall texture is a list of patches +// which are to be combined in a predefined order. +// + +typedef struct +{ + char name[8]; // Keep name for switch changing, etc. + short next, index; // killough 1/31/98: used in hashing algorithm + // CPhipps - moved arrays with per-texture entries to elements here + unsigned widthmask; + // CPhipps - end of additions + short width, height; + short patchcount; // All the patches[patchcount] are drawn + texpatch_t patches[1]; // back-to-front into the cached texture. +} texture_t; + +extern int numtextures; +extern texture_t **textures; + + +const byte *R_GetTextureColumn(const rpatch_t *texpatch, int col); + + +// I/O, setting up the stuff. +void R_InitData (void); +void R_PrecacheLevel (void); + + +// Retrieval. +// Floor/ceiling opaque texture tiles, +// lookup by name. For animation? +int R_FlatNumForName (const char* name); // killough -- const added + + +// R_*TextureNumForName returns the texture number for the texture name, or NO_TEXTURE if +// there is no texture (i.e. "-") specified. +/* cph 2006/07/23 - defined value for no-texture marker (texture "-" in the WAD file) */ +#define NO_TEXTURE 0 +int PUREFUNC R_TextureNumForName (const char *name); // killough -- const added; cph - now PUREFUNC +int PUREFUNC R_SafeTextureNumForName (const char *name, int snum); +int PUREFUNC R_CheckTextureNumForName (const char *name); + +void R_InitTranMap(int); // killough 3/6/98: translucency initialization +int R_ColormapNumForName(const char *name); // killough 4/4/98 +/* cph 2001/11/17 - new func to do lighting calcs and get suitable colour map */ +const lighttable_t* R_ColourMap(int lightlevel, fixed_t spryscale); + +extern const byte *main_tranmap, *tranmap; + +/* Proff - Added for OpenGL - cph - const char* param */ +void R_SetPatchNum(patchnum_t *patchnum, const char *name); + +#endif diff --git a/components/doom/prboom/r_defs.h b/components/doom/prboom/r_defs.h new file mode 100644 index 0000000..4d07600 --- /dev/null +++ b/components/doom/prboom/r_defs.h @@ -0,0 +1,422 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Refresh/rendering module, shared data struct definitions. + * + *-----------------------------------------------------------------------------*/ + +#ifndef __R_DEFS__ +#define __R_DEFS__ + +// Screenwidth. +#include "doomdef.h" + +// Some more or less basic data types +// we depend on. +#include "m_fixed.h" + +// We rely on the thinker data struct +// to handle sound origins in sectors. +#include "d_think.h" + +// SECTORS do store MObjs anyway. +#include "p_mobj.h" + +#ifdef __GNUG__ +#pragma interface +#endif + +// Silhouette, needed for clipping Segs (mainly) +// and sprites representing things. +#define SIL_NONE 0 +#define SIL_BOTTOM 1 +#define SIL_TOP 2 +#define SIL_BOTH 3 + +#define MAXDRAWSEGS 256 + +// +// INTERNAL MAP TYPES +// used by play and refresh +// + +// +// Your plain vanilla vertex. +// Note: transformed values not buffered locally, +// like some DOOM-alikes ("wt", "WebView") do. +// +typedef struct +{ + fixed_t x, y; +} vertex_t; + +// Each sector has a degenmobj_t in its center for sound origin purposes. +typedef struct +{ + thinker_t thinker; // not used for anything + fixed_t x, y, z; +} degenmobj_t; + +// +// The SECTORS record, at runtime. +// Stores things/mobjs. +// + +typedef struct +{ + fixed_t floorheight; + fixed_t ceilingheight; + short nexttag,firsttag; // killough 1/30/98: improves searches for tags. + int soundtraversed; // 0 = untraversed, 1,2 = sndlines-1 + mobj_t *soundtarget; // thing that made a sound (or null) + int blockbox[4]; // mapblock bounding box for height changes + degenmobj_t soundorg; // origin for any sounds played by the sector + int validcount; // if == validcount, already checked + mobj_t *thinglist; // list of mobjs in sector + + /* killough 8/28/98: friction is a sector property, not an mobj property. + * these fields used to be in mobj_t, but presented performance problems + * when processed as mobj properties. Fix is to make them sector properties. + */ + int friction,movefactor; + + // thinker_t for reversable actions + void *floordata; // jff 2/22/98 make thinkers on + void *ceilingdata; // floors, ceilings, lighting, + void *lightingdata; // independent of one another + + // jff 2/26/98 lockout machinery for stairbuilding + int stairlock; // -2 on first locked -1 after thinker done 0 normally + int prevsec; // -1 or number of sector for previous step + int nextsec; // -1 or number of next step sector + + // killough 3/7/98: support flat heights drawn at another sector's heights + int heightsec; // other sector, or -1 if no other sector + + int bottommap, midmap, topmap; // killough 4/4/98: dynamic colormaps + + // list of mobjs that are at least partially in the sector + // thinglist is a subset of touching_thinglist + struct msecnode_s *touching_thinglist; // phares 3/14/98 + + int linecount; + struct line_s **lines; + + // killough 10/98: support skies coming from sidedefs. Allows scrolling + // skies and other effects. No "level info" kind of lump is needed, + // because you can use an arbitrary number of skies per level with this + // method. This field only applies when skyflatnum is used for floorpic + // or ceilingpic, because the rest of Doom needs to know which is sky + // and which isn't, etc. + + int sky; + + // killough 3/7/98: floor and ceiling texture offsets + fixed_t floor_xoffs, floor_yoffs; + fixed_t ceiling_xoffs, ceiling_yoffs; + + // killough 4/11/98: support for lightlevels coming from another sector + int floorlightsec, ceilinglightsec; + + short floorpic; + short ceilingpic; + short lightlevel; + short special; + short oldspecial; //jff 2/16/98 remembers if sector WAS secret (automap) + short tag; +} sector_t; + +// +// The SideDef. +// + +typedef struct +{ + fixed_t textureoffset; // add this to the calculated texture column + fixed_t rowoffset; // add this to the calculated texture top + short toptexture; // Texture indices. We do not maintain names here. + short bottomtexture; + short midtexture; + sector_t* sector; // Sector the SideDef is facing. + + // killough 4/4/98, 4/11/98: highest referencing special linedef's type, + // or lump number of special effect. Allows texture names to be overloaded + // for other functions. + + int special; + +} side_t; + +// +// Move clipping aid for LineDefs. +// +typedef enum +{ + ST_HORIZONTAL, + ST_VERTICAL, + ST_POSITIVE, + ST_NEGATIVE +} slopetype_t; + +typedef enum +{ // cph: + RF_TOP_TILE = 1, // Upper texture needs tiling + RF_MID_TILE = 2, // Mid texture needs tiling + RF_BOT_TILE = 4, // Lower texture needs tiling + RF_IGNORE = 8, // Renderer can skip this line + RF_CLOSED =16, // Line blocks view +} r_flags_t; + +typedef struct line_s +{ + vertex_t *v1, *v2; // Vertices, from v1 to v2. + fixed_t dx, dy; // Precalculated v2 - v1 for side checking. + unsigned short flags; // Animation related. + short special; + short tag; + unsigned short sidenum[2]; // Visual appearance: SideDefs. + fixed_t bbox[4]; // A bounding box, for the linedef's extent + slopetype_t slopetype; // To aid move clipping. + sector_t *frontsector; // Front and back sector. + sector_t *backsector; + int validcount; // if == validcount, already checked + short firsttag,nexttag;// killough 4/17/98: improves searches for tags. + int r_validcount; // cph: if == gametic, r_flags already done + short tranlump; // killough 4/11/98: translucency filter, -1 == none + short r_flags; // r_flags_t + degenmobj_t soundorg; // sound origin for switches/buttons +} line_t; + + +// phares 3/14/98 +// +// Sector list node showing all sectors an object appears in. +// +// There are two threads that flow through these nodes. The first thread +// starts at touching_thinglist in a sector_t and flows through the m_snext +// links to find all mobjs that are entirely or partially in the sector. +// The second thread starts at touching_sectorlist in an mobj_t and flows +// through the m_tnext links to find all sectors a thing touches. This is +// useful when applying friction or push effects to sectors. These effects +// can be done as thinkers that act upon all objects touching their sectors. +// As an mobj moves through the world, these nodes are created and +// destroyed, with the links changed appropriately. +// +// For the links, NULL means top or end of list. + +typedef struct msecnode_s +{ + sector_t *m_sector; // a sector containing this object + struct mobj_s *m_thing; // this object + struct msecnode_s *m_tprev; // prev msecnode_t for this thing + struct msecnode_s *m_tnext; // next msecnode_t for this thing + struct msecnode_s *m_sprev; // prev msecnode_t for this sector + struct msecnode_s *m_snext; // next msecnode_t for this sector + boolean visited; // killough 4/4/98, 4/7/98: used in search algorithms +} msecnode_t; + +// +// The LineSeg. +// +typedef struct +{ + vertex_t *v1, *v2; + fixed_t offset; + angle_t angle; + side_t* sidedef; + line_t* linedef; + + boolean miniseg; + + // Sector references. + // Could be retrieved from linedef, too + // (but that would be slower -- killough) + // backsector is NULL for one sided lines + + sector_t *frontsector, *backsector; +} seg_t; + + +// +// A SubSector. +// References a Sector. +// Basically, this is a list of LineSegs, +// indicating the visible walls that define +// (all or some) sides of a convex BSP leaf. +// + +typedef struct subsector_s +{ + sector_t *sector; + unsigned short numlines, firstline; +} subsector_t; + + +// +// BSP node. +// +typedef struct +{ + fixed_t x, y, dx, dy; // Partition line. + fixed_t bbox[2][4]; // Bounding box for each child. + unsigned short children[2]; // If NF_SUBSECTOR its a subsector. +} node_t; + +// +// OTHER TYPES +// + +// This could be wider for >8 bit display. +// Indeed, true color support is posibble +// precalculating 24bpp lightmap/colormap LUT. +// from darkening PLAYPAL to all black. +// Could use even more than 32 levels. + +typedef byte lighttable_t; + +// +// Masked 2s linedefs +// + +typedef struct drawseg_s +{ + seg_t *curline; + int x1, x2; + fixed_t scale1, scale2, scalestep; + int silhouette; // 0=none, 1=bottom, 2=top, 3=both + fixed_t bsilheight; // do not clip sprites above this + fixed_t tsilheight; // do not clip sprites below this + + // Added for filtering (fractional texture u coord) support - POPE + fixed_t rw_offset, rw_distance, rw_centerangle; + + // Pointers to lists for sprite clipping, + // all three adjusted so [x1] is first value. + + int *sprtopclip, *sprbottomclip, *maskedtexturecol; // dropoff overflow +} drawseg_t; + +// proff: Added for OpenGL +typedef struct +{ + int width,height; + int leftoffset,topoffset; + int lumpnum; +} patchnum_t; + +// +// A vissprite_t is a thing that will be drawn during a refresh. +// i.e. a sprite object that is partly visible. +// + +typedef struct vissprite_s +{ + mobj_t *thing; + boolean flip; + int x1, x2; + fixed_t gx, gy; // for line side calculation + fixed_t gz, gzt; // global bottom / top for silhouette clipping + fixed_t startfrac; // horizontal position of x1 + fixed_t scale; + fixed_t xiscale; // negative if flipped + fixed_t texturemid; + int patch; + uint_64_t mobjflags; + + // for color translation and shadow draw, maxbright frames as well + const lighttable_t *colormap; + + // killough 3/27/98: height sector for underwater/fake ceiling support + int heightsec; + + boolean isplayersprite; +} vissprite_t; + +// +// Sprites are patches with a special naming convention +// so they can be recognized by R_InitSprites. +// The base name is NNNNFx or NNNNFxFx, with +// x indicating the rotation, x = 0, 1-7. +// The sprite and frame specified by a thing_t +// is range checked at run time. +// A sprite is a patch_t that is assumed to represent +// a three dimensional object and may have multiple +// rotations pre drawn. +// Horizontal flipping is used to save space, +// thus NNNNF2F5 defines a mirrored patch. +// Some sprites will only have one picture used +// for all views: NNNNF0 +// + +typedef struct +{ + // If false use 0 for any position. + // Note: as eight entries are available, + // we might as well insert the same name eight times. + boolean rotate; + + // Lump to use for view angles 0-7. + short lump[8]; + + // Flip bit (1 = flip) to use for view angles 0-7. + byte flip[8]; + +} spriteframe_t; + +// +// A sprite definition: +// a number of animation frames. +// + +typedef struct +{ + int numframes; + spriteframe_t *spriteframes; +} spritedef_t; + +// +// Now what is a visplane, anyway? +// +// Go to http://classicgaming.com/doom/editing/ to find out -- killough +// + +typedef struct visplane +{ + struct visplane *next; // Next visplane in hash chain -- killough + int picnum, lightlevel, minx, maxx; + fixed_t height; + fixed_t xoffs, yoffs; // killough 2/28/98: Support scrolling flats + unsigned int pad1; // leave pads for [minx-1]/[maxx+1] + unsigned int top[MAX_SCREENWIDTH]; + unsigned int pad2, pad3; // killough 2/8/98, 4/25/98 + unsigned int bottom[MAX_SCREENWIDTH]; + unsigned int pad4; // dropoff overflow +} visplane_t; + +#endif diff --git a/components/doom/prboom/r_demo.c b/components/doom/prboom/r_demo.c new file mode 100644 index 0000000..3030b7b --- /dev/null +++ b/components/doom/prboom/r_demo.c @@ -0,0 +1,88 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze, Andrey Budko + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Demo stuff + * + *--------------------------------------------------------------------- + */ + +#include "doomstat.h" +#include "r_demo.h" +#include "r_fps.h" + +int demo_smoothturns = false; +int demo_smoothturnsfactor = 6; + +static int smooth_playing_turns[SMOOTH_PLAYING_MAXFACTOR]; +static int_64_t smooth_playing_sum; +static int smooth_playing_index; +static angle_t smooth_playing_angle; + +void R_SmoothPlaying_Reset(player_t *player) +{ + if (demo_smoothturns && demoplayback) // && players + { + if (!player) + player = &players[displayplayer]; + + if (player==&players[displayplayer]) + { + smooth_playing_angle = players[displayplayer].mo->angle; + memset(smooth_playing_turns, 0, sizeof(smooth_playing_turns[0]) * SMOOTH_PLAYING_MAXFACTOR); + smooth_playing_sum = 0; + smooth_playing_index = 0; + } + } +} + +void R_SmoothPlaying_Add(int delta) +{ + if (demo_smoothturns && demoplayback) + { + smooth_playing_sum -= smooth_playing_turns[smooth_playing_index]; + smooth_playing_turns[smooth_playing_index] = delta; + smooth_playing_index = (smooth_playing_index + 1)%(demo_smoothturnsfactor); + smooth_playing_sum += delta; + smooth_playing_angle += (int)(smooth_playing_sum/(demo_smoothturnsfactor)); + } +} + +angle_t R_SmoothPlaying_Get(angle_t defangle) +{ + if (demo_smoothturns && demoplayback) + return smooth_playing_angle; + else + return defangle; +} + +void R_ResetAfterTeleport(player_t *player) +{ + R_ResetViewInterpolation(); + R_SmoothPlaying_Reset(player); +} diff --git a/components/doom/prboom/r_demo.h b/components/doom/prboom/r_demo.h new file mode 100644 index 0000000..e5be4cb --- /dev/null +++ b/components/doom/prboom/r_demo.h @@ -0,0 +1,45 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze, Andrey Budko + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Demo stuff + * + *--------------------------------------------------------------------- + */ + +#include "doomstat.h" + +#define SMOOTH_PLAYING_MAXFACTOR 16 + +extern int demo_smoothturns; +extern int demo_smoothturnsfactor; + +void R_SmoothPlaying_Reset(player_t *player); +void R_SmoothPlaying_Add(int delta); +angle_t R_SmoothPlaying_Get(angle_t defangle); +void R_ResetAfterTeleport(player_t *player); diff --git a/components/doom/prboom/r_draw.c b/components/doom/prboom/r_draw.c new file mode 100644 index 0000000..06b230d --- /dev/null +++ b/components/doom/prboom/r_draw.c @@ -0,0 +1,1139 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * The actual span/column drawing functions. + * Here find the main potential for optimization, + * e.g. inline assembly, different algorithms. + * + *-----------------------------------------------------------------------------*/ +// This is required because of macro hell +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#pragma GCC diagnostic ignored "-Wunused-variable" + +#include "doomstat.h" +#include "w_wad.h" +#include "r_main.h" +#include "r_draw.h" +#include "r_filter.h" +#include "v_video.h" +#include "st_stuff.h" +#include "g_game.h" +#include "am_map.h" +#include "lprintf.h" + +// +// All drawing to the view buffer is accomplished in this file. +// The other refresh files only know about ccordinates, +// not the architecture of the frame buffer. +// Conveniently, the frame buffer is a linear one, +// and we need only the base address, +// and the total size == width*height*depth/8., +// + +byte *viewimage; +int viewwidth; +int scaledviewwidth; +int viewheight; +int viewwindowx; +int viewwindowy; + +// Color tables for different players, +// translate a limited part to another +// (color ramps used for suit colors). +// + +// CPhipps - made const*'s +const byte *tranmap; // translucency filter maps 256x256 // phares +const byte *main_tranmap; // killough 4/11/98 + +// +// R_DrawColumn +// Source is the top of the column to scale. +// + +// SoM: OPTIMIZE for ANYRES +typedef enum +{ + COL_NONE, + COL_OPAQUE, + COL_TRANS, + COL_FLEXTRANS, + COL_FUZZ, + COL_FLEXADD +} columntype_e; + +static int temp_x = 0; +static int tempyl[4], tempyh[4]; +static byte byte_tempbuf[MAX_SCREENHEIGHT * 4]; +#ifndef NOTRUECOLOR +static unsigned short short_tempbuf[MAX_SCREENHEIGHT * 4]; +static unsigned int int_tempbuf[MAX_SCREENHEIGHT * 4]; +#endif +static int startx = 0; +static int temptype = COL_NONE; +static int commontop, commonbot; +static const byte *temptranmap = NULL; +// SoM 7-28-04: Fix the fuzz problem. +static const byte *tempfuzzmap; + +// +// Spectre/Invisibility. +// + +#define FUZZTABLE 50 +// proff 08/17/98: Changed for high-res +//#define FUZZOFF (SCREENWIDTH) +#define FUZZOFF 1 + +static const int fuzzoffset_org[FUZZTABLE] = { + FUZZOFF,-FUZZOFF,FUZZOFF,-FUZZOFF,FUZZOFF,FUZZOFF,-FUZZOFF, + FUZZOFF,FUZZOFF,-FUZZOFF,FUZZOFF,FUZZOFF,FUZZOFF,-FUZZOFF, + FUZZOFF,FUZZOFF,FUZZOFF,-FUZZOFF,-FUZZOFF,-FUZZOFF,-FUZZOFF, + FUZZOFF,-FUZZOFF,-FUZZOFF,FUZZOFF,FUZZOFF,FUZZOFF,FUZZOFF,-FUZZOFF, + FUZZOFF,-FUZZOFF,FUZZOFF,FUZZOFF,-FUZZOFF,-FUZZOFF,FUZZOFF, + FUZZOFF,-FUZZOFF,-FUZZOFF,-FUZZOFF,-FUZZOFF,FUZZOFF,FUZZOFF, + FUZZOFF,FUZZOFF,-FUZZOFF,FUZZOFF,FUZZOFF,-FUZZOFF,FUZZOFF +}; + +static int fuzzoffset[FUZZTABLE]; + +static int fuzzpos = 0; + +// render pipelines +#define RDC_STANDARD 1 +#define RDC_TRANSLUCENT 2 +#define RDC_TRANSLATED 4 +#define RDC_FUZZ 8 +// no color mapping +#define RDC_NOCOLMAP 16 +// filter modes +#define RDC_DITHERZ 32 +#define RDC_BILINEAR 64 +#define RDC_ROUNDED 128 + +draw_vars_t drawvars = { + NULL, // byte_topleft + NULL, // short_topleft + NULL, // int_topleft + 0, // byte_pitch + 0, // short_pitch + 0, // int_pitch + RDRAW_FILTER_POINT, // filterwall + RDRAW_FILTER_POINT, // filterfloor + RDRAW_FILTER_POINT, // filtersprite + RDRAW_FILTER_POINT, // filterz + RDRAW_FILTER_POINT, // filterpatch + + RDRAW_MASKEDCOLUMNEDGE_SQUARE, // sprite_edges + RDRAW_MASKEDCOLUMNEDGE_SQUARE, // patch_edges + + // 49152 = FRACUNIT * 0.75 + // 81920 = FRACUNIT * 1.25 + 49152 // mag_threshold +}; + +// +// Error functions that will abort if R_FlushColumns tries to flush +// columns without a column type. +// + +static void R_FlushWholeError(void) +{ + I_Error("R_FlushWholeColumns called without being initialized.\n"); +} + +static void R_FlushHTError(void) +{ + I_Error("R_FlushHTColumns called without being initialized.\n"); +} + +static void R_QuadFlushError(void) +{ + I_Error("R_FlushQuadColumn called without being initialized.\n"); +} + +static void (*R_FlushWholeColumns)(void) = R_FlushWholeError; +static void (*R_FlushHTColumns)(void) = R_FlushHTError; +static void (*R_FlushQuadColumn)(void) = R_QuadFlushError; + +static void R_FlushColumns(void) +{ + if(temp_x != 4 || commontop >= commonbot) + R_FlushWholeColumns(); + else + { + R_FlushHTColumns(); + R_FlushQuadColumn(); + } + temp_x = 0; +} + +// +// R_ResetColumnBuffer +// +// haleyjd 09/13/04: new function to call from main rendering loop +// which gets rid of the unnecessary reset of various variables during +// column drawing. +// +void R_ResetColumnBuffer(void) +{ + // haleyjd 10/06/05: this must not be done if temp_x == 0! + if(temp_x) + R_FlushColumns(); + temptype = COL_NONE; + R_FlushWholeColumns = R_FlushWholeError; + R_FlushHTColumns = R_FlushHTError; + R_FlushQuadColumn = R_QuadFlushError; +} + +#define R_DRAWCOLUMN_PIPELINE RDC_STANDARD +#define R_DRAWCOLUMN_PIPELINE_BITS 8 +#define R_FLUSHWHOLE_FUNCNAME R_FlushWhole8 +#define R_FLUSHHEADTAIL_FUNCNAME R_FlushHT8 +#define R_FLUSHQUAD_FUNCNAME R_FlushQuad8 +#include "r_drawflush.inl" + +#define R_DRAWCOLUMN_PIPELINE RDC_TRANSLUCENT +#define R_DRAWCOLUMN_PIPELINE_BITS 8 +#define R_FLUSHWHOLE_FUNCNAME R_FlushWholeTL8 +#define R_FLUSHHEADTAIL_FUNCNAME R_FlushHTTL8 +#define R_FLUSHQUAD_FUNCNAME R_FlushQuadTL8 +#include "r_drawflush.inl" + +#define R_DRAWCOLUMN_PIPELINE RDC_FUZZ +#define R_DRAWCOLUMN_PIPELINE_BITS 8 +#define R_FLUSHWHOLE_FUNCNAME R_FlushWholeFuzz8 +#define R_FLUSHHEADTAIL_FUNCNAME R_FlushHTFuzz8 +#define R_FLUSHQUAD_FUNCNAME R_FlushQuadFuzz8 +#include "r_drawflush.inl" + +#ifndef NOTRUECOLOR +#define R_DRAWCOLUMN_PIPELINE RDC_STANDARD +#define R_DRAWCOLUMN_PIPELINE_BITS 15 +#define R_FLUSHWHOLE_FUNCNAME R_FlushWhole15 +#define R_FLUSHHEADTAIL_FUNCNAME R_FlushHT15 +#define R_FLUSHQUAD_FUNCNAME R_FlushQuad15 +#include "r_drawflush.inl" + +#define R_DRAWCOLUMN_PIPELINE RDC_TRANSLUCENT +#define R_DRAWCOLUMN_PIPELINE_BITS 15 +#define R_FLUSHWHOLE_FUNCNAME R_FlushWholeTL15 +#define R_FLUSHHEADTAIL_FUNCNAME R_FlushHTTL15 +#define R_FLUSHQUAD_FUNCNAME R_FlushQuadTL15 +#include "r_drawflush.inl" + +#define R_DRAWCOLUMN_PIPELINE RDC_FUZZ +#define R_DRAWCOLUMN_PIPELINE_BITS 15 +#define R_FLUSHWHOLE_FUNCNAME R_FlushWholeFuzz15 +#define R_FLUSHHEADTAIL_FUNCNAME R_FlushHTFuzz15 +#define R_FLUSHQUAD_FUNCNAME R_FlushQuadFuzz15 +#include "r_drawflush.inl" + +#define R_DRAWCOLUMN_PIPELINE RDC_STANDARD +#define R_DRAWCOLUMN_PIPELINE_BITS 16 +#define R_FLUSHWHOLE_FUNCNAME R_FlushWhole16 +#define R_FLUSHHEADTAIL_FUNCNAME R_FlushHT16 +#define R_FLUSHQUAD_FUNCNAME R_FlushQuad16 +#include "r_drawflush.inl" + +#define R_DRAWCOLUMN_PIPELINE RDC_TRANSLUCENT +#define R_DRAWCOLUMN_PIPELINE_BITS 16 +#define R_FLUSHWHOLE_FUNCNAME R_FlushWholeTL16 +#define R_FLUSHHEADTAIL_FUNCNAME R_FlushHTTL16 +#define R_FLUSHQUAD_FUNCNAME R_FlushQuadTL16 +#include "r_drawflush.inl" + +#define R_DRAWCOLUMN_PIPELINE RDC_FUZZ +#define R_DRAWCOLUMN_PIPELINE_BITS 16 +#define R_FLUSHWHOLE_FUNCNAME R_FlushWholeFuzz16 +#define R_FLUSHHEADTAIL_FUNCNAME R_FlushHTFuzz16 +#define R_FLUSHQUAD_FUNCNAME R_FlushQuadFuzz16 +#include "r_drawflush.inl" + +#define R_DRAWCOLUMN_PIPELINE RDC_STANDARD +#define R_DRAWCOLUMN_PIPELINE_BITS 32 +#define R_FLUSHWHOLE_FUNCNAME R_FlushWhole32 +#define R_FLUSHHEADTAIL_FUNCNAME R_FlushHT32 +#define R_FLUSHQUAD_FUNCNAME R_FlushQuad32 +#include "r_drawflush.inl" + +#define R_DRAWCOLUMN_PIPELINE RDC_TRANSLUCENT +#define R_DRAWCOLUMN_PIPELINE_BITS 32 +#define R_FLUSHWHOLE_FUNCNAME R_FlushWholeTL32 +#define R_FLUSHHEADTAIL_FUNCNAME R_FlushHTTL32 +#define R_FLUSHQUAD_FUNCNAME R_FlushQuadTL32 +#include "r_drawflush.inl" + +#define R_DRAWCOLUMN_PIPELINE RDC_FUZZ +#define R_DRAWCOLUMN_PIPELINE_BITS 32 +#define R_FLUSHWHOLE_FUNCNAME R_FlushWholeFuzz32 +#define R_FLUSHHEADTAIL_FUNCNAME R_FlushHTFuzz32 +#define R_FLUSHQUAD_FUNCNAME R_FlushQuadFuzz32 +#include "r_drawflush.inl" +#endif +// +// R_DrawColumn +// + +// +// A column is a vertical slice/span from a wall texture that, +// given the DOOM style restrictions on the view orientation, +// will always have constant z depth. +// Thus a special case loop for very fast rendering can +// be used. It has also been used with Wolfenstein 3D. +// + +byte playernumtotrans[MAXPLAYERS]; +byte translationtables[3 * 256]; + +#define R_DRAWCOLUMN_PIPELINE_TYPE RDC_PIPELINE_STANDARD +#define R_DRAWCOLUMN_PIPELINE_BASE RDC_STANDARD + +#define R_DRAWCOLUMN_PIPELINE_BITS 8 +#define R_DRAWCOLUMN_FUNCNAME_COMPOSITE(postfix) R_DrawColumn8 ## postfix +#define R_FLUSHWHOLE_FUNCNAME R_FlushWhole8 +#define R_FLUSHHEADTAIL_FUNCNAME R_FlushHT8 +#define R_FLUSHQUAD_FUNCNAME R_FlushQuad8 +#include "r_drawcolpipeline.inl" + +#ifndef NOTRUECOLOR +#define R_DRAWCOLUMN_PIPELINE_BITS 15 +#define R_DRAWCOLUMN_FUNCNAME_COMPOSITE(postfix) R_DrawColumn15 ## postfix +#define R_FLUSHWHOLE_FUNCNAME R_FlushWhole15 +#define R_FLUSHHEADTAIL_FUNCNAME R_FlushHT15 +#define R_FLUSHQUAD_FUNCNAME R_FlushQuad15 +#include "r_drawcolpipeline.inl" + +#define R_DRAWCOLUMN_PIPELINE_BITS 16 +#define R_DRAWCOLUMN_FUNCNAME_COMPOSITE(postfix) R_DrawColumn16 ## postfix +#define R_FLUSHWHOLE_FUNCNAME R_FlushWhole16 +#define R_FLUSHHEADTAIL_FUNCNAME R_FlushHT16 +#define R_FLUSHQUAD_FUNCNAME R_FlushQuad16 +#include "r_drawcolpipeline.inl" + +#define R_DRAWCOLUMN_PIPELINE_BITS 32 +#define R_DRAWCOLUMN_FUNCNAME_COMPOSITE(postfix) R_DrawColumn32 ## postfix +#define R_FLUSHWHOLE_FUNCNAME R_FlushWhole32 +#define R_FLUSHHEADTAIL_FUNCNAME R_FlushHT32 +#define R_FLUSHQUAD_FUNCNAME R_FlushQuad32 +#include "r_drawcolpipeline.inl" +#endif + +#undef R_DRAWCOLUMN_PIPELINE_BASE +#undef R_DRAWCOLUMN_PIPELINE_TYPE + +// Here is the version of R_DrawColumn that deals with translucent // phares +// textures and sprites. It's identical to R_DrawColumn except // | +// for the spot where the color index is stuffed into *dest. At // V +// that point, the existing color index and the new color index +// are mapped through the TRANMAP lump filters to get a new color +// index whose RGB values are the average of the existing and new +// colors. +// +// Since we're concerned about performance, the 'translucent or +// opaque' decision is made outside this routine, not down where the +// actual code differences are. + +#define R_DRAWCOLUMN_PIPELINE_TYPE RDC_PIPELINE_TRANSLUCENT +#define R_DRAWCOLUMN_PIPELINE_BASE RDC_TRANSLUCENT + +#define R_DRAWCOLUMN_PIPELINE_BITS 8 +#define R_DRAWCOLUMN_FUNCNAME_COMPOSITE(postfix) R_DrawTLColumn8 ## postfix +#define R_FLUSHWHOLE_FUNCNAME R_FlushWholeTL8 +#define R_FLUSHHEADTAIL_FUNCNAME R_FlushHTTL8 +#define R_FLUSHQUAD_FUNCNAME R_FlushQuadTL8 +#include "r_drawcolpipeline.inl" + +#ifndef NOTRUECOLOR +#define R_DRAWCOLUMN_PIPELINE_BITS 15 +#define R_DRAWCOLUMN_FUNCNAME_COMPOSITE(postfix) R_DrawTLColumn15 ## postfix +#define R_FLUSHWHOLE_FUNCNAME R_FlushWholeTL15 +#define R_FLUSHHEADTAIL_FUNCNAME R_FlushHTTL15 +#define R_FLUSHQUAD_FUNCNAME R_FlushQuadTL15 +#include "r_drawcolpipeline.inl" + +#define R_DRAWCOLUMN_PIPELINE_BITS 16 +#define R_DRAWCOLUMN_FUNCNAME_COMPOSITE(postfix) R_DrawTLColumn16 ## postfix +#define R_FLUSHWHOLE_FUNCNAME R_FlushWholeTL16 +#define R_FLUSHHEADTAIL_FUNCNAME R_FlushHTTL16 +#define R_FLUSHQUAD_FUNCNAME R_FlushQuadTL16 +#include "r_drawcolpipeline.inl" + +#define R_DRAWCOLUMN_PIPELINE_BITS 32 +#define R_DRAWCOLUMN_FUNCNAME_COMPOSITE(postfix) R_DrawTLColumn32 ## postfix +#define R_FLUSHWHOLE_FUNCNAME R_FlushWholeTL32 +#define R_FLUSHHEADTAIL_FUNCNAME R_FlushHTTL32 +#define R_FLUSHQUAD_FUNCNAME R_FlushQuadTL32 +#include "r_drawcolpipeline.inl" +#endif + +#undef R_DRAWCOLUMN_PIPELINE_BASE +#undef R_DRAWCOLUMN_PIPELINE_TYPE + +// +// R_DrawTranslatedColumn +// Used to draw player sprites +// with the green colorramp mapped to others. +// Could be used with different translation +// tables, e.g. the lighter colored version +// of the BaronOfHell, the HellKnight, uses +// identical sprites, kinda brightened up. +// + +#define R_DRAWCOLUMN_PIPELINE_TYPE RDC_PIPELINE_TRANSLATED +#define R_DRAWCOLUMN_PIPELINE_BASE RDC_TRANSLATED + +#define R_DRAWCOLUMN_PIPELINE_BITS 8 +#define R_DRAWCOLUMN_FUNCNAME_COMPOSITE(postfix) R_DrawTranslatedColumn8 ## postfix +#define R_FLUSHWHOLE_FUNCNAME R_FlushWhole8 +#define R_FLUSHHEADTAIL_FUNCNAME R_FlushHT8 +#define R_FLUSHQUAD_FUNCNAME R_FlushQuad8 +#include "r_drawcolpipeline.inl" + +#ifndef NOTRUECOLOR +#define R_DRAWCOLUMN_PIPELINE_BITS 15 +#define R_DRAWCOLUMN_FUNCNAME_COMPOSITE(postfix) R_DrawTranslatedColumn15 ## postfix +#define R_FLUSHWHOLE_FUNCNAME R_FlushWhole15 +#define R_FLUSHHEADTAIL_FUNCNAME R_FlushHT15 +#define R_FLUSHQUAD_FUNCNAME R_FlushQuad15 +#include "r_drawcolpipeline.inl" + +#define R_DRAWCOLUMN_PIPELINE_BITS 16 +#define R_DRAWCOLUMN_FUNCNAME_COMPOSITE(postfix) R_DrawTranslatedColumn16 ## postfix +#define R_FLUSHWHOLE_FUNCNAME R_FlushWhole16 +#define R_FLUSHHEADTAIL_FUNCNAME R_FlushHT16 +#define R_FLUSHQUAD_FUNCNAME R_FlushQuad16 +#include "r_drawcolpipeline.inl" + +#define R_DRAWCOLUMN_PIPELINE_BITS 32 +#define R_DRAWCOLUMN_FUNCNAME_COMPOSITE(postfix) R_DrawTranslatedColumn32 ## postfix +#define R_FLUSHWHOLE_FUNCNAME R_FlushWhole32 +#define R_FLUSHHEADTAIL_FUNCNAME R_FlushHT32 +#define R_FLUSHQUAD_FUNCNAME R_FlushQuad32 +#include "r_drawcolpipeline.inl" +#endif + +#undef R_DRAWCOLUMN_PIPELINE_BASE +#undef R_DRAWCOLUMN_PIPELINE_TYPE + +// +// Framebuffer postprocessing. +// Creates a fuzzy image by copying pixels +// from adjacent ones to left and right. +// Used with an all black colormap, this +// could create the SHADOW effect, +// i.e. spectres and invisible players. +// + +#define R_DRAWCOLUMN_PIPELINE_TYPE RDC_PIPELINE_FUZZ +#define R_DRAWCOLUMN_PIPELINE_BASE RDC_FUZZ + +#define R_DRAWCOLUMN_PIPELINE_BITS 8 +#define R_DRAWCOLUMN_FUNCNAME_COMPOSITE(postfix) R_DrawFuzzColumn8 ## postfix +#define R_FLUSHWHOLE_FUNCNAME R_FlushWholeFuzz8 +#define R_FLUSHHEADTAIL_FUNCNAME R_FlushHTFuzz8 +#define R_FLUSHQUAD_FUNCNAME R_FlushQuadFuzz8 +#include "r_drawcolpipeline.inl" + +#ifndef NOTRUECOLOR +#define R_DRAWCOLUMN_PIPELINE_BITS 15 +#define R_DRAWCOLUMN_FUNCNAME_COMPOSITE(postfix) R_DrawFuzzColumn15 ## postfix +#define R_FLUSHWHOLE_FUNCNAME R_FlushWholeFuzz15 +#define R_FLUSHHEADTAIL_FUNCNAME R_FlushHTFuzz15 +#define R_FLUSHQUAD_FUNCNAME R_FlushQuadFuzz15 +#include "r_drawcolpipeline.inl" + +#define R_DRAWCOLUMN_PIPELINE_BITS 16 +#define R_DRAWCOLUMN_FUNCNAME_COMPOSITE(postfix) R_DrawFuzzColumn16 ## postfix +#define R_FLUSHWHOLE_FUNCNAME R_FlushWholeFuzz16 +#define R_FLUSHHEADTAIL_FUNCNAME R_FlushHTFuzz16 +#define R_FLUSHQUAD_FUNCNAME R_FlushQuadFuzz16 +#include "r_drawcolpipeline.inl" + +#define R_DRAWCOLUMN_PIPELINE_BITS 32 +#define R_DRAWCOLUMN_FUNCNAME_COMPOSITE(postfix) R_DrawFuzzColumn32 ## postfix +#define R_FLUSHWHOLE_FUNCNAME R_FlushWholeFuzz32 +#define R_FLUSHHEADTAIL_FUNCNAME R_FlushHTFuzz32 +#define R_FLUSHQUAD_FUNCNAME R_FlushQuadFuzz32 +#include "r_drawcolpipeline.inl" +#endif + +#undef R_DRAWCOLUMN_PIPELINE_BASE +#undef R_DRAWCOLUMN_PIPELINE_TYPE + +static R_DrawColumn_f drawcolumnfuncs[VID_MODEMAX][RDRAW_FILTER_MAXFILTERS][RDRAW_FILTER_MAXFILTERS][RDC_PIPELINE_MAXPIPELINES] = { + { + { + {NULL, NULL, NULL, NULL,}, + {R_DrawColumn8_PointUV, + R_DrawTLColumn8_PointUV, + R_DrawTranslatedColumn8_PointUV, + R_DrawFuzzColumn8_PointUV,}, + {R_DrawColumn8_LinearUV, + R_DrawTLColumn8_LinearUV, + R_DrawTranslatedColumn8_LinearUV, + R_DrawFuzzColumn8_LinearUV,}, + {R_DrawColumn8_RoundedUV, + R_DrawTLColumn8_RoundedUV, + R_DrawTranslatedColumn8_RoundedUV, + R_DrawFuzzColumn8_RoundedUV,}, + }, + { + {NULL, NULL, NULL, NULL,}, + {R_DrawColumn8_PointUV_PointZ, + R_DrawTLColumn8_PointUV_PointZ, + R_DrawTranslatedColumn8_PointUV_PointZ, + R_DrawFuzzColumn8_PointUV_PointZ,}, + {R_DrawColumn8_LinearUV_PointZ, + R_DrawTLColumn8_LinearUV_PointZ, + R_DrawTranslatedColumn8_LinearUV_PointZ, + R_DrawFuzzColumn8_LinearUV_PointZ,}, + {R_DrawColumn8_RoundedUV_PointZ, + R_DrawTLColumn8_RoundedUV_PointZ, + R_DrawTranslatedColumn8_RoundedUV_PointZ, + R_DrawFuzzColumn8_RoundedUV_PointZ,}, + }, + { + {NULL, NULL, NULL, NULL,}, + {R_DrawColumn8_PointUV_LinearZ, + R_DrawTLColumn8_PointUV_LinearZ, + R_DrawTranslatedColumn8_PointUV_LinearZ, + R_DrawFuzzColumn8_PointUV_LinearZ,}, + {R_DrawColumn8_LinearUV_LinearZ, + R_DrawTLColumn8_LinearUV_LinearZ, + R_DrawTranslatedColumn8_LinearUV_LinearZ, + R_DrawFuzzColumn8_LinearUV_LinearZ,}, + {R_DrawColumn8_RoundedUV_LinearZ, + R_DrawTLColumn8_RoundedUV_LinearZ, + R_DrawTranslatedColumn8_RoundedUV_LinearZ, + R_DrawFuzzColumn8_RoundedUV_LinearZ,}, + }, + }, +#ifndef NOTRUECOLOR + { + { + {NULL, NULL, NULL, NULL,}, + {R_DrawColumn15_PointUV, + R_DrawTLColumn15_PointUV, + R_DrawTranslatedColumn15_PointUV, + R_DrawFuzzColumn15_PointUV,}, + {R_DrawColumn15_LinearUV, + R_DrawTLColumn15_LinearUV, + R_DrawTranslatedColumn15_LinearUV, + R_DrawFuzzColumn15_LinearUV,}, + {R_DrawColumn15_RoundedUV, + R_DrawTLColumn15_RoundedUV, + R_DrawTranslatedColumn15_RoundedUV, + R_DrawFuzzColumn15_RoundedUV,}, + }, + { + {NULL, NULL, NULL, NULL,}, + {R_DrawColumn15_PointUV_PointZ, + R_DrawTLColumn15_PointUV_PointZ, + R_DrawTranslatedColumn15_PointUV_PointZ, + R_DrawFuzzColumn15_PointUV_PointZ,}, + {R_DrawColumn15_LinearUV_PointZ, + R_DrawTLColumn15_LinearUV_PointZ, + R_DrawTranslatedColumn15_LinearUV_PointZ, + R_DrawFuzzColumn15_LinearUV_PointZ,}, + {R_DrawColumn15_RoundedUV_PointZ, + R_DrawTLColumn15_RoundedUV_PointZ, + R_DrawTranslatedColumn15_RoundedUV_PointZ, + R_DrawFuzzColumn15_RoundedUV_PointZ,}, + }, + { + {NULL, NULL, NULL, NULL,}, + {R_DrawColumn15_PointUV_LinearZ, + R_DrawTLColumn15_PointUV_LinearZ, + R_DrawTranslatedColumn15_PointUV_LinearZ, + R_DrawFuzzColumn15_PointUV_LinearZ,}, + {R_DrawColumn15_LinearUV_LinearZ, + R_DrawTLColumn15_LinearUV_LinearZ, + R_DrawTranslatedColumn15_LinearUV_LinearZ, + R_DrawFuzzColumn15_LinearUV_LinearZ,}, + {R_DrawColumn15_RoundedUV_LinearZ, + R_DrawTLColumn15_RoundedUV_LinearZ, + R_DrawTranslatedColumn15_RoundedUV_LinearZ, + R_DrawFuzzColumn15_RoundedUV_LinearZ,}, + }, + }, + { + { + {NULL, NULL, NULL, NULL,}, + {R_DrawColumn16_PointUV, + R_DrawTLColumn16_PointUV, + R_DrawTranslatedColumn16_PointUV, + R_DrawFuzzColumn16_PointUV,}, + {R_DrawColumn16_LinearUV, + R_DrawTLColumn16_LinearUV, + R_DrawTranslatedColumn16_LinearUV, + R_DrawFuzzColumn16_LinearUV,}, + {R_DrawColumn16_RoundedUV, + R_DrawTLColumn16_RoundedUV, + R_DrawTranslatedColumn16_RoundedUV, + R_DrawFuzzColumn16_RoundedUV,}, + }, + { + {NULL, NULL, NULL, NULL,}, + {R_DrawColumn16_PointUV_PointZ, + R_DrawTLColumn16_PointUV_PointZ, + R_DrawTranslatedColumn16_PointUV_PointZ, + R_DrawFuzzColumn16_PointUV_PointZ,}, + {R_DrawColumn16_LinearUV_PointZ, + R_DrawTLColumn16_LinearUV_PointZ, + R_DrawTranslatedColumn16_LinearUV_PointZ, + R_DrawFuzzColumn16_LinearUV_PointZ,}, + {R_DrawColumn16_RoundedUV_PointZ, + R_DrawTLColumn16_RoundedUV_PointZ, + R_DrawTranslatedColumn16_RoundedUV_PointZ, + R_DrawFuzzColumn16_RoundedUV_PointZ,}, + }, + { + {NULL, NULL, NULL, NULL,}, + {R_DrawColumn16_PointUV_LinearZ, + R_DrawTLColumn16_PointUV_LinearZ, + R_DrawTranslatedColumn16_PointUV_LinearZ, + R_DrawFuzzColumn16_PointUV_LinearZ,}, + {R_DrawColumn16_LinearUV_LinearZ, + R_DrawTLColumn16_LinearUV_LinearZ, + R_DrawTranslatedColumn16_LinearUV_LinearZ, + R_DrawFuzzColumn16_LinearUV_LinearZ,}, + {R_DrawColumn16_RoundedUV_LinearZ, + R_DrawTLColumn16_RoundedUV_LinearZ, + R_DrawTranslatedColumn16_RoundedUV_LinearZ, + R_DrawFuzzColumn16_RoundedUV_LinearZ,}, + }, + }, + { + { + {NULL, NULL, NULL, NULL,}, + {R_DrawColumn32_PointUV, + R_DrawTLColumn32_PointUV, + R_DrawTranslatedColumn32_PointUV, + R_DrawFuzzColumn32_PointUV,}, + {R_DrawColumn32_LinearUV, + R_DrawTLColumn32_LinearUV, + R_DrawTranslatedColumn32_LinearUV, + R_DrawFuzzColumn32_LinearUV,}, + {R_DrawColumn32_RoundedUV, + R_DrawTLColumn32_RoundedUV, + R_DrawTranslatedColumn32_RoundedUV, + R_DrawFuzzColumn32_RoundedUV,}, + }, + { + {NULL, NULL, NULL, NULL,}, + {R_DrawColumn32_PointUV_PointZ, + R_DrawTLColumn32_PointUV_PointZ, + R_DrawTranslatedColumn32_PointUV_PointZ, + R_DrawFuzzColumn32_PointUV_PointZ,}, + {R_DrawColumn32_LinearUV_PointZ, + R_DrawTLColumn32_LinearUV_PointZ, + R_DrawTranslatedColumn32_LinearUV_PointZ, + R_DrawFuzzColumn32_LinearUV_PointZ,}, + {R_DrawColumn32_RoundedUV_PointZ, + R_DrawTLColumn32_RoundedUV_PointZ, + R_DrawTranslatedColumn32_RoundedUV_PointZ, + R_DrawFuzzColumn32_RoundedUV_PointZ,}, + }, + { + {NULL, NULL, NULL, NULL,}, + {R_DrawColumn32_PointUV_LinearZ, + R_DrawTLColumn32_PointUV_LinearZ, + R_DrawTranslatedColumn32_PointUV_LinearZ, + R_DrawFuzzColumn32_PointUV_LinearZ,}, + {R_DrawColumn32_LinearUV_LinearZ, + R_DrawTLColumn32_LinearUV_LinearZ, + R_DrawTranslatedColumn32_LinearUV_LinearZ, + R_DrawFuzzColumn32_LinearUV_LinearZ,}, + {R_DrawColumn32_RoundedUV_LinearZ, + R_DrawTLColumn32_RoundedUV_LinearZ, + R_DrawTranslatedColumn32_RoundedUV_LinearZ, + R_DrawFuzzColumn32_RoundedUV_LinearZ,}, + }, + }, +#endif +}; + +R_DrawColumn_f R_GetDrawColumnFunc(enum column_pipeline_e type, + enum draw_filter_type_e filter, + enum draw_filter_type_e filterz) { + R_DrawColumn_f result = drawcolumnfuncs[V_GetMode()][filterz][filter][type]; + if (result == NULL) + I_Error("R_GetDrawColumnFunc: undefined function (%d, %d, %d)", + type, filter, filterz); + return result; +} + +void R_SetDefaultDrawColumnVars(draw_column_vars_t *dcvars) { + dcvars->x = dcvars->yl = dcvars->yh = dcvars->z = 0; + dcvars->iscale = dcvars->texturemid = dcvars->texheight = dcvars->texu = 0; + dcvars->source = dcvars->prevsource = dcvars->nextsource = NULL; + dcvars->colormap = dcvars->nextcolormap = colormaps[0]; + dcvars->translation = NULL; + dcvars->edgeslope = dcvars->drawingmasked = 0; + dcvars->edgetype = drawvars.sprite_edges; +} + +// +// R_InitTranslationTables +// Creates the translation tables to map +// the green color ramp to gray, brown, red. +// Assumes a given structure of the PLAYPAL. +// Could be read from a lump instead. +// + +void R_InitTranslationTables (void) +{ + int i, j; +#define MAXTRANS 3 + byte transtocolour[MAXTRANS]; + + // killough 5/2/98: + // Remove dependency of colormaps aligned on 256-byte boundary + + for (i=0; i= 0x70 && i<= 0x7f) + { + // CPhipps - configurable player colours + translationtables[i] = colormaps[0][((i&0xf)<<9) + transtocolour[0]]; + translationtables[i+256] = colormaps[0][((i&0xf)<<9) + transtocolour[1]]; + translationtables[i+512] = colormaps[0][((i&0xf)<<9) + transtocolour[2]]; + } + else // Keep all other colors as is. + translationtables[i]=translationtables[i+256]=translationtables[i+512]=i; +} + +// +// R_DrawSpan +// With DOOM style restrictions on view orientation, +// the floors and ceilings consist of horizontal slices +// or spans with constant z depth. +// However, rotation around the world z axis is possible, +// thus this mapping, while simpler and faster than +// perspective correct texture mapping, has to traverse +// the texture at an angle in all but a few cases. +// In consequence, flats are not stored by column (like walls), +// and the inner loop has to step in texture space u and v. +// + +#define R_DRAWSPAN_FUNCNAME R_DrawSpan8_PointUV_PointZ +#define R_DRAWSPAN_PIPELINE_BITS 8 +#define R_DRAWSPAN_PIPELINE (RDC_STANDARD) +#include "r_drawspan.inl" + +#define R_DRAWSPAN_FUNCNAME R_DrawSpan8_PointUV_LinearZ +#define R_DRAWSPAN_PIPELINE_BITS 8 +#define R_DRAWSPAN_PIPELINE (RDC_STANDARD | RDC_DITHERZ) +#include "r_drawspan.inl" + +#define R_DRAWSPAN_FUNCNAME R_DrawSpan8_LinearUV_PointZ +#define R_DRAWSPAN_PIPELINE_BITS 8 +#define R_DRAWSPAN_PIPELINE (RDC_STANDARD | RDC_BILINEAR) +#include "r_drawspan.inl" + +#define R_DRAWSPAN_FUNCNAME R_DrawSpan8_LinearUV_LinearZ +#define R_DRAWSPAN_PIPELINE_BITS 8 +#define R_DRAWSPAN_PIPELINE (RDC_STANDARD | RDC_BILINEAR | RDC_DITHERZ) +#include "r_drawspan.inl" + +#define R_DRAWSPAN_FUNCNAME R_DrawSpan8_RoundedUV_PointZ +#define R_DRAWSPAN_PIPELINE_BITS 8 +#define R_DRAWSPAN_PIPELINE (RDC_STANDARD | RDC_ROUNDED) +#include "r_drawspan.inl" + +#define R_DRAWSPAN_FUNCNAME R_DrawSpan8_RoundedUV_LinearZ +#define R_DRAWSPAN_PIPELINE_BITS 8 +#define R_DRAWSPAN_PIPELINE (RDC_STANDARD | RDC_ROUNDED | RDC_DITHERZ) +#include "r_drawspan.inl" + +#ifndef NOTRUECOLOR +#define R_DRAWSPAN_FUNCNAME R_DrawSpan15_PointUV_PointZ +#define R_DRAWSPAN_PIPELINE_BITS 15 +#define R_DRAWSPAN_PIPELINE (RDC_STANDARD) +#include "r_drawspan.inl" + +#define R_DRAWSPAN_FUNCNAME R_DrawSpan15_PointUV_LinearZ +#define R_DRAWSPAN_PIPELINE_BITS 15 +#define R_DRAWSPAN_PIPELINE (RDC_STANDARD | RDC_DITHERZ) +#include "r_drawspan.inl" + +#define R_DRAWSPAN_FUNCNAME R_DrawSpan15_LinearUV_PointZ +#define R_DRAWSPAN_PIPELINE_BITS 15 +#define R_DRAWSPAN_PIPELINE (RDC_STANDARD | RDC_BILINEAR) +#include "r_drawspan.inl" + +#define R_DRAWSPAN_FUNCNAME R_DrawSpan15_LinearUV_LinearZ +#define R_DRAWSPAN_PIPELINE_BITS 15 +#define R_DRAWSPAN_PIPELINE (RDC_STANDARD | RDC_BILINEAR | RDC_DITHERZ) +#include "r_drawspan.inl" + +#define R_DRAWSPAN_FUNCNAME R_DrawSpan15_RoundedUV_PointZ +#define R_DRAWSPAN_PIPELINE_BITS 15 +#define R_DRAWSPAN_PIPELINE (RDC_STANDARD | RDC_ROUNDED) +#include "r_drawspan.inl" + +#define R_DRAWSPAN_FUNCNAME R_DrawSpan15_RoundedUV_LinearZ +#define R_DRAWSPAN_PIPELINE_BITS 15 +#define R_DRAWSPAN_PIPELINE (RDC_STANDARD | RDC_ROUNDED | RDC_DITHERZ) +#include "r_drawspan.inl" + +#define R_DRAWSPAN_FUNCNAME R_DrawSpan16_PointUV_PointZ +#define R_DRAWSPAN_PIPELINE_BITS 16 +#define R_DRAWSPAN_PIPELINE (RDC_STANDARD) +#include "r_drawspan.inl" + +#define R_DRAWSPAN_FUNCNAME R_DrawSpan16_PointUV_LinearZ +#define R_DRAWSPAN_PIPELINE_BITS 16 +#define R_DRAWSPAN_PIPELINE (RDC_STANDARD | RDC_DITHERZ) +#include "r_drawspan.inl" + +#define R_DRAWSPAN_FUNCNAME R_DrawSpan16_LinearUV_PointZ +#define R_DRAWSPAN_PIPELINE_BITS 16 +#define R_DRAWSPAN_PIPELINE (RDC_STANDARD | RDC_BILINEAR) +#include "r_drawspan.inl" + +#define R_DRAWSPAN_FUNCNAME R_DrawSpan16_LinearUV_LinearZ +#define R_DRAWSPAN_PIPELINE_BITS 16 +#define R_DRAWSPAN_PIPELINE (RDC_STANDARD | RDC_BILINEAR | RDC_DITHERZ) +#include "r_drawspan.inl" + +#define R_DRAWSPAN_FUNCNAME R_DrawSpan16_RoundedUV_PointZ +#define R_DRAWSPAN_PIPELINE_BITS 16 +#define R_DRAWSPAN_PIPELINE (RDC_STANDARD | RDC_ROUNDED) +#include "r_drawspan.inl" + +#define R_DRAWSPAN_FUNCNAME R_DrawSpan16_RoundedUV_LinearZ +#define R_DRAWSPAN_PIPELINE_BITS 16 +#define R_DRAWSPAN_PIPELINE (RDC_STANDARD | RDC_ROUNDED | RDC_DITHERZ) +#include "r_drawspan.inl" + +#define R_DRAWSPAN_FUNCNAME R_DrawSpan32_PointUV_PointZ +#define R_DRAWSPAN_PIPELINE_BITS 32 +#define R_DRAWSPAN_PIPELINE (RDC_STANDARD) +#include "r_drawspan.inl" + +#define R_DRAWSPAN_FUNCNAME R_DrawSpan32_PointUV_LinearZ +#define R_DRAWSPAN_PIPELINE_BITS 32 +#define R_DRAWSPAN_PIPELINE (RDC_STANDARD | RDC_DITHERZ) +#include "r_drawspan.inl" + +#define R_DRAWSPAN_FUNCNAME R_DrawSpan32_LinearUV_PointZ +#define R_DRAWSPAN_PIPELINE_BITS 32 +#define R_DRAWSPAN_PIPELINE (RDC_STANDARD | RDC_BILINEAR) +#include "r_drawspan.inl" + +#define R_DRAWSPAN_FUNCNAME R_DrawSpan32_LinearUV_LinearZ +#define R_DRAWSPAN_PIPELINE_BITS 32 +#define R_DRAWSPAN_PIPELINE (RDC_STANDARD | RDC_BILINEAR | RDC_DITHERZ) +#include "r_drawspan.inl" + +#define R_DRAWSPAN_FUNCNAME R_DrawSpan32_RoundedUV_PointZ +#define R_DRAWSPAN_PIPELINE_BITS 32 +#define R_DRAWSPAN_PIPELINE (RDC_STANDARD | RDC_ROUNDED) +#include "r_drawspan.inl" + +#define R_DRAWSPAN_FUNCNAME R_DrawSpan32_RoundedUV_LinearZ +#define R_DRAWSPAN_PIPELINE_BITS 32 +#define R_DRAWSPAN_PIPELINE (RDC_STANDARD | RDC_ROUNDED | RDC_DITHERZ) +#include "r_drawspan.inl" +#endif + +static R_DrawSpan_f drawspanfuncs[VID_MODEMAX][RDRAW_FILTER_MAXFILTERS][RDRAW_FILTER_MAXFILTERS] = { + { + { + NULL, + NULL, + NULL, + NULL, + }, + { + NULL, + R_DrawSpan8_PointUV_PointZ, + R_DrawSpan8_LinearUV_PointZ, + R_DrawSpan8_RoundedUV_PointZ, + }, + { + NULL, + R_DrawSpan8_PointUV_LinearZ, + R_DrawSpan8_LinearUV_LinearZ, + R_DrawSpan8_RoundedUV_LinearZ, + }, + { + NULL, + NULL, + NULL, + NULL, + }, + }, +#ifndef NOTRUECOLOR + { + { + NULL, + NULL, + NULL, + NULL, + }, + { + NULL, + R_DrawSpan15_PointUV_PointZ, + R_DrawSpan15_LinearUV_PointZ, + R_DrawSpan15_RoundedUV_PointZ, + }, + { + NULL, + R_DrawSpan15_PointUV_LinearZ, + R_DrawSpan15_LinearUV_LinearZ, + R_DrawSpan15_RoundedUV_LinearZ, + }, + { + NULL, + NULL, + NULL, + NULL, + }, + }, + { + { + NULL, + NULL, + NULL, + NULL, + }, + { + NULL, + R_DrawSpan16_PointUV_PointZ, + R_DrawSpan16_LinearUV_PointZ, + R_DrawSpan16_RoundedUV_PointZ, + }, + { + NULL, + R_DrawSpan16_PointUV_LinearZ, + R_DrawSpan16_LinearUV_LinearZ, + R_DrawSpan16_RoundedUV_LinearZ, + }, + { + NULL, + NULL, + NULL, + NULL, + }, + }, + { + { + NULL, + NULL, + NULL, + NULL, + }, + { + NULL, + R_DrawSpan32_PointUV_PointZ, + R_DrawSpan32_LinearUV_PointZ, + R_DrawSpan32_RoundedUV_PointZ, + }, + { + NULL, + R_DrawSpan32_PointUV_LinearZ, + R_DrawSpan32_LinearUV_LinearZ, + R_DrawSpan32_RoundedUV_LinearZ, + }, + { + NULL, + NULL, + NULL, + NULL, + }, + }, +#endif +}; + +R_DrawSpan_f R_GetDrawSpanFunc(enum draw_filter_type_e filter, + enum draw_filter_type_e filterz) { + R_DrawSpan_f result = drawspanfuncs[V_GetMode()][filterz][filter]; + if (result == NULL) + I_Error("R_GetDrawSpanFunc: undefined function (%d, %d)", + filter, filterz); + return result; +} + +void R_DrawSpan(draw_span_vars_t *dsvars) { + R_GetDrawSpanFunc(drawvars.filterfloor, drawvars.filterz)(dsvars); +} + +// +// R_InitBuffer +// Creats lookup tables that avoid +// multiplies and other hazzles +// for getting the framebuffer address +// of a pixel to draw. +// + +void R_InitBuffer(int width, int height) +{ + int i=0; + // Handle resize, + // e.g. smaller view windows + // with border and/or status bar. + + viewwindowx = (SCREENWIDTH-width) >> 1; + + // Same with base row offset. + + viewwindowy = width==SCREENWIDTH ? 0 : (SCREENHEIGHT-(ST_SCALED_HEIGHT-1)-height)>>1; + + drawvars.byte_topleft = screens[0].data + viewwindowy*screens[0].byte_pitch + viewwindowx; + drawvars.short_topleft = (unsigned short *)(screens[0].data) + viewwindowy*screens[0].short_pitch + viewwindowx; + drawvars.int_topleft = (unsigned int *)(screens[0].data) + viewwindowy*screens[0].int_pitch + viewwindowx; + drawvars.byte_pitch = screens[0].byte_pitch; + drawvars.short_pitch = screens[0].short_pitch; + drawvars.int_pitch = screens[0].int_pitch; + + if (V_GetMode() == VID_MODE8) { + for (i=0; i 0) { + for (i = (SCREENHEIGHT - ST_SCALED_HEIGHT); i < SCREENHEIGHT; i++) + { + R_VideoErase (0, i, side); + R_VideoErase (ST_SCALED_WIDTH+side, i, side); + } + } + } + + if ( viewheight >= ( SCREENHEIGHT - ST_SCALED_HEIGHT )) + return; // if high-res, don�t go any further! + + top = ((SCREENHEIGHT-ST_SCALED_HEIGHT)-viewheight)/2; + side = (SCREENWIDTH-scaledviewwidth)/2; + + // copy top + for (i = 0; i < top; i++) + R_VideoErase (0, i, SCREENWIDTH); + + // copy sides + for (i = top; i < (top+viewheight); i++) { + R_VideoErase (0, i, side); + R_VideoErase (viewwidth+side, i, side); + } + + // copy bottom + for (i = top+viewheight; i < (SCREENHEIGHT - ST_SCALED_HEIGHT); i++) + R_VideoErase (0, i, SCREENWIDTH); +} diff --git a/components/doom/prboom/r_draw.h b/components/doom/prboom/r_draw.h new file mode 100644 index 0000000..67c28f8 --- /dev/null +++ b/components/doom/prboom/r_draw.h @@ -0,0 +1,163 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * System specific interface stuff. + * + *-----------------------------------------------------------------------------*/ + +#ifndef __R_DRAW__ +#define __R_DRAW__ + +#include "r_defs.h" + +#ifdef __GNUG__ +#pragma interface +#endif + +enum column_pipeline_e { + RDC_PIPELINE_STANDARD, + RDC_PIPELINE_TRANSLUCENT, + RDC_PIPELINE_TRANSLATED, + RDC_PIPELINE_FUZZ, + RDC_PIPELINE_MAXPIPELINES, +}; + +// Used to specify what kind of filering you want +enum draw_filter_type_e { + RDRAW_FILTER_NONE, + RDRAW_FILTER_POINT, + RDRAW_FILTER_LINEAR, + RDRAW_FILTER_ROUNDED, + RDRAW_FILTER_MAXFILTERS +}; + +// Used to specify what kind of column edge rendering to use on masked +// columns. SQUARE = standard, SLOPED = slope the column edge up or down +// based on neighboring columns +enum sloped_edge_type_e { + RDRAW_MASKEDCOLUMNEDGE_SQUARE, + RDRAW_MASKEDCOLUMNEDGE_SLOPED +}; + +// Packaged into a struct - POPE +typedef struct { + int x; + int yl; + int yh; + fixed_t z; // the current column z coord + fixed_t iscale; + fixed_t texturemid; + int texheight; // killough + fixed_t texu; // the current column u coord + const byte *source; // first pixel in a column + const byte *prevsource; // first pixel in previous column + const byte *nextsource; // first pixel in next column + const lighttable_t *colormap; + const lighttable_t *nextcolormap; + const byte *translation; + int edgeslope; // OR'ed RDRAW_EDGESLOPE_* + // 1 if R_DrawColumn* is currently drawing a masked column, otherwise 0 + int drawingmasked; + enum sloped_edge_type_e edgetype; +} draw_column_vars_t; + +void R_SetDefaultDrawColumnVars(draw_column_vars_t *dcvars); + +void R_VideoErase(int x, int y, int count); + +typedef struct { + int y; + int x1; + int x2; + fixed_t z; // the current span z coord + fixed_t xfrac; + fixed_t yfrac; + fixed_t xstep; + fixed_t ystep; + const byte *source; // start of a 64*64 tile image + const lighttable_t *colormap; + const lighttable_t *nextcolormap; +} draw_span_vars_t; + +typedef struct { + byte *byte_topleft; + unsigned short *short_topleft; + unsigned int *int_topleft; + int byte_pitch; + int short_pitch; + int int_pitch; + + enum draw_filter_type_e filterwall; + enum draw_filter_type_e filterfloor; + enum draw_filter_type_e filtersprite; + enum draw_filter_type_e filterz; + enum draw_filter_type_e filterpatch; + + enum sloped_edge_type_e sprite_edges; + enum sloped_edge_type_e patch_edges; + + // Used to specify an early-out magnification threshold for filtering. + // If a texture is being minified (dcvars.iscale > rdraw_magThresh), then it + // drops back to point filtering. + fixed_t mag_threshold; +} draw_vars_t; + +extern draw_vars_t drawvars; + +extern byte playernumtotrans[MAXPLAYERS]; // CPhipps - what translation table for what player +extern byte translationtables[3 * 256]; + +typedef void (*R_DrawColumn_f)(draw_column_vars_t *dcvars); +R_DrawColumn_f R_GetDrawColumnFunc(enum column_pipeline_e type, + enum draw_filter_type_e filter, + enum draw_filter_type_e filterz); + +// Span blitting for rows, floor/ceiling. No Spectre effect needed. +typedef void (*R_DrawSpan_f)(draw_span_vars_t *dsvars); +R_DrawSpan_f R_GetDrawSpanFunc(enum draw_filter_type_e filter, + enum draw_filter_type_e filterz); +void R_DrawSpan(draw_span_vars_t *dsvars); + +void R_InitBuffer(int width, int height); + +// Initialize color translation tables, for player rendering etc. +void R_InitTranslationTables(void); + +// Rendering function. +void R_FillBackScreen(void); + +// If the view size is not full screen, draws a border around it. +void R_DrawViewBorder(void); + +// haleyjd 09/13/04: new function to call from main rendering loop +// which gets rid of the unnecessary reset of various variables during +// column drawing. +void R_ResetColumnBuffer(void); + +#endif diff --git a/components/doom/prboom/r_drawcolpipeline.inl b/components/doom/prboom/r_drawcolpipeline.inl new file mode 100644 index 0000000..8e122cd --- /dev/null +++ b/components/doom/prboom/r_drawcolpipeline.inl @@ -0,0 +1,51 @@ + +// no color mapping +#define R_DRAWCOLUMN_FUNCNAME R_DRAWCOLUMN_FUNCNAME_COMPOSITE(_PointUV) +#define R_DRAWCOLUMN_PIPELINE (R_DRAWCOLUMN_PIPELINE_BASE | RDC_NOCOLMAP) +#include "r_drawcolumn.inl" + +// simple depth color mapping +#define R_DRAWCOLUMN_FUNCNAME R_DRAWCOLUMN_FUNCNAME_COMPOSITE(_PointUV_PointZ) +#define R_DRAWCOLUMN_PIPELINE R_DRAWCOLUMN_PIPELINE_BASE +#include "r_drawcolumn.inl" + +// z-dither +#define R_DRAWCOLUMN_FUNCNAME R_DRAWCOLUMN_FUNCNAME_COMPOSITE(_PointUV_LinearZ) +#define R_DRAWCOLUMN_PIPELINE (R_DRAWCOLUMN_PIPELINE_BASE | RDC_DITHERZ) +#include "r_drawcolumn.inl" + +// bilinear with no color mapping +#define R_DRAWCOLUMN_FUNCNAME R_DRAWCOLUMN_FUNCNAME_COMPOSITE(_LinearUV) +#define R_DRAWCOLUMN_PIPELINE (R_DRAWCOLUMN_PIPELINE_BASE | RDC_BILINEAR | RDC_NOCOLMAP) +#include "r_drawcolumn.inl" + +// bilinear with simple depth color mapping +#define R_DRAWCOLUMN_FUNCNAME R_DRAWCOLUMN_FUNCNAME_COMPOSITE(_LinearUV_PointZ) +#define R_DRAWCOLUMN_PIPELINE (R_DRAWCOLUMN_PIPELINE_BASE | RDC_BILINEAR) +#include "r_drawcolumn.inl" + +// bilinear + z-dither +#define R_DRAWCOLUMN_FUNCNAME R_DRAWCOLUMN_FUNCNAME_COMPOSITE(_LinearUV_LinearZ) +#define R_DRAWCOLUMN_PIPELINE (R_DRAWCOLUMN_PIPELINE_BASE | RDC_BILINEAR | RDC_DITHERZ) +#include "r_drawcolumn.inl" + +// rounded with no color mapping +#define R_DRAWCOLUMN_FUNCNAME R_DRAWCOLUMN_FUNCNAME_COMPOSITE(_RoundedUV) +#define R_DRAWCOLUMN_PIPELINE (R_DRAWCOLUMN_PIPELINE_BASE | RDC_ROUNDED | RDC_NOCOLMAP) +#include "r_drawcolumn.inl" + +// rounded with simple depth color mapping +#define R_DRAWCOLUMN_FUNCNAME R_DRAWCOLUMN_FUNCNAME_COMPOSITE(_RoundedUV_PointZ) +#define R_DRAWCOLUMN_PIPELINE (R_DRAWCOLUMN_PIPELINE_BASE | RDC_ROUNDED) +#include "r_drawcolumn.inl" + +// rounded + z-dither +#define R_DRAWCOLUMN_FUNCNAME R_DRAWCOLUMN_FUNCNAME_COMPOSITE(_RoundedUV_LinearZ) +#define R_DRAWCOLUMN_PIPELINE (R_DRAWCOLUMN_PIPELINE_BASE | RDC_ROUNDED | RDC_DITHERZ) +#include "r_drawcolumn.inl" + +#undef R_FLUSHWHOLE_FUNCNAME +#undef R_FLUSHHEADTAIL_FUNCNAME +#undef R_FLUSHQUAD_FUNCNAME +#undef R_DRAWCOLUMN_FUNCNAME_COMPOSITE +#undef R_DRAWCOLUMN_PIPELINE_BITS diff --git a/components/doom/prboom/r_drawcolumn.inl b/components/doom/prboom/r_drawcolumn.inl new file mode 100644 index 0000000..199a24e --- /dev/null +++ b/components/doom/prboom/r_drawcolumn.inl @@ -0,0 +1,378 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + *-----------------------------------------------------------------------------*/ + + +#if (R_DRAWCOLUMN_PIPELINE_BITS == 8) +#define SCREENTYPE byte +#define TEMPBUF byte_tempbuf +#elif (R_DRAWCOLUMN_PIPELINE_BITS == 15) +#define SCREENTYPE unsigned short +#define TEMPBUF short_tempbuf +#elif (R_DRAWCOLUMN_PIPELINE_BITS == 16) +#define SCREENTYPE unsigned short +#define TEMPBUF short_tempbuf +#elif (R_DRAWCOLUMN_PIPELINE_BITS == 32) +#define SCREENTYPE unsigned int +#define TEMPBUF int_tempbuf +#endif + +#define GETDESTCOLOR8(col) (col) +#define GETDESTCOLOR15(col) (col) +#define GETDESTCOLOR16(col) (col) +#define GETDESTCOLOR32(col) (col) + +#if (R_DRAWCOLUMN_PIPELINE & RDC_TRANSLATED) +#define GETCOL8_MAPPED(col) (translation[(col)]) +#else +#define GETCOL8_MAPPED(col) (col) +#endif + +#if (R_DRAWCOLUMN_PIPELINE & RDC_NOCOLMAP) + #define GETCOL8_DEPTH(col) GETCOL8_MAPPED(col) +#else + #if (R_DRAWCOLUMN_PIPELINE & RDC_DITHERZ) + #define GETCOL8_DEPTH(col) (dither_colormaps[filter_getDitheredPixelLevel(x, y, fracz)][GETCOL8_MAPPED(col)]) + #else + #define GETCOL8_DEPTH(col) colormap[GETCOL8_MAPPED(col)] + #endif +#endif + +#if (R_DRAWCOLUMN_PIPELINE & RDC_BILINEAR) + #define GETCOL8(frac, nextfrac) GETCOL8_DEPTH(filter_getDitheredForColumn(x,y,frac,nextfrac)) + #define GETCOL15(frac, nextfrac) filter_getFilteredForColumn15(GETCOL8_DEPTH,frac,nextfrac) + #define GETCOL16(frac, nextfrac) filter_getFilteredForColumn16(GETCOL8_DEPTH,frac,nextfrac) + #define GETCOL32(frac, nextfrac) filter_getFilteredForColumn32(GETCOL8_DEPTH,frac,nextfrac) +#elif (R_DRAWCOLUMN_PIPELINE & RDC_ROUNDED) + #define GETCOL8(frac, nextfrac) GETCOL8_DEPTH(filter_getRoundedForColumn(frac,nextfrac)) + #define GETCOL15(frac, nextfrac) VID_PAL15(GETCOL8_DEPTH(filter_getRoundedForColumn(frac,nextfrac)), VID_COLORWEIGHTMASK) + #define GETCOL16(frac, nextfrac) VID_PAL16(GETCOL8_DEPTH(filter_getRoundedForColumn(frac,nextfrac)), VID_COLORWEIGHTMASK) + #define GETCOL32(frac, nextfrac) VID_PAL32(GETCOL8_DEPTH(filter_getRoundedForColumn(frac,nextfrac)), VID_COLORWEIGHTMASK) +#else + #define GETCOL8(frac, nextfrac) GETCOL8_DEPTH(source[(frac)>>FRACBITS]) + #define GETCOL15(frac, nextfrac) VID_PAL15(GETCOL8_DEPTH(source[(frac)>>FRACBITS]), VID_COLORWEIGHTMASK) + #define GETCOL16(frac, nextfrac) VID_PAL16(GETCOL8_DEPTH(source[(frac)>>FRACBITS]), VID_COLORWEIGHTMASK) + #define GETCOL32(frac, nextfrac) VID_PAL32(GETCOL8_DEPTH(source[(frac)>>FRACBITS]), VID_COLORWEIGHTMASK) +#endif + +#if (R_DRAWCOLUMN_PIPELINE & (RDC_BILINEAR|RDC_ROUNDED|RDC_DITHERZ)) + #define INCY(y) (y++) +#else + #define INCY(y) +#endif + +#if (R_DRAWCOLUMN_PIPELINE & RDC_TRANSLUCENT) +#define COLTYPE (COL_TRANS) +#elif (R_DRAWCOLUMN_PIPELINE & RDC_FUZZ) +#define COLTYPE (COL_FUZZ) +#else +#define COLTYPE (COL_OPAQUE) +#endif + +#if (R_DRAWCOLUMN_PIPELINE_BITS == 8) + #define GETCOL(frac, nextfrac) GETCOL8(frac, nextfrac) + #define GETDESTCOLOR(col) GETDESTCOLOR8(col) +#elif (R_DRAWCOLUMN_PIPELINE_BITS == 15) + #define GETCOL(frac, nextfrac) GETCOL15(frac, nextfrac) + #define GETDESTCOLOR(col) GETDESTCOLOR15(col) +#elif (R_DRAWCOLUMN_PIPELINE_BITS == 16) + #define GETCOL(frac, nextfrac) GETCOL16(frac, nextfrac) + #define GETDESTCOLOR(col) GETDESTCOLOR16(col) +#elif (R_DRAWCOLUMN_PIPELINE_BITS == 32) + #define GETCOL(frac, nextfrac) GETCOL32(frac, nextfrac) + #define GETDESTCOLOR(col) GETDESTCOLOR32(col) +#endif + +static void R_DRAWCOLUMN_FUNCNAME(draw_column_vars_t *dcvars) +{ + int count; + SCREENTYPE *dest; // killough + fixed_t frac; + const fixed_t fracstep = dcvars->iscale; +#if ((R_DRAWCOLUMN_PIPELINE & RDC_BILINEAR) && (R_DRAWCOLUMN_PIPELINE_BITS != 8)) + const fixed_t slope_texu = (dcvars->source == dcvars->nextsource) ? 0 : dcvars->texu & 0xffff; +#else + const fixed_t slope_texu = dcvars->texu; +#endif + + // drop back to point filtering if we're minifying +#if (R_DRAWCOLUMN_PIPELINE & (RDC_BILINEAR|RDC_ROUNDED)) + if (dcvars->iscale > drawvars.mag_threshold) { + R_GetDrawColumnFunc(R_DRAWCOLUMN_PIPELINE_TYPE, + RDRAW_FILTER_POINT, + drawvars.filterz)(dcvars); + return; + } +#endif + +#if (R_DRAWCOLUMN_PIPELINE & RDC_FUZZ) + // Adjust borders. Low... + if (!dcvars->yl) + dcvars->yl = 1; + + // .. and high. + if (dcvars->yh == viewheight-1) + dcvars->yh = viewheight - 2; +#endif + + // leban 1/17/99: + // removed the + 1 here, adjusted the if test, and added an increment + // later. this helps a compiler pipeline a bit better. the x86 + // assembler also does this. + + count = dcvars->yh - dcvars->yl; + + // leban 1/17/99: + // this case isn't executed too often. depending on how many instructions + // there are between here and the second if test below, this case could + // be moved down and might save instructions overall. since there are + // probably different wads that favor one way or the other, i'll leave + // this alone for now. + if (count < 0) // Zero length, column does not exceed a pixel. + return; + +#ifdef RANGECHECK + if (dcvars->x >= SCREENWIDTH + || dcvars->yl < 0 + || dcvars->yh >= SCREENHEIGHT) + I_Error("R_DrawColumn: %i to %i at %i", dcvars->yl, dcvars->yh, dcvars->x); +#endif + + // Determine scaling, which is the only mapping to be done. + #if (R_DRAWCOLUMN_PIPELINE & RDC_BILINEAR) + frac = dcvars->texturemid - (FRACUNIT>>1) + (dcvars->yl-centery)*fracstep; + #else + frac = dcvars->texturemid + (dcvars->yl-centery)*fracstep; + #endif + + if (dcvars->drawingmasked && dcvars->edgetype == RDRAW_MASKEDCOLUMNEDGE_SLOPED) { + // slope the top and bottom column edge based on the fractional u coordinate + // and dcvars->edgeslope, which were set in R_DrawMaskedColumn + // in r_things.c + if (dcvars->yl != 0) { + if (dcvars->edgeslope & RDRAW_EDGESLOPE_TOP_UP) { + // [/#] + int shift = ((0xffff-(slope_texu & 0xffff))/dcvars->iscale); + dcvars->yl += shift; + count -= shift; + frac += 0xffff-(slope_texu & 0xffff); + } + else if (dcvars->edgeslope & RDRAW_EDGESLOPE_TOP_DOWN) { + // [#\] + int shift = ((slope_texu & 0xffff)/dcvars->iscale); + dcvars->yl += shift; + count -= shift; + frac += slope_texu & 0xffff; + } + } + if (dcvars->yh != viewheight-1) { + if (dcvars->edgeslope & RDRAW_EDGESLOPE_BOT_UP) { + // [#/] + int shift = ((0xffff-(slope_texu & 0xffff))/dcvars->iscale); + dcvars->yh -= shift; + count -= shift; + } + else if (dcvars->edgeslope & RDRAW_EDGESLOPE_BOT_DOWN) { + // [\#] + int shift = ((slope_texu & 0xffff)/dcvars->iscale); + dcvars->yh -= shift; + count -= shift; + } + } + if (count <= 0) return; + } + + // Framebuffer destination address. + // SoM: MAGIC + { + // haleyjd: reordered predicates + if(temp_x == 4 || + (temp_x && (temptype != COLTYPE || temp_x + startx != dcvars->x))) + R_FlushColumns(); + + if(!temp_x) + { + startx = dcvars->x; + tempyl[0] = commontop = dcvars->yl; + tempyh[0] = commonbot = dcvars->yh; + temptype = COLTYPE; +#if (R_DRAWCOLUMN_PIPELINE & RDC_TRANSLUCENT) + temptranmap = tranmap; +#elif (R_DRAWCOLUMN_PIPELINE & RDC_FUZZ) + tempfuzzmap = fullcolormap; // SoM 7-28-04: Fix the fuzz problem. +#endif + R_FlushWholeColumns = R_FLUSHWHOLE_FUNCNAME; + R_FlushHTColumns = R_FLUSHHEADTAIL_FUNCNAME; + R_FlushQuadColumn = R_FLUSHQUAD_FUNCNAME; + dest = &TEMPBUF[dcvars->yl << 2]; + } else { + tempyl[temp_x] = dcvars->yl; + tempyh[temp_x] = dcvars->yh; + + if(dcvars->yl > commontop) + commontop = dcvars->yl; + if(dcvars->yh < commonbot) + commonbot = dcvars->yh; + + dest = &TEMPBUF[(dcvars->yl << 2) + temp_x]; + } + temp_x += 1; + } + +// do nothing else when drawin fuzz columns +#if (!(R_DRAWCOLUMN_PIPELINE & RDC_FUZZ)) + { + const byte *source = dcvars->source; + const lighttable_t *colormap = dcvars->colormap; + const byte *translation = dcvars->translation; +#if (R_DRAWCOLUMN_PIPELINE & (RDC_BILINEAR|RDC_ROUNDED|RDC_DITHERZ)) + int y = dcvars->yl; + const int x = dcvars->x; +#endif +#if (R_DRAWCOLUMN_PIPELINE & RDC_DITHERZ) + const int fracz = (dcvars->z >> 6) & 255; + const byte *dither_colormaps[2] = { dcvars->colormap, dcvars->nextcolormap }; +#endif +#if (R_DRAWCOLUMN_PIPELINE & RDC_BILINEAR) + #if (R_DRAWCOLUMN_PIPELINE_BITS == 8) + const int yl = dcvars->yl; + const byte *dither_sources[2] = { dcvars->source, dcvars->nextsource }; + const unsigned int filter_fracu = (dcvars->source == dcvars->nextsource) ? 0 : (dcvars->texu>>8) & 0xff; + #else + const byte *nextsource = dcvars->nextsource; + const unsigned int filter_fracu = (dcvars->source == dcvars->nextsource) ? 0 : dcvars->texu & 0xffff; + #endif +#endif +#if (R_DRAWCOLUMN_PIPELINE & RDC_ROUNDED) + const byte *prevsource = dcvars->prevsource; + const byte *nextsource = dcvars->nextsource; + const unsigned int filter_fracu = (dcvars->source == dcvars->nextsource) ? 0 : (dcvars->texu>>8) & 0xff; +#endif + + count++; + + // Inner loop that does the actual texture mapping, + // e.g. a DDA-lile scaling. + // This is as fast as it gets. (Yeah, right!!! -- killough) + // + // killough 2/1/98: more performance tuning + + if (dcvars->texheight == 128) { + #define FIXEDT_128MASK ((127<texheight == 0) { + /* cph - another special case */ + while (count--) { + *dest = GETDESTCOLOR(GETCOL(frac, (frac+FRACUNIT))); + INCY(y); + dest += 4; + frac += fracstep; + } + } else { + unsigned heightmask = dcvars->texheight-1; // CPhipps - specify type + if (! (dcvars->texheight & heightmask) ) { // power of 2 -- killough + fixed_t fixedt_heightmask = (heightmask<=0) { // texture height is a power of 2 -- killough + *dest = GETDESTCOLOR(GETCOL(frac & fixedt_heightmask, (frac+FRACUNIT) & fixedt_heightmask)); + INCY(y); + dest += 4; + frac += fracstep; + *dest = GETDESTCOLOR(GETCOL(frac & fixedt_heightmask, (frac+FRACUNIT) & fixedt_heightmask)); + INCY(y); + dest += 4; + frac += fracstep; + } + if (count & 1) + *dest = GETDESTCOLOR(GETCOL(frac & fixedt_heightmask, (frac+FRACUNIT) & fixedt_heightmask)); + INCY(y); + } else { + fixed_t nextfrac = 0; + + heightmask++; + heightmask <<= FRACBITS; + + if (frac < 0) + while ((frac += heightmask) < 0); + else + while (frac >= (int)heightmask) + frac -= heightmask; + +#if (R_DRAWCOLUMN_PIPELINE & (RDC_BILINEAR|RDC_ROUNDED)) + nextfrac = frac + FRACUNIT; + while (nextfrac >= (int)heightmask) + nextfrac -= heightmask; +#endif + +#define INCFRAC(f) if ((f += fracstep) >= (int)heightmask) f -= heightmask; + + while (count--) { + // Re-map color indices from wall texture column + // using a lighting/special effects LUT. + + // heightmask is the Tutti-Frutti fix -- killough + + *dest = GETDESTCOLOR(GETCOL(frac, nextfrac)); + INCY(y); + dest += 4; + INCFRAC(frac); +#if (R_DRAWCOLUMN_PIPELINE & (RDC_BILINEAR|RDC_ROUNDED)) + INCFRAC(nextfrac); +#endif + } + } + } + } +#endif // (!(R_DRAWCOLUMN_PIPELINE & RDC_FUZZ)) +} + +#undef GETDESTCOLOR32 +#undef GETDESTCOLOR16 +#undef GETDESTCOLOR15 +#undef GETDESTCOLOR8 +#undef GETDESTCOLOR +#undef GETCOL8_MAPPED +#undef GETCOL8_DEPTH +#undef GETCOL32 +#undef GETCOL16 +#undef GETCOL15 +#undef GETCOL8 +#undef GETCOL +#undef INCY +#undef INCFRAC +#undef COLTYPE +#undef TEMPBUF +#undef SCREENTYPE + +#undef R_DRAWCOLUMN_FUNCNAME +#undef R_DRAWCOLUMN_PIPELINE diff --git a/components/doom/prboom/r_drawflush.inl b/components/doom/prboom/r_drawflush.inl new file mode 100644 index 0000000..ab8ce61 --- /dev/null +++ b/components/doom/prboom/r_drawflush.inl @@ -0,0 +1,300 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + *-----------------------------------------------------------------------------*/ + +#if (R_DRAWCOLUMN_PIPELINE_BITS == 8) +#define SCREENTYPE byte +#define TOPLEFT byte_topleft +#define PITCH byte_pitch +#define TEMPBUF byte_tempbuf +#elif (R_DRAWCOLUMN_PIPELINE_BITS == 15) +#define SCREENTYPE unsigned short +#define TOPLEFT short_topleft +#define PITCH short_pitch +#define TEMPBUF short_tempbuf +#elif (R_DRAWCOLUMN_PIPELINE_BITS == 16) +#define SCREENTYPE unsigned short +#define TOPLEFT short_topleft +#define PITCH short_pitch +#define TEMPBUF short_tempbuf +#elif (R_DRAWCOLUMN_PIPELINE_BITS == 32) +#define SCREENTYPE unsigned int +#define TOPLEFT int_topleft +#define PITCH int_pitch +#define TEMPBUF int_tempbuf +#endif + +#if (R_DRAWCOLUMN_PIPELINE & RDC_TRANSLUCENT) +#define GETDESTCOLOR8(col1, col2) (temptranmap[((col1)<<8)+(col2)]) +#define GETDESTCOLOR15(col1, col2) (GETBLENDED15_3268((col1), (col2))) +#define GETDESTCOLOR16(col1, col2) (GETBLENDED16_3268((col1), (col2))) +#define GETDESTCOLOR32(col1, col2) (GETBLENDED32_3268((col1), (col2))) +#elif (R_DRAWCOLUMN_PIPELINE & RDC_FUZZ) +#define GETDESTCOLOR8(col) (tempfuzzmap[6*256+(col)]) +#define GETDESTCOLOR15(col) GETBLENDED15_9406(col, 0) +#define GETDESTCOLOR16(col) GETBLENDED16_9406(col, 0) +#define GETDESTCOLOR32(col) GETBLENDED32_9406(col, 0) +#else +#define GETDESTCOLOR8(col) (col) +#define GETDESTCOLOR15(col) (col) +#define GETDESTCOLOR16(col) (col) +#define GETDESTCOLOR32(col) (col) +#endif + +#if (R_DRAWCOLUMN_PIPELINE & RDC_TRANSLUCENT) + #if (R_DRAWCOLUMN_PIPELINE_BITS == 8) + #define GETDESTCOLOR(col1, col2) GETDESTCOLOR8(col1, col2) + #elif (R_DRAWCOLUMN_PIPELINE_BITS == 15) + #define GETDESTCOLOR(col1, col2) GETDESTCOLOR15(col1, col2) + #elif (R_DRAWCOLUMN_PIPELINE_BITS == 16) + #define GETDESTCOLOR(col1, col2) GETDESTCOLOR16(col1, col2) + #elif (R_DRAWCOLUMN_PIPELINE_BITS == 32) + #define GETDESTCOLOR(col1, col2) GETDESTCOLOR32(col1, col2) + #endif +#else + #if (R_DRAWCOLUMN_PIPELINE_BITS == 8) + #define GETDESTCOLOR(col) GETDESTCOLOR8(col) + #elif (R_DRAWCOLUMN_PIPELINE_BITS == 15) + #define GETDESTCOLOR(col) GETDESTCOLOR15(col) + #elif (R_DRAWCOLUMN_PIPELINE_BITS == 16) + #define GETDESTCOLOR(col) GETDESTCOLOR16(col) + #elif (R_DRAWCOLUMN_PIPELINE_BITS == 32) + #define GETDESTCOLOR(col) GETDESTCOLOR32(col) + #endif +#endif + +// +// R_FlushWholeOpaque +// +// Flushes the entire columns in the buffer, one at a time. +// This is used when a quad flush isn't possible. +// Opaque version -- no remapping whatsoever. +// +static void R_FLUSHWHOLE_FUNCNAME(void) +{ + SCREENTYPE *source; + SCREENTYPE *dest; + int count, yl; + + while(--temp_x >= 0) + { + yl = tempyl[temp_x]; + source = &TEMPBUF[temp_x + (yl << 2)]; + dest = drawvars.TOPLEFT + yl*drawvars.PITCH + startx + temp_x; + count = tempyh[temp_x] - yl + 1; + + while(--count >= 0) + { +#if (R_DRAWCOLUMN_PIPELINE & RDC_TRANSLUCENT) + *dest = GETDESTCOLOR(*dest, *source); +#elif (R_DRAWCOLUMN_PIPELINE & RDC_FUZZ) + // SoM 7-28-04: Fix the fuzz problem. + *dest = GETDESTCOLOR(dest[fuzzoffset[fuzzpos]]); + + // Clamp table lookup index. + if(++fuzzpos == FUZZTABLE) + fuzzpos = 0; +#else + *dest = *source; +#endif + + source += 4; + dest += drawvars.PITCH; + } + } +} + +// +// R_FlushHTOpaque +// +// Flushes the head and tail of columns in the buffer in +// preparation for a quad flush. +// Opaque version -- no remapping whatsoever. +// +static void R_FLUSHHEADTAIL_FUNCNAME(void) +{ + SCREENTYPE *source; + SCREENTYPE *dest; + int count, colnum = 0; + int yl, yh; + + while(colnum < 4) + { + yl = tempyl[colnum]; + yh = tempyh[colnum]; + + // flush column head + if(yl < commontop) + { + source = &TEMPBUF[colnum + (yl << 2)]; + dest = drawvars.TOPLEFT + yl*drawvars.PITCH + startx + colnum; + count = commontop - yl; + + while(--count >= 0) + { +#if (R_DRAWCOLUMN_PIPELINE & RDC_TRANSLUCENT) + // haleyjd 09/11/04: use temptranmap here + *dest = GETDESTCOLOR(*dest, *source); +#elif (R_DRAWCOLUMN_PIPELINE & RDC_FUZZ) + // SoM 7-28-04: Fix the fuzz problem. + *dest = GETDESTCOLOR(dest[fuzzoffset[fuzzpos]]); + + // Clamp table lookup index. + if(++fuzzpos == FUZZTABLE) + fuzzpos = 0; +#else + *dest = *source; +#endif + + source += 4; + dest += drawvars.PITCH; + } + } + + // flush column tail + if(yh > commonbot) + { + source = &TEMPBUF[colnum + ((commonbot + 1) << 2)]; + dest = drawvars.TOPLEFT + (commonbot + 1)*drawvars.PITCH + startx + colnum; + count = yh - commonbot; + + while(--count >= 0) + { +#if (R_DRAWCOLUMN_PIPELINE & RDC_TRANSLUCENT) + // haleyjd 09/11/04: use temptranmap here + *dest = GETDESTCOLOR(*dest, *source); +#elif (R_DRAWCOLUMN_PIPELINE & RDC_FUZZ) + // SoM 7-28-04: Fix the fuzz problem. + *dest = GETDESTCOLOR(dest[fuzzoffset[fuzzpos]]); + + // Clamp table lookup index. + if(++fuzzpos == FUZZTABLE) + fuzzpos = 0; +#else + *dest = *source; +#endif + + source += 4; + dest += drawvars.PITCH; + } + } + ++colnum; + } +} + +static void R_FLUSHQUAD_FUNCNAME(void) +{ + SCREENTYPE *source = &TEMPBUF[commontop << 2]; + SCREENTYPE *dest = drawvars.TOPLEFT + commontop*drawvars.PITCH + startx; + int count; +#if (R_DRAWCOLUMN_PIPELINE & RDC_FUZZ) + int fuzz1, fuzz2, fuzz3, fuzz4; + + fuzz1 = fuzzpos; + fuzz2 = (fuzz1 + tempyl[1]) % FUZZTABLE; + fuzz3 = (fuzz2 + tempyl[2]) % FUZZTABLE; + fuzz4 = (fuzz3 + tempyl[3]) % FUZZTABLE; +#endif + + count = commonbot - commontop + 1; + +#if (R_DRAWCOLUMN_PIPELINE & RDC_TRANSLUCENT) + while(--count >= 0) + { + dest[0] = GETDESTCOLOR(dest[0], source[0]); + dest[1] = GETDESTCOLOR(dest[1], source[1]); + dest[2] = GETDESTCOLOR(dest[2], source[2]); + dest[3] = GETDESTCOLOR(dest[3], source[3]); + source += 4 * sizeof(byte); + dest += drawvars.PITCH * sizeof(byte); + } +#elif (R_DRAWCOLUMN_PIPELINE & RDC_FUZZ) + while(--count >= 0) + { + dest[0] = GETDESTCOLOR(dest[0 + fuzzoffset[fuzz1]]); + dest[1] = GETDESTCOLOR(dest[1 + fuzzoffset[fuzz2]]); + dest[2] = GETDESTCOLOR(dest[2 + fuzzoffset[fuzz3]]); + dest[3] = GETDESTCOLOR(dest[3 + fuzzoffset[fuzz4]]); + fuzz1 = (fuzz1 + 1) % FUZZTABLE; + fuzz2 = (fuzz2 + 1) % FUZZTABLE; + fuzz3 = (fuzz3 + 1) % FUZZTABLE; + fuzz4 = (fuzz4 + 1) % FUZZTABLE; + source += 4 * sizeof(byte); + dest += drawvars.PITCH * sizeof(byte); + } +#else + #if (R_DRAWCOLUMN_PIPELINE_BITS == 8) + if ((sizeof(int) == 4) && (((int)source % 4) == 0) && (((int)dest % 4) == 0)) { + while(--count >= 0) + { + *(int *)dest = *(int *)source; + source += 4 * sizeof(byte); + dest += drawvars.PITCH * sizeof(byte); + } + } else { + while(--count >= 0) + { + dest[0] = source[0]; + dest[1] = source[1]; + dest[2] = source[2]; + dest[3] = source[3]; + source += 4 * sizeof(byte); + dest += drawvars.PITCH * sizeof(byte); + } + } + #else + while(--count >= 0) + { + dest[0] = source[0]; + dest[1] = source[1]; + dest[2] = source[2]; + dest[3] = source[3]; + source += 4; + dest += drawvars.PITCH; + } + #endif +#endif +} + +#undef GETDESTCOLOR32 +#undef GETDESTCOLOR16 +#undef GETDESTCOLOR15 +#undef GETDESTCOLOR8 +#undef GETDESTCOLOR + +#undef TEMPBUF +#undef PITCH +#undef TOPLEFT +#undef SCREENTYPE + +#undef R_DRAWCOLUMN_PIPELINE_BITS +#undef R_DRAWCOLUMN_PIPELINE +#undef R_FLUSHWHOLE_FUNCNAME +#undef R_FLUSHHEADTAIL_FUNCNAME +#undef R_FLUSHQUAD_FUNCNAME diff --git a/components/doom/prboom/r_drawspan.inl b/components/doom/prboom/r_drawspan.inl new file mode 100644 index 0000000..84cc95d --- /dev/null +++ b/components/doom/prboom/r_drawspan.inl @@ -0,0 +1,160 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + *-----------------------------------------------------------------------------*/ + +// +// R_DrawSpan +// + +#if (R_DRAWSPAN_PIPELINE_BITS == 8) +#define SCREENTYPE byte +#define TOPLEFT byte_topleft +#define PITCH byte_pitch +#elif (R_DRAWSPAN_PIPELINE_BITS == 15) +#define SCREENTYPE unsigned short +#define TOPLEFT short_topleft +#define PITCH short_pitch +#elif (R_DRAWSPAN_PIPELINE_BITS == 16) +#define SCREENTYPE unsigned short +#define TOPLEFT short_topleft +#define PITCH short_pitch +#elif (R_DRAWSPAN_PIPELINE_BITS == 32) +#define SCREENTYPE unsigned int +#define TOPLEFT int_topleft +#define PITCH int_pitch +#endif + +#if (R_DRAWSPAN_PIPELINE & RDC_DITHERZ) + #define GETDEPTHMAP(col) dither_colormaps[filter_getDitheredPixelLevel(x1, y, fracz)][(col)] +#else + #define GETDEPTHMAP(col) colormap[(col)] +#endif + +#if (R_DRAWSPAN_PIPELINE_BITS == 8) + #define GETCOL_POINT(col) GETDEPTHMAP(col) + #define GETCOL_LINEAR(col) GETDEPTHMAP(col) +#elif (R_DRAWSPAN_PIPELINE_BITS == 15) + #define GETCOL_POINT(col) VID_PAL15(GETDEPTHMAP(col), VID_COLORWEIGHTMASK) + #define GETCOL_LINEAR(col) filter_getFilteredForSpan15(GETDEPTHMAP, xfrac, yfrac) +#elif (R_DRAWSPAN_PIPELINE_BITS == 16) + #define GETCOL_POINT(col) VID_PAL16(GETDEPTHMAP(col), VID_COLORWEIGHTMASK) + #define GETCOL_LINEAR(col) filter_getFilteredForSpan16(GETDEPTHMAP, xfrac, yfrac) +#elif (R_DRAWSPAN_PIPELINE_BITS == 32) + #define GETCOL_POINT(col) VID_PAL32(GETDEPTHMAP(col), VID_COLORWEIGHTMASK) + #define GETCOL_LINEAR(col) filter_getFilteredForSpan32(GETDEPTHMAP, xfrac, yfrac) +#endif + +#if (R_DRAWSPAN_PIPELINE & RDC_BILINEAR) + #define GETCOL(col) GETCOL_LINEAR(col) +#else + #define GETCOL(col) GETCOL_POINT(col) +#endif + +static void R_DRAWSPAN_FUNCNAME(draw_span_vars_t *dsvars) +{ +#if (R_DRAWSPAN_PIPELINE & (RDC_ROUNDED|RDC_BILINEAR)) + // drop back to point filtering if we're minifying + // 49152 = FRACUNIT * 0.75 + if ((D_abs(dsvars->xstep) > drawvars.mag_threshold) + || (D_abs(dsvars->ystep) > drawvars.mag_threshold)) + { + R_GetDrawSpanFunc(RDRAW_FILTER_POINT, + drawvars.filterz)(dsvars); + return; + } +#endif + { + unsigned count = dsvars->x2 - dsvars->x1 + 1; + fixed_t xfrac = dsvars->xfrac; + fixed_t yfrac = dsvars->yfrac; + const fixed_t xstep = dsvars->xstep; + const fixed_t ystep = dsvars->ystep; + const byte *source = dsvars->source; + const byte *colormap = dsvars->colormap; + SCREENTYPE *dest = drawvars.TOPLEFT + dsvars->y*drawvars.PITCH + dsvars->x1; +#if (R_DRAWSPAN_PIPELINE & (RDC_DITHERZ|RDC_BILINEAR)) + const int y = dsvars->y; + int x1 = dsvars->x1; +#endif +#if (R_DRAWSPAN_PIPELINE & RDC_DITHERZ) + const int fracz = (dsvars->z >> 12) & 255; + const byte *dither_colormaps[2] = { dsvars->colormap, dsvars->nextcolormap }; +#endif + + while (count) { +#if ((R_DRAWSPAN_PIPELINE_BITS != 8) && (R_DRAWSPAN_PIPELINE & RDC_BILINEAR)) + // truecolor bilinear filtered + *dest++ = GETCOL(0); + xfrac += xstep; + yfrac += ystep; + count--; + #if (R_DRAWSPAN_PIPELINE & RDC_DITHERZ) + x1--; + #endif +#elif (R_DRAWSPAN_PIPELINE & RDC_ROUNDED) + *dest++ = GETCOL(filter_getRoundedForSpan(xfrac, yfrac)); + xfrac += xstep; + yfrac += ystep; + count--; + #if (R_DRAWSPAN_PIPELINE & RDC_DITHERZ) + x1--; + #endif +#else + #if (R_DRAWSPAN_PIPELINE & RDC_BILINEAR) + // 8 bit bilinear + const fixed_t xtemp = ((xfrac >> 16) + (filter_getDitheredPixelLevel(x1, y, ((xfrac>>8)&0xff)))) & 63; + const fixed_t ytemp = ((yfrac >> 10) + 64*(filter_getDitheredPixelLevel(x1, y, ((yfrac>>8)&0xff)))) & 4032; + #else + const fixed_t xtemp = (xfrac >> 16) & 63; + const fixed_t ytemp = (yfrac >> 10) & 4032; + #endif + const fixed_t spot = xtemp | ytemp; + xfrac += xstep; + yfrac += ystep; + *dest++ = GETCOL(source[spot]); + count--; + #if (R_DRAWSPAN_PIPELINE & (RDC_DITHERZ|RDC_BILINEAR)) + x1--; + #endif +#endif + } + } +} + +#undef GETDEPTHMAP +#undef GETCOL_LINEAR +#undef GETCOL_POINT +#undef GETCOL +#undef PITCH +#undef TOPLEFT +#undef SCREENTYPE + +#undef R_DRAWSPAN_PIPELINE_BITS +#undef R_DRAWSPAN_PIPELINE +#undef R_DRAWSPAN_FUNCNAME diff --git a/components/doom/prboom/r_filter.c b/components/doom/prboom/r_filter.c new file mode 100644 index 0000000..6605172 --- /dev/null +++ b/components/doom/prboom/r_filter.c @@ -0,0 +1,123 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + *-----------------------------------------------------------------------------*/ + +#include "doomtype.h" +#include "r_filter.h" +#include "z_zone.h" + +#define DMR 16 +byte filter_ditherMatrix[DITHER_DIM][DITHER_DIM] = { + {0*DMR, 14*DMR, 3*DMR, 13*DMR}, {11*DMR, 5*DMR, 8*DMR, 6*DMR}, + {12*DMR, 2*DMR, 15*DMR, 1*DMR}, {7*DMR, 9*DMR, 4*DMR, 10*DMR} +}; + +byte *filter_roundedUVMap; +byte filter_roundedRowMap[4*16]; + +void R_FilterInit(void) { + int i,j,s,t; + + + filter_roundedUVMap=malloc(FILTER_UVDIM*FILTER_UVDIM); + + // scale2x takes the following source: + // A B C + // D E F + // G H I + // + // and doubles the size of E to produce: + // E0 E1 + // E2 E3 + // + // E0 = D == B && B != F && D != H ? D : E; + // E1 = B == F && B != D && F != H ? F : E; + // E2 = D == H && D != B && H != F ? D : E; + // E3 = H == F && D != H && B != F ? F : E; + // + // to make this comparison regimen faster, we encode source color + // equivalency into a single byte with the getCode() macro + // + // #define getCode(b,f,h,d) ( (b == f)<<0 | (f == h)<<1 | (h == d)<<2 | (d == b)<<3 ) + + // encode the scale2x conditionals into a lookup code + for (i=0; i<16; i++) { + // E0 = D == B && B != F && D != H ? D : E; // 10-0 => 1000 or 1010 => 8 or A + filter_roundedRowMap[0*16+i] = (i == 0x8 || i == 0xA) ? 0 : 1; + // E1 = B == F && B != D && F != H ? F : E; // 0-01 => 0101 or 0001 => 5 or 1 + filter_roundedRowMap[1*16+i] = (i == 0x5 || i == 0x1) ? 2 : 1; + // E2 = D == H && D != B && H != F ? D : E; // 010- => 0101 or 0100 => 5 or 4 + filter_roundedRowMap[2*16+i] = (i == 0x4 || i == 0x5) ? 0 : 1; + // E3 = H == F && D != H && B != F ? F : E; // -010 => 1010 or 0010 => A or 2 + filter_roundedRowMap[3*16+i] = (i == 0xA || i == 0x2) ? 2 : 1; + } + + // fill the uvMap. this will return: + // 0/\1x + // /4 \x + // \ /x + // 2\/3x + // .. based on the uv coordinates + for (i=0; i=0 && t>=0) filter_roundedUVMap[i*FILTER_UVDIM+j] = (s+t > FILTER_UVDIM/2) ? 0 : 4; + else if (s>=0 && t<=0) filter_roundedUVMap[i*FILTER_UVDIM+j] = (s-t > FILTER_UVDIM/2) ? 2 : 4; + else if (s<=0 && t>=0) filter_roundedUVMap[i*FILTER_UVDIM+j] = (-s+t > FILTER_UVDIM/2) ? 1 : 4; + else if (s<=0 && t<=0) filter_roundedUVMap[i*FILTER_UVDIM+j] = (-s-t > FILTER_UVDIM/2) ? 3 : 4; + else filter_roundedUVMap[i*FILTER_UVDIM+j] = 4; + } + } +} + +byte *filter_getScale2xQuadColors(byte e, byte b, byte f, byte h, byte d) { + // A B C + // D E F + // G H I + // perform the Scale2x algorithm (quickly) to get the new quad to represent E + static byte quad[5]; + static byte rowColors[3]; + int code; + + rowColors[0] = d; + rowColors[1] = e; + rowColors[2] = f; + + #define getCode(b,f,h,d) ( (b == f)<<0 | (f == h)<<1 | (h == d)<<2 | (d == b)<<3 ) + + code = getCode(b,f,h,d); + quad[0] = rowColors[filter_roundedRowMap[0*16+code]]; + quad[1] = rowColors[filter_roundedRowMap[1*16+code]]; + quad[2] = rowColors[filter_roundedRowMap[2*16+code]]; + quad[3] = rowColors[filter_roundedRowMap[3*16+code]]; + quad[4] = e; + + return quad; +} diff --git a/components/doom/prboom/r_filter.h b/components/doom/prboom/r_filter.h new file mode 100644 index 0000000..2738c0d --- /dev/null +++ b/components/doom/prboom/r_filter.h @@ -0,0 +1,175 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + *-----------------------------------------------------------------------------*/ + +#ifndef R_FILTER_H +#define R_FILTER_H + +#define DITHER_DIM 4 + +extern byte filter_ditherMatrix[DITHER_DIM][DITHER_DIM]; +#define FILTER_UVBITS 6 +#define FILTER_UVDIM (1<> 8), which was empirically +// derived. the "-dcvars.yl" is apparently required to offset some minor +// shaking in coordinate y-axis and prevents dithering seams +#define FILTER_GETV(x,y,texV,nextRowTexV) \ + (filter_getDitheredPixelLevel(x, y, (((texV) - yl) >> 8)&0xff) ? ((nextRowTexV)>>FRACBITS) : ((texV)>>FRACBITS)) + +// Choose current column or next column to the right based on dither of the +// fractional texture U coord +#define filter_getDitheredForColumn(x, y, texV, nextRowTexV) \ + dither_sources[(filter_getDitheredPixelLevel(x, y, filter_fracu))][FILTER_GETV(x,y,texV,nextRowTexV)] + +#define filter_getRoundedForColumn(texV, nextRowTexV) \ + filter_getScale2xQuadColors( \ + source[ ((texV)>>FRACBITS) ], \ + source[ (MAX(0, ((texV)>>FRACBITS)-1)) ], \ + nextsource[ ((texV)>>FRACBITS) ], \ + source[ ((nextRowTexV)>>FRACBITS) ], \ + prevsource[ ((texV)>>FRACBITS) ] \ + ) \ + [ filter_roundedUVMap[ \ + ((filter_fracu>>(8-FILTER_UVBITS))<>8) & 0xff)>>(8-FILTER_UVBITS)) \ + ] ] + +#define filter_getRoundedForSpan(texU, texV) \ + filter_getScale2xQuadColors( \ + source[ (((texU)>>16)&0x3f) | (((texV)>>10)&0xfc0) ], \ + source[ (((texU)>>16)&0x3f) | ((((texV)-FRACUNIT)>>10)&0xfc0) ], \ + source[ ((((texU)+FRACUNIT)>>16)&0x3f) | (((texV)>>10)&0xfc0) ], \ + source[ (((texU)>>16)&0x3f) | ((((texV)+FRACUNIT)>>10)&0xfc0) ], \ + source[ ((((texU)-FRACUNIT)>>16)&0x3f) | (((texV)>>10)&0xfc0) ] \ + ) \ + [ filter_roundedUVMap[ \ + (((((texU)>>8) & 0xff)>>(8-FILTER_UVBITS))<>8) & 0xff)>>(8-FILTER_UVBITS)) \ + ] ] + +byte *filter_getScale2xQuadColors(byte e, byte b, byte f, byte h, byte d); + +// This is the horrendous macro version of the function commented out of +// r_filter.c. It does a bilinear blend on the four source texels for a +// given u and v +#define filter_getFilteredForColumn32(depthmap, texV, nextRowTexV) ( \ + VID_PAL32( depthmap(nextsource[(nextRowTexV)>>FRACBITS]), (filter_fracu*((texV)&0xffff))>>(32-VID_COLORWEIGHTBITS) ) + \ + VID_PAL32( depthmap(source[(nextRowTexV)>>FRACBITS]), ((0xffff-filter_fracu)*((texV)&0xffff))>>(32-VID_COLORWEIGHTBITS) ) + \ + VID_PAL32( depthmap(source[(texV)>>FRACBITS]), ((0xffff-filter_fracu)*(0xffff-((texV)&0xffff)))>>(32-VID_COLORWEIGHTBITS) ) + \ + VID_PAL32( depthmap(nextsource[(texV)>>FRACBITS]), (filter_fracu*(0xffff-((texV)&0xffff)))>>(32-VID_COLORWEIGHTBITS) )) + +// The 16 bit method of the filtering doesn't really maintain enough +// accuracy for discerning viewers, but the alternative requires converting +// from 32 bit, which is slow and requires both the intPalette and the +// shortPalette to be in memory at the same time. +#define filter_getFilteredForColumn16(depthmap, texV, nextRowTexV) ( \ + VID_PAL16( depthmap(nextsource[(nextRowTexV)>>FRACBITS]), (filter_fracu*((texV)&0xffff))>>(32-VID_COLORWEIGHTBITS) ) + \ + VID_PAL16( depthmap(source[(nextRowTexV)>>FRACBITS]), ((0xffff-filter_fracu)*((texV)&0xffff))>>(32-VID_COLORWEIGHTBITS) ) + \ + VID_PAL16( depthmap(source[(texV)>>FRACBITS]), ((0xffff-filter_fracu)*(0xffff-((texV)&0xffff)))>>(32-VID_COLORWEIGHTBITS) ) + \ + VID_PAL16( depthmap(nextsource[(texV)>>FRACBITS]), (filter_fracu*(0xffff-((texV)&0xffff)))>>(32-VID_COLORWEIGHTBITS) )) + +#define filter_getFilteredForColumn15(depthmap, texV, nextRowTexV) ( \ + VID_PAL15( depthmap(nextsource[(nextRowTexV)>>FRACBITS]), (filter_fracu*((texV)&0xffff))>>(32-VID_COLORWEIGHTBITS) ) + \ + VID_PAL15( depthmap(source[(nextRowTexV)>>FRACBITS]), ((0xffff-filter_fracu)*((texV)&0xffff))>>(32-VID_COLORWEIGHTBITS) ) + \ + VID_PAL15( depthmap(source[(texV)>>FRACBITS]), ((0xffff-filter_fracu)*(0xffff-((texV)&0xffff)))>>(32-VID_COLORWEIGHTBITS) ) + \ + VID_PAL15( depthmap(nextsource[(texV)>>FRACBITS]), (filter_fracu*(0xffff-((texV)&0xffff)))>>(32-VID_COLORWEIGHTBITS) )) + +// Same as for column but wrapping at 64 +#define filter_getFilteredForSpan32(depthmap, texU, texV) ( \ + VID_PAL32( depthmap(source[ ((((texU)+FRACUNIT)>>16)&0x3f) | ((((texV)+FRACUNIT)>>10)&0xfc0)]), (unsigned int)(((texU)&0xffff)*((texV)&0xffff))>>(32-VID_COLORWEIGHTBITS)) + \ + VID_PAL32( depthmap(source[ (((texU)>>16)&0x3f) | ((((texV)+FRACUNIT)>>10)&0xfc0)]), (unsigned int)((0xffff-((texU)&0xffff))*((texV)&0xffff))>>(32-VID_COLORWEIGHTBITS)) + \ + VID_PAL32( depthmap(source[ (((texU)>>16)&0x3f) | (((texV)>>10)&0xfc0)]), (unsigned int)((0xffff-((texU)&0xffff))*(0xffff-((texV)&0xffff)))>>(32-VID_COLORWEIGHTBITS)) + \ + VID_PAL32( depthmap(source[ ((((texU)+FRACUNIT)>>16)&0x3f) | (((texV)>>10)&0xfc0)]), (unsigned int)(((texU)&0xffff)*(0xffff-((texV)&0xffff)))>>(32-VID_COLORWEIGHTBITS))) + +// Use 16 bit addition here since it's a little faster and the defects from +// such low-accuracy blending are less visible on spans +#define filter_getFilteredForSpan16(depthmap, texU, texV) ( \ + VID_PAL16( depthmap(source[ ((((texU)+FRACUNIT)>>16)&0x3f) | ((((texV)+FRACUNIT)>>10)&0xfc0)]), (unsigned int)(((texU)&0xffff)*((texV)&0xffff))>>(32-VID_COLORWEIGHTBITS)) + \ + VID_PAL16( depthmap(source[ (((texU)>>16)&0x3f) | ((((texV)+FRACUNIT)>>10)&0xfc0)]), (unsigned int)((0xffff-((texU)&0xffff))*((texV)&0xffff))>>(32-VID_COLORWEIGHTBITS)) + \ + VID_PAL16( depthmap(source[ (((texU)>>16)&0x3f) | (((texV)>>10)&0xfc0)]), (unsigned int)((0xffff-((texU)&0xffff))*(0xffff-((texV)&0xffff)))>>(32-VID_COLORWEIGHTBITS)) + \ + VID_PAL16( depthmap(source[ ((((texU)+FRACUNIT)>>16)&0x3f) | (((texV)>>10)&0xfc0)]), (unsigned int)(((texU)&0xffff)*(0xffff-((texV)&0xffff)))>>(32-VID_COLORWEIGHTBITS))) + +#define filter_getFilteredForSpan15(depthmap, texU, texV) ( \ + VID_PAL15( depthmap(source[ ((((texU)+FRACUNIT)>>16)&0x3f) | ((((texV)+FRACUNIT)>>10)&0xfc0)]), (unsigned int)(((texU)&0xffff)*((texV)&0xffff))>>(32-VID_COLORWEIGHTBITS)) + \ + VID_PAL15( depthmap(source[ (((texU)>>16)&0x3f) | ((((texV)+FRACUNIT)>>10)&0xfc0)]), (unsigned int)((0xffff-((texU)&0xffff))*((texV)&0xffff))>>(32-VID_COLORWEIGHTBITS)) + \ + VID_PAL15( depthmap(source[ (((texU)>>16)&0x3f) | (((texV)>>10)&0xfc0)]), (unsigned int)((0xffff-((texU)&0xffff))*(0xffff-((texV)&0xffff)))>>(32-VID_COLORWEIGHTBITS)) + \ + VID_PAL15( depthmap(source[ ((((texU)+FRACUNIT)>>16)&0x3f) | (((texV)>>10)&0xfc0)]), (unsigned int)(((texU)&0xffff)*(0xffff-((texV)&0xffff)))>>(32-VID_COLORWEIGHTBITS))) + +// do red and blue at once for slight speedup + +#define GETBLENDED15_5050(col1, col2) \ + ((((col1&0x7c1f)+(col2&0x7c1f))>>1)&0x7c1f) | \ + ((((col1&0x03e0)+(col2&0x03e0))>>1)&0x03e0) + +#define GETBLENDED16_5050(col1, col2) \ + ((((col1&0xf81f)+(col2&0xf81f))>>1)&0xf81f) | \ + ((((col1&0x07e0)+(col2&0x07e0))>>1)&0x07e0) + +#define GETBLENDED32_5050(col1, col2) \ + ((((col1&0xff00ff)+(col2&0xff00ff))>>1)&0xff00ff) | \ + ((((col1&0x00ff00)+(col2&0x00ff00))>>1)&0x00ff00) + +#define GETBLENDED15_3268(col1, col2) \ + ((((col1&0x7c1f)*5+(col2&0x7c1f)*11)>>4)&0x7c1f) | \ + ((((col1&0x03e0)*5+(col2&0x03e0)*11)>>4)&0x03e0) + +#define GETBLENDED16_3268(col1, col2) \ + ((((col1&0xf81f)*5+(col2&0xf81f)*11)>>4)&0xf81f) | \ + ((((col1&0x07e0)*5+(col2&0x07e0)*11)>>4)&0x07e0) + +#define GETBLENDED32_3268(col1, col2) \ + ((((col1&0xff00ff)*5+(col2&0xff00ff)*11)>>4)&0xff00ff) | \ + ((((col1&0x00ff00)*5+(col2&0x00ff00)*11)>>4)&0x00ff00) + +#define GETBLENDED15_9406(col1, col2) \ + ((((col1&0x7c1f)*15+(col2&0x7c1f))>>4)&0x7c1f) | \ + ((((col1&0x03e0)*15+(col2&0x03e0))>>4)&0x03e0) + +#define GETBLENDED16_9406(col1, col2) \ + ((((col1&0xf81f)*15+(col2&0xf81f))>>4)&0xf81f) | \ + ((((col1&0x07e0)*15+(col2&0x07e0))>>4)&0x07e0) + +#define GETBLENDED32_9406(col1, col2) \ + ((((col1&0xff00ff)*15+(col2&0xff00ff))>>4)&0xff00ff) | \ + ((((col1&0x00ff00)*15+(col2&0x00ff00))>>4)&0x00ff00) + +#endif diff --git a/components/doom/prboom/r_fps.c b/components/doom/prboom/r_fps.c new file mode 100644 index 0000000..5d9e0d4 --- /dev/null +++ b/components/doom/prboom/r_fps.c @@ -0,0 +1,450 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze, Andrey Budko + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Uncapped framerate stuff + * + *--------------------------------------------------------------------- + */ + +#include "doomstat.h" +#include "r_defs.h" +#include "r_state.h" +#include "p_spec.h" +#include "r_demo.h" +#include "r_fps.h" + +int movement_smooth = false; + +typedef enum +{ + INTERP_SectorFloor, + INTERP_SectorCeiling, + INTERP_Vertex, + INTERP_WallPanning, + INTERP_FloorPanning, + INTERP_CeilingPanning +} interpolation_type_e; + +typedef struct +{ + interpolation_type_e type; + void *address; +} interpolation_t; + +static int numinterpolations = 0; + +tic_vars_t tic_vars; + +view_vars_t original_view_vars; + +typedef fixed_t fixed2_t[2]; +static fixed2_t *oldipos; +static fixed2_t *bakipos; +static interpolation_t *curipos; + +static boolean NoInterpolateView; +static boolean didInterp; +boolean WasRenderedInTryRunTics; + +int realtic_clock_rate = 100; + + +void R_InitInterpolation(void) +{ + tic_vars.msec = realtic_clock_rate * TICRATE / 100000.0f; +} + +void R_InterpolateView (player_t *player, fixed_t frac) +{ + if (movement_smooth) + { + if (NoInterpolateView) + { + NoInterpolateView = false; + original_view_vars.viewx = player->mo->x; + original_view_vars.viewy = player->mo->y; + original_view_vars.viewz = player->viewz; + + original_view_vars.viewangle = player->mo->angle + viewangleoffset; + } + + viewx = original_view_vars.viewx + FixedMul (frac, player->mo->x - original_view_vars.viewx); + viewy = original_view_vars.viewy + FixedMul (frac, player->mo->y - original_view_vars.viewy); + viewz = original_view_vars.viewz + FixedMul (frac, player->viewz - original_view_vars.viewz); + + viewangle = original_view_vars.viewangle + FixedMul (frac, R_SmoothPlaying_Get(player->mo->angle) + viewangleoffset - original_view_vars.viewangle); + } + else + { + viewx = player->mo->x; + viewy = player->mo->y; + viewz = player->viewz; + viewangle = R_SmoothPlaying_Get(player->mo->angle); + } +} + +void R_ResetViewInterpolation () +{ + NoInterpolateView = true; +} + +static void R_CopyInterpToOld (int i) +{ + switch (curipos[i].type) + { + case INTERP_SectorFloor: + oldipos[i][0] = ((sector_t*)curipos[i].address)->floorheight; + break; + case INTERP_SectorCeiling: + oldipos[i][0] = ((sector_t*)curipos[i].address)->ceilingheight; + break; + case INTERP_Vertex: + oldipos[i][0] = ((vertex_t*)curipos[i].address)->x; + oldipos[i][1] = ((vertex_t*)curipos[i].address)->y; + break; + case INTERP_WallPanning: + oldipos[i][0] = ((side_t*)curipos[i].address)->rowoffset; + oldipos[i][1] = ((side_t*)curipos[i].address)->textureoffset; + break; + case INTERP_FloorPanning: + oldipos[i][0] = ((sector_t*)curipos[i].address)->floor_xoffs; + oldipos[i][1] = ((sector_t*)curipos[i].address)->floor_yoffs; + break; + case INTERP_CeilingPanning: + oldipos[i][0] = ((sector_t*)curipos[i].address)->ceiling_xoffs; + oldipos[i][1] = ((sector_t*)curipos[i].address)->ceiling_yoffs; + break; + } +} + +static void R_CopyBakToInterp (int i) +{ + switch (curipos[i].type) + { + case INTERP_SectorFloor: + ((sector_t*)curipos[i].address)->floorheight = bakipos[i][0]; + break; + case INTERP_SectorCeiling: + ((sector_t*)curipos[i].address)->ceilingheight = bakipos[i][0]; + break; + case INTERP_Vertex: + ((vertex_t*)curipos[i].address)->x = bakipos[i][0]; + ((vertex_t*)curipos[i].address)->y = bakipos[i][1]; + break; + case INTERP_WallPanning: + ((side_t*)curipos[i].address)->rowoffset = bakipos[i][0]; + ((side_t*)curipos[i].address)->textureoffset = bakipos[i][1]; + break; + case INTERP_FloorPanning: + ((sector_t*)curipos[i].address)->floor_xoffs = bakipos[i][0]; + ((sector_t*)curipos[i].address)->floor_yoffs = bakipos[i][1]; + break; + case INTERP_CeilingPanning: + ((sector_t*)curipos[i].address)->ceiling_xoffs = bakipos[i][0]; + ((sector_t*)curipos[i].address)->ceiling_yoffs = bakipos[i][1]; + break; + } +} + +static void R_DoAnInterpolation (int i, fixed_t smoothratio) +{ + fixed_t pos; + fixed_t *adr1 = NULL; + fixed_t *adr2 = NULL; + + switch (curipos[i].type) + { + case INTERP_SectorFloor: + adr1 = &((sector_t*)curipos[i].address)->floorheight; + break; + case INTERP_SectorCeiling: + adr1 = &((sector_t*)curipos[i].address)->ceilingheight; + break; + case INTERP_Vertex: + adr1 = &((vertex_t*)curipos[i].address)->x; +//// adr2 = &((vertex_t*)curipos[i].Address)->y; + break; + case INTERP_WallPanning: + adr1 = &((side_t*)curipos[i].address)->rowoffset; + adr2 = &((side_t*)curipos[i].address)->textureoffset; + break; + case INTERP_FloorPanning: + adr1 = &((sector_t*)curipos[i].address)->floor_xoffs; + adr2 = &((sector_t*)curipos[i].address)->floor_yoffs; + break; + case INTERP_CeilingPanning: + adr1 = &((sector_t*)curipos[i].address)->ceiling_xoffs; + adr2 = &((sector_t*)curipos[i].address)->ceiling_yoffs; + break; + + default: + return; + } + + if (adr1) + { + pos = bakipos[i][0] = *adr1; + *adr1 = oldipos[i][0] + FixedMul (pos - oldipos[i][0], smoothratio); + } + + if (adr2) + { + pos = bakipos[i][1] = *adr2; + *adr2 = oldipos[i][1] + FixedMul (pos - oldipos[i][1], smoothratio); + } +} + +void R_UpdateInterpolations() +{ + int i; + if (!movement_smooth) + return; + for (i = numinterpolations-1; i >= 0; --i) + R_CopyInterpToOld (i); +} + +int interpolations_max = 0; + +static void R_SetInterpolation(interpolation_type_e type, void *posptr) +{ + int i; + if (!movement_smooth) + return; + + if (numinterpolations >= interpolations_max) { + interpolations_max = interpolations_max ? interpolations_max * 2 : 256; + + oldipos = (fixed2_t*)realloc(oldipos, sizeof(*oldipos) * interpolations_max); + bakipos = (fixed2_t*)realloc(bakipos, sizeof(*bakipos) * interpolations_max); + curipos = (interpolation_t*)realloc(curipos, sizeof(*curipos) * interpolations_max); + } + + for(i = numinterpolations-1; i >= 0; i--) + if (curipos[i].address == posptr && curipos[i].type == type) + return; + + curipos[numinterpolations].address = posptr; + curipos[numinterpolations].type = type; + R_CopyInterpToOld (numinterpolations); + numinterpolations++; +} + +static void R_StopInterpolation(interpolation_type_e type, void *posptr) +{ + int i; + + if (!movement_smooth) + return; + + for(i=numinterpolations-1; i>= 0; --i) + { + if (curipos[i].address == posptr && curipos[i].type == type) + { + numinterpolations--; + oldipos[i][0] = oldipos[numinterpolations][0]; + oldipos[i][1] = oldipos[numinterpolations][1]; + bakipos[i][0] = bakipos[numinterpolations][0]; + bakipos[i][1] = bakipos[numinterpolations][1]; + curipos[i] = curipos[numinterpolations]; + break; + } + } +} + +void R_StopAllInterpolations(void) +{ + int i; + + if (!movement_smooth) + return; + + for(i=numinterpolations-1; i>= 0; --i) + { + numinterpolations--; + oldipos[i][0] = oldipos[numinterpolations][0]; + oldipos[i][1] = oldipos[numinterpolations][1]; + bakipos[i][0] = bakipos[numinterpolations][0]; + bakipos[i][1] = bakipos[numinterpolations][1]; + curipos[i] = curipos[numinterpolations]; + } +} + +void R_DoInterpolations(fixed_t smoothratio) +{ + int i; + if (!movement_smooth) + return; + + if (smoothratio == FRACUNIT) + { + didInterp = false; + return; + } + + didInterp = true; + + for (i = numinterpolations-1; i >= 0; --i) + { + R_DoAnInterpolation (i, smoothratio); + } +} + +void R_RestoreInterpolations() +{ + int i; + + if (!movement_smooth) + return; + + if (didInterp) + { + didInterp = false; + for (i = numinterpolations-1; i >= 0; --i) + { + R_CopyBakToInterp (i); + } + } +} + +void R_ActivateSectorInterpolations() +{ + int i; + sector_t *sec; + + if (!movement_smooth) + return; + + for (i=0, sec = sectors ; ifloordata) + R_SetInterpolation (INTERP_SectorFloor, sec); + if (sec->ceilingdata) + R_SetInterpolation (INTERP_SectorCeiling, sec); + } +} + +static void R_InterpolationGetData(thinker_t *th, + interpolation_type_e *type1, interpolation_type_e *type2, + void **posptr1, void **posptr2) +{ + *posptr1 = NULL; + *posptr2 = NULL; + + if (th->function == T_MoveFloor) + { + *type1 = INTERP_SectorFloor; + *posptr1 = ((floormove_t *)th)->sector; + } + else + if (th->function == T_PlatRaise) + { + *type1 = INTERP_SectorFloor; + *posptr1 = ((plat_t *)th)->sector; + } + else + if (th->function == T_MoveCeiling) + { + *type1 = INTERP_SectorCeiling; + *posptr1 = ((ceiling_t *)th)->sector; + } + else + if (th->function == T_VerticalDoor) + { + *type1 = INTERP_SectorCeiling; + *posptr1 = ((vldoor_t *)th)->sector; + } + else + if (th->function == T_MoveElevator) + { + *type1 = INTERP_SectorFloor; + *posptr1 = ((elevator_t *)th)->sector; + *type2 = INTERP_SectorCeiling; + *posptr2 = ((elevator_t *)th)->sector; + } + else + if (th->function == T_Scroll) + { + switch (((scroll_t *)th)->type) + { + case sc_side: + *type1 = INTERP_WallPanning; + *posptr1 = sides + ((scroll_t *)th)->affectee; + break; + case sc_floor: + *type1 = INTERP_FloorPanning; + *posptr1 = sectors + ((scroll_t *)th)->affectee; + break; + case sc_ceiling: + *type1 = INTERP_CeilingPanning; + *posptr1 = sectors + ((scroll_t *)th)->affectee; + break; + default: ; + } + } +} + +void R_ActivateThinkerInterpolations(thinker_t *th) +{ + void *posptr1; + void *posptr2; + interpolation_type_e type1, type2; + + if (!movement_smooth) + return; + + R_InterpolationGetData(th, &type1, &type2, &posptr1, &posptr2); + + if(posptr1) + { + R_SetInterpolation (type1, posptr1); + + if(posptr2) + R_SetInterpolation (type2, posptr2); + } +} + +void R_StopInterpolationIfNeeded(thinker_t *th) +{ + void *posptr1; + void *posptr2; + interpolation_type_e type1, type2; + + if (!movement_smooth) + return; + + R_InterpolationGetData(th, &type1, &type2, &posptr1, &posptr2); + + if(posptr1) + { + R_StopInterpolation (type1, posptr1); + if(posptr2) + R_StopInterpolation (type2, posptr2); + } +} + diff --git a/components/doom/prboom/r_fps.h b/components/doom/prboom/r_fps.h new file mode 100644 index 0000000..c34740c --- /dev/null +++ b/components/doom/prboom/r_fps.h @@ -0,0 +1,77 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze, Andrey Budko + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Uncapped framerate stuff + * + *--------------------------------------------------------------------- + */ + +#ifndef __R_FPS__ +#define __R_FPS__ + +#include "doomstat.h" + +extern int movement_smooth; +extern int realtic_clock_rate; + +typedef struct { + fixed_t viewx; + fixed_t viewy; + fixed_t viewz; + angle_t viewangle; + angle_t viewpitch; +} view_vars_t; + +extern view_vars_t original_view_vars; + +typedef struct { + unsigned int start; + unsigned int next; + unsigned int step; + fixed_t frac; + float msec; +} tic_vars_t; + +extern tic_vars_t tic_vars; + +void R_InitInterpolation(void); +void R_InterpolateView (player_t *player, fixed_t frac); + +extern boolean WasRenderedInTryRunTics; + +void R_ResetViewInterpolation (); +void R_UpdateInterpolations(); +void R_StopAllInterpolations(void); +void R_DoInterpolations(fixed_t smoothratio); +void R_RestoreInterpolations(); +void R_ActivateSectorInterpolations(); +void R_ActivateThinkerInterpolations(thinker_t *th); +void R_StopInterpolationIfNeeded(thinker_t *th); + +#endif diff --git a/components/doom/prboom/r_main.c b/components/doom/prboom/r_main.c new file mode 100644 index 0000000..b274c47 --- /dev/null +++ b/components/doom/prboom/r_main.c @@ -0,0 +1,621 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Rendering main loop and setup functions, + * utility functions (BSP, geometry, trigonometry). + * See tables.c, too. + * + *-----------------------------------------------------------------------------*/ + + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif +#include "doomstat.h" +#include "d_net.h" +#include "w_wad.h" +#include "r_main.h" +#include "r_things.h" +#include "r_plane.h" +#include "r_bsp.h" +#include "r_draw.h" +#include "m_bbox.h" +#include "r_sky.h" +#include "v_video.h" +#include "lprintf.h" +#include "st_stuff.h" +#include "i_main.h" +#include "i_system.h" +#include "g_game.h" +#include "r_demo.h" +#include "r_fps.h" + +// Fineangles in the SCREENWIDTH wide window. +#define FIELDOFVIEW 2048 + +// killough: viewangleoffset is a legacy from the pre-v1.2 days, when Doom +// had Left/Mid/Right viewing. +/-ANG90 offsets were placed here on each +// node, by d_net.c, to set up a L/M/R session. + +int viewangleoffset; +int validcount = 1; // increment every time a check is made +const lighttable_t *fixedcolormap; +int centerx, centery; +fixed_t centerxfrac, centeryfrac; +fixed_t viewheightfrac; //e6y: for correct clipping of things +fixed_t projection; +// proff 11/06/98: Added for high-res +fixed_t projectiony; +fixed_t viewx, viewy, viewz; +angle_t viewangle; +fixed_t viewcos, viewsin; +player_t *viewplayer; +extern lighttable_t **walllights; + +static mobj_t *oviewer; + +// +// precalculated math tables +// + +angle_t clipangle; + +// The viewangletox[viewangle + FINEANGLES/4] lookup +// maps the visible view angles to screen X coordinates, +// flattening the arc to a flat projection plane. +// There will be many angles mapped to the same X. + +int *viewangletox; + +// The xtoviewangleangle[] table maps a screen pixel +// to the lowest viewangle that maps back to x ranges +// from clipangle to -clipangle. + +angle_t xtoviewangle[MAX_SCREENWIDTH+1]; // killough 2/8/98 + +// killough 3/20/98: Support dynamic colormaps, e.g. deep water +// killough 4/4/98: support dynamic number of them as well + +int numcolormaps; +const lighttable_t *(*c_zlight)[LIGHTLEVELS][MAXLIGHTZ]; +const lighttable_t *(*zlight)[MAXLIGHTZ]; +const lighttable_t *fullcolormap; +const lighttable_t **colormaps; + +// killough 3/20/98, 4/4/98: end dynamic colormaps + +int extralight; // bumped light from gun blasts + +// +// R_PointOnSide +// Traverse BSP (sub) tree, +// check point against partition plane. +// Returns side 0 (front) or 1 (back). +// +// killough 5/2/98: reformatted +// + +PUREFUNC int R_PointOnSide(fixed_t x, fixed_t y, const node_t *node) +{ + if (!node->dx) + return x <= node->x ? node->dy > 0 : node->dy < 0; + + if (!node->dy) + return y <= node->y ? node->dx < 0 : node->dx > 0; + + x -= node->x; + y -= node->y; + + // Try to quickly decide by looking at sign bits. + if ((node->dy ^ node->dx ^ x ^ y) < 0) + return (node->dy ^ x) < 0; // (left is negative) + return FixedMul(y, node->dx>>FRACBITS) >= FixedMul(node->dy>>FRACBITS, x); +} + +// killough 5/2/98: reformatted + +PUREFUNC int R_PointOnSegSide(fixed_t x, fixed_t y, const seg_t *line) +{ + fixed_t lx = line->v1->x; + fixed_t ly = line->v1->y; + fixed_t ldx = line->v2->x - lx; + fixed_t ldy = line->v2->y - ly; + + if (!ldx) + return x <= lx ? ldy > 0 : ldy < 0; + + if (!ldy) + return y <= ly ? ldx < 0 : ldx > 0; + + x -= lx; + y -= ly; + + // Try to quickly decide by looking at sign bits. + if ((ldy ^ ldx ^ x ^ y) < 0) + return (ldy ^ x) < 0; // (left is negative) + return FixedMul(y, ldx>>FRACBITS) >= FixedMul(ldy>>FRACBITS, x); +} + +// +// R_PointToAngle +// To get a global angle from cartesian coordinates, +// the coordinates are flipped until they are in +// the first octant of the coordinate system, then +// the y (<=x) is scaled and divided by x to get a +// tangent (slope) value which is looked up in the +// tantoangle[] table. The +1 size of tantoangle[] +// is to handle the case when x==y without additional +// checking. +// +// killough 5/2/98: reformatted, cleaned up + +#include + +static int SlopeDiv(unsigned num, unsigned den) +{ + unsigned ans; + + if (den < 512) + return SLOPERANGE; + ans = (num<<3)/(den>>8); + return ans <= SLOPERANGE ? ans : SLOPERANGE; +} + +angle_t R_PointToAngle(fixed_t x, fixed_t y) +{ + static fixed_t oldx, oldy; + static angle_t oldresult; + + x -= viewx; y -= viewy; + + if ( /* !render_precise && */ + // e6y: here is where "slime trails" can SOMETIMES occur + (x < INT_MAX/4 && x > -INT_MAX/4 && y < INT_MAX/4 && y > -INT_MAX/4) + ) + { + // old R_PointToAngle + return (x || y) ? + x >= 0 ? + y >= 0 ? + (x > y) ? tantoangle[SlopeDiv(y,x)] : // octant 0 + ANG90-1-tantoangle[SlopeDiv(x,y)] : // octant 1 + x > (y = -y) ? 0-tantoangle[SlopeDiv(y,x)] : // octant 8 + ANG270+tantoangle[SlopeDiv(x,y)] : // octant 7 + y >= 0 ? (x = -x) > y ? ANG180-1-tantoangle[SlopeDiv(y,x)] : // octant 3 + ANG90 + tantoangle[SlopeDiv(x,y)] : // octant 2 + (x = -x) > (y = -y) ? ANG180+tantoangle[ SlopeDiv(y,x)] : // octant 4 + ANG270-1-tantoangle[SlopeDiv(x,y)] : // octant 5 + 0; + } + + // R_PointToAngleEx merged into R_PointToAngle + // e6y: The precision of the code above is abysmal so use the CRT atan2 function instead! + if (oldx != x || oldy != y) + { + oldx = x; + oldy = y; + oldresult = (int)(atan2(y, x) * ANG180/M_PI); + } + return oldresult; +} + +angle_t R_PointToAngle2(fixed_t viewx, fixed_t viewy, fixed_t x, fixed_t y) +{ + return (y -= viewy, (x -= viewx) || y) ? + x >= 0 ? + y >= 0 ? + (x > y) ? tantoangle[SlopeDiv(y,x)] : // octant 0 + ANG90-1-tantoangle[SlopeDiv(x,y)] : // octant 1 + x > (y = -y) ? 0-tantoangle[SlopeDiv(y,x)] : // octant 8 + ANG270+tantoangle[SlopeDiv(x,y)] : // octant 7 + y >= 0 ? (x = -x) > y ? ANG180-1-tantoangle[SlopeDiv(y,x)] : // octant 3 + ANG90 + tantoangle[SlopeDiv(x,y)] : // octant 2 + (x = -x) > (y = -y) ? ANG180+tantoangle[ SlopeDiv(y,x)] : // octant 4 + ANG270-1-tantoangle[SlopeDiv(x,y)] : // octant 5 + 0; +} + +// +// R_InitTextureMapping +// +// killough 5/2/98: reformatted + +static void R_InitTextureMapping (void) +{ + register int i,x; + fixed_t focallength; + + // Use tangent table to generate viewangletox: + // viewangletox will give the next greatest x + // after the view angle. + // + // Calc focallength + // so FIELDOFVIEW angles covers SCREENWIDTH. + if (!viewangletox) + viewangletox = Z_Calloc(FINEANGLES/2, sizeof(int), PU_STATIC, 0); + focallength = FixedDiv(centerxfrac, finetangent[FINEANGLES/4+FIELDOFVIEW/2]); + + for (i=0 ; i FRACUNIT*2) + t = -1; + else + if (finetangent[i] < -FRACUNIT*2) + t = viewwidth+1; + else + { + t = FixedMul(finetangent[i], focallength); + t = (centerxfrac - t + FRACUNIT-1) >> FRACBITS; + if (t < -1) + t = -1; + else + if (t > viewwidth+1) + t = viewwidth+1; + } + viewangletox[i] = t; + } + + // Scan viewangletox[] to generate xtoviewangle[]: + // xtoviewangle will give the smallest view angle + // that maps to x. + + for (x=0; x<=viewwidth; x++) + { + for (i=0; viewangletox[i] > x; i++) + ; + xtoviewangle[x] = (i<>= LIGHTSCALESHIFT)/DISTMAP; + + if (level < 0) + level = 0; + else + if (level >= NUMCOLORMAPS) + level = NUMCOLORMAPS-1; + + // killough 3/20/98: Initialize multiple colormaps + level *= 256; + for (t=0; t>ANGLETOFINESHIFT]); + distscale[i] = FixedDiv(FRACUNIT,cosadj); + } + +} + +// +// R_Init +// + +extern int screenblocks; + +void R_Init (void) +{ + // CPhipps - R_DrawColumn isn't constant anymore, so must + // initialise in code + // current column draw function + lprintf(LO_INFO, "R_InitData: \n"); + R_InitData(); + R_SetViewSize(screenblocks); + lprintf(LO_INFO, "R_InitLightTables "); + R_InitLightTables(); + lprintf(LO_INFO, "R_InitSkyMap "); + R_InitSkyMap(); + lprintf(LO_INFO, "R_InitTranslationsTables "); + R_InitTranslationTables(); + lprintf(LO_INFO, "R_InitPatches "); + R_InitPatches(); + lprintf(LO_INFO, "R_InitInterpolation\n"); + R_InitInterpolation(); +} + +// +// R_PointInSubsector +// +// killough 5/2/98: reformatted, cleaned up + +subsector_t *R_PointInSubsector(fixed_t x, fixed_t y) +{ + int nodenum = numnodes-1; + + // special case for trivial maps (single subsector, no nodes) + if (numnodes == 0) + return subsectors; + + while (!(nodenum & NF_SUBSECTOR)) + nodenum = nodes[nodenum].children[R_PointOnSide(x, y, nodes+nodenum)]; + return &subsectors[nodenum & ~NF_SUBSECTOR]; +} + +// +// R_SetupFrame +// + +static void R_SetupFrame (player_t *player) +{ + bool NoInterpolate = paused || (menuactive && !demoplayback); + int cm; + + viewplayer = player; + + if (player->mo != oviewer || NoInterpolate) + { + R_ResetViewInterpolation (); + oviewer = player->mo; + } + + if (NoInterpolate || tic_vars.step == 0) + { + tic_vars.frac = FRACUNIT; + } + else + { + fixed_t frac = (fixed_t)((I_GetTimeMS() - tic_vars.start) * FRACUNIT / tic_vars.step); + if (frac < 0) + frac = 0; + if (frac > FRACUNIT) + frac = FRACUNIT; + tic_vars.frac = frac; + } + + R_InterpolateView (player, tic_vars.frac); + + extralight = player->extralight; + + viewsin = finesine[viewangle>>ANGLETOFINESHIFT]; + viewcos = finecosine[viewangle>>ANGLETOFINESHIFT]; + + R_DoInterpolations(tic_vars.frac); + + // killough 3/20/98, 4/4/98: select colormap based on player status + + if (player->mo->subsector->sector->heightsec != -1) + { + const sector_t *s = player->mo->subsector->sector->heightsec + sectors; + cm = viewz < s->floorheight ? s->bottommap : viewz > s->ceilingheight ? + s->topmap : s->midmap; + if (cm < 0 || cm > numcolormaps) + cm = 0; + } + else + cm = 0; + + fullcolormap = colormaps[cm]; + zlight = c_zlight[cm]; + + if (player->fixedcolormap) + { + fixedcolormap = fullcolormap // killough 3/20/98: use fullcolormap + + player->fixedcolormap*256*sizeof(lighttable_t); + } + else + fixedcolormap = 0; + + validcount++; +} + +int autodetect_hom = 0; // killough 2/7/98: HOM autodetection flag + +// +// R_ShowStats +// +int rendered_visplanes, rendered_segs, rendered_vissprites; +boolean rendering_stats=0; + +static void R_ShowStats(void) +{ + #define KEEPTIMES 10 + static int keeptime[KEEPTIMES], showtime; + int now = I_GetTime(); + + if (now - showtime > 35) { + doom_printf("Frame rate %d fps\nSegs %d, Visplanes %d, Sprites %d", + (35*KEEPTIMES)/(now - keeptime[0]), rendered_segs, + rendered_visplanes, rendered_vissprites); + showtime = now; + } + memmove(keeptime, keeptime+1, sizeof(keeptime[0]) * (KEEPTIMES-1)); + keeptime[KEEPTIMES-1] = now; +} + +// +// R_RenderView +// +void R_RenderPlayerView (player_t* player) +{ + R_SetupFrame (player); + + // Clear buffers. + R_ClearClipSegs (); + R_ClearDrawSegs (); + R_ClearPlanes (); + R_ClearSprites (); + + rendered_segs = rendered_visplanes = 0; + if (autodetect_hom) + { // killough 2/10/98: add flashing red HOM indicators + unsigned char color=(gametic % 20) < 9 ? 0xb0 : 0; + V_FillRect(0, viewwindowx, viewwindowy, viewwidth, viewheight, color); + R_DrawViewBorder(); + } + + // check for new console commands. +#ifdef HAVE_NET + NetUpdate (); +#endif + + // The head node is the last node output. + R_RenderBSPNode (numnodes-1); + R_ResetColumnBuffer(); + + // Check for new console commands. +#ifdef HAVE_NET + NetUpdate (); +#endif + + R_DrawPlanes (); + + // Check for new console commands. +#ifdef HAVE_NET + NetUpdate (); +#endif + + R_DrawMasked (); + R_ResetColumnBuffer(); + + // Check for new console commands. +#ifdef HAVE_NET + NetUpdate (); +#endif + + if (rendering_stats) R_ShowStats(); + + R_RestoreInterpolations(); +} diff --git a/components/doom/prboom/r_main.h b/components/doom/prboom/r_main.h new file mode 100644 index 0000000..89a36ee --- /dev/null +++ b/components/doom/prboom/r_main.h @@ -0,0 +1,120 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Renderer main interface. + * + *-----------------------------------------------------------------------------*/ + +#ifndef __R_MAIN__ +#define __R_MAIN__ + +#include "d_player.h" +#include "r_data.h" + +#ifdef __GNUG__ +#pragma interface +#endif + +// +// POV related. +// + +extern fixed_t viewcos; +extern fixed_t viewsin; +extern int viewwidth; +extern int viewheight; +extern int viewwindowx; +extern int viewwindowy; +extern int centerx; +extern int centery; +extern fixed_t centerxfrac; +extern fixed_t centeryfrac; +extern fixed_t viewheightfrac; //e6y: for correct clipping of things +extern fixed_t projection; +// proff 11/06/98: Added for high-res +extern fixed_t projectiony; +extern int validcount; + +// +// Rendering stats +// + +extern int rendered_visplanes, rendered_segs, rendered_vissprites; +extern boolean rendering_stats; + +// +// Lighting LUT. +// Used for z-depth cuing per column/row, +// and other lighting effects (sector ambient, flash). +// + +// Lighting constants. + +#define LIGHTLEVELS 16 +#define LIGHTSEGSHIFT 4 +#define MAXLIGHTSCALE 48 +#define LIGHTSCALESHIFT 12 +#define MAXLIGHTZ 128 +#define LIGHTZSHIFT 20 + +// killough 3/20/98: Allow colormaps to be dynamic (e.g. underwater) +extern const lighttable_t *(*zlight)[MAXLIGHTZ]; +extern const lighttable_t *fullcolormap; +extern int numcolormaps; // killough 4/4/98: dynamic number of maps +extern const lighttable_t **colormaps; +// killough 3/20/98, 4/4/98: end dynamic colormaps + +extern int extralight; +extern const lighttable_t *fixedcolormap; + +// Number of diminishing brightness levels. +// There a 0-31, i.e. 32 LUT in the COLORMAP lump. + +#define NUMCOLORMAPS 32 + +// +// Utility functions. +// + +PUREFUNC int R_PointOnSide(fixed_t x, fixed_t y, const node_t *node); +PUREFUNC int R_PointOnSegSide(fixed_t x, fixed_t y, const seg_t *line); +angle_t R_PointToAngle(fixed_t x, fixed_t y); +angle_t R_PointToAngle2(fixed_t x1, fixed_t y1, fixed_t x2, fixed_t y2); +subsector_t *R_PointInSubsector(fixed_t x, fixed_t y); + +// +// REFRESH - the actual rendering functions. +// + +void R_RenderPlayerView(player_t *player); // Called by G_Drawer. +void R_Init(void); // Called by startup code. +void R_SetViewSize(int blocks); // Called by M_Responder. +void R_ExecuteSetViewSize(void); // cph - called by D_Display to complete a view resize + +#endif diff --git a/components/doom/prboom/r_patch.c b/components/doom/prboom/r_patch.c new file mode 100644 index 0000000..9eabd48 --- /dev/null +++ b/components/doom/prboom/r_patch.c @@ -0,0 +1,745 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2002 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + *-----------------------------------------------------------------------------*/ + +#include "z_zone.h" +#include "doomstat.h" +#include "w_wad.h" +#include "r_main.h" +#include "r_sky.h" +#include "r_bsp.h" +#include "r_things.h" +#include "p_tick.h" +#include "i_system.h" +#include "r_draw.h" +#include "lprintf.h" +#include "r_patch.h" +#include + +// posts are runs of non masked source pixels +typedef struct +{ + byte topdelta; // -1 is the last post in a column + byte length; // length data bytes follows +} post_t; + +// column_t is a list of 0 or more post_t, (byte)-1 terminated +typedef post_t column_t; + +// +// Patches. +// A patch holds one or more columns. +// Patches are used for sprites and all masked pictures, +// and we compose textures from the TEXTURE1/2 lists +// of patches. +// + +typedef struct +{ + short width, height; // bounding box size + short leftoffset; // pixels to the left of origin + short topoffset; // pixels below the origin + int columnofs[8]; // only [width] used +} patch_t; + +//--------------------------------------------------------------------------- +// Re-engineered patch support +//--------------------------------------------------------------------------- +static rpatch_t *patches = 0; +static rpatch_t *texture_composites = 0; + +//--------------------------------------------------------------------------- +void R_InitPatches(void) +{ + patches = Z_Calloc(numlumps, sizeof(*patches), PU_STATIC, 0); + texture_composites = Z_Calloc(numtextures, sizeof(*patches), PU_STATIC, 0); +} + +//--------------------------------------------------------------------------- +int R_NumPatchWidth(int lump) +{ + const rpatch_t *patch = R_CachePatchNum(lump); + int width = patch->width; + R_UnlockPatchNum(lump); + return width; +} + +//--------------------------------------------------------------------------- +int R_NumPatchHeight(int lump) +{ + const rpatch_t *patch = R_CachePatchNum(lump); + int height = patch->height; + R_UnlockPatchNum(lump); + return height; +} + +//--------------------------------------------------------------------------- +static int getPatchIsNotTileable(const patch_t *patch) { + int x=0, numPosts, lastColumnDelta = 0; + const column_t *column; + int cornerCount = 0; + int hasAHole = 0; + + for (x=0; xwidth); x++) { + column = (const column_t *)((const byte *)patch + LONG(patch->columnofs[x])); + if (!x) lastColumnDelta = column->topdelta; + else if (lastColumnDelta != column->topdelta) hasAHole = 1; + + numPosts = 0; + while (column->topdelta != 0xff) { + // check to see if a corner pixel filled + if (x == 0 && column->topdelta == 0) cornerCount++; + else if (x == 0 && column->topdelta + column->length >= SHORT(patch->height)) cornerCount++; + else if (x == SHORT(patch->width)-1 && column->topdelta == 0) cornerCount++; + else if (x == SHORT(patch->width)-1 && column->topdelta + column->length >= SHORT(patch->height)) cornerCount++; + + if (numPosts++) hasAHole = 1; + column = (const column_t *)((const byte *)column + column->length + 4); + } + } + + if (cornerCount == 4) return 0; + return hasAHole; +} + +//--------------------------------------------------------------------------- +static int getIsSolidAtSpot(const column_t *column, int spot) { + if (!column) return 0; + while (column->topdelta != 0xff) { + if (spot < column->topdelta) return 0; + if ((spot >= column->topdelta) && (spot <= column->topdelta + column->length)) return 1; + column = (const column_t*)((const byte*)column + 3 + column->length + 1); + } + return 0; +} + +//--------------------------------------------------------------------------- +// Used to determine whether a column edge (top or bottom) should slope +// up or down for smoothed masked edges - POPE +//--------------------------------------------------------------------------- +static int getColumnEdgeSlope(const column_t *prevcolumn, const column_t *nextcolumn, int spot) { + int holeToLeft = !getIsSolidAtSpot(prevcolumn, spot); + int holeToRight = !getIsSolidAtSpot(nextcolumn, spot); + + if (holeToLeft && !holeToRight) return 1; + if (!holeToLeft && holeToRight) return -1; + return 0; +} + +//--------------------------------------------------------------------------- +static void createPatch(int id) { + rpatch_t *patch; + const int patchNum = id; + const patch_t *oldPatch = (const patch_t*)W_CacheLumpNum(patchNum); + const column_t *oldColumn, *oldPrevColumn, *oldNextColumn; + int x, y; + int pixelDataSize; + int columnsDataSize; + int postsDataSize; + int dataSize; + const byte *oldColumnPixelData; + int numPostsUsedSoFar; + int edgeSlope; + +#ifdef RANGECHECK + if (id >= numlumps) + I_Error("createPatch: %i >= numlumps", id); +#endif + + patch = &patches[id]; + // proff - 2003-02-16 What about endianess? + patch->width = SHORT(oldPatch->width); + patch->widthmask = 0; + patch->height = SHORT(oldPatch->height); + patch->leftoffset = SHORT(oldPatch->leftoffset); + patch->topoffset = SHORT(oldPatch->topoffset); + patch->isNotTileable = getPatchIsNotTileable(oldPatch); + + // work out how much memory we need to allocate for this patch's data + pixelDataSize = (patch->width * patch->height + 4) & ~3; + columnsDataSize = sizeof(rcolumn_t) * patch->width; + + // count the number of posts in each column + int numPostsInColumn[patch->width]; + int numPostsTotal = 0; + + for (x=0; xwidth; x++) { + oldColumn = (const column_t *)((const byte *)oldPatch + LONG(oldPatch->columnofs[x])); + numPostsInColumn[x] = 0; + while (oldColumn->topdelta != 0xff) { + numPostsInColumn[x]++; + numPostsTotal++; + oldColumn = (const column_t *)((const byte *)oldColumn + oldColumn->length + 4); + } + } + + postsDataSize = numPostsTotal * sizeof(rpost_t); + + // allocate our data chunk + dataSize = pixelDataSize + columnsDataSize + postsDataSize; + patch->data = Z_Malloc(dataSize, PU_CACHE, (void **)&patch->data); + + // set out pixel, column, and post pointers into our data array + patch->pixels = patch->data; + patch->columns = (rcolumn_t*)((unsigned char*)patch->pixels + pixelDataSize); + patch->posts = (rpost_t*)((unsigned char*)patch->columns + columnsDataSize); + + memset(patch->pixels, 0xff, pixelDataSize); + memset(patch->columns, 0x00, columnsDataSize); + memset(patch->posts, 0x00, postsDataSize); + + // fill in the pixels, posts, and columns + numPostsUsedSoFar = 0; + for (x=0; xwidth; x++) { + + oldColumn = (const column_t *)((const byte *)oldPatch + LONG(oldPatch->columnofs[x])); + + if (patch->isNotTileable) { + // non-tiling + if (x == 0) oldPrevColumn = 0; + else oldPrevColumn = (const column_t *)((const byte *)oldPatch + LONG(oldPatch->columnofs[x-1])); + if (x == patch->width-1) oldNextColumn = 0; + else oldNextColumn = (const column_t *)((const byte *)oldPatch + LONG(oldPatch->columnofs[x+1])); + } + else { + // tiling + int prevColumnIndex = x-1; + int nextColumnIndex = x+1; + while (prevColumnIndex < 0) prevColumnIndex += patch->width; + while (nextColumnIndex >= patch->width) nextColumnIndex -= patch->width; + oldPrevColumn = (const column_t *)((const byte *)oldPatch + LONG(oldPatch->columnofs[prevColumnIndex])); + oldNextColumn = (const column_t *)((const byte *)oldPatch + LONG(oldPatch->columnofs[nextColumnIndex])); + } + + // setup the column's data + patch->columns[x].pixels = patch->pixels + (x*patch->height) + 0; + patch->columns[x].numPosts = numPostsInColumn[x]; + patch->columns[x].posts = patch->posts + numPostsUsedSoFar; + + while (oldColumn->topdelta != 0xff) { + // set up the post's data + patch->posts[numPostsUsedSoFar].topdelta = oldColumn->topdelta; + patch->posts[numPostsUsedSoFar].length = oldColumn->length; + patch->posts[numPostsUsedSoFar].slope = 0; + + edgeSlope = getColumnEdgeSlope(oldPrevColumn, oldNextColumn, oldColumn->topdelta); + if (edgeSlope == 1) patch->posts[numPostsUsedSoFar].slope |= RDRAW_EDGESLOPE_TOP_UP; + else if (edgeSlope == -1) patch->posts[numPostsUsedSoFar].slope |= RDRAW_EDGESLOPE_TOP_DOWN; + + edgeSlope = getColumnEdgeSlope(oldPrevColumn, oldNextColumn, oldColumn->topdelta+oldColumn->length); + if (edgeSlope == 1) patch->posts[numPostsUsedSoFar].slope |= RDRAW_EDGESLOPE_BOT_UP; + else if (edgeSlope == -1) patch->posts[numPostsUsedSoFar].slope |= RDRAW_EDGESLOPE_BOT_DOWN; + + // fill in the post's pixels + oldColumnPixelData = (const byte *)oldColumn + 3; + for (y=0; ylength; y++) { + patch->pixels[x * patch->height + oldColumn->topdelta + y] = oldColumnPixelData[y]; + } + + oldColumn = (const column_t *)((const byte *)oldColumn + oldColumn->length + 4); + numPostsUsedSoFar++; + } + } + + if (1 || patch->isNotTileable) { + const rcolumn_t *column, *prevColumn; + + // copy the patch image down and to the right where there are + // holes to eliminate the black halo from bilinear filtering + for (x=0; xwidth; x++) { + //oldColumn = (const column_t *)((const byte *)oldPatch + oldPatch->columnofs[x]); + + column = R_GetPatchColumnClamped(patch, x); + prevColumn = R_GetPatchColumnClamped(patch, x-1); + + if (column->pixels[0] == 0xff) { + // force the first pixel (which is a hole), to use + // the color from the next solid spot in the column + for (y=0; yheight; y++) { + if (column->pixels[y] != 0xff) { + column->pixels[0] = column->pixels[y]; + break; + } + } + } + + // copy from above or to the left + for (y=1; yheight; y++) { + //if (getIsSolidAtSpot(oldColumn, y)) continue; + if (column->pixels[y] != 0xff) continue; + + // this pixel is a hole + + if (x && prevColumn->pixels[y-1] != 0xff) { + // copy the color from the left + column->pixels[y] = prevColumn->pixels[y]; + } + else { + // copy the color from above + column->pixels[y] = column->pixels[y-1]; + } + } + } + + // verify that the patch truly is non-rectangular since + // this determines tiling later on + } + + W_UnlockLumpNum(patchNum); +} + +typedef struct { + unsigned short patches; + unsigned short posts; + unsigned short posts_used; +} count_t; + +static void switchPosts(rpost_t *post1, rpost_t *post2) { + rpost_t dummy; + + dummy.topdelta = post1->topdelta; + dummy.length = post1->length; + dummy.slope = post1->slope; + post1->topdelta = post2->topdelta; + post1->length = post2->length; + post1->slope = post2->slope; + post2->topdelta = dummy.topdelta; + post2->length = dummy.length; + post2->slope = dummy.slope; +} + +static void removePostFromColumn(rcolumn_t *column, int post) { + int i; +#ifdef RANGECHECK + if (post >= column->numPosts) + I_Error("removePostFromColumn: invalid post index"); +#endif + if (post < column->numPosts) + for (i=post; i<(column->numPosts-1); i++) { + rpost_t *post1 = &column->posts[i]; + rpost_t *post2 = &column->posts[i+1]; + post1->topdelta = post2->topdelta; + post1->length = post2->length; + post1->slope = post2->slope; + } + column->numPosts--; +} + +//--------------------------------------------------------------------------- +static void createTextureCompositePatch(int id) { + rpatch_t *composite_patch; + texture_t *texture; + texpatch_t *texpatch; + int patchNum; + const patch_t *oldPatch; + const column_t *oldColumn, *oldPrevColumn, *oldNextColumn; + int i, x, y; + int oy, count; + int pixelDataSize; + int columnsDataSize; + int postsDataSize; + int dataSize; + const byte *oldColumnPixelData; + int numPostsUsedSoFar; + int edgeSlope; + +#ifdef RANGECHECK + if (id >= numtextures) + I_Error("createTextureCompositePatch: %i >= numtextures", id); +#endif + + composite_patch = &texture_composites[id]; + + texture = textures[id]; + + composite_patch->width = texture->width; + composite_patch->height = texture->height; + composite_patch->widthmask = texture->widthmask; + composite_patch->leftoffset = 0; + composite_patch->topoffset = 0; + composite_patch->isNotTileable = 0; + + // work out how much memory we need to allocate for this patch's data + pixelDataSize = (composite_patch->width * composite_patch->height + 4) & ~3; + columnsDataSize = sizeof(rcolumn_t) * composite_patch->width; + + // count the number of posts in each column + count_t countsInColumn[composite_patch->width]; + size_t numPostsTotal = 0; + + memset(countsInColumn, 0, sizeof(countsInColumn)); + + for (i=0; ipatchcount; i++) { + texpatch = &texture->patches[i]; + patchNum = texpatch->patch; + oldPatch = (const patch_t*)W_CacheLumpNum(patchNum); + + for (x=0; xwidth); x++) { + int tx = texpatch->originx + x; + + if (tx < 0) + continue; + if (tx >= composite_patch->width) + break; + + countsInColumn[tx].patches++; + + oldColumn = (const column_t *)((const byte *)oldPatch + LONG(oldPatch->columnofs[x])); + while (oldColumn->topdelta != 0xff) { + countsInColumn[tx].posts++; + numPostsTotal++; + oldColumn = (const column_t *)((const byte *)oldColumn + oldColumn->length + 4); + } + } + + W_UnlockLumpNum(patchNum); + } + + postsDataSize = numPostsTotal * sizeof(rpost_t); + + // allocate our data chunk + dataSize = pixelDataSize + columnsDataSize + postsDataSize; + composite_patch->data = Z_Malloc(dataSize, PU_STATIC, (void **)&composite_patch->data); + + // set out pixel, column, and post pointers into our data array + composite_patch->pixels = composite_patch->data; + composite_patch->columns = (rcolumn_t*)((unsigned char*)composite_patch->pixels + pixelDataSize); + composite_patch->posts = (rpost_t*)((unsigned char*)composite_patch->columns + columnsDataSize); + + memset(composite_patch->pixels, 0xff, pixelDataSize); + memset(composite_patch->columns, 0x00, columnsDataSize); + memset(composite_patch->posts, 0x00, postsDataSize); + + numPostsUsedSoFar = 0; + + for (x=0; xwidth; x++) { + // setup the column's data + composite_patch->columns[x].pixels = composite_patch->pixels + (x*composite_patch->height); + composite_patch->columns[x].numPosts = countsInColumn[x].posts; + composite_patch->columns[x].posts = composite_patch->posts + numPostsUsedSoFar; + numPostsUsedSoFar += countsInColumn[x].posts; + } + + // fill in the pixels, posts, and columns + for (i=0; ipatchcount; i++) { + texpatch = &texture->patches[i]; + patchNum = texpatch->patch; + oldPatch = (const patch_t*)W_CacheLumpNum(patchNum); + + for (x=0; xwidth); x++) { + int tx = texpatch->originx + x; + + if (tx < 0) + continue; + if (tx >= composite_patch->width) + break; + + oldColumn = (const column_t *)((const byte *)oldPatch + LONG(oldPatch->columnofs[x])); + + { + // tiling + int prevColumnIndex = x-1; + int nextColumnIndex = x+1; + while (prevColumnIndex < 0) prevColumnIndex += SHORT(oldPatch->width); + while (nextColumnIndex >= SHORT(oldPatch->width)) nextColumnIndex -= SHORT(oldPatch->width); + oldPrevColumn = (const column_t *)((const byte *)oldPatch + LONG(oldPatch->columnofs[prevColumnIndex])); + oldNextColumn = (const column_t *)((const byte *)oldPatch + LONG(oldPatch->columnofs[nextColumnIndex])); + } + + while (oldColumn->topdelta != 0xff) { + rpost_t *post = &composite_patch->columns[tx].posts[countsInColumn[tx].posts_used]; + oldColumnPixelData = (const byte *)oldColumn + 3; + oy = texpatch->originy; + count = oldColumn->length; + // the original renderer had several bugs which we reproduce here + if (countsInColumn[tx].patches > 1) { + // when there are multiple patches, then we need to handle the + // column differently + if (i == 0) { + // draw first patch at original position, it will be partly + // overdrawn below + for (y=0; ytopdelta + y; + if (ty < 0) + continue; + if (ty >= composite_patch->height) + break; + composite_patch->pixels[tx * composite_patch->height + ty] = oldColumnPixelData[y]; + } + } + // do the buggy clipping + if ((oy + oldColumn->topdelta) < 0) { + count += oy; + oy = 0; + } + } else { + // with a single patch only negative y origins are wrong + oy = 0; + } + // set up the post's data + post->topdelta = oldColumn->topdelta + oy; + post->length = count; + if ((post->topdelta + post->length) > composite_patch->height) { + if (post->topdelta > composite_patch->height) + post->length = 0; + else + post->length = composite_patch->height - post->topdelta; + } + if (post->topdelta < 0) { + if ((post->topdelta + post->length) <= 0) + post->length = 0; + else + post->length -= post->topdelta; + post->topdelta = 0; + } + post->slope = 0; + + edgeSlope = getColumnEdgeSlope(oldPrevColumn, oldNextColumn, oldColumn->topdelta); + if (edgeSlope == 1) post->slope |= RDRAW_EDGESLOPE_TOP_UP; + else if (edgeSlope == -1) post->slope |= RDRAW_EDGESLOPE_TOP_DOWN; + + edgeSlope = getColumnEdgeSlope(oldPrevColumn, oldNextColumn, oldColumn->topdelta+count); + if (edgeSlope == 1) post->slope |= RDRAW_EDGESLOPE_BOT_UP; + else if (edgeSlope == -1) post->slope |= RDRAW_EDGESLOPE_BOT_DOWN; + + // fill in the post's pixels + for (y=0; ytopdelta + y; + if (ty < 0) + continue; + if (ty >= composite_patch->height) + break; + composite_patch->pixels[tx * composite_patch->height + ty] = oldColumnPixelData[y]; + } + + oldColumn = (const column_t *)((const byte *)oldColumn + oldColumn->length + 4); + countsInColumn[tx].posts_used++; + assert(countsInColumn[tx].posts_used <= countsInColumn[tx].posts); + } + } + + W_UnlockLumpNum(patchNum); + } + + for (x=0; xwidth; x++) { + rcolumn_t *column; + + if (countsInColumn[x].patches <= 1) + continue; + + // cleanup posts on multipatch columns + column = &composite_patch->columns[x]; + + i = 0; + while (i<(column->numPosts-1)) { + rpost_t *post1 = &column->posts[i]; + rpost_t *post2 = &column->posts[i+1]; + int length; + + if ((post2->topdelta - post1->topdelta) < 0) + switchPosts(post1, post2); + + if ((post1->topdelta + post1->length) >= post2->topdelta) { + length = (post1->length + post2->length) - ((post1->topdelta + post1->length) - post2->topdelta); + if (post1->length < length) { + post1->slope = post2->slope; + post1->length = length; + } + removePostFromColumn(column, i+1); + i = 0; + continue; + } + i++; + } + } + + if (1 || composite_patch->isNotTileable) { + const rcolumn_t *column, *prevColumn; + + // copy the patch image down and to the right where there are + // holes to eliminate the black halo from bilinear filtering + for (x=0; xwidth; x++) { + //oldColumn = (const column_t *)((const byte *)oldPatch + oldPatch->columnofs[x]); + + column = R_GetPatchColumnClamped(composite_patch, x); + prevColumn = R_GetPatchColumnClamped(composite_patch, x-1); + + if (column->pixels[0] == 0xff) { + // force the first pixel (which is a hole), to use + // the color from the next solid spot in the column + for (y=0; yheight; y++) { + if (column->pixels[y] != 0xff) { + column->pixels[0] = column->pixels[y]; + break; + } + } + } + + // copy from above or to the left + for (y=1; yheight; y++) { + //if (getIsSolidAtSpot(oldColumn, y)) continue; + if (column->pixels[y] != 0xff) continue; + + // this pixel is a hole + + if (x && prevColumn->pixels[y-1] != 0xff) { + // copy the color from the left + column->pixels[y] = prevColumn->pixels[y]; + } + else { + // copy the color from above + column->pixels[y] = column->pixels[y-1]; + } + } + } + + // verify that the patch truly is non-rectangular since + // this determines tiling later on + } +} + +//--------------------------------------------------------------------------- +const rpatch_t *R_CachePatchNum(int id) { + const int locks = 1; + + if (!patches) + I_Error("R_CachePatchNum: Patches not initialized"); + +#ifdef RANGECHECK + if (id >= numlumps) + I_Error("createPatch: %i >= numlumps", id); +#endif + + if (!patches[id].data) + createPatch(id); + + /* cph - if wasn't locked but now is, tell z_zone to hold it */ + if (!patches[id].locks && locks) { + Z_ChangeTag(patches[id].data,PU_STATIC); +#ifdef TIMEDIAG + patches[id].locktic = gametic; +#endif + } + patches[id].locks += locks; + +#ifdef SIMPLECHECKS + if (!((patches[id].locks+1) & 0xf)) + lprintf(LO_DEBUG, "R_CachePatchNum: High lock on %8s (%d)\n", + lumpinfo[id].name, patches[id].locks); +#endif + + return &patches[id]; +} + +void R_UnlockPatchNum(int id) +{ + const int unlocks = 1; +#ifdef SIMPLECHECKS + if ((signed short)patches[id].locks < unlocks) + lprintf(LO_DEBUG, "R_UnlockPatchNum: Excess unlocks on %8s (%d-%d)\n", + lumpinfo[id].name, patches[id].locks, unlocks); +#endif + patches[id].locks -= unlocks; + /* cph - Note: must only tell z_zone to make purgeable if currently locked, + * else it might already have been purged + */ + if (unlocks && !patches[id].locks) + Z_ChangeTag(patches[id].data, PU_CACHE); +} + +//--------------------------------------------------------------------------- +const rpatch_t *R_CacheTextureCompositePatchNum(int id) { + const int locks = 1; + + if (!texture_composites) + I_Error("R_CacheTextureCompositePatchNum: Composite patches not initialized"); + +#ifdef RANGECHECK + if (id >= numtextures) + I_Error("createTextureCompositePatch: %i >= numtextures", id); +#endif + + if (!texture_composites[id].data) + createTextureCompositePatch(id); + + /* cph - if wasn't locked but now is, tell z_zone to hold it */ + if (!texture_composites[id].locks && locks) { + Z_ChangeTag(texture_composites[id].data,PU_STATIC); +#ifdef TIMEDIAG + texture_composites[id].locktic = gametic; +#endif + } + texture_composites[id].locks += locks; + +#ifdef SIMPLECHECKS + if (!((texture_composites[id].locks+1) & 0xf)) + lprintf(LO_DEBUG, "R_CacheTextureCompositePatchNum: High lock on %8s (%d)\n", + textures[id]->name, texture_composites[id].locks); +#endif + + return &texture_composites[id]; + +} + +void R_UnlockTextureCompositePatchNum(int id) +{ + const int unlocks = 1; +#ifdef SIMPLECHECKS + if ((signed short)texture_composites[id].locks < unlocks) + lprintf(LO_DEBUG, "R_UnlockTextureCompositePatchNum: Excess unlocks on %8s (%d-%d)\n", + textures[id]->name, texture_composites[id].locks, unlocks); +#endif + texture_composites[id].locks -= unlocks; + /* cph - Note: must only tell z_zone to make purgeable if currently locked, + * else it might already have been purged + */ + if (unlocks && !texture_composites[id].locks) + Z_ChangeTag(texture_composites[id].data, PU_CACHE); +} + +//--------------------------------------------------------------------------- +const rcolumn_t *R_GetPatchColumnWrapped(const rpatch_t *patch, int columnIndex) { + while (columnIndex < 0) columnIndex += patch->width; + columnIndex %= patch->width; + return &patch->columns[columnIndex]; +} + +//--------------------------------------------------------------------------- +const rcolumn_t *R_GetPatchColumnClamped(const rpatch_t *patch, int columnIndex) { + if (columnIndex < 0) columnIndex = 0; + if (columnIndex >= patch->width) columnIndex = patch->width-1; + return &patch->columns[columnIndex]; +} + +//--------------------------------------------------------------------------- +const rcolumn_t *R_GetPatchColumn(const rpatch_t *patch, int columnIndex) { + if (patch->isNotTileable) return R_GetPatchColumnClamped(patch, columnIndex); + else return R_GetPatchColumnWrapped(patch, columnIndex); +} + diff --git a/components/doom/prboom/r_patch.h b/components/doom/prboom/r_patch.h new file mode 100644 index 0000000..f1c4628 --- /dev/null +++ b/components/doom/prboom/r_patch.h @@ -0,0 +1,110 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + *-----------------------------------------------------------------------------*/ + + +#ifndef R_PATCH_H +#define R_PATCH_H + +// Used to specify the sloping of the top and bottom of a column post +typedef enum { + RDRAW_EDGESLOPE_TOP_UP = (1<<0), + RDRAW_EDGESLOPE_TOP_DOWN = (1<<1), + RDRAW_EDGESLOPE_BOT_UP = (1<<2), + RDRAW_EDGESLOPE_BOT_DOWN = (1<<3), + RDRAW_EDGESLOPE_TOP_MASK = 0x3, + RDRAW_EDGESLOPE_BOT_MASK = 0xc, +} edgeslope_t; + +typedef struct { + int topdelta; + int length; + edgeslope_t slope; +} rpost_t; + +typedef struct { + int numPosts; + rpost_t *posts; + unsigned char *pixels; +} rcolumn_t; + +typedef struct { + int width; + int height; + + int leftoffset; + int topoffset; + + unsigned isNotTileable:2; // changed from char + unsigned widthmask:22; // changed from unsigned + unsigned locks:8; // changed from unsigned + + // this is the single malloc'ed/free'd array + // for this patch + unsigned char *data; + + // these are pointers into the data array + unsigned char *pixels; + rcolumn_t *columns; + rpost_t *posts; + +#ifdef TIMEDIAG + int locktic; +#endif +} rpatch_t; + + +const rpatch_t *R_CachePatchNum(int id); +void R_UnlockPatchNum(int id); +#define R_CachePatchName(name) R_CachePatchNum(W_GetNumForName(name)) +#define R_UnlockPatchName(name) R_UnlockPatchNum(W_GetNumForName(name)) + +const rpatch_t *R_CacheTextureCompositePatchNum(int id); +void R_UnlockTextureCompositePatchNum(int id); + + +// Size query funcs +int R_NumPatchWidth(int lump) ; +int R_NumPatchHeight(int lump); +#define R_NamePatchWidth(name) R_NumPatchWidth(W_GetNumForName(name)) +#define R_NamePatchHeight(name) R_NumPatchHeight(W_GetNumForName(name)) + + +const rcolumn_t *R_GetPatchColumnWrapped(const rpatch_t *patch, int columnIndex); +const rcolumn_t *R_GetPatchColumnClamped(const rpatch_t *patch, int columnIndex); + + +// returns R_GetPatchColumnWrapped for square, non-holed textures +// and R_GetPatchColumnClamped otherwise +const rcolumn_t *R_GetPatchColumn(const rpatch_t *patch, int columnIndex); + + +void R_InitPatches(); + +#endif diff --git a/components/doom/prboom/r_plane.c b/components/doom/prboom/r_plane.c new file mode 100644 index 0000000..0971494 --- /dev/null +++ b/components/doom/prboom/r_plane.c @@ -0,0 +1,459 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Here is a core component: drawing the floors and ceilings, + * while maintaining a per column clipping list only. + * Moreover, the sky areas have to be determined. + * + * MAXVISPLANES is no longer a limit on the number of visplanes, + * but a limit on the number of hash slots; larger numbers mean + * better performance usually but after a point they are wasted, + * and memory and time overheads creep in. + * + * For more information on visplanes, see: + * + * http://classicgaming.com/doom/editing/ + * + * Lee Killough + * + *-----------------------------------------------------------------------------*/ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "z_zone.h" /* memory allocation wrappers -- killough */ + +#include "doomstat.h" +#include "w_wad.h" +#include "r_main.h" +#include "r_draw.h" +#include "r_things.h" +#include "r_sky.h" +#include "r_plane.h" +#include "v_video.h" +#include "lprintf.h" + + +#define MAXVISPLANES 128 /* must be a power of 2 */ + +static visplane_t *visplanes[MAXVISPLANES]; // killough +static visplane_t *freetail; // killough +static visplane_t **freehead = &freetail; // killough +visplane_t *floorplane, *ceilingplane; + +// killough -- hash function for visplanes +// Empirically verified to be fairly uniform: + +#define visplane_hash(picnum,lightlevel,height) \ + ((unsigned)((picnum)*3+(lightlevel)+(height)*7) & (MAXVISPLANES-1)) + +size_t maxopenings; +int *openings,*lastopening; // dropoff overflow + +// Clip values are the solid pixel bounding the range. +// floorclip starts out SCREENHEIGHT +// ceilingclip starts out -1 + +int floorclip[MAX_SCREENWIDTH], ceilingclip[MAX_SCREENWIDTH]; // dropoff overflow + +// spanstart holds the start of a plane span; initialized to 0 at start + +static int spanstart[MAX_SCREENHEIGHT]; // killough 2/8/98 + +// +// texture mapping +// + +static const lighttable_t **planezlight; +static fixed_t planeheight; + +// killough 2/8/98: make variables static + +static fixed_t basexscale, baseyscale; +static fixed_t cachedheight[MAX_SCREENHEIGHT]; +static fixed_t cacheddistance[MAX_SCREENHEIGHT]; +static fixed_t cachedxstep[MAX_SCREENHEIGHT]; +static fixed_t cachedystep[MAX_SCREENHEIGHT]; +static fixed_t xoffs,yoffs; // killough 2/28/98: flat offsets + +fixed_t yslope[MAX_SCREENHEIGHT], distscale[MAX_SCREENWIDTH]; + +// +// R_MapPlane +// +// Uses global vars: +// planeheight +// dsvars.source +// basexscale +// baseyscale +// viewx +// viewy +// xoffs +// yoffs +// +// BASIC PRIMITIVE +// + +static void R_MapPlane(int y, int x1, int x2, draw_span_vars_t *dsvars) +{ + angle_t angle; + fixed_t distance, length; + unsigned index; + +#ifdef RANGECHECK + if (x2 < x1 || x1<0 || x2>=viewwidth || (unsigned)y>(unsigned)viewheight) + I_Error ("R_MapPlane: %i, %i at %i",x1,x2,y); +#endif + + if (planeheight != cachedheight[y]) + { + cachedheight[y] = planeheight; + distance = cacheddistance[y] = FixedMul (planeheight, yslope[y]); + dsvars->xstep = cachedxstep[y] = FixedMul (distance,basexscale); + dsvars->ystep = cachedystep[y] = FixedMul (distance,baseyscale); + } + else + { + distance = cacheddistance[y]; + dsvars->xstep = cachedxstep[y]; + dsvars->ystep = cachedystep[y]; + } + + length = FixedMul (distance,distscale[x1]); + angle = (viewangle + xtoviewangle[x1])>>ANGLETOFINESHIFT; + + // killough 2/28/98: Add offsets + dsvars->xfrac = viewx + FixedMul(finecosine[angle], length) + xoffs; + dsvars->yfrac = -viewy - FixedMul(finesine[angle], length) + yoffs; + + if (drawvars.filterfloor == RDRAW_FILTER_LINEAR) { + dsvars->xfrac -= (FRACUNIT>>1); + dsvars->yfrac -= (FRACUNIT>>1); + } + + if (!(dsvars->colormap = fixedcolormap)) + { + dsvars->z = distance; + index = distance >> LIGHTZSHIFT; + if (index >= MAXLIGHTZ ) + index = MAXLIGHTZ-1; + dsvars->colormap = planezlight[index]; + dsvars->nextcolormap = planezlight[index+1 >= MAXLIGHTZ ? MAXLIGHTZ-1 : index+1]; + } + else + { + dsvars->z = 0; + } + + dsvars->y = y; + dsvars->x1 = x1; + dsvars->x2 = x2; + + R_DrawSpan(dsvars); +} + +// +// R_ClearPlanes +// At begining of frame. +// + +void R_ClearPlanes(void) +{ + int i; + + // opening / clipping determination + for (i=0 ; inext; + + lastopening = openings; + + // texture calculation + memset(cachedheight, 0, sizeof(cachedheight)); + + // scale will be unit scale at SCREENWIDTH/2 distance + basexscale = FixedDiv (viewsin,projection); + baseyscale = FixedDiv (viewcos,projection); +} + +// New function, by Lee Killough + +static visplane_t *new_visplane(unsigned hash) +{ + visplane_t *check = freetail; + if (!check) + check = Z_Calloc(1, sizeof(*check), PU_STATIC, 0); + else if (!(freetail = freetail->next)) + freehead = &freetail; + check->next = visplanes[hash]; + visplanes[hash] = check; + return check; +} + +/* + * R_DupPlane + * + * cph 2003/04/18 - create duplicate of existing visplane and set initial range + */ +visplane_t *R_DupPlane(const visplane_t *pl, int start, int stop) +{ + unsigned hash = visplane_hash(pl->picnum, pl->lightlevel, pl->height); + visplane_t *new_pl = new_visplane(hash); + + new_pl->height = pl->height; + new_pl->picnum = pl->picnum; + new_pl->lightlevel = pl->lightlevel; + new_pl->xoffs = pl->xoffs; // killough 2/28/98 + new_pl->yoffs = pl->yoffs; + new_pl->minx = start; + new_pl->maxx = stop; + memset(new_pl->top, 0xff, sizeof new_pl->top); + return new_pl; +} +// +// R_FindPlane +// +// killough 2/28/98: Add offsets + +visplane_t *R_FindPlane(fixed_t height, int picnum, int lightlevel, + fixed_t xoffs, fixed_t yoffs) +{ + visplane_t *check; + unsigned hash; // killough + + if (picnum == skyflatnum || picnum & PL_SKYFLAT) + height = lightlevel = 0; // killough 7/19/98: most skies map together + + // New visplane algorithm uses hash table -- killough + hash = visplane_hash(picnum,lightlevel,height); + + for (check=visplanes[hash]; check; check=check->next) // killough + if (height == check->height && + picnum == check->picnum && + lightlevel == check->lightlevel && + xoffs == check->xoffs && // killough 2/28/98: Add offset checks + yoffs == check->yoffs) + return check; + + check = new_visplane(hash); // killough + + check->height = height; + check->picnum = picnum; + check->lightlevel = lightlevel; + check->minx = viewwidth; // Was SCREENWIDTH -- killough 11/98 + check->maxx = -1; + check->xoffs = xoffs; // killough 2/28/98: Save offsets + check->yoffs = yoffs; + + memset (check->top, 0xff, sizeof check->top); + + return check; +} + +// +// R_CheckPlane +// +visplane_t *R_CheckPlane(visplane_t *pl, int start, int stop) +{ + int intrl, intrh, unionl, unionh, x; + + if (start < pl->minx) + intrl = pl->minx, unionl = start; + else + unionl = pl->minx, intrl = start; + + if (stop > pl->maxx) + intrh = pl->maxx, unionh = stop; + else + unionh = pl->maxx, intrh = stop; + + for (x=intrl ; x <= intrh && pl->top[x] == 0xffffffffu; x++) // dropoff overflow + ; + + if (x > intrh) { /* Can use existing plane; extend range */ + pl->minx = unionl; pl->maxx = unionh; + return pl; + } else /* Cannot use existing plane; create a new one */ + return R_DupPlane(pl,start,stop); +} + +// +// R_MakeSpans +// + +static void R_MakeSpans(int x, unsigned int t1, unsigned int b1, + unsigned int t2, unsigned int b2, + draw_span_vars_t *dsvars) +{ + for (; t1 < t2 && t1 <= b1; t1++) + R_MapPlane(t1, spanstart[t1], x-1, dsvars); + for (; b1 > b2 && b1 >= t1; b1--) + R_MapPlane(b1, spanstart[b1] ,x-1, dsvars); + while (t2 < t1 && t2 <= b2) + spanstart[t2++] = x; + while (b2 > b1 && b2 >= t2) + spanstart[b2--] = x; +} + +// New function, by Lee Killough + +static void R_DoDrawPlane(visplane_t *pl) +{ + register int x; + draw_column_vars_t dcvars; + R_DrawColumn_f colfunc = R_GetDrawColumnFunc(RDC_PIPELINE_STANDARD, drawvars.filterwall, drawvars.filterz); + + R_SetDefaultDrawColumnVars(&dcvars); + + if (pl->minx <= pl->maxx) { + if (pl->picnum == skyflatnum || pl->picnum & PL_SKYFLAT) { // sky flat + int texture; + const rpatch_t *tex_patch; + angle_t an, flip; + + // killough 10/98: allow skies to come from sidedefs. + // Allows scrolling and/or animated skies, as well as + // arbitrary multiple skies per level without having + // to use info lumps. + + an = viewangle; + + if (pl->picnum & PL_SKYFLAT) + { + // Sky Linedef + const line_t *l = &lines[pl->picnum & ~PL_SKYFLAT]; + + // Sky transferred from first sidedef + const side_t *s = *l->sidenum + sides; + + // Texture comes from upper texture of reference sidedef + texture = texturetranslation[s->toptexture]; + + // Horizontal offset is turned into an angle offset, + // to allow sky rotation as well as careful positioning. + // However, the offset is scaled very small, so that it + // allows a long-period of sky rotation. + + an += s->textureoffset; + + // Vertical offset allows careful sky positioning. + + dcvars.texturemid = s->rowoffset - 28*FRACUNIT; + + // We sometimes flip the picture horizontally. + // + // Doom always flipped the picture, so we make it optional, + // to make it easier to use the new feature, while to still + // allow old sky textures to be used. + + flip = l->special==272 ? 0u : ~0u; + } + else + { // Normal Doom sky, only one allowed per level + dcvars.texturemid = skytexturemid; // Default y-offset + texture = skytexture; // Default texture + flip = 0; // Doom flips it + } + + /* Sky is always drawn full bright, i.e. colormaps[0] is used. + * Because of this hack, sky is not affected by INVUL inverse mapping. + * Until Boom fixed this. Compat option added in MBF. */ + + if (comp[comp_skymap] || !(dcvars.colormap = fixedcolormap)) + dcvars.colormap = fullcolormap; // killough 3/20/98 + + dcvars.nextcolormap = dcvars.colormap; // for filtering -- POPE + + //dcvars.texturemid = skytexturemid; + dcvars.texheight = textureheight[skytexture]>>FRACBITS; // killough + // proff 09/21/98: Changed for high-res + dcvars.iscale = FRACUNIT*200/viewheight; + + tex_patch = R_CacheTextureCompositePatchNum(texture); + + // killough 10/98: Use sky scrolling offset, and possibly flip picture + for (x = pl->minx; (dcvars.x = x) <= pl->maxx; x++) + if ((dcvars.yl = pl->top[x]) != -1 && dcvars.yl <= (dcvars.yh = pl->bottom[x])) // dropoff overflow + { + dcvars.source = R_GetTextureColumn(tex_patch, ((an + xtoviewangle[x])^flip) >> ANGLETOSKYSHIFT); + dcvars.prevsource = R_GetTextureColumn(tex_patch, ((an + xtoviewangle[x-1])^flip) >> ANGLETOSKYSHIFT); + dcvars.nextsource = R_GetTextureColumn(tex_patch, ((an + xtoviewangle[x+1])^flip) >> ANGLETOSKYSHIFT); + colfunc(&dcvars); + } + + R_UnlockTextureCompositePatchNum(texture); + + } else { // regular flat + + int stop, light; + draw_span_vars_t dsvars; + + dsvars.source = W_CacheLumpNum(firstflat + flattranslation[pl->picnum]); + + xoffs = pl->xoffs; // killough 2/28/98: Add offsets + yoffs = pl->yoffs; + planeheight = D_abs(pl->height-viewz); + light = (pl->lightlevel >> LIGHTSEGSHIFT) + extralight; + + if (light >= LIGHTLEVELS) + light = LIGHTLEVELS-1; + + if (light < 0) + light = 0; + + stop = pl->maxx + 1; + planezlight = zlight[light]; + pl->top[pl->minx-1] = pl->top[stop] = 0xffffffffu; // dropoff overflow + + for (x = pl->minx ; x <= stop ; x++) + R_MakeSpans(x,pl->top[x-1],pl->bottom[x-1], + pl->top[x],pl->bottom[x], &dsvars); + + W_UnlockLumpNum(firstflat + flattranslation[pl->picnum]); + } + } +} + +// +// RDrawPlanes +// At the end of each frame. +// + +void R_DrawPlanes (void) +{ + visplane_t *pl; + int i; + for (i=0;inext, rendered_visplanes++) + R_DoDrawPlane(pl); +} diff --git a/components/doom/prboom/r_plane.h b/components/doom/prboom/r_plane.h new file mode 100644 index 0000000..6a28527 --- /dev/null +++ b/components/doom/prboom/r_plane.h @@ -0,0 +1,66 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Refresh, visplane stuff (floor, ceilings). + * + *-----------------------------------------------------------------------------*/ + +#ifndef __R_PLANE__ +#define __R_PLANE__ + +#include "r_data.h" + +#ifdef __GNUG__ +#pragma interface +#endif + +/* killough 10/98: special mask indicates sky flat comes from sidedef */ +#define PL_SKYFLAT (0x80000000) + +/* Visplane related. */ +extern int *lastopening; // dropoff overflow + +extern int floorclip[], ceilingclip[]; // dropoff overflow +extern fixed_t yslope[], distscale[]; + +void R_ClearPlanes(void); +void R_DrawPlanes(void); + +visplane_t *R_FindPlane( + fixed_t height, + int picnum, + int lightlevel, + fixed_t xoffs, /* killough 2/28/98: add x-y offsets */ + fixed_t yoffs + ); + +visplane_t *R_CheckPlane(visplane_t *pl, int start, int stop); +visplane_t *R_DupPlane(const visplane_t *pl, int start, int stop); + +#endif diff --git a/components/doom/prboom/r_segs.c b/components/doom/prboom/r_segs.c new file mode 100644 index 0000000..b0ac61f --- /dev/null +++ b/components/doom/prboom/r_segs.c @@ -0,0 +1,843 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2004 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * All the clipping: columns, horizontal spans, sky columns. + * + *-----------------------------------------------------------------------------*/ +// +// 4/25/98, 5/2/98 killough: reformatted, beautified + +#include "doomstat.h" +#include "r_main.h" +#include "r_bsp.h" +#include "r_segs.h" +#include "r_plane.h" +#include "r_things.h" +#include "r_draw.h" +#include "w_wad.h" +#include "v_video.h" +#include "lprintf.h" + + +// OPTIMIZE: closed two sided lines as single sided + +// killough 1/6/98: replaced globals with statics where appropriate + +// True if any of the segs textures might be visible. +static boolean segtextured; +static boolean markfloor; // False if the back side is the same plane. +static boolean markceiling; +static boolean maskedtexture; +static int toptexture; +static int bottomtexture; +static int midtexture; + +static fixed_t toptexheight, midtexheight, bottomtexheight; // cph + +angle_t rw_normalangle; // angle to line origin +int rw_angle1; +fixed_t rw_distance; + +// +// regular wall +// +static int rw_x; +static int rw_stopx; +static angle_t rw_centerangle; +static fixed_t rw_offset; +static fixed_t rw_scale; +static fixed_t rw_scalestep; +static fixed_t rw_midtexturemid; +static fixed_t rw_toptexturemid; +static fixed_t rw_bottomtexturemid; +static int rw_lightlevel; +static int worldtop; +static int worldbottom; +static int worldhigh; +static int worldlow; +static fixed_t pixhigh; +static fixed_t pixlow; +static fixed_t pixhighstep; +static fixed_t pixlowstep; +static fixed_t topfrac; +static fixed_t topstep; +static fixed_t bottomfrac; +static fixed_t bottomstep; +static int *maskedtexturecol; // dropoff overflow + +// +// R_ScaleFromGlobalAngle +// Returns the texture mapping scale +// for the current line (horizontal span) +// at the given angle. +// rw_distance must be calculated first. +// +// killough 5/2/98: reformatted, cleaned up +// CPhipps - moved here from r_main.c + +static fixed_t R_ScaleFromGlobalAngle(angle_t visangle) +{ + int anglea = ANG90 + (visangle-viewangle); + int angleb = ANG90 + (visangle-rw_normalangle); + int den = FixedMul(rw_distance, finesine[anglea>>ANGLETOFINESHIFT]); +// proff 11/06/98: Changed for high-res + fixed_t num = FixedMul(projectiony, finesine[angleb>>ANGLETOFINESHIFT]); + return den > num>>16 ? (num = FixedDiv(num, den)) > 64*FRACUNIT ? + 64*FRACUNIT : num < 256 ? 256 : num : 64*FRACUNIT; +} + +// +// R_RenderMaskedSegRange +// + +void R_RenderMaskedSegRange(drawseg_t *ds, int x1, int x2) +{ + int texnum; + sector_t tempsec; // killough 4/13/98 + const rpatch_t *patch; + R_DrawColumn_f colfunc; + draw_column_vars_t dcvars; + angle_t angle; + + R_SetDefaultDrawColumnVars(&dcvars); + + // Calculate light table. + // Use different light tables + // for horizontal / vertical / diagonal. Diagonal? + + curline = ds->curline; // OPTIMIZE: get rid of LIGHTSEGSHIFT globally + + // killough 4/11/98: draw translucent 2s normal textures + + colfunc = R_GetDrawColumnFunc(RDC_PIPELINE_STANDARD, drawvars.filterwall, drawvars.filterz); + if (curline->linedef->tranlump >= 0 && general_translucency) + { + colfunc = R_GetDrawColumnFunc(RDC_PIPELINE_TRANSLUCENT, drawvars.filterwall, drawvars.filterz); + tranmap = main_tranmap; + if (curline->linedef->tranlump > 0) + tranmap = W_CacheLumpNum(curline->linedef->tranlump-1); + } + // killough 4/11/98: end translucent 2s normal code + + frontsector = curline->frontsector; + backsector = curline->backsector; + + // cph 2001/11/25 - middle textures did not animate in v1.2 + texnum = curline->sidedef->midtexture; + if (!comp[comp_maskedanim]) + texnum = texturetranslation[texnum]; + + // killough 4/13/98: get correct lightlevel for 2s normal textures + rw_lightlevel = R_FakeFlat(frontsector, &tempsec, NULL, NULL, false) ->lightlevel; + + maskedtexturecol = ds->maskedtexturecol; + + rw_scalestep = ds->scalestep; + spryscale = ds->scale1 + (x1 - ds->x1)*rw_scalestep; + mfloorclip = ds->sprbottomclip; + mceilingclip = ds->sprtopclip; + + // find positioning + if (curline->linedef->flags & ML_DONTPEGBOTTOM) + { + dcvars.texturemid = frontsector->floorheight > backsector->floorheight + ? frontsector->floorheight : backsector->floorheight; + dcvars.texturemid = dcvars.texturemid + textureheight[texnum] - viewz; + } + else + { + dcvars.texturemid =frontsector->ceilingheightceilingheight + ? frontsector->ceilingheight : backsector->ceilingheight; + dcvars.texturemid = dcvars.texturemid - viewz; + } + + dcvars.texturemid += curline->sidedef->rowoffset; + + if (fixedcolormap) { + dcvars.colormap = fixedcolormap; + dcvars.nextcolormap = dcvars.colormap; // for filtering -- POPE + } + + patch = R_CacheTextureCompositePatchNum(texnum); + + // draw the columns + for (dcvars.x = x1 ; dcvars.x <= x2 ; dcvars.x++, spryscale += rw_scalestep) + if (maskedtexturecol[dcvars.x] != INT_MAX) // dropoff overflow + { + // calculate texture offset - POPE + angle = (ds->rw_centerangle + xtoviewangle[dcvars.x]) >> ANGLETOFINESHIFT; + dcvars.texu = ds->rw_offset - FixedMul(finetangent[angle], ds->rw_distance); + if (drawvars.filterwall == RDRAW_FILTER_LINEAR) + dcvars.texu -= (FRACUNIT>>1); + + if (!fixedcolormap) + dcvars.z = spryscale; // for filtering -- POPE + dcvars.colormap = R_ColourMap(rw_lightlevel,spryscale); + dcvars.nextcolormap = R_ColourMap(rw_lightlevel+1,spryscale); // for filtering -- POPE + + // killough 3/2/98: + // + // This calculation used to overflow and cause crashes in Doom: + // + // sprtopscreen = centeryfrac - FixedMul(dcvars.texturemid, spryscale); + // + // This code fixes it, by using double-precision intermediate + // arithmetic and by skipping the drawing of 2s normals whose + // mapping to screen coordinates is totally out of range: + + { + int_64_t t = ((int_64_t) centeryfrac << FRACBITS) - + (int_64_t) dcvars.texturemid * spryscale; + if (t + (int_64_t) textureheight[texnum] * spryscale < 0 || + t > (int_64_t) MAX_SCREENHEIGHT << FRACBITS*2) + continue; // skip if the texture is out of screen's range + sprtopscreen = (long)(t >> FRACBITS); + } + + dcvars.iscale = 0xffffffffu / (unsigned) spryscale; + + // killough 1/25/98: here's where Medusa came in, because + // it implicitly assumed that the column was all one patch. + // Originally, Doom did not construct complete columns for + // multipatched textures, so there were no header or trailer + // bytes in the column referred to below, which explains + // the Medusa effect. The fix is to construct true columns + // when forming multipatched textures (see r_data.c). + + // draw the texture + R_DrawMaskedColumn( + patch, + colfunc, + &dcvars, + R_GetPatchColumnWrapped(patch, maskedtexturecol[dcvars.x]), + R_GetPatchColumnWrapped(patch, maskedtexturecol[dcvars.x]-1), + R_GetPatchColumnWrapped(patch, maskedtexturecol[dcvars.x]+1) + ); + + maskedtexturecol[dcvars.x] = INT_MAX; // dropoff overflow + } + + // Except for main_tranmap, mark others purgable at this point + if (curline->linedef->tranlump > 0 && general_translucency) + W_UnlockLumpNum(curline->linedef->tranlump-1); // cph - unlock it + + R_UnlockTextureCompositePatchNum(texnum); + + curline = NULL; /* cph 2001/11/18 - must clear curline now we're done with it, so R_ColourMap doesn't try using it for other things */ +} + +// +// R_RenderSegLoop +// Draws zero, one, or two textures (and possibly a masked texture) for walls. +// Can draw or mark the starting pixel of floor and ceiling textures. +// CALLED: CORE LOOPING ROUTINE. +// + +#define HEIGHTBITS 12 +#define HEIGHTUNIT (1<>HEIGHTBITS; + int yl = (topfrac+HEIGHTUNIT-1)>>HEIGHTBITS; + + // no space above wall? + int bottom,top = ceilingclip[rw_x]+1; + + if (yl < top) + yl = top; + + if (markceiling) + { + bottom = yl-1; + + if (bottom >= floorclip[rw_x]) + bottom = floorclip[rw_x]-1; + + if (top <= bottom) + { + ceilingplane->top[rw_x] = top; + ceilingplane->bottom[rw_x] = bottom; + } + // SoM: this should be set here + ceilingclip[rw_x] = bottom; + } + +// yh = bottomfrac>>HEIGHTBITS; + + bottom = floorclip[rw_x]-1; + if (yh > bottom) + yh = bottom; + + if (markfloor) + { + + top = yh < ceilingclip[rw_x] ? ceilingclip[rw_x] : yh; + + if (++top <= bottom) + { + floorplane->top[rw_x] = top; + floorplane->bottom[rw_x] = bottom; + } + // SoM: This should be set here to prevent overdraw + floorclip[rw_x] = top; + } + + // texturecolumn and lighting are independent of wall tiers + if (segtextured) + { + // calculate texture offset + angle_t angle =(rw_centerangle+xtoviewangle[rw_x])>>ANGLETOFINESHIFT; + + texturecolumn = rw_offset-FixedMul(finetangent[angle],rw_distance); + if (drawvars.filterwall == RDRAW_FILTER_LINEAR) + texturecolumn -= (FRACUNIT>>1); + dcvars.texu = texturecolumn; // for filtering -- POPE + texturecolumn >>= FRACBITS; + + dcvars.colormap = R_ColourMap(rw_lightlevel,rw_scale); + dcvars.nextcolormap = R_ColourMap(rw_lightlevel+1,rw_scale); // for filtering -- POPE + dcvars.z = rw_scale; // for filtering -- POPE + + dcvars.x = rw_x; + dcvars.iscale = 0xffffffffu / (unsigned)rw_scale; + } + + // draw the wall tiers + if (midtexture) + { + + dcvars.yl = yl; // single sided line + dcvars.yh = yh; + dcvars.texturemid = rw_midtexturemid; + tex_patch = R_CacheTextureCompositePatchNum(midtexture); + dcvars.source = R_GetTextureColumn(tex_patch, texturecolumn); + dcvars.prevsource = R_GetTextureColumn(tex_patch, texturecolumn-1); + dcvars.nextsource = R_GetTextureColumn(tex_patch, texturecolumn+1); + dcvars.texheight = midtexheight; + colfunc (&dcvars); + R_UnlockTextureCompositePatchNum(midtexture); + tex_patch = NULL; + ceilingclip[rw_x] = viewheight; + floorclip[rw_x] = -1; + } + else + { + + // two sided line + if (toptexture) + { + // top wall + int mid = pixhigh>>HEIGHTBITS; + pixhigh += pixhighstep; + + if (mid >= floorclip[rw_x]) + mid = floorclip[rw_x]-1; + + if (mid >= yl) + { + dcvars.yl = yl; + dcvars.yh = mid; + dcvars.texturemid = rw_toptexturemid; + tex_patch = R_CacheTextureCompositePatchNum(toptexture); + dcvars.source = R_GetTextureColumn(tex_patch,texturecolumn); + dcvars.prevsource = R_GetTextureColumn(tex_patch,texturecolumn-1); + dcvars.nextsource = R_GetTextureColumn(tex_patch,texturecolumn+1); + dcvars.texheight = toptexheight; + colfunc (&dcvars); + R_UnlockTextureCompositePatchNum(toptexture); + tex_patch = NULL; + ceilingclip[rw_x] = mid; + } + else + ceilingclip[rw_x] = yl-1; + } + else // no top wall + { + + if (markceiling) + ceilingclip[rw_x] = yl-1; + } + + if (bottomtexture) // bottom wall + { + int mid = (pixlow+HEIGHTUNIT-1)>>HEIGHTBITS; + pixlow += pixlowstep; + + // no space above wall? + if (mid <= ceilingclip[rw_x]) + mid = ceilingclip[rw_x]+1; + + if (mid <= yh) + { + dcvars.yl = mid; + dcvars.yh = yh; + dcvars.texturemid = rw_bottomtexturemid; + tex_patch = R_CacheTextureCompositePatchNum(bottomtexture); + dcvars.source = R_GetTextureColumn(tex_patch, texturecolumn); + dcvars.prevsource = R_GetTextureColumn(tex_patch, texturecolumn-1); + dcvars.nextsource = R_GetTextureColumn(tex_patch, texturecolumn+1); + dcvars.texheight = bottomtexheight; + colfunc (&dcvars); + R_UnlockTextureCompositePatchNum(bottomtexture); + tex_patch = NULL; + floorclip[rw_x] = mid; + } + else + floorclip[rw_x] = yh+1; + } + else // no bottom wall + { + if (markfloor) + floorclip[rw_x] = yh+1; + } + + // cph - if we completely blocked further sight through this column, + // add this info to the solid columns array for r_bsp.c + if ((markceiling || markfloor) && + (floorclip[rw_x] <= ceilingclip[rw_x] + 1)) { + solidcol[rw_x] = 1; didsolidcol = 1; + } + + // save texturecol for backdrawing of masked mid texture + if (maskedtexture) + maskedtexturecol[rw_x] = texturecolumn; + } + + rw_scale += rw_scalestep; + topfrac += topstep; + bottomfrac += bottomstep; + } +} + +// killough 5/2/98: move from r_main.c, made static, simplified + +static fixed_t R_PointToDist(fixed_t x, fixed_t y) +{ + fixed_t dx = D_abs(x - viewx); + fixed_t dy = D_abs(y - viewy); + + if (dy > dx) + { + fixed_t t = dx; + dx = dy; + dy = t; + } + + return FixedDiv(dx, finesine[(tantoangle[FixedDiv(dy,dx) >> DBITS] + + ANG90) >> ANGLETOFINESHIFT]); +} + +// +// R_StoreWallRange +// A wall segment will be drawn +// between start and stop pixels (inclusive). +// +void R_StoreWallRange(const int start, const int stop) +{ + fixed_t hyp; + angle_t offsetangle; + + if (ds_p == drawsegs+maxdrawsegs) // killough 1/98 -- fix 2s line HOM + { + unsigned pos = ds_p - drawsegs; // jff 8/9/98 fix from ZDOOM1.14a + unsigned newmax = maxdrawsegs ? maxdrawsegs*2 : 128; // killough + drawsegs = realloc(drawsegs,newmax*sizeof(*drawsegs)); + ds_p = drawsegs + pos; // jff 8/9/98 fix from ZDOOM1.14a + maxdrawsegs = newmax; + } + + if(curline->miniseg == false) // figgi -- skip minisegs + curline->linedef->flags |= ML_MAPPED; + +#ifdef RANGECHECK + if (start >=viewwidth || start > stop) + I_Error ("Bad R_RenderWallRange: %i to %i", start , stop); +#endif + + sidedef = curline->sidedef; + linedef = curline->linedef; + + // mark the segment as visible for auto map + linedef->flags |= ML_MAPPED; + + // calculate rw_distance for scale calculation + rw_normalangle = curline->angle + ANG90; + + offsetangle = rw_normalangle-rw_angle1; + + if (D_abs(offsetangle) > ANG90) + offsetangle = ANG90; + + hyp = (viewx==curline->v1->x && viewy==curline->v1->y)? + 0 : R_PointToDist (curline->v1->x, curline->v1->y); + rw_distance = FixedMul(hyp, finecosine[offsetangle>>ANGLETOFINESHIFT]); + + ds_p->x1 = rw_x = start; + ds_p->x2 = stop; + ds_p->curline = curline; + rw_stopx = stop+1; + + { // killough 1/6/98, 2/1/98: remove limit on openings + extern int *openings; // dropoff overflow + extern size_t maxopenings; + size_t pos = lastopening - openings; + size_t need = (rw_stopx - start)*4 + pos; + if (need > maxopenings) + { + drawseg_t *ds; //jff 8/9/98 needed for fix from ZDoom + int *oldopenings = openings; // dropoff overflow + int *oldlast = lastopening; // dropoff overflow + + do + maxopenings = maxopenings ? maxopenings*2 : 16384; + while (need > maxopenings); + openings = realloc(openings, maxopenings * sizeof(*openings)); + lastopening = openings + pos; + + // jff 8/9/98 borrowed fix for openings from ZDOOM1.14 + // [RH] We also need to adjust the openings pointers that + // were already stored in drawsegs. + for (ds = drawsegs; ds < ds_p; ds++) + { +#define ADJUST(p) if (ds->p + ds->x1 >= oldopenings && ds->p + ds->x1 <= oldlast)\ + ds->p = ds->p - oldopenings + openings; + ADJUST (maskedtexturecol); + ADJUST (sprtopclip); + ADJUST (sprbottomclip); + } +#undef ADJUST + } + } // killough: end of code to remove limits on openings + + // calculate scale at both ends and step + + ds_p->scale1 = rw_scale = + R_ScaleFromGlobalAngle (viewangle + xtoviewangle[start]); + + if (stop > start) + { + ds_p->scale2 = R_ScaleFromGlobalAngle (viewangle + xtoviewangle[stop]); + ds_p->scalestep = rw_scalestep = (ds_p->scale2-rw_scale) / (stop-start); + } + else + ds_p->scale2 = ds_p->scale1; + + // calculate texture boundaries + // and decide if floor / ceiling marks are needed + + worldtop = frontsector->ceilingheight - viewz; + worldbottom = frontsector->floorheight - viewz; + + midtexture = toptexture = bottomtexture = maskedtexture = 0; + ds_p->maskedtexturecol = NULL; + + if (!backsector) + { + // single sided line + midtexture = texturetranslation[sidedef->midtexture]; + midtexheight = (linedef->r_flags & RF_MID_TILE) ? 0 : textureheight[midtexture] >> FRACBITS; + + // a single sided line is terminal, so it must mark ends + markfloor = markceiling = true; + + if (linedef->flags & ML_DONTPEGBOTTOM) + { // bottom of texture at bottom + fixed_t vtop = frontsector->floorheight + + textureheight[sidedef->midtexture]; + rw_midtexturemid = vtop - viewz; + } + else // top of texture at top + rw_midtexturemid = worldtop; + + rw_midtexturemid += FixedMod(sidedef->rowoffset, textureheight[midtexture]); + + ds_p->silhouette = SIL_BOTH; + ds_p->sprtopclip = screenheightarray; + ds_p->sprbottomclip = negonearray; + ds_p->bsilheight = INT_MAX; + ds_p->tsilheight = INT_MIN; + } + else // two sided line + { + ds_p->sprtopclip = ds_p->sprbottomclip = NULL; + ds_p->silhouette = 0; + + if (linedef->r_flags & RF_CLOSED) { /* cph - closed 2S line e.g. door */ + // cph - killough's (outdated) comment follows - this deals with both + // "automap fixes", his and mine + // killough 1/17/98: this test is required if the fix + // for the automap bug (r_bsp.c) is used, or else some + // sprites will be displayed behind closed doors. That + // fix prevents lines behind closed doors with dropoffs + // from being displayed on the automap. + + ds_p->silhouette = SIL_BOTH; + ds_p->sprbottomclip = negonearray; + ds_p->bsilheight = INT_MAX; + ds_p->sprtopclip = screenheightarray; + ds_p->tsilheight = INT_MIN; + + } else { /* not solid - old code */ + + if (frontsector->floorheight > backsector->floorheight) + { + ds_p->silhouette = SIL_BOTTOM; + ds_p->bsilheight = frontsector->floorheight; + } + else + if (backsector->floorheight > viewz) + { + ds_p->silhouette = SIL_BOTTOM; + ds_p->bsilheight = INT_MAX; + } + + if (frontsector->ceilingheight < backsector->ceilingheight) + { + ds_p->silhouette |= SIL_TOP; + ds_p->tsilheight = frontsector->ceilingheight; + } + else + if (backsector->ceilingheight < viewz) + { + ds_p->silhouette |= SIL_TOP; + ds_p->tsilheight = INT_MIN; + } + } + + worldhigh = backsector->ceilingheight - viewz; + worldlow = backsector->floorheight - viewz; + + // hack to allow height changes in outdoor areas + if (frontsector->ceilingpic == skyflatnum + && backsector->ceilingpic == skyflatnum) + worldtop = worldhigh; + + markfloor = worldlow != worldbottom + || backsector->floorpic != frontsector->floorpic + || backsector->lightlevel != frontsector->lightlevel + + // killough 3/7/98: Add checks for (x,y) offsets + || backsector->floor_xoffs != frontsector->floor_xoffs + || backsector->floor_yoffs != frontsector->floor_yoffs + + // killough 4/15/98: prevent 2s normals + // from bleeding through deep water + || frontsector->heightsec != -1 + + // killough 4/17/98: draw floors if different light levels + || backsector->floorlightsec != frontsector->floorlightsec + ; + + markceiling = worldhigh != worldtop + || backsector->ceilingpic != frontsector->ceilingpic + || backsector->lightlevel != frontsector->lightlevel + + // killough 3/7/98: Add checks for (x,y) offsets + || backsector->ceiling_xoffs != frontsector->ceiling_xoffs + || backsector->ceiling_yoffs != frontsector->ceiling_yoffs + + // killough 4/15/98: prevent 2s normals + // from bleeding through fake ceilings + || (frontsector->heightsec != -1 && + frontsector->ceilingpic!=skyflatnum) + + // killough 4/17/98: draw ceilings if different light levels + || backsector->ceilinglightsec != frontsector->ceilinglightsec + ; + + if (backsector->ceilingheight <= frontsector->floorheight + || backsector->floorheight >= frontsector->ceilingheight) + markceiling = markfloor = true; // closed door + + if (worldhigh < worldtop) // top texture + { + toptexture = texturetranslation[sidedef->toptexture]; + toptexheight = (linedef->r_flags & RF_TOP_TILE) ? 0 : textureheight[toptexture] >> FRACBITS; + rw_toptexturemid = linedef->flags & ML_DONTPEGTOP ? worldtop : + backsector->ceilingheight+textureheight[sidedef->toptexture]-viewz; + rw_toptexturemid += FixedMod(sidedef->rowoffset, textureheight[toptexture]); + } + + if (worldlow > worldbottom) // bottom texture + { + bottomtexture = texturetranslation[sidedef->bottomtexture]; + bottomtexheight = (linedef->r_flags & RF_BOT_TILE) ? 0 : textureheight[bottomtexture] >> FRACBITS; + rw_bottomtexturemid = linedef->flags & ML_DONTPEGBOTTOM ? worldtop : + worldlow; + rw_bottomtexturemid += FixedMod(sidedef->rowoffset, textureheight[bottomtexture]); + } + + // allocate space for masked texture tables + if (sidedef->midtexture) // masked midtexture + { + maskedtexture = true; + ds_p->maskedtexturecol = maskedtexturecol = lastopening - rw_x; + lastopening += rw_stopx - rw_x; + } + } + + // calculate rw_offset (only needed for textured lines) + segtextured = midtexture | toptexture | bottomtexture | maskedtexture; + + if (segtextured) + { + rw_offset = FixedMul (hyp, -finesine[offsetangle >>ANGLETOFINESHIFT]); + + rw_offset += sidedef->textureoffset + curline->offset; + + rw_centerangle = ANG90 + viewangle - rw_normalangle; + + rw_lightlevel = frontsector->lightlevel; + } + + // Remember the vars used to determine fractional U texture + // coords for later - POPE + ds_p->rw_offset = rw_offset; + ds_p->rw_distance = rw_distance; + ds_p->rw_centerangle = rw_centerangle; + + // if a floor / ceiling plane is on the wrong side of the view + // plane, it is definitely invisible and doesn't need to be marked. + + // killough 3/7/98: add deep water check + if (frontsector->heightsec == -1) + { + if (frontsector->floorheight >= viewz) // above view plane + markfloor = false; + if (frontsector->ceilingheight <= viewz && + frontsector->ceilingpic != skyflatnum) // below view plane + markceiling = false; + } + + // calculate incremental stepping values for texture edges + worldtop >>= 4; + worldbottom >>= 4; + + topstep = -FixedMul (rw_scalestep, worldtop); + topfrac = (centeryfrac>>4) - FixedMul (worldtop, rw_scale); + + bottomstep = -FixedMul (rw_scalestep,worldbottom); + bottomfrac = (centeryfrac>>4) - FixedMul (worldbottom, rw_scale); + + if (backsector) + { + worldhigh >>= 4; + worldlow >>= 4; + + if (worldhigh < worldtop) + { + pixhigh = (centeryfrac>>4) - FixedMul (worldhigh, rw_scale); + pixhighstep = -FixedMul (rw_scalestep,worldhigh); + } + if (worldlow > worldbottom) + { + pixlow = (centeryfrac>>4) - FixedMul (worldlow, rw_scale); + pixlowstep = -FixedMul (rw_scalestep,worldlow); + } + } + + // render it + if (markceiling) { + if (ceilingplane) // killough 4/11/98: add NULL ptr checks + ceilingplane = R_CheckPlane (ceilingplane, rw_x, rw_stopx-1); + else + markceiling = 0; + } + + if (markfloor) { + if (floorplane) // killough 4/11/98: add NULL ptr checks + /* cph 2003/04/18 - ceilingplane and floorplane might be the same + * visplane (e.g. if both skies); R_CheckPlane doesn't know about + * modifications to the plane that might happen in parallel with the check + * being made, so we have to override it and split them anyway if that is + * a possibility, otherwise the floor marking would overwrite the ceiling + * marking, resulting in HOM. */ + if (markceiling && ceilingplane == floorplane) + floorplane = R_DupPlane (floorplane, rw_x, rw_stopx-1); + else + floorplane = R_CheckPlane (floorplane, rw_x, rw_stopx-1); + else + markfloor = 0; + } + + didsolidcol = 0; + R_RenderSegLoop(); + + /* cph - if a column was made solid by this wall, we _must_ save full clipping info */ + if (backsector && didsolidcol) { + if (!(ds_p->silhouette & SIL_BOTTOM)) { + ds_p->silhouette |= SIL_BOTTOM; + ds_p->bsilheight = backsector->floorheight; + } + if (!(ds_p->silhouette & SIL_TOP)) { + ds_p->silhouette |= SIL_TOP; + ds_p->tsilheight = backsector->ceilingheight; + } + } + + // save sprite clipping info + if ((ds_p->silhouette & SIL_TOP || maskedtexture) && !ds_p->sprtopclip) + { + memcpy (lastopening, ceilingclip+start, sizeof(int)*(rw_stopx-start)); // dropoff overflow + ds_p->sprtopclip = lastopening - start; + lastopening += rw_stopx - start; + } + if ((ds_p->silhouette & SIL_BOTTOM || maskedtexture) && !ds_p->sprbottomclip) + { + memcpy (lastopening, floorclip+start, sizeof(int)*(rw_stopx-start)); // dropoff overflow + ds_p->sprbottomclip = lastopening - start; + lastopening += rw_stopx - start; + } + if (maskedtexture && !(ds_p->silhouette & SIL_TOP)) + { + ds_p->silhouette |= SIL_TOP; + ds_p->tsilheight = INT_MIN; + } + if (maskedtexture && !(ds_p->silhouette & SIL_BOTTOM)) + { + ds_p->silhouette |= SIL_BOTTOM; + ds_p->bsilheight = INT_MAX; + } + ds_p++; +} diff --git a/components/doom/prboom/r_segs.h b/components/doom/prboom/r_segs.h new file mode 100644 index 0000000..c5b29a6 --- /dev/null +++ b/components/doom/prboom/r_segs.h @@ -0,0 +1,44 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Refresh module, drawing LineSegs from BSP. + * + *-----------------------------------------------------------------------------*/ + +#ifndef __R_SEGS__ +#define __R_SEGS__ + +#ifdef __GNUG__ +#pragma interface +#endif + +void R_RenderMaskedSegRange(drawseg_t *ds, int x1, int x2); +void R_StoreWallRange(const int start, const int stop); + +#endif diff --git a/components/doom/prboom/r_sky.c b/components/doom/prboom/r_sky.c new file mode 100644 index 0000000..bc33c63 --- /dev/null +++ b/components/doom/prboom/r_sky.c @@ -0,0 +1,56 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Sky rendering. The DOOM sky is a texture map like any + * wall, wrapping around. A 1024 columns equal 360 degrees. + * The default sky map is 256 columns and repeats 4 times + * on a 320 screen? + * + *-----------------------------------------------------------------------------*/ + +#ifdef __GNUG__ +#pragma implementation "r_sky.h" +#endif +#include "r_sky.h" + +// +// sky mapping +// +int skyflatnum; +int skytexture; +int skytexturemid; + +// +// R_InitSkyMap +// Called whenever the view size changes. +// +void R_InitSkyMap (void) +{ + skytexturemid = 100*FRACUNIT; +} diff --git a/components/doom/prboom/r_sky.h b/components/doom/prboom/r_sky.h new file mode 100644 index 0000000..1a69ae4 --- /dev/null +++ b/components/doom/prboom/r_sky.h @@ -0,0 +1,55 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Sky rendering. + * + *-----------------------------------------------------------------------------*/ + +#ifndef __R_SKY__ +#define __R_SKY__ + +#include "m_fixed.h" + +#ifdef __GNUG__ +#pragma interface +#endif + +/* SKY, store the number for name. */ +#define SKYFLATNAME "F_SKY1" + +/* The sky map is 256*128*4 maps. */ +#define ANGLETOSKYSHIFT 22 + +extern int skytexture; +extern int skytexturemid; + +/* Called whenever the view size changes. */ +void R_InitSkyMap(void); + +#endif diff --git a/components/doom/prboom/r_state.h b/components/doom/prboom/r_state.h new file mode 100644 index 0000000..c4ad147 --- /dev/null +++ b/components/doom/prboom/r_state.h @@ -0,0 +1,116 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Refresh/render internal state variables (global). + * + *-----------------------------------------------------------------------------*/ + + +#ifndef __R_STATE__ +#define __R_STATE__ + +// Need data structure definitions. +#include "d_player.h" +#include "r_data.h" + +#ifdef __GNUG__ +#pragma interface +#endif + + +// +// Refresh internal data structures, +// for rendering. +// + +// needed for texture pegging +extern fixed_t *textureheight; + +extern int scaledviewwidth; + +extern int firstflat, numflats; + +// for global animation +extern int *flattranslation; +extern int *texturetranslation; + +// Sprite.... +extern int firstspritelump; +extern int lastspritelump; +extern int numspritelumps; + +// +// Lookup tables for map data. +// +extern int numsprites; +extern spritedef_t *sprites; + +extern int numvertexes; +extern vertex_t *vertexes; + +extern int numsegs; +extern seg_t *segs; + +extern int numsectors; +extern sector_t *sectors; + +extern int numsubsectors; +extern subsector_t *subsectors; + +extern int numnodes; +extern node_t *nodes; + +extern int numlines; +extern line_t *lines; + +extern int numsides; +extern side_t *sides; + + +// +// POV data. +// +extern fixed_t viewx; +extern fixed_t viewy; +extern fixed_t viewz; +extern angle_t viewangle; +extern player_t *viewplayer; +extern angle_t clipangle; +extern int *viewangletox; +extern angle_t xtoviewangle[MAX_SCREENWIDTH+1]; // killough 2/8/98 +extern fixed_t rw_distance; +extern angle_t rw_normalangle; + +// angle to line origin +extern int rw_angle1; + +extern visplane_t *floorplane; +extern visplane_t *ceilingplane; + +#endif diff --git a/components/doom/prboom/r_things.c b/components/doom/prboom/r_things.c new file mode 100644 index 0000000..e0c7d4b --- /dev/null +++ b/components/doom/prboom/r_things.c @@ -0,0 +1,1032 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Refresh of things, i.e. objects represented by sprites. + * + *-----------------------------------------------------------------------------*/ + +#include "doomstat.h" +#include "w_wad.h" +#include "r_main.h" +#include "r_bsp.h" +#include "r_segs.h" +#include "r_draw.h" +#include "r_things.h" +#include "r_fps.h" +#include "v_video.h" +#include "lprintf.h" + +#define MINZ (FRACUNIT*4) +#define BASEYCENTER 100 + +typedef struct { + int x1; + int x2; + int column; + int topclip; + int bottomclip; +} maskdraw_t; + +// +// Sprite rotation 0 is facing the viewer, +// rotation 1 is one angle turn CLOCKWISE around the axis. +// This is not the same as the angle, +// which increases counter clockwise (protractor). +// There was a lot of stuff grabbed wrong, so I changed it... +// + +fixed_t pspritescale; +fixed_t pspriteiscale; +// proff 11/06/98: Added for high-res +fixed_t pspriteyscale; + +// constant arrays +// used for psprite clipping and initializing clipping + +int negonearray[MAX_SCREENWIDTH]; // killough 2/8/98: // dropoff overflow +int screenheightarray[MAX_SCREENWIDTH]; // change to MAX_* // dropoff overflow + +// +// INITIALIZATION FUNCTIONS +// + +// variables used to look up and range check thing_t sprites patches + +spritedef_t *sprites; +int numsprites; + +#define MAX_SPRITE_FRAMES 29 /* Macroized -- killough 1/25/98 */ + +static spriteframe_t sprtemp[MAX_SPRITE_FRAMES]; +static int maxframe; + +// +// R_InstallSpriteLump +// Local function for R_InitSprites. +// + +static void R_InstallSpriteLump(int lump, unsigned frame, + unsigned rotation, boolean flipped) +{ + if (frame >= MAX_SPRITE_FRAMES || rotation > 8) + I_Error("R_InstallSpriteLump: Bad frame characters in lump %i", lump); + + if ((int) frame > maxframe) + maxframe = frame; + + if (rotation == 0) + { // the lump should be used for all rotations + int r; + for (r=0 ; r<8 ; r++) + if (sprtemp[frame].lump[r]==-1) + { + sprtemp[frame].lump[r] = lump - firstspritelump; + sprtemp[frame].flip[r] = (byte) flipped; + sprtemp[frame].rotate = false; //jff 4/24/98 if any subbed, rotless + } + return; + } + + // the lump is only used for one rotation + + if (sprtemp[frame].lump[--rotation] == -1) + { + sprtemp[frame].lump[rotation] = lump - firstspritelump; + sprtemp[frame].flip[rotation] = (byte) flipped; + sprtemp[frame].rotate = true; //jff 4/24/98 only change if rot used + } +} + +// +// R_InitSpriteDefs +// Pass a null terminated list of sprite names +// (4 chars exactly) to be used. +// +// Builds the sprite rotation matrixes to account +// for horizontally flipped sprites. +// +// Will report an error if the lumps are inconsistent. +// Only called at startup. +// +// Sprite lump names are 4 characters for the actor, +// a letter for the frame, and a number for the rotation. +// +// A sprite that is flippable will have an additional +// letter/number appended. +// +// The rotation character can be 0 to signify no rotations. +// +// 1/25/98, 1/31/98 killough : Rewritten for performance +// +// Empirically verified to have excellent hash +// properties across standard Doom sprites: + +#define R_SpriteNameHash(s) ((unsigned)((s)[0]-((s)[1]*3-(s)[3]*2-(s)[2])*2)) + +static void R_InitSpriteDefs(const char * const * namelist) +{ + size_t numentries = lastspritelump-firstspritelump+1; + struct { short index, next; } *hash; + int i; + + if (!numentries || !*namelist) + return; + + // count the number of sprite names + for (i=0; namelist[i]; i++) + ; + + numsprites = i; + + sprites = Z_Malloc(numsprites * sizeof(*sprites), PU_STATIC, NULL); + hash = Z_Malloc(numentries * sizeof(*hash), PU_STATIC, NULL); + + for (i=0; (size_t)i= 0) + { + memset(sprtemp, -1, sizeof(sprtemp)); + maxframe = -1; + do + { + register lumpinfo_t *lump = lumpinfo + j + firstspritelump; + + // Fast portable comparison -- killough + // (using int pointer cast is nonportable): + + if (!((lump->name[0] ^ spritename[0]) | + (lump->name[1] ^ spritename[1]) | + (lump->name[2] ^ spritename[2]) | + (lump->name[3] ^ spritename[3]))) + { + R_InstallSpriteLump(j+firstspritelump, + lump->name[4] - 'A', + lump->name[5] - '0', + false); + if (lump->name[6]) + R_InstallSpriteLump(j+firstspritelump, + lump->name[6] - 'A', + lump->name[7] - '0', + true); + } + } + while ((j = hash[j].next) >= 0); + + // check the frames that were found for completeness + if ((sprites[i].numframes = ++maxframe)) // killough 1/31/98 + { + int frame; + for (frame = 0; frame < maxframe; frame++) + switch ((int) sprtemp[frame].rotate) + { + case -1: + // no rotations were found for that frame at all + I_Error ("R_InitSprites: No patches found " + "for %.8s frame %c", namelist[i], frame+'A'); + break; + + case 0: + // only the first rotation is needed + break; + + case 1: + // must have all 8 frames + { + int rotation; + for (rotation=0 ; rotation<8 ; rotation++) + if (sprtemp[frame].lump[rotation] == -1) + I_Error ("R_InitSprites: Sprite %.8s frame %c " + "is missing rotations", + namelist[i], frame+'A'); + break; + } + } + // allocate space for the frames present and copy sprtemp to it + sprites[i].spriteframes = + Z_Malloc (maxframe * sizeof(spriteframe_t), PU_STATIC, NULL); + memcpy (sprites[i].spriteframes, sprtemp, + maxframe*sizeof(spriteframe_t)); + } + } + } + free(hash); // free hash table +} + +// +// GAME FUNCTIONS +// + +static vissprite_t *vissprites, **vissprite_ptrs; // killough +static size_t num_vissprite, num_vissprite_alloc, num_vissprite_ptrs; + +// +// R_InitSprites +// Called at program start. +// + +void R_InitSprites(const char * const *namelist) +{ + int i; + for (i=0; i= num_vissprite_alloc) // killough + { + size_t num_vissprite_alloc_prev = num_vissprite_alloc; + + num_vissprite_alloc = num_vissprite_alloc ? num_vissprite_alloc*2 : 128; + vissprites = realloc(vissprites,num_vissprite_alloc*sizeof(*vissprites)); + + //e6y: set all fields to zero + memset(vissprites + num_vissprite_alloc_prev, 0, + (num_vissprite_alloc - num_vissprite_alloc_prev)*sizeof(*vissprites)); + } + return vissprites + num_vissprite++; +} + +// +// R_DrawMaskedColumn +// Used for sprites and masked mid textures. +// Masked means: partly transparent, i.e. stored +// in posts/runs of opaque pixels. +// + +int *mfloorclip; // dropoff overflow +int *mceilingclip; // dropoff overflow +fixed_t spryscale; +fixed_t sprtopscreen; + +void R_DrawMaskedColumn( + const rpatch_t *patch, + R_DrawColumn_f colfunc, + draw_column_vars_t *dcvars, + const rcolumn_t *column, + const rcolumn_t *prevcolumn, + const rcolumn_t *nextcolumn +) +{ + int i; + int topscreen; + int bottomscreen; + fixed_t basetexturemid = dcvars->texturemid; + + dcvars->texheight = patch->height; // killough 11/98 + for (i=0; inumPosts; i++) { + const rpost_t *post = &column->posts[i]; + + // calculate unclipped screen coordinates for post + topscreen = sprtopscreen + spryscale*post->topdelta; + bottomscreen = topscreen + spryscale*post->length; + + dcvars->yl = (topscreen+FRACUNIT-1)>>FRACBITS; + dcvars->yh = (bottomscreen-1)>>FRACBITS; + + if (dcvars->yh >= mfloorclip[dcvars->x]) + dcvars->yh = mfloorclip[dcvars->x]-1; + + if (dcvars->yl <= mceilingclip[dcvars->x]) + dcvars->yl = mceilingclip[dcvars->x]+1; + + // killough 3/2/98, 3/27/98: Failsafe against overflow/crash: + if (dcvars->yl <= dcvars->yh && dcvars->yh < viewheight) + { + dcvars->source = column->pixels + post->topdelta; + dcvars->prevsource = prevcolumn->pixels + post->topdelta; + dcvars->nextsource = nextcolumn->pixels + post->topdelta; + + dcvars->texturemid = basetexturemid - (post->topdelta<edgeslope = post->slope; + // Drawn by either R_DrawColumn + // or (SHADOW) R_DrawFuzzColumn. + dcvars->drawingmasked = 1; // POPE + colfunc (dcvars); + dcvars->drawingmasked = 0; // POPE + } + } + dcvars->texturemid = basetexturemid; +} + +// +// R_DrawVisSprite +// mfloorclip and mceilingclip should also be set. +// +// CPhipps - new wad lump handling, *'s to const*'s +static void R_DrawVisSprite(vissprite_t *vis, int x1, int x2) +{ + int texturecolumn; + fixed_t frac; + const rpatch_t *patch = R_CachePatchNum(vis->patch+firstspritelump); + R_DrawColumn_f colfunc; + draw_column_vars_t dcvars; + enum draw_filter_type_e filter; + enum draw_filter_type_e filterz; + + R_SetDefaultDrawColumnVars(&dcvars); + if (vis->isplayersprite) { + dcvars.edgetype = drawvars.patch_edges; + filter = drawvars.filterpatch; + filterz = RDRAW_FILTER_POINT; + } else { + dcvars.edgetype = drawvars.sprite_edges; + filter = drawvars.filtersprite; + filterz = drawvars.filterz; + } + + dcvars.colormap = vis->colormap; + dcvars.nextcolormap = dcvars.colormap; // for filtering -- POPE + + // killough 4/11/98: rearrange and handle translucent sprites + // mixed with translucent/non-translucenct 2s normals + + if (!dcvars.colormap) // NULL colormap = shadow draw + colfunc = R_GetDrawColumnFunc(RDC_PIPELINE_FUZZ, filter, filterz); // killough 3/14/98 + else + if (vis->mobjflags & MF_TRANSLATION) + { + colfunc = R_GetDrawColumnFunc(RDC_PIPELINE_TRANSLATED, filter, filterz); + dcvars.translation = translationtables - 256 + + ((vis->mobjflags & MF_TRANSLATION) >> (MF_TRANSSHIFT-8) ); + } + else + if (vis->mobjflags & MF_TRANSLUCENT && general_translucency) // phares + { + colfunc = R_GetDrawColumnFunc(RDC_PIPELINE_TRANSLUCENT, filter, filterz); + tranmap = main_tranmap; // killough 4/11/98 + } + else + colfunc = R_GetDrawColumnFunc(RDC_PIPELINE_STANDARD, filter, filterz); // killough 3/14/98, 4/11/98 + +// proff 11/06/98: Changed for high-res + dcvars.iscale = FixedDiv (FRACUNIT, vis->scale); + dcvars.texturemid = vis->texturemid; + frac = vis->startfrac; + if (filter == RDRAW_FILTER_LINEAR) + frac -= (FRACUNIT>>1); + spryscale = vis->scale; + sprtopscreen = centeryfrac - FixedMul(dcvars.texturemid,spryscale); + + for (dcvars.x=vis->x1 ; dcvars.x<=vis->x2 ; dcvars.x++, frac += vis->xiscale) + { + texturecolumn = frac>>FRACBITS; + dcvars.texu = frac; + + R_DrawMaskedColumn( + patch, + colfunc, + &dcvars, + R_GetPatchColumnClamped(patch, texturecolumn), + R_GetPatchColumnClamped(patch, texturecolumn-1), + R_GetPatchColumnClamped(patch, texturecolumn+1) + ); + } + R_UnlockPatchNum(vis->patch+firstspritelump); // cph - release lump +} + +// +// R_ProjectSprite +// Generates a vissprite for a thing if it might be visible. +// + +static void R_ProjectSprite (mobj_t* thing, int lightlevel) +{ + fixed_t gzt; // killough 3/27/98 + fixed_t tx; + fixed_t xscale; + int x1; + int x2; + spritedef_t *sprdef; + spriteframe_t *sprframe; + int lump; + boolean flip; + vissprite_t *vis; + fixed_t iscale; + int heightsec; // killough 3/27/98 + + // transform the origin point + fixed_t tr_x, tr_y; + fixed_t fx, fy, fz; + fixed_t gxt, gyt; + fixed_t tz; + int width; + + if (movement_smooth) + { + fx = thing->PrevX + FixedMul (tic_vars.frac, thing->x - thing->PrevX); + fy = thing->PrevY + FixedMul (tic_vars.frac, thing->y - thing->PrevY); + fz = thing->PrevZ + FixedMul (tic_vars.frac, thing->z - thing->PrevZ); + } + else + { + fx = thing->x; + fy = thing->y; + fz = thing->z; + } + tr_x = fx - viewx; + tr_y = fy - viewy; + + gxt = FixedMul(tr_x,viewcos); + gyt = -FixedMul(tr_y,viewsin); + + tz = gxt-gyt; + + // thing is behind view plane? + if (tz < MINZ) + return; + + xscale = FixedDiv(projection, tz); + + gxt = -FixedMul(tr_x,viewsin); + gyt = FixedMul(tr_y,viewcos); + tx = -(gyt+gxt); + + // too far off the side? + if (D_abs(tx)>(tz<<2)) + return; + + // decide which patch to use for sprite relative to player +#ifdef RANGECHECK + if ((unsigned) thing->sprite >= (unsigned)numsprites) + I_Error ("R_ProjectSprite: Invalid sprite number %i", thing->sprite); +#endif + + sprdef = &sprites[thing->sprite]; + +#ifdef RANGECHECK + if ((thing->frame&FF_FRAMEMASK) >= sprdef->numframes) + I_Error ("R_ProjectSprite: Invalid sprite frame %i : %i", thing->sprite, + thing->frame); +#endif + + if (!sprdef->spriteframes) + I_Error ("R_ProjectSprite: Missing spriteframes %i : %i", thing->sprite, + thing->frame); + + sprframe = &sprdef->spriteframes[thing->frame & FF_FRAMEMASK]; + + if (sprframe->rotate) + { + // choose a different rotation based on player view + angle_t ang = R_PointToAngle(fx, fy); + unsigned rot = (ang-thing->angle+(unsigned)(ANG45/2)*9)>>29; + lump = sprframe->lump[rot]; + flip = (boolean) sprframe->flip[rot]; + } + else + { + // use single rotation for all views + lump = sprframe->lump[0]; + flip = (boolean) sprframe->flip[0]; + } + + { + const rpatch_t* patch = R_CachePatchNum(lump+firstspritelump); + + /* calculate edges of the shape + * cph 2003/08/1 - fraggle points out that this offset must be flipped + * if the sprite is flipped; e.g. FreeDoom imp is messed up by this. */ + if (flip) { + tx -= (patch->width - patch->leftoffset) << FRACBITS; + } else { + tx -= patch->leftoffset << FRACBITS; + } + x1 = (centerxfrac + FixedMul(tx,xscale)) >> FRACBITS; + + tx += patch->width<> FRACBITS) - 1; + + gzt = fz + (patch->topoffset << FRACBITS); + width = patch->width; + R_UnlockPatchNum(lump+firstspritelump); + } + + // off the side? + if (x1 > viewwidth || x2 < 0) + return; + + // killough 4/9/98: clip things which are out of view due to height + // e6y: fix of hanging decoration disappearing in Batman Doom MAP02 + // centeryfrac -> viewheightfrac + if (fz > viewz + FixedDiv(viewheightfrac, xscale) || + gzt < viewz - FixedDiv(viewheightfrac-viewheight, xscale)) + return; + + // killough 3/27/98: exclude things totally separated + // from the viewer, by either water or fake ceilings + // killough 4/11/98: improve sprite clipping for underwater/fake ceilings + + heightsec = thing->subsector->sector->heightsec; + + if (heightsec != -1) // only clip things which are in special sectors + { + int phs = viewplayer->mo->subsector->sector->heightsec; + if (phs != -1 && viewz < sectors[phs].floorheight ? + fz >= sectors[heightsec].floorheight : + gzt < sectors[heightsec].floorheight) + return; + if (phs != -1 && viewz > sectors[phs].ceilingheight ? + gzt < sectors[heightsec].ceilingheight && + viewz >= sectors[heightsec].ceilingheight : + fz >= sectors[heightsec].ceilingheight) + return; + } + + // store information in a vissprite + vis = R_NewVisSprite (); + + // killough 3/27/98: save sector for special clipping later + vis->heightsec = heightsec; + + vis->mobjflags = thing->flags; +// proff 11/06/98: Changed for high-res + vis->scale = FixedDiv(projectiony, tz); + vis->gx = fx; + vis->gy = fy; + vis->gz = fz; + vis->gzt = gzt; // killough 3/27/98 + vis->texturemid = vis->gzt - viewz; + vis->x1 = x1 < 0 ? 0 : x1; + vis->x2 = x2 >= viewwidth ? viewwidth-1 : x2; + iscale = FixedDiv (FRACUNIT, xscale); + + if (flip) + { + vis->startfrac = (width<xiscale = -iscale; + } + else + { + vis->startfrac = 0; + vis->xiscale = iscale; + } + + if (vis->x1 > x1) + vis->startfrac += vis->xiscale*(vis->x1-x1); + vis->patch = lump; + + // get light level + if (thing->flags & MF_SHADOW) + vis->colormap = NULL; // shadow draw + else if (fixedcolormap) + vis->colormap = fixedcolormap; // fixed map + else if (thing->frame & FF_FULLBRIGHT) + vis->colormap = fullcolormap; // full bright // killough 3/20/98 + else + { // diminished light + vis->colormap = R_ColourMap(lightlevel,xscale); + } +} + +// +// R_AddSprites +// During BSP traversal, this adds sprites by sector. +// +// killough 9/18/98: add lightlevel as parameter, fixing underwater lighting +void R_AddSprites(subsector_t* subsec, int lightlevel) +{ + sector_t* sec=subsec->sector; + mobj_t *thing; + + // BSP is traversed by subsector. + // A sector might have been split into several + // subsectors during BSP building. + // Thus we check whether its already added. + + if (sec->validcount == validcount) + return; + + // Well, now it will be done. + sec->validcount = validcount; + + // Handle all things in sector. + + for (thing = sec->thinglist; thing; thing = thing->snext) + R_ProjectSprite(thing, lightlevel); +} + +// +// R_DrawPSprite +// + +static void R_DrawPSprite (pspdef_t *psp, int lightlevel) +{ + int x1, x2; + spritedef_t *sprdef; + spriteframe_t *sprframe; + int lump; + boolean flip; + vissprite_t *vis; + vissprite_t avis; + int width; + fixed_t topoffset; + + avis.isplayersprite = true; + + // decide which patch to use + +#ifdef RANGECHECK + if ( (unsigned)psp->state->sprite >= (unsigned)numsprites) + I_Error ("R_ProjectSprite: Invalid sprite number %i", psp->state->sprite); +#endif + + sprdef = &sprites[psp->state->sprite]; + +#ifdef RANGECHECK + if ( (psp->state->frame & FF_FRAMEMASK) >= sprdef->numframes) + I_Error ("R_ProjectSprite: Invalid sprite frame %i : %li", + psp->state->sprite, psp->state->frame); +#endif + + sprframe = &sprdef->spriteframes[psp->state->frame & FF_FRAMEMASK]; + + lump = sprframe->lump[0]; + flip = (boolean) sprframe->flip[0]; + + { + const rpatch_t* patch = R_CachePatchNum(lump+firstspritelump); + // calculate edges of the shape + fixed_t tx; + tx = psp->sx-160*FRACUNIT; + + tx -= patch->leftoffset<>FRACBITS; + + tx += patch->width<>FRACBITS) - 1; + + width = patch->width; + topoffset = patch->topoffset< viewwidth) + return; + + // store information in a vissprite + vis = &avis; + vis->mobjflags = 0; + // killough 12/98: fix psprite positioning problem + vis->texturemid = (BASEYCENTER<sy-topoffset); + vis->x1 = x1 < 0 ? 0 : x1; + vis->x2 = x2 >= viewwidth ? viewwidth-1 : x2; +// proff 11/06/98: Added for high-res + vis->scale = pspriteyscale; + + if (flip) + { + vis->xiscale = -pspriteiscale; + vis->startfrac = (width<xiscale = pspriteiscale; + vis->startfrac = 0; + } + + if (vis->x1 > x1) + vis->startfrac += vis->xiscale*(vis->x1-x1); + + vis->patch = lump; + + if (viewplayer->powers[pw_invisibility] > 4*32 + || viewplayer->powers[pw_invisibility] & 8) + vis->colormap = NULL; // shadow draw + else if (fixedcolormap) + vis->colormap = fixedcolormap; // fixed color + else if (psp->state->frame & FF_FULLBRIGHT) + vis->colormap = fullcolormap; // full bright // killough 3/20/98 + else + // add a fudge factor to better match the original game + vis->colormap = R_ColourMap(lightlevel, + FixedMul(pspritescale, 0x2b000)); // local light + + R_DrawVisSprite(vis, vis->x1, vis->x2); +} + +// +// R_DrawPlayerSprites +// + +void R_DrawPlayerSprites(void) +{ + int i, lightlevel = viewplayer->mo->subsector->sector->lightlevel; + pspdef_t *psp; + + // clip to screen bounds + mfloorclip = screenheightarray; + mceilingclip = negonearray; + + // add all active psprites + for (i=0, psp=viewplayer->psprites; istate) + R_DrawPSprite (psp, lightlevel); +} + +// +// R_SortVisSprites +// +// Rewritten by Lee Killough to avoid using unnecessary +// linked lists, and to use faster sorting algorithm. +// + +#ifdef DJGPP + +// killough 9/22/98: inlined memcpy of pointer arrays +// CPhipps - added memory as modified +#define bcopyp(d, s, n) asm(" cld; rep; movsl;" :: "D"(d), "S"(s), "c"(n) : "%cc", "%esi", "%edi", "%ecx", "memory") + +#else + +#define bcopyp(d, s, n) memcpy(d, s, (n) * sizeof(void *)) + +#endif + +// killough 9/2/98: merge sort + +static void msort(vissprite_t **s, vissprite_t **t, int n) +{ + if (n >= 16) + { + int n1 = n/2, n2 = n - n1; + vissprite_t **s1 = s, **s2 = s + n1, **d = t; + + msort(s1, t, n1); + msort(s2, t, n2); + + while ((*s1)->scale > (*s2)->scale ? + (*d++ = *s1++, --n1) : (*d++ = *s2++, --n2)); + + if (n2) + bcopyp(d, s2, n2); + else + bcopyp(d, s1, n1); + + bcopyp(s, t, n); + } + else + { + int i; + for (i = 1; i < n; i++) + { + vissprite_t *temp = s[i]; + if (s[i-1]->scale < temp->scale) + { + int j = i; + while ((s[j] = s[j-1])->scale < temp->scale && --j); + s[j] = temp; + } + } + } +} + +void R_SortVisSprites (void) +{ + if (num_vissprite) + { + int i = num_vissprite; + + // If we need to allocate more pointers for the vissprites, + // allocate as many as were allocated for sprites -- killough + // killough 9/22/98: allocate twice as many + + if (num_vissprite_ptrs < num_vissprite*2) + { + free(vissprite_ptrs); // better than realloc -- no preserving needed + vissprite_ptrs = malloc((num_vissprite_ptrs = num_vissprite_alloc*2) + * sizeof *vissprite_ptrs); + } + + while (--i>=0) + vissprite_ptrs[i] = vissprites+i; + + // killough 9/22/98: replace qsort with merge sort, since the keys + // are roughly in order to begin with, due to BSP rendering. + + msort(vissprite_ptrs, vissprite_ptrs + num_vissprite, num_vissprite); + } +} + +// +// R_DrawSprite +// + +static void R_DrawSprite (vissprite_t* spr) +{ + drawseg_t *ds; + int clipbot[MAX_SCREENWIDTH]; // killough 2/8/98: // dropoff overflow + int cliptop[MAX_SCREENWIDTH]; // change to MAX_* // dropoff overflow + int x; + int r1; + int r2; + fixed_t scale; + fixed_t lowscale; + + for (x = spr->x1 ; x<=spr->x2 ; x++) + clipbot[x] = cliptop[x] = -2; + + // Scan drawsegs from end to start for obscuring segs. + // The first drawseg that has a greater scale is the clip seg. + + // Modified by Lee Killough: + // (pointer check was originally nonportable + // and buggy, by going past LEFT end of array): + + // for (ds=ds_p-1 ; ds >= drawsegs ; ds--) old buggy code + + for (ds=ds_p ; ds-- > drawsegs ; ) // new -- killough + { // determine if the drawseg obscures the sprite + if (ds->x1 > spr->x2 || ds->x2 < spr->x1 || + (!ds->silhouette && !ds->maskedtexturecol)) + continue; // does not cover sprite + + r1 = ds->x1 < spr->x1 ? spr->x1 : ds->x1; + r2 = ds->x2 > spr->x2 ? spr->x2 : ds->x2; + + if (ds->scale1 > ds->scale2) + { + lowscale = ds->scale2; + scale = ds->scale1; + } + else + { + lowscale = ds->scale1; + scale = ds->scale2; + } + + if (scale < spr->scale || (lowscale < spr->scale && + !R_PointOnSegSide (spr->gx, spr->gy, ds->curline))) + { + if (ds->maskedtexturecol) // masked mid texture? + R_RenderMaskedSegRange(ds, r1, r2); + continue; // seg is behind sprite + } + + // clip this piece of the sprite + // killough 3/27/98: optimized and made much shorter + + if (ds->silhouette&SIL_BOTTOM && spr->gz < ds->bsilheight) //bottom sil + for (x=r1 ; x<=r2 ; x++) + if (clipbot[x] == -2) + clipbot[x] = ds->sprbottomclip[x]; + + if (ds->silhouette&SIL_TOP && spr->gzt > ds->tsilheight) // top sil + for (x=r1 ; x<=r2 ; x++) + if (cliptop[x] == -2) + cliptop[x] = ds->sprtopclip[x]; + } + + // killough 3/27/98: + // Clip the sprite against deep water and/or fake ceilings. + // killough 4/9/98: optimize by adding mh + // killough 4/11/98: improve sprite clipping for underwater/fake ceilings + // killough 11/98: fix disappearing sprites + + if (spr->heightsec != -1) // only things in specially marked sectors + { + fixed_t h,mh; + int phs = viewplayer->mo->subsector->sector->heightsec; + if ((mh = sectors[spr->heightsec].floorheight) > spr->gz && + (h = centeryfrac - FixedMul(mh-=viewz, spr->scale)) >= 0 && + (h >>= FRACBITS) < viewheight) { + if (mh <= 0 || (phs != -1 && viewz > sectors[phs].floorheight)) + { // clip bottom + for (x=spr->x1 ; x<=spr->x2 ; x++) + if (clipbot[x] == -2 || h < clipbot[x]) + clipbot[x] = h; + } + else // clip top + if (phs != -1 && viewz <= sectors[phs].floorheight) // killough 11/98 + for (x=spr->x1 ; x<=spr->x2 ; x++) + if (cliptop[x] == -2 || h > cliptop[x]) + cliptop[x] = h; + } + + if ((mh = sectors[spr->heightsec].ceilingheight) < spr->gzt && + (h = centeryfrac - FixedMul(mh-viewz, spr->scale)) >= 0 && + (h >>= FRACBITS) < viewheight) { + if (phs != -1 && viewz >= sectors[phs].ceilingheight) + { // clip bottom + for (x=spr->x1 ; x<=spr->x2 ; x++) + if (clipbot[x] == -2 || h < clipbot[x]) + clipbot[x] = h; + } + else // clip top + for (x=spr->x1 ; x<=spr->x2 ; x++) + if (cliptop[x] == -2 || h > cliptop[x]) + cliptop[x] = h; + } + } + // killough 3/27/98: end special clipping for deep water / fake ceilings + + // all clipping has been performed, so draw the sprite + // check for unclipped columns + + for (x = spr->x1 ; x<=spr->x2 ; x++) { + if (clipbot[x] == -2) + clipbot[x] = viewheight; + + if (cliptop[x] == -2) + cliptop[x] = -1; + } + + mfloorclip = clipbot; + mceilingclip = cliptop; + R_DrawVisSprite (spr, spr->x1, spr->x2); +} + +// +// R_DrawMasked +// + +void R_DrawMasked(void) +{ + int i; + drawseg_t *ds; + + R_SortVisSprites(); + + // draw all vissprites back to front + + rendered_vissprites = num_vissprite; + for (i = num_vissprite ;--i>=0; ) + R_DrawSprite(vissprite_ptrs[i]); // killough + + // render any remaining masked mid textures + + // Modified by Lee Killough: + // (pointer check was originally nonportable + // and buggy, by going past LEFT end of array): + + // for (ds=ds_p-1 ; ds >= drawsegs ; ds--) old buggy code + + for (ds=ds_p ; ds-- > drawsegs ; ) // new -- killough + if (ds->maskedtexturecol) + R_RenderMaskedSegRange(ds, ds->x1, ds->x2); + + // draw the psprites on top of everything + // but does not draw on side views + if (!viewangleoffset) + R_DrawPlayerSprites (); +} diff --git a/components/doom/prboom/r_things.h b/components/doom/prboom/r_things.h new file mode 100644 index 0000000..a6c504e --- /dev/null +++ b/components/doom/prboom/r_things.h @@ -0,0 +1,72 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Rendering of moving objects, sprites. + * + *-----------------------------------------------------------------------------*/ + +#ifndef __R_THINGS__ +#define __R_THINGS__ + +#ifdef __GNUG__ +#pragma interface +#endif + +#include "r_draw.h" + +/* Constant arrays used for psprite clipping and initializing clipping. */ + +extern int negonearray[MAX_SCREENWIDTH]; /* killough 2/8/98: */ // dropoff overflow +extern int screenheightarray[MAX_SCREENWIDTH]; /* change to MAX_* */ // dropoff overflow + +/* Vars for R_DrawMaskedColumn */ + +extern int *mfloorclip; // dropoff overflow +extern int *mceilingclip; // dropoff overflow +extern fixed_t spryscale; +extern fixed_t sprtopscreen; +extern fixed_t pspritescale; +extern fixed_t pspriteiscale; +/* proff 11/06/98: Added for high-res */ +extern fixed_t pspriteyscale; + +void R_DrawMaskedColumn(const rpatch_t *patch, + R_DrawColumn_f colfunc, + draw_column_vars_t *dcvars, + const rcolumn_t *column, + const rcolumn_t *prevcolumn, + const rcolumn_t *nextcolumn); +void R_SortVisSprites(void); +void R_AddSprites(subsector_t* subsec, int lightlevel); +void R_DrawPlayerSprites(void); +void R_InitSprites(const char * const * namelist); +void R_ClearSprites(void); +void R_DrawMasked(void); + +#endif diff --git a/components/doom/prboom/s_sound.c b/components/doom/prboom/s_sound.c new file mode 100644 index 0000000..fcc64d8 --- /dev/null +++ b/components/doom/prboom/s_sound.c @@ -0,0 +1,647 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: Platform-independent sound code + * + *-----------------------------------------------------------------------------*/ + +// killough 3/7/98: modified to allow arbitrary listeners in spy mode +// killough 5/2/98: reindented, removed useless code, beautified + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "doomstat.h" +#include "s_sound.h" +#include "i_sound.h" +#include "i_system.h" +#include "d_main.h" +#include "r_main.h" +#include "m_random.h" +#include "w_wad.h" +#include "lprintf.h" + +// when to clip out sounds +// Does not fit the large outdoor areas. +#define S_CLIPPING_DIST (1200<>FRACBITS) + +// Adjustable by menu. +#define NORM_PITCH 128 +#define NORM_PRIORITY 64 +#define NORM_SEP 128 +#define S_STEREO_SWING (96<= prboom_2_compatibility && sfx_id == sfx_noway); // killough 4/25/98 + sfx_id &= ~PICKUP_SOUND; + + // check for bogus sound # + if (sfx_id < 1 || sfx_id > NUMSFX) + I_Error("S_StartSoundAtVolume: Bad sfx #: %d", sfx_id); + + sfx = &S_sfx[sfx_id]; + + // Initialize sound parameters + if (sfx->link) + { + pitch = sfx->pitch; + priority = sfx->priority; + volume += sfx->volume; + + if (volume < 1) + return; + + if (volume > snd_SfxVolume) + volume = snd_SfxVolume; + } + else + { + pitch = NORM_PITCH; + priority = NORM_PRIORITY; + } + + // Check to see if it is audible, modify the params + // killough 3/7/98, 4/25/98: code rearranged slightly + + if (!origin || origin == players[displayplayer].mo) { + sep = NORM_SEP; + volume *= 8; + } else + if (!S_AdjustSoundParams(players[displayplayer].mo, origin, &volume, + &sep, &pitch)) + return; + else + if ( origin->x == players[displayplayer].mo->x && + origin->y == players[displayplayer].mo->y) + sep = NORM_SEP; + + // hacks to vary the sfx pitches + if (sfx_id >= sfx_sawup && sfx_id <= sfx_sawhit) + pitch += 8 - (M_Random()&15); + else + if (sfx_id != sfx_itemup && sfx_id != sfx_tink) + pitch += 16 - (M_Random()&31); + + if (pitch<0) + pitch = 0; + + if (pitch>255) + pitch = 255; + + // kill old sound + for (cnum=0 ; cnumlumpnum < 0) + return; + + // increase the usefulness + if (sfx->usefulness++ < 0) + sfx->usefulness = 1; + + // Assigns the handle to one of the channels in the mix/output buffer. + { // e6y: [Fix] Crash with zero-length sounds. + int h = I_StartSound(sfx_id, cnum, volume, sep, pitch, priority); + if (h != -1) channels[cnum].handle = h; + } +} + +void S_StartSound(void *origin, int sfx_id) +{ + S_StartSoundAtVolume(origin, sfx_id, snd_SfxVolume); +} + +void S_StopSound(void *origin) +{ + int cnum; + + //jff 1/22/98 return if sound is not enabled + if (!snd_card || nosfxparm) + return; + + for (cnum=0 ; cnumhandle); + mus_paused = true; + } +} + +void S_ResumeSound(void) +{ + //jff 1/22/98 return if music is not enabled + if (!mus_card || nomusicparm) + return; + + if (mus_playing && mus_paused) + { + I_ResumeSong(mus_playing->handle); + mus_paused = false; + } +} + + +// +// Updates music & sounds +// +void S_UpdateSounds(void* listener_p) +{ + mobj_t *listener = (mobj_t*) listener_p; + int cnum; + + //jff 1/22/98 return if sound is not enabled + if (!snd_card || nosfxparm) + return; + +#ifdef UPDATE_MUSIC + I_UpdateMusic(); +#endif + + for (cnum=0 ; cnumsfxinfo)) + { + if (I_SoundIsPlaying(c->handle)) + { + // initialize parameters + int volume = snd_SfxVolume; + int pitch = NORM_PITCH; + int sep = NORM_SEP; + + if (sfx->link) + { + pitch = sfx->pitch; + volume += sfx->volume; + if (volume < 1) + { + S_StopChannel(cnum); + continue; + } + else + if (volume > snd_SfxVolume) + volume = snd_SfxVolume; + } + + // check non-local sounds for distance clipping + // or modify their params + if (c->origin && listener_p != c->origin) { // killough 3/20/98 + if (!S_AdjustSoundParams(listener, c->origin, + &volume, &sep, &pitch)) + S_StopChannel(cnum); + else + I_UpdateSoundParams(c->handle, volume, sep, pitch); + } + } + else // if channel is allocated but sound has stopped, free it + S_StopChannel(cnum); + } + } +} + + + +void S_SetMusicVolume(int volume) +{ + snd_MusicVolume = MIN(MAX(volume, 0), 15); + if (mus_card && !nomusicparm) + I_SetMusicVolume(snd_MusicVolume); +} + + + +void S_SetSfxVolume(int volume) +{ + snd_SfxVolume = MIN(MAX(volume, 0), 15); +} + + + +// Starts some music with the music id found in sounds.h. +// +void S_StartMusic(int m_id) +{ + //jff 1/22/98 return if music is not enabled + if (!mus_card || nomusicparm) + return; + S_ChangeMusic(m_id, false); +} + + + +void S_ChangeMusic(int musicnum, int looping) +{ + musicinfo_t *music; + + if (!mus_card || nomusicparm) + return; + + if (musicnum <= mus_None || musicnum >= NUMMUSIC) + I_Error("S_ChangeMusic: Bad music number %d", musicnum); + + music = &S_music[musicnum]; + + if (mus_playing == music) + return; + + // shutdown old music + S_StopMusic(); + + // check if we have the track + if (music->lumpnum < 0) + return; + + // load & register it + music->handle = I_RegisterSong(W_CacheLumpNum(music->lumpnum), W_LumpLength(music->lumpnum)); + W_UnlockLumpNum(music->lumpnum); // Release it, I_RegisterSong makes a copy + + // play it + I_PlaySong(music->handle, looping); + + mus_playing = music; +} + + +void S_StopMusic(void) +{ + //jff 1/22/98 return if music is not enabled + if (!mus_card || nomusicparm) + return; + + if (mus_playing) + { + if (mus_paused) + I_ResumeSong(mus_playing->handle); + + I_StopSong(mus_playing->handle); + I_UnRegisterSong(mus_playing->handle); + + mus_playing = 0; + } +} + + + +void S_StopChannel(int cnum) +{ + int i; + channel_t *c = &channels[cnum]; + + //jff 1/22/98 return if sound is not enabled + if (!snd_card || nosfxparm) + return; + + if (c->sfxinfo) + { + // stop the sound playing + if (I_SoundIsPlaying(c->handle)) + I_StopSound(c->handle); + + // check to see + // if other channels are playing the sound + for (i=0 ; isfxinfo == channels[i].sfxinfo) + break; + + // degrade usefulness of sound data + c->sfxinfo->usefulness--; + c->sfxinfo = 0; + } +} + +// +// Changes volume, stereo-separation, and pitch variables +// from the norm of a sound effect to be played. +// If the sound is not audible, returns a 0. +// Otherwise, modifies parameters and returns 1. +// + +int S_AdjustSoundParams(mobj_t *listener, mobj_t *source, + int *vol, int *sep, int *pitch) +{ + fixed_t adx, ady,approx_dist; + angle_t angle; + + //jff 1/22/98 return if sound is not enabled + if (!snd_card || nosfxparm) + return 0; + + // e6y + // Fix crash when the program wants to S_AdjustSoundParams() for player + // which is not displayplayer and displayplayer was not spawned at the moment. + // It happens in multiplayer demos only. + // + // Stack trace is: + // P_SetupLevel() / P_LoadThings() / P_SpawnMapThing() / P_SpawnPlayer(players[0]) / + // P_SetupPsprites() / P_BringUpWeapon() / S_StartSound(players[0]->mo, sfx_sawup) / + // S_StartSoundAtVolume() / S_AdjustSoundParams(players[displayplayer]->mo, ...); + // players[displayplayer]->mo is NULL + // + // There is no more crash on e1cmnet3.lmp between e1m2 and e1m3 + // http://competn.doom2.net/pub/compet-n/doom/coop/movies/e1cmnet3.zip + if (!listener) + return 0; + + // calculate the distance to sound origin + // and clip it if necessary + adx = D_abs(listener->x - source->x); + ady = D_abs(listener->y - source->y); + + // From _GG1_ p.428. Appox. eucledian distance fast. + approx_dist = adx + ady - ((adx < ady ? adx : ady)>>1); + + if (!approx_dist) // killough 11/98: handle zero-distance as special case + { + *sep = NORM_SEP; + *vol = snd_SfxVolume; + return *vol > 0; + } + + if (approx_dist > S_CLIPPING_DIST) + return 0; + + // angle of source to listener + angle = R_PointToAngle2(listener->x, listener->y, source->x, source->y); + + if (angle <= listener->angle) + angle += 0xffffffff; + angle -= listener->angle; + angle >>= ANGLETOFINESHIFT; + + // stereo separation + *sep = 128 - (FixedMul(S_STEREO_SWING,finesine[angle])>>FRACBITS); + + // volume calculation + if (approx_dist < S_CLOSE_DIST) + *vol = snd_SfxVolume*8; + else + // distance effect + *vol = (snd_SfxVolume * ((S_CLIPPING_DIST-approx_dist)>>FRACBITS) * 8) + / S_ATTENUATOR; + + return (*vol > 0); +} + +// +// S_getChannel : +// If none available, return -1. Otherwise channel #. +// +// killough 4/25/98: made static, added is_pickup argument + +static int S_getChannel(void *origin, sfxinfo_t *sfxinfo, int is_pickup) +{ + // channel number to use + int cnum; + channel_t *c; + + //jff 1/22/98 return if sound is not enabled + if (!snd_card || nosfxparm) + return -1; + + // Find an open channel + for (cnum=0; cnumpriority >= sfxinfo->priority) + break; + if (cnum == numChannels) + return -1; // No lower priority. Sorry, Charlie. + else + S_StopChannel(cnum); // Otherwise, kick out lower priority. + } + + c = &channels[cnum]; // channel is decided to be cnum. + c->sfxinfo = sfxinfo; + c->origin = origin; + c->is_pickup = is_pickup; // killough 4/25/98 + return cnum; +} diff --git a/components/doom/prboom/s_sound.h b/components/doom/prboom/s_sound.h new file mode 100644 index 0000000..28a93e3 --- /dev/null +++ b/components/doom/prboom/s_sound.h @@ -0,0 +1,99 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * The not so system specific sound interface. + * + *-----------------------------------------------------------------------------*/ + +#ifndef __S_SOUND__ +#define __S_SOUND__ + +#ifdef __GNUG__ +#pragma interface +#endif + +// +// Initializes sound stuff, including volume +// Sets channels, SFX and music volume, +// allocates channel buffer, sets S_sfx lookup. +// +void S_Init(int sfxVolume, int musicVolume); + +// Kills all sounds +void S_Stop(void); + +// +// Per level startup code. +// Kills playing sounds at start of level, +// determines music if any, changes music. +// +void S_Start(void); + +// +// Start sound for thing at +// using from sounds.h +// +void S_StartSound(void *origin, int sound_id); + +// Will start a sound at a given volume. +void S_StartSoundAtVolume(void *origin, int sound_id, int volume); + +// killough 4/25/98: mask used to indicate sound origin is player item pickup +#define PICKUP_SOUND (0x8000) + +// Stop sound for thing at +void S_StopSound(void* origin); + +// Start music using from sounds.h +void S_StartMusic(int music_id); + +// Start music using from sounds.h, and set whether looping +void S_ChangeMusic(int music_id, int looping); + +// Stops the music fer sure. +void S_StopMusic(void); + +// Stop and resume music, during game PAUSE. +void S_PauseSound(void); +void S_ResumeSound(void); + +// +// Updates music & sounds +// +void S_UpdateSounds(void* listener); +void S_SetMusicVolume(int volume); +void S_SetSfxVolume(int volume); + +// machine-independent sound params +extern int snd_channels; + +//jff 3/17/98 holds last IDMUS number, or -1 +extern int idmusnum; + +#endif diff --git a/components/doom/prboom/sounds.c b/components/doom/prboom/sounds.c new file mode 100644 index 0000000..cc68a3c --- /dev/null +++ b/components/doom/prboom/sounds.c @@ -0,0 +1,245 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Created by a sound utility. + * Kept as a sample, DOOM2 sounds. + * + *-----------------------------------------------------------------------------*/ + +// killough 5/3/98: reformatted + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "doomtype.h" +#include "sounds.h" + +// +// Information about all the music +// + +musicinfo_t S_music[] = { + { 0 }, + { "e1m1", 0 }, + { "e1m2", 0 }, + { "e1m3", 0 }, + { "e1m4", 0 }, + { "e1m5", 0 }, + { "e1m6", 0 }, + { "e1m7", 0 }, + { "e1m8", 0 }, + { "e1m9", 0 }, + { "e2m1", 0 }, + { "e2m2", 0 }, + { "e2m3", 0 }, + { "e2m4", 0 }, + { "e2m5", 0 }, + { "e2m6", 0 }, + { "e2m7", 0 }, + { "e2m8", 0 }, + { "e2m9", 0 }, + { "e3m1", 0 }, + { "e3m2", 0 }, + { "e3m3", 0 }, + { "e3m4", 0 }, + { "e3m5", 0 }, + { "e3m6", 0 }, + { "e3m7", 0 }, + { "e3m8", 0 }, + { "e3m9", 0 }, + { "inter", 0 }, + { "intro", 0 }, + { "bunny", 0 }, + { "victor", 0 }, + { "introa", 0 }, + { "runnin", 0 }, + { "stalks", 0 }, + { "countd", 0 }, + { "betwee", 0 }, + { "doom", 0 }, + { "the_da", 0 }, + { "shawn", 0 }, + { "ddtblu", 0 }, + { "in_cit", 0 }, + { "dead", 0 }, + { "stlks2", 0 }, + { "theda2", 0 }, + { "doom2", 0 }, + { "ddtbl2", 0 }, + { "runni2", 0 }, + { "dead2", 0 }, + { "stlks3", 0 }, + { "romero", 0 }, + { "shawn2", 0 }, + { "messag", 0 }, + { "count2", 0 }, + { "ddtbl3", 0 }, + { "ampie", 0 }, + { "theda3", 0 }, + { "adrian", 0 }, + { "messg2", 0 }, + { "romer2", 0 }, + { "tense", 0 }, + { "shawn3", 0 }, + { "openin", 0 }, + { "evil", 0 }, + { "ultima", 0 }, + { "read_m", 0 }, + { "dm2ttl", 0 }, + { "dm2int", 0 }, +}; + + +// +// Information about all the sfx +// + +sfxinfo_t S_sfx[] = { + // S_sfx[0] needs to be a dummy for odd reasons. + { "none", false, 0, 0, -1, -1, 0 }, + + { "pistol", false, 64, 0, -1, -1, 0 }, + { "shotgn", false, 64, 0, -1, -1, 0 }, + { "sgcock", false, 64, 0, -1, -1, 0 }, + { "dshtgn", false, 64, 0, -1, -1, 0 }, + { "dbopn", false, 64, 0, -1, -1, 0 }, + { "dbcls", false, 64, 0, -1, -1, 0 }, + { "dbload", false, 64, 0, -1, -1, 0 }, + { "plasma", false, 64, 0, -1, -1, 0 }, + { "bfg", false, 64, 0, -1, -1, 0 }, + { "sawup", false, 64, 0, -1, -1, 0 }, + { "sawidl", false, 118, 0, -1, -1, 0 }, + { "sawful", false, 64, 0, -1, -1, 0 }, + { "sawhit", false, 64, 0, -1, -1, 0 }, + { "rlaunc", false, 64, 0, -1, -1, 0 }, + { "rxplod", false, 70, 0, -1, -1, 0 }, + { "firsht", false, 70, 0, -1, -1, 0 }, + { "firxpl", false, 70, 0, -1, -1, 0 }, + { "pstart", false, 100, 0, -1, -1, 0 }, + { "pstop", false, 100, 0, -1, -1, 0 }, + { "doropn", false, 100, 0, -1, -1, 0 }, + { "dorcls", false, 100, 0, -1, -1, 0 }, + { "stnmov", false, 119, 0, -1, -1, 0 }, + { "swtchn", false, 78, 0, -1, -1, 0 }, + { "swtchx", false, 78, 0, -1, -1, 0 }, + { "plpain", false, 96, 0, -1, -1, 0 }, + { "dmpain", false, 96, 0, -1, -1, 0 }, + { "popain", false, 96, 0, -1, -1, 0 }, + { "vipain", false, 96, 0, -1, -1, 0 }, + { "mnpain", false, 96, 0, -1, -1, 0 }, + { "pepain", false, 96, 0, -1, -1, 0 }, + { "slop", false, 78, 0, -1, -1, 0 }, + { "itemup", true, 78, 0, -1, -1, 0 }, + { "wpnup", true, 78, 0, -1, -1, 0 }, + { "oof", false, 96, 0, -1, -1, 0 }, + { "telept", false, 32, 0, -1, -1, 0 }, + { "posit1", true, 98, 0, -1, -1, 0 }, + { "posit2", true, 98, 0, -1, -1, 0 }, + { "posit3", true, 98, 0, -1, -1, 0 }, + { "bgsit1", true, 98, 0, -1, -1, 0 }, + { "bgsit2", true, 98, 0, -1, -1, 0 }, + { "sgtsit", true, 98, 0, -1, -1, 0 }, + { "cacsit", true, 98, 0, -1, -1, 0 }, + { "brssit", true, 94, 0, -1, -1, 0 }, + { "cybsit", true, 92, 0, -1, -1, 0 }, + { "spisit", true, 90, 0, -1, -1, 0 }, + { "bspsit", true, 90, 0, -1, -1, 0 }, + { "kntsit", true, 90, 0, -1, -1, 0 }, + { "vilsit", true, 90, 0, -1, -1, 0 }, + { "mansit", true, 90, 0, -1, -1, 0 }, + { "pesit", true, 90, 0, -1, -1, 0 }, + { "sklatk", false, 70, 0, -1, -1, 0 }, + { "sgtatk", false, 70, 0, -1, -1, 0 }, + { "skepch", false, 70, 0, -1, -1, 0 }, + { "vilatk", false, 70, 0, -1, -1, 0 }, + { "claw", false, 70, 0, -1, -1, 0 }, + { "skeswg", false, 70, 0, -1, -1, 0 }, + { "pldeth", false, 32, 0, -1, -1, 0 }, + { "pdiehi", false, 32, 0, -1, -1, 0 }, + { "podth1", false, 70, 0, -1, -1, 0 }, + { "podth2", false, 70, 0, -1, -1, 0 }, + { "podth3", false, 70, 0, -1, -1, 0 }, + { "bgdth1", false, 70, 0, -1, -1, 0 }, + { "bgdth2", false, 70, 0, -1, -1, 0 }, + { "sgtdth", false, 70, 0, -1, -1, 0 }, + { "cacdth", false, 70, 0, -1, -1, 0 }, + { "skldth", false, 70, 0, -1, -1, 0 }, + { "brsdth", false, 32, 0, -1, -1, 0 }, + { "cybdth", false, 32, 0, -1, -1, 0 }, + { "spidth", false, 32, 0, -1, -1, 0 }, + { "bspdth", false, 32, 0, -1, -1, 0 }, + { "vildth", false, 32, 0, -1, -1, 0 }, + { "kntdth", false, 32, 0, -1, -1, 0 }, + { "pedth", false, 32, 0, -1, -1, 0 }, + { "skedth", false, 32, 0, -1, -1, 0 }, + { "posact", true, 120, 0, -1, -1, 0 }, + { "bgact", true, 120, 0, -1, -1, 0 }, + { "dmact", true, 120, 0, -1, -1, 0 }, + { "bspact", true, 100, 0, -1, -1, 0 }, + { "bspwlk", true, 100, 0, -1, -1, 0 }, + { "vilact", true, 100, 0, -1, -1, 0 }, + { "noway", false, 78, 0, -1, -1, 0 }, + { "barexp", false, 60, 0, -1, -1, 0 }, + { "punch", false, 64, 0, -1, -1, 0 }, + { "hoof", false, 70, 0, -1, -1, 0 }, + { "metal", false, 70, 0, -1, -1, 0 }, + { "chgun", false, 64, &S_sfx[sfx_pistol], 150, 0, 0 }, + { "tink", false, 60, 0, -1, -1, 0 }, + { "bdopn", false, 100, 0, -1, -1, 0 }, + { "bdcls", false, 100, 0, -1, -1, 0 }, + { "itmbk", false, 100, 0, -1, -1, 0 }, + { "flame", false, 32, 0, -1, -1, 0 }, + { "flamst", false, 32, 0, -1, -1, 0 }, + { "getpow", false, 60, 0, -1, -1, 0 }, + { "bospit", false, 70, 0, -1, -1, 0 }, + { "boscub", false, 70, 0, -1, -1, 0 }, + { "bossit", false, 70, 0, -1, -1, 0 }, + { "bospn", false, 70, 0, -1, -1, 0 }, + { "bosdth", false, 70, 0, -1, -1, 0 }, + { "manatk", false, 70, 0, -1, -1, 0 }, + { "mandth", false, 70, 0, -1, -1, 0 }, + { "sssit", false, 70, 0, -1, -1, 0 }, + { "ssdth", false, 70, 0, -1, -1, 0 }, + { "keenpn", false, 70, 0, -1, -1, 0 }, + { "keendt", false, 70, 0, -1, -1, 0 }, + { "skeact", false, 70, 0, -1, -1, 0 }, + { "skesit", false, 70, 0, -1, -1, 0 }, + { "skeatk", false, 70, 0, -1, -1, 0 }, + { "radio", false, 60, 0, -1, -1, 0 }, + +#ifdef DOGS + // killough 11/98: dog sounds + { "dgsit", false, 98, 0, -1, -1, 0 }, + { "dgatk", false, 70, 0, -1, -1, 0 }, + { "dgact", false, 120, 0, -1, -1, 0 }, + { "dgdth", false, 70, 0, -1, -1, 0 }, + { "dgpain", false, 96, 0, -1, -1, 0 }, +#endif +}; diff --git a/components/doom/prboom/sounds.h b/components/doom/prboom/sounds.h new file mode 100644 index 0000000..db276f4 --- /dev/null +++ b/components/doom/prboom/sounds.h @@ -0,0 +1,299 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Created by the sound utility written by Dave Taylor. + * Kept as a sample, DOOM2 sounds. Frozen. + * + *-----------------------------------------------------------------------------*/ + +#ifndef __SOUNDS__ +#define __SOUNDS__ + +// +// SoundFX struct. +// + +struct sfxinfo_struct; + +typedef struct sfxinfo_struct sfxinfo_t; + +struct sfxinfo_struct { + + // up to 6-character name + const char *name; // CPhipps - const + + // Sfx singularity (only one at a time) + int singularity; + + // Sfx priority + int priority; + + // referenced sound if a link + sfxinfo_t *link; + + // pitch if a link + int pitch; + + // volume if a link + int volume; + + // this is checked every second to see if sound + // can be thrown out (if 0, then decrement, if -1, + // then throw out, if > 0, then it is in use) + int usefulness; + + // lump number of sfx + int lumpnum; +}; + +// +// MusicInfo struct. +// + +typedef struct { + // up to 6-character name + const char *name; // CPhipps - const + + // lump number of music + int lumpnum; + + // music handle once registered + int handle; +} musicinfo_t; + +// the complete set of sound effects +extern sfxinfo_t S_sfx[]; + +// the complete set of music +extern musicinfo_t S_music[]; + +// +// Identifiers for all music in game. +// + +typedef enum { + mus_None, + mus_e1m1, + mus_e1m2, + mus_e1m3, + mus_e1m4, + mus_e1m5, + mus_e1m6, + mus_e1m7, + mus_e1m8, + mus_e1m9, + mus_e2m1, + mus_e2m2, + mus_e2m3, + mus_e2m4, + mus_e2m5, + mus_e2m6, + mus_e2m7, + mus_e2m8, + mus_e2m9, + mus_e3m1, + mus_e3m2, + mus_e3m3, + mus_e3m4, + mus_e3m5, + mus_e3m6, + mus_e3m7, + mus_e3m8, + mus_e3m9, + mus_inter, + mus_intro, + mus_bunny, + mus_victor, + mus_introa, + mus_runnin, + mus_stalks, + mus_countd, + mus_betwee, + mus_doom, + mus_the_da, + mus_shawn, + mus_ddtblu, + mus_in_cit, + mus_dead, + mus_stlks2, + mus_theda2, + mus_doom2, + mus_ddtbl2, + mus_runni2, + mus_dead2, + mus_stlks3, + mus_romero, + mus_shawn2, + mus_messag, + mus_count2, + mus_ddtbl3, + mus_ampie, + mus_theda3, + mus_adrian, + mus_messg2, + mus_romer2, + mus_tense, + mus_shawn3, + mus_openin, + mus_evil, + mus_ultima, + mus_read_m, + mus_dm2ttl, + mus_dm2int, + NUMMUSIC +} musicenum_t; + +// +// Identifiers for all sfx in game. +// + +typedef enum { + sfx_None, + sfx_pistol, + sfx_shotgn, + sfx_sgcock, + sfx_dshtgn, + sfx_dbopn, + sfx_dbcls, + sfx_dbload, + sfx_plasma, + sfx_bfg, + sfx_sawup, + sfx_sawidl, + sfx_sawful, + sfx_sawhit, + sfx_rlaunc, + sfx_rxplod, + sfx_firsht, + sfx_firxpl, + sfx_pstart, + sfx_pstop, + sfx_doropn, + sfx_dorcls, + sfx_stnmov, + sfx_swtchn, + sfx_swtchx, + sfx_plpain, + sfx_dmpain, + sfx_popain, + sfx_vipain, + sfx_mnpain, + sfx_pepain, + sfx_slop, + sfx_itemup, + sfx_wpnup, + sfx_oof, + sfx_telept, + sfx_posit1, + sfx_posit2, + sfx_posit3, + sfx_bgsit1, + sfx_bgsit2, + sfx_sgtsit, + sfx_cacsit, + sfx_brssit, + sfx_cybsit, + sfx_spisit, + sfx_bspsit, + sfx_kntsit, + sfx_vilsit, + sfx_mansit, + sfx_pesit, + sfx_sklatk, + sfx_sgtatk, + sfx_skepch, + sfx_vilatk, + sfx_claw, + sfx_skeswg, + sfx_pldeth, + sfx_pdiehi, + sfx_podth1, + sfx_podth2, + sfx_podth3, + sfx_bgdth1, + sfx_bgdth2, + sfx_sgtdth, + sfx_cacdth, + sfx_skldth, + sfx_brsdth, + sfx_cybdth, + sfx_spidth, + sfx_bspdth, + sfx_vildth, + sfx_kntdth, + sfx_pedth, + sfx_skedth, + sfx_posact, + sfx_bgact, + sfx_dmact, + sfx_bspact, + sfx_bspwlk, + sfx_vilact, + sfx_noway, + sfx_barexp, + sfx_punch, + sfx_hoof, + sfx_metal, + sfx_chgun, + sfx_tink, + sfx_bdopn, + sfx_bdcls, + sfx_itmbk, + sfx_flame, + sfx_flamst, + sfx_getpow, + sfx_bospit, + sfx_boscub, + sfx_bossit, + sfx_bospn, + sfx_bosdth, + sfx_manatk, + sfx_mandth, + sfx_sssit, + sfx_ssdth, + sfx_keenpn, + sfx_keendt, + sfx_skeact, + sfx_skesit, + sfx_skeatk, + sfx_radio, + +#ifdef DOGS + /* killough 11/98: dog sounds */ + sfx_dgsit, + sfx_dgatk, + sfx_dgact, + sfx_dgdth, + sfx_dgpain, +#endif + + NUMSFX +} sfxenum_t; + +#endif diff --git a/components/doom/prboom/st_lib.c b/components/doom/prboom/st_lib.c new file mode 100644 index 0000000..87504d4 --- /dev/null +++ b/components/doom/prboom/st_lib.c @@ -0,0 +1,374 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * The status bar widget code. + * + *-----------------------------------------------------------------------------*/ + +#include "doomdef.h" +#include "doomstat.h" +#include "v_video.h" +#include "w_wad.h" +#include "st_stuff.h" +#include "st_lib.h" +#include "r_main.h" +#include "lprintf.h" + +int sts_always_red; //jff 2/18/98 control to disable status color changes +int sts_pct_always_gray; // killough 2/21/98: always gray %'s? bug or feature? + +// +// STlib_init() +// +void STlib_init(void) +{ + // cph - no longer hold STMINUS pointer +} + +// +// STlib_initNum() +// +// Initializes an st_number_t widget +// +// Passed the widget, its position, the patches for the digits, a pointer +// to the value displayed, a pointer to the on/off control, and the width +// Returns nothing +// +void STlib_initNum +( st_number_t* n, + int x, + int y, + const patchnum_t* pl, + int* num, + boolean* on, + int width ) +{ + n->x = x; + n->y = y; + n->oldnum = 0; + n->width = width; + n->num = num; + n->on = on; + n->p = pl; +} + +/* + * STlib_drawNum() + * + * A fairly efficient way to draw a number based on differences from the + * old number. + * + * Passed a st_number_t widget, a color range for output, and a flag + * indicating whether refresh is needed. + * Returns nothing + * + * jff 2/16/98 add color translation to digit output + * cphipps 10/99 - const pointer to colour trans table, made function static + */ +static void STlib_drawNum +( st_number_t* n, + int cm, + boolean refresh ) +{ + + int numdigits = n->width; + int num = *n->num; + + int w = n->p[0].width; + int h = n->p[0].height; + int x = n->x; + + int neg; + + // leban 1/20/99: + // strange that somebody went through all the work to draw only the + // differences, and then went and constantly redrew all the numbers. + // return without drawing if the number didn't change and the bar + // isn't refreshing. + if(n->oldnum == num && !refresh) + return; + + // CPhipps - compact some code, use num instead of *n->num + if ((neg = (n->oldnum = num) < 0)) + { + if (numdigits == 2 && num < -9) + num = -9; + else if (numdigits == 3 && num < -99) + num = -99; + + num = -num; + } + + // clear the area + x = n->x - numdigits*w; + +#ifdef RANGECHECK + if (n->y - ST_Y < 0) + I_Error("STlib_drawNum: n->y - ST_Y < 0"); +#endif + + V_CopyRect(x, n->y - ST_Y, BG, w*numdigits, h, x, n->y, FG, VPT_STRETCH); + + // if non-number, do not draw it + if (num == 1994) + return; + + x = n->x; + + //jff 2/16/98 add color translation to digit output + // in the special case of 0, you draw 0 + if (!num) + // CPhipps - patch drawing updated, reformatted + V_DrawNumPatch(x - w, n->y, FG, n->p[0].lumpnum, cm, + (((cm!=CR_DEFAULT) && !sts_always_red) ? VPT_TRANS : VPT_NONE) | VPT_STRETCH); + + // draw the new number + //jff 2/16/98 add color translation to digit output + while (num && numdigits--) { + // CPhipps - patch drawing updated, reformatted + x -= w; + V_DrawNumPatch(x, n->y, FG, n->p[num % 10].lumpnum, cm, + (((cm!=CR_DEFAULT) && !sts_always_red) ? VPT_TRANS : VPT_NONE) | VPT_STRETCH); + num /= 10; + } + + // draw a minus sign if necessary + //jff 2/16/98 add color translation to digit output + // cph - patch drawing updated, load by name instead of acquiring pointer earlier + if (neg) + V_DrawNamePatch(x - w, n->y, FG, "STTMINUS", cm, + (((cm!=CR_DEFAULT) && !sts_always_red) ? VPT_TRANS : VPT_NONE) | VPT_STRETCH); +} + +/* + * STlib_updateNum() + * + * Draws a number conditionally based on the widget's enable + * + * Passed a number widget, the output color range, and a refresh flag + * Returns nothing + * + * jff 2/16/98 add color translation to digit output + * cphipps 10/99 - make that pointer const + */ +void STlib_updateNum +( st_number_t* n, + int cm, + boolean refresh ) +{ + if (*n->on) STlib_drawNum(n, cm, refresh); +} + +// +// STlib_initPercent() +// +// Initialize a st_percent_t number with percent sign widget +// +// Passed a st_percent_t widget, the position, the digit patches, a pointer +// to the number to display, a pointer to the enable flag, and patch +// for the percent sign. +// Returns nothing. +// +void STlib_initPercent +( st_percent_t* p, + int x, + int y, + const patchnum_t* pl, + int* num, + boolean* on, + const patchnum_t* percent ) +{ + STlib_initNum(&p->n, x, y, pl, num, on, 3); + p->p = percent; +} + +/* + * STlib_updatePercent() + * + * Draws a number/percent conditionally based on the widget's enable + * + * Passed a precent widget, the output color range, and a refresh flag + * Returns nothing + * + * jff 2/16/98 add color translation to digit output + * cphipps - const for pointer to the colour translation table + */ + +void STlib_updatePercent +( st_percent_t* per, + int cm, + int refresh ) +{ + if (*per->n.on && (refresh || (per->n.oldnum != *per->n.num))) { + // killough 2/21/98: fix percents not updated; + /* CPhipps - make %'s only be updated if number changed */ + // CPhipps - patch drawing updated + V_DrawNumPatch(per->n.x, per->n.y, FG, per->p->lumpnum, + sts_pct_always_gray ? CR_GRAY : cm, + (sts_always_red ? VPT_NONE : VPT_TRANS) | VPT_STRETCH); + } + + STlib_updateNum(&per->n, cm, refresh); +} + +// +// STlib_initMultIcon() +// +// Initialize a st_multicon_t widget, used for a multigraphic display +// like the status bar's keys. +// +// Passed a st_multicon_t widget, the position, the graphic patches, a pointer +// to the numbers representing what to display, and pointer to the enable flag +// Returns nothing. +// +void STlib_initMultIcon +( st_multicon_t* i, + int x, + int y, + const patchnum_t* il, + int* inum, + boolean* on ) +{ + i->x = x; + i->y = y; + i->oldinum = -1; + i->inum = inum; + i->on = on; + i->p = il; +} + +// +// STlib_updateMultIcon() +// +// Draw a st_multicon_t widget, used for a multigraphic display +// like the status bar's keys. Displays each when the control +// numbers change or refresh is true +// +// Passed a st_multicon_t widget, and a refresh flag +// Returns nothing. +// +void STlib_updateMultIcon +( st_multicon_t* mi, + boolean refresh ) +{ + int w; + int h; + int x; + int y; + + if (*mi->on && (mi->oldinum != *mi->inum || refresh)) + { + if (mi->oldinum != -1) + { + x = mi->x - mi->p[mi->oldinum].leftoffset; + y = mi->y - mi->p[mi->oldinum].topoffset; + w = mi->p[mi->oldinum].width; + h = mi->p[mi->oldinum].height; + +#ifdef RANGECHECK + if (y - ST_Y < 0) + I_Error("STlib_updateMultIcon: y - ST_Y < 0"); +#endif + + V_CopyRect(x, y-ST_Y, BG, w, h, x, y, FG, VPT_STRETCH); + } + if (*mi->inum != -1) // killough 2/16/98: redraw only if != -1 + V_DrawNumPatch(mi->x, mi->y, FG, mi->p[*mi->inum].lumpnum, CR_DEFAULT, VPT_STRETCH); + mi->oldinum = *mi->inum; + } +} + +// +// STlib_initBinIcon() +// +// Initialize a st_binicon_t widget, used for a multinumber display +// like the status bar's weapons, that are present or not. +// +// Passed a st_binicon_t widget, the position, the digit patches, a pointer +// to the flags representing what is displayed, and pointer to the enable flag +// Returns nothing. +// +void STlib_initBinIcon +( st_binicon_t* b, + int x, + int y, + const patchnum_t* i, + boolean* val, + boolean* on ) +{ + b->x = x; + b->y = y; + b->oldval = 0; + b->val = val; + b->on = on; + b->p = i; +} + +// +// STlib_updateBinIcon() +// +// DInitialize a st_binicon_t widget, used for a multinumber display +// like the status bar's weapons, that are present or not. +// +// Draw a st_binicon_t widget, used for a multinumber display +// like the status bar's weapons that are present or not. Displays each +// when the control flag changes or refresh is true +// +// Passed a st_binicon_t widget, and a refresh flag +// Returns nothing. +// +void STlib_updateBinIcon +( st_binicon_t* bi, + boolean refresh ) +{ + int x; + int y; + int w; + int h; + + if (*bi->on && (bi->oldval != *bi->val || refresh)) + { + x = bi->x - bi->p->leftoffset; + y = bi->y - bi->p->topoffset; + w = bi->p->width; + h = bi->p->height; + +#ifdef RANGECHECK + if (y - ST_Y < 0) + I_Error("STlib_updateBinIcon: y - ST_Y < 0"); +#endif + + if (*bi->val) + V_DrawNumPatch(bi->x, bi->y, FG, bi->p->lumpnum, CR_DEFAULT, VPT_STRETCH); + else + V_CopyRect(x, y-ST_Y, BG, w, h, x, y, FG, VPT_STRETCH); + + bi->oldval = *bi->val; + } +} diff --git a/components/doom/prboom/st_lib.h b/components/doom/prboom/st_lib.h new file mode 100644 index 0000000..769a75e --- /dev/null +++ b/components/doom/prboom/st_lib.h @@ -0,0 +1,209 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * The status bar widget definitions and prototypes + * + *-----------------------------------------------------------------------------*/ + +#ifndef __STLIB__ +#define __STLIB__ + +// We are referring to patches. +#include "r_defs.h" +#include "v_video.h" // color ranges + +// +// Background and foreground screen numbers +// +#define BG 4 +#define FG 0 + +// +// Typedefs of widgets +// + +// Number widget + +typedef struct +{ + // upper right-hand corner + // of the number (right-justified) + int x; + int y; + + // max # of digits in number + int width; + + // last number value + int oldnum; + + // pointer to current value + int* num; + + // pointer to boolean stating + // whether to update number + boolean* on; + + // list of patches for 0-9 + const patchnum_t* p; + + // user data + int data; +} st_number_t; + +// Percent widget ("child" of number widget, +// or, more precisely, contains a number widget.) +typedef struct +{ + // number information + st_number_t n; + + // percent sign graphic + const patchnum_t* p; +} st_percent_t; + +// Multiple Icon widget +typedef struct +{ + // center-justified location of icons + int x; + int y; + + // last icon number + int oldinum; + + // pointer to current icon + int* inum; + + // pointer to boolean stating + // whether to update icon + boolean* on; + + // list of icons + const patchnum_t* p; + + // user data + int data; + +} st_multicon_t; + +// Binary Icon widget + +typedef struct +{ + // center-justified location of icon + int x; + int y; + + // last icon value + boolean oldval; + + // pointer to current icon status + boolean* val; + + // pointer to boolean + // stating whether to update icon + boolean* on; + + const patchnum_t* p; // icon + int data; // user data +} st_binicon_t; + +// +// Widget creation, access, and update routines +// + +// Initializes widget library. +// More precisely, initialize STMINUS, +// everything else is done somewhere else. +// +void STlib_init(void); + +// Number widget routines +void STlib_initNum +( st_number_t* n, + int x, + int y, + const patchnum_t* pl, + int* num, + boolean* on, + int width ); + +void STlib_updateNum +( st_number_t* n, + int cm, + boolean refresh ); + + +// Percent widget routines +void STlib_initPercent +( st_percent_t* p, + int x, + int y, + const patchnum_t* pl, + int* num, + boolean* on, + const patchnum_t* percent ); + + +void STlib_updatePercent +( st_percent_t* per, + int cm, + int refresh ); + + +// Multiple Icon widget routines +void STlib_initMultIcon +( st_multicon_t* mi, + int x, + int y, + const patchnum_t* il, + int* inum, + boolean* on ); + + +void STlib_updateMultIcon +( st_multicon_t* mi, + boolean refresh ); + +// Binary Icon widget routines + +void STlib_initBinIcon +( st_binicon_t* b, + int x, + int y, + const patchnum_t* i, + boolean* val, + boolean* on ); + +void STlib_updateBinIcon +( st_binicon_t* bi, + boolean refresh ); + +#endif diff --git a/components/doom/prboom/st_stuff.c b/components/doom/prboom/st_stuff.c new file mode 100644 index 0000000..5312431 --- /dev/null +++ b/components/doom/prboom/st_stuff.c @@ -0,0 +1,1145 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Status bar code. + * Does the face/direction indicator animatin. + * Does palette indicators as well (red pain/berserk, bright pickup) + * + *-----------------------------------------------------------------------------*/ + +#include "doomdef.h" +#include "doomstat.h" +#include "m_random.h" +#include "i_video.h" +#include "w_wad.h" +#include "st_stuff.h" +#include "st_lib.h" +#include "r_main.h" +#include "am_map.h" +#include "m_cheat.h" +#include "s_sound.h" +#include "sounds.h" +#include "dstrings.h" +#include "r_draw.h" + +// +// STATUS BAR DATA +// + +// Palette indices. +// For damage/bonus red-/gold-shifts +#define STARTREDPALS 1 +#define STARTBONUSPALS 9 +#define NUMREDPALS 8 +#define NUMBONUSPALS 4 +// Radiation suit, green shift. +#define RADIATIONPAL 13 + +// Location of status bar +#define ST_X 0 +#define ST_X2 104 + +// proff 08/18/98: Changed for high-res +#define ST_FX (ST_X+143) +#define ST_FY (ST_Y+1) +//#define ST_FX 143 +//#define ST_FY 169 + +// Should be set to patch width +// for tall numbers later on +#define ST_TALLNUMWIDTH (tallnum[0]->width) + +// Number of status faces. +#define ST_NUMPAINFACES 5 +#define ST_NUMSTRAIGHTFACES 3 +#define ST_NUMTURNFACES 2 +#define ST_NUMSPECIALFACES 3 + +#define ST_FACESTRIDE \ + (ST_NUMSTRAIGHTFACES+ST_NUMTURNFACES+ST_NUMSPECIALFACES) + +#define ST_NUMEXTRAFACES 2 + +#define ST_NUMFACES \ + (ST_FACESTRIDE*ST_NUMPAINFACES+ST_NUMEXTRAFACES) + +#define ST_TURNOFFSET (ST_NUMSTRAIGHTFACES) +#define ST_OUCHOFFSET (ST_TURNOFFSET + ST_NUMTURNFACES) +#define ST_EVILGRINOFFSET (ST_OUCHOFFSET + 1) +#define ST_RAMPAGEOFFSET (ST_EVILGRINOFFSET + 1) +#define ST_GODFACE (ST_NUMPAINFACES*ST_FACESTRIDE) +#define ST_DEADFACE (ST_GODFACE+1) + +// proff 08/18/98: Changed for high-res +#define ST_FACESX (ST_X+143) +#define ST_FACESY (ST_Y) +//#define ST_FACESX 143 +//#define ST_FACESY 168 + +#define ST_EVILGRINCOUNT (2*TICRATE) +#define ST_STRAIGHTFACECOUNT (TICRATE/2) +#define ST_TURNCOUNT (1*TICRATE) +#define ST_OUCHCOUNT (1*TICRATE) +#define ST_RAMPAGEDELAY (2*TICRATE) + +#define ST_MUCHPAIN 20 + +// Location and size of statistics, +// justified according to widget type. +// Problem is, within which space? STbar? Screen? +// Note: this could be read in by a lump. +// Problem is, is the stuff rendered +// into a buffer, +// or into the frame buffer? +// I dunno, why don't you go and find out!!! killough + +// AMMO number pos. +#define ST_AMMOWIDTH 3 +// proff 08/18/98: Changed for high-res +#define ST_AMMOX (ST_X+44) +#define ST_AMMOY (ST_Y+3) +//#define ST_AMMOX 44 +//#define ST_AMMOY 171 + +// HEALTH number pos. +#define ST_HEALTHWIDTH 3 +// proff 08/18/98: Changed for high-res +#define ST_HEALTHX (ST_X+90) +#define ST_HEALTHY (ST_Y+3) +//#define ST_HEALTHX 90 +//#define ST_HEALTHY 171 + +// Weapon pos. +// proff 08/18/98: Changed for high-res +#define ST_ARMSX (ST_X+111) +#define ST_ARMSY (ST_Y+4) +#define ST_ARMSBGX (ST_X+104) +#define ST_ARMSBGY (ST_Y) +//#define ST_ARMSX 111 +//#define ST_ARMSY 172 +//#define ST_ARMSBGX 104 +//#define ST_ARMSBGY 168 +#define ST_ARMSXSPACE 12 +#define ST_ARMSYSPACE 10 + +// Frags pos. +// proff 08/18/98: Changed for high-res +#define ST_FRAGSX (ST_X+138) +#define ST_FRAGSY (ST_Y+3) +//#define ST_FRAGSX 138 +//#define ST_FRAGSY 171 +#define ST_FRAGSWIDTH 2 + +// ARMOR number pos. +#define ST_ARMORWIDTH 3 +// proff 08/18/98: Changed for high-res +#define ST_ARMORX (ST_X+221) +#define ST_ARMORY (ST_Y+3) +//#define ST_ARMORX 221 +//#define ST_ARMORY 171 + +// Key icon positions. +#define ST_KEY0WIDTH 8 +#define ST_KEY0HEIGHT 5 +// proff 08/18/98: Changed for high-res +#define ST_KEY0X (ST_X+239) +#define ST_KEY0Y (ST_Y+3) +//#define ST_KEY0X 239 +//#define ST_KEY0Y 171 +#define ST_KEY1WIDTH ST_KEY0WIDTH +// proff 08/18/98: Changed for high-res +#define ST_KEY1X (ST_X+239) +#define ST_KEY1Y (ST_Y+13) +//#define ST_KEY1X 239 +//#define ST_KEY1Y 181 +#define ST_KEY2WIDTH ST_KEY0WIDTH +// proff 08/18/98: Changed for high-res +#define ST_KEY2X (ST_X+239) +#define ST_KEY2Y (ST_Y+23) +//#define ST_KEY2X 239 +//#define ST_KEY2Y 191 + +// Ammunition counter. +#define ST_AMMO0WIDTH 3 +#define ST_AMMO0HEIGHT 6 +// proff 08/18/98: Changed for high-res +#define ST_AMMO0X (ST_X+288) +#define ST_AMMO0Y (ST_Y+5) +//#define ST_AMMO0X 288 +//#define ST_AMMO0Y 173 +#define ST_AMMO1WIDTH ST_AMMO0WIDTH +// proff 08/18/98: Changed for high-res +#define ST_AMMO1X (ST_X+288) +#define ST_AMMO1Y (ST_Y+11) +//#define ST_AMMO1X 288 +//#define ST_AMMO1Y 179 +#define ST_AMMO2WIDTH ST_AMMO0WIDTH +// proff 08/18/98: Changed for high-res +#define ST_AMMO2X (ST_X+288) +#define ST_AMMO2Y (ST_Y+23) +//#define ST_AMMO2X 288 +//#define ST_AMMO2Y 191 +#define ST_AMMO3WIDTH ST_AMMO0WIDTH +// proff 08/18/98: Changed for high-res +#define ST_AMMO3X (ST_X+288) +#define ST_AMMO3Y (ST_Y+17) +//#define ST_AMMO3X 288 +//#define ST_AMMO3Y 185 + +// Indicate maximum ammunition. +// Only needed because backpack exists. +#define ST_MAXAMMO0WIDTH 3 +#define ST_MAXAMMO0HEIGHT 5 +// proff 08/18/98: Changed for high-res +#define ST_MAXAMMO0X (ST_X+314) +#define ST_MAXAMMO0Y (ST_Y+5) +//#define ST_MAXAMMO0X 314 +//#define ST_MAXAMMO0Y 173 +#define ST_MAXAMMO1WIDTH ST_MAXAMMO0WIDTH +// proff 08/18/98: Changed for high-res +#define ST_MAXAMMO1X (ST_X+314) +#define ST_MAXAMMO1Y (ST_Y+11) +//#define ST_MAXAMMO1X 314 +//#define ST_MAXAMMO1Y 179 +#define ST_MAXAMMO2WIDTH ST_MAXAMMO0WIDTH +// proff 08/18/98: Changed for high-res +#define ST_MAXAMMO2X (ST_X+314) +#define ST_MAXAMMO2Y (ST_Y+23) +//#define ST_MAXAMMO2X 314 +//#define ST_MAXAMMO2Y 191 +#define ST_MAXAMMO3WIDTH ST_MAXAMMO0WIDTH +// proff 08/18/98: Changed for high-res +#define ST_MAXAMMO3X (ST_X+314) +#define ST_MAXAMMO3Y (ST_Y+17) +//#define ST_MAXAMMO3X 314 +//#define ST_MAXAMMO3Y 185 + +// killough 2/8/98: weapon info position macros UNUSED, removed here + +// main player in game +static player_t *plyr; + +// ST_Start() has just been called +static boolean st_firsttime; + +// used to execute ST_Init() only once +static int veryfirsttime = 1; + +// CPhipps - no longer do direct PLAYPAL handling here + +// used for timing +static unsigned int st_clock; + +// used for making messages go away +static int st_msgcounter=0; + +// used when in chat +static st_chatstateenum_t st_chatstate; + +// whether in automap or first-person +static st_stateenum_t st_gamestate; + +// whether left-side main status bar is active +static boolean st_statusbaron; + +// whether status bar chat is active +static boolean st_chat; + +// value of st_chat before message popped up +static boolean st_oldchat; + +// whether chat window has the cursor on +static boolean st_cursoron; + +// !deathmatch +static boolean st_notdeathmatch; + +// !deathmatch && st_statusbaron +static boolean st_armson; + +// !deathmatch +static boolean st_fragson; + +// 0-9, tall numbers +static patchnum_t tallnum[10]; + +// tall % sign +static patchnum_t tallpercent; + +// 0-9, short, yellow (,different!) numbers +static patchnum_t shortnum[10]; + +// 3 key-cards, 3 skulls, 3 card/skull combos +// jff 2/24/98 extend number of patches by three skull/card combos +static patchnum_t keys[NUMCARDS+3]; + +// face status patches +static patchnum_t faces[ST_NUMFACES]; + +// face background +static patchnum_t faceback; // CPhipps - single background, translated for different players + +//e6y: status bar background +static patchnum_t stbarbg; + +// main bar right +static patchnum_t armsbg; + +// weapon ownership patches +static patchnum_t arms[6][2]; + +// ready-weapon widget +static st_number_t w_ready; + +//jff 2/16/98 status color change levels +int ammo_red; // ammo percent less than which status is red +int ammo_yellow; // ammo percent less is yellow more green +int health_red; // health amount less than which status is red +int health_yellow; // health amount less than which status is yellow +int health_green; // health amount above is blue, below is green +int armor_red; // armor amount less than which status is red +int armor_yellow; // armor amount less than which status is yellow +int armor_green; // armor amount above is blue, below is green + + // in deathmatch only, summary of frags stats +static st_number_t w_frags; + +// health widget +static st_percent_t w_health; + +// arms background +static st_binicon_t w_armsbg; + +// weapon ownership widgets +static st_multicon_t w_arms[6]; + +// face status widget +static st_multicon_t w_faces; + +// keycard widgets +static st_multicon_t w_keyboxes[3]; + +// armor widget +static st_percent_t w_armor; + +// ammo widgets +static st_number_t w_ammo[4]; + +// max ammo widgets +static st_number_t w_maxammo[4]; + + // number of frags so far in deathmatch +static int st_fragscount; + +// used to use appopriately pained face +static int st_oldhealth = -1; + +// used for evil grin +static boolean oldweaponsowned[NUMWEAPONS]; + + // count until face changes +static int st_facecount = 0; + +// current face index, used by w_faces +static int st_faceindex = 0; + +// holds key-type for each key box on bar +static int keyboxes[3]; + +// a random number per tick +static int st_randomnumber; + +// +// STATUS BAR CODE +// + +static void ST_Stop(void); + +static void ST_refreshBackground(void) +{ + int y=0; + + if (st_statusbaron) + { + V_DrawNumPatch(ST_X, y, BG, stbarbg.lumpnum, CR_DEFAULT, VPT_STRETCH); + if (st_armson) + V_DrawNumPatch(ST_ARMSBGX, y, BG, armsbg.lumpnum, CR_DEFAULT, VPT_STRETCH); + + // killough 3/7/98: make face background change with displayplayer + if (netgame) + { + V_DrawNumPatch(ST_FX, y, BG, faceback.lumpnum, + displayplayer ? CR_LIMIT+displayplayer : CR_DEFAULT, + displayplayer ? (VPT_TRANS | VPT_STRETCH) : VPT_STRETCH); + } + V_CopyRect(ST_X, y, BG, ST_SCALED_WIDTH, ST_SCALED_HEIGHT, ST_X, ST_SCALED_Y, FG, VPT_NONE); + } +} + + +// Respond to keyboard input events, +// intercept cheats. +boolean ST_Responder(event_t *ev) +{ + // Filter automap on/off. + if (ev->type == ev_keyup && (ev->data1 & 0xffff0000) == AM_MSGHEADER) + { + switch(ev->data1) + { + case AM_MSGENTERED: + st_gamestate = AutomapState; + st_firsttime = true; + break; + + case AM_MSGEXITED: + st_gamestate = FirstPersonState; + break; + } + } + else // if a user keypress... + if (ev->type == ev_keydown) // Try cheat responder in m_cheat.c + return M_FindCheats(ev->data1); // killough 4/17/98, 5/2/98 + return false; +} + +static int ST_calcPainOffset(void) +{ + static int lastcalc; + static int oldhealth = -1; + int health = plyr->health > 100 ? 100 : plyr->health; + + if (health != oldhealth) + { + lastcalc = ST_FACESTRIDE * (((100 - health) * ST_NUMPAINFACES) / 101); + oldhealth = health; + } + return lastcalc; +} + +// +// This is a not-very-pretty routine which handles +// the face states and their timing. +// the precedence of expressions is: +// dead > evil grin > turned head > straight ahead +// + +static void ST_updateFaceWidget(void) +{ + int i; + angle_t badguyangle; + angle_t diffang; + static int lastattackdown = -1; + static int priority = 0; + boolean doevilgrin; + + if (priority < 10) + { + // dead + if (!plyr->health) + { + priority = 9; + st_faceindex = ST_DEADFACE; + st_facecount = 1; + } + } + + if (priority < 9) + { + if (plyr->bonuscount) + { + // picking up bonus + doevilgrin = false; + + for (i=0;iweaponowned[i]) + { + doevilgrin = true; + oldweaponsowned[i] = plyr->weaponowned[i]; + } + } + if (doevilgrin) + { + // evil grin if just picked up weapon + priority = 8; + st_facecount = ST_EVILGRINCOUNT; + st_faceindex = ST_calcPainOffset() + ST_EVILGRINOFFSET; + } + } + + } + + if (priority < 8) + { + if (plyr->damagecount && plyr->attacker && plyr->attacker != plyr->mo) + { + // being attacked + priority = 7; + + // haleyjd 10/12/03: classic DOOM problem of missing OUCH face + // was due to inversion of this test: + // if(plyr->health - st_oldhealth > ST_MUCHPAIN) + if(st_oldhealth - plyr->health > ST_MUCHPAIN) + { + st_facecount = ST_TURNCOUNT; + st_faceindex = ST_calcPainOffset() + ST_OUCHOFFSET; + } + else + { + badguyangle = R_PointToAngle2(plyr->mo->x, + plyr->mo->y, + plyr->attacker->x, + plyr->attacker->y); + + if (badguyangle > plyr->mo->angle) + { + // whether right or left + diffang = badguyangle - plyr->mo->angle; + i = diffang > ANG180; + } + else + { + // whether left or right + diffang = plyr->mo->angle - badguyangle; + i = diffang <= ANG180; + } // confusing, aint it? + + + st_facecount = ST_TURNCOUNT; + st_faceindex = ST_calcPainOffset(); + + if (diffang < ANG45) + { + // head-on + st_faceindex += ST_RAMPAGEOFFSET; + } + else if (i) + { + // turn face right + st_faceindex += ST_TURNOFFSET; + } + else + { + // turn face left + st_faceindex += ST_TURNOFFSET+1; + } + } + } + } + + if (priority < 7) + { + // getting hurt because of your own damn stupidity + if (plyr->damagecount) + { + // haleyjd 10/12/03: classic DOOM problem of missing OUCH face + // was due to inversion of this test: + // if(plyr->health - st_oldhealth > ST_MUCHPAIN) + if(st_oldhealth - plyr->health > ST_MUCHPAIN) + { + priority = 7; + st_facecount = ST_TURNCOUNT; + st_faceindex = ST_calcPainOffset() + ST_OUCHOFFSET; + } + else + { + priority = 6; + st_facecount = ST_TURNCOUNT; + st_faceindex = ST_calcPainOffset() + ST_RAMPAGEOFFSET; + } + + } + + } + + if (priority < 6) + { + // rapid firing + if (plyr->attackdown) + { + if (lastattackdown==-1) + lastattackdown = ST_RAMPAGEDELAY; + else if (!--lastattackdown) + { + priority = 5; + st_faceindex = ST_calcPainOffset() + ST_RAMPAGEOFFSET; + st_facecount = 1; + lastattackdown = 1; + } + } + else + lastattackdown = -1; + + } + + if (priority < 5) + { + // invulnerability + if ((plyr->cheats & CF_GODMODE) + || plyr->powers[pw_invulnerability]) + { + priority = 4; + + st_faceindex = ST_GODFACE; + st_facecount = 1; + + } + + } + + // look left or look right if the facecount has timed out + if (!st_facecount) + { + st_faceindex = ST_calcPainOffset() + (st_randomnumber % 3); + st_facecount = ST_STRAIGHTFACECOUNT; + priority = 0; + } + + st_facecount--; + +} + +int sts_traditional_keys; // killough 2/28/98: traditional status bar keys + +static void ST_updateWidgets(void) +{ + static int largeammo = 1994; // means "n/a" + int i; + + // must redirect the pointer if the ready weapon has changed. + // if (w_ready.data != plyr->readyweapon) + // { + if (weaponinfo[plyr->readyweapon].ammo == am_noammo) + w_ready.num = &largeammo; + else + w_ready.num = &plyr->ammo[weaponinfo[plyr->readyweapon].ammo]; + //{ + // static int tic=0; + // static int dir=-1; + // if (!(tic&15)) + // plyr->ammo[weaponinfo[plyr->readyweapon].ammo]+=dir; + // if (plyr->ammo[weaponinfo[plyr->readyweapon].ammo] == -100) + // dir = 1; + // tic++; + // } + w_ready.data = plyr->readyweapon; + + // if (*w_ready.on) + // STlib_updateNum(&w_ready, true); + // refresh weapon change + // } + + // update keycard multiple widgets + for (i=0;i<3;i++) + { + keyboxes[i] = plyr->cards[i] ? i : -1; + + //jff 2/24/98 select double key + //killough 2/28/98: preserve traditional keys by config option + + if (plyr->cards[i+3]) + keyboxes[i] = keyboxes[i]==-1 || sts_traditional_keys ? i+3 : i+6; + } + + // refresh everything if this is him coming back to life + ST_updateFaceWidget(); + + // used by the w_armsbg widget + st_notdeathmatch = !deathmatch; + + // used by w_arms[] widgets + st_armson = st_statusbaron && !deathmatch; + + // used by w_frags widget + st_fragson = deathmatch && st_statusbaron; + st_fragscount = 0; + + for (i=0 ; ifrags[i]; + else + st_fragscount -= plyr->frags[i]; + } + + // get rid of chat window if up because of message + if (!--st_msgcounter) + st_chat = st_oldchat; + +} + +void ST_Ticker(void) +{ + st_clock++; + st_randomnumber = M_Random(); + ST_updateWidgets(); + st_oldhealth = plyr->health; +} + +int st_palette = 0; + +static void ST_doPaletteStuff(void) +{ + int palette; + int cnt = plyr->damagecount; + + if (plyr->powers[pw_strength]) + { + // slowly fade the berzerk out + int bzc = 12 - (plyr->powers[pw_strength]>>6); + if (bzc > cnt) + cnt = bzc; + } + + if (cnt) + { + palette = (cnt+7)>>3; + if (palette >= NUMREDPALS) + palette = NUMREDPALS-1; + + /* cph 2006/08/06 - if in the menu, reduce the red tint - navigating to + * load a game can be tricky if the screen is all red */ + if (menuactive) palette >>=1; + + palette += STARTREDPALS; + } + else + if (plyr->bonuscount) + { + palette = (plyr->bonuscount+7)>>3; + if (palette >= NUMBONUSPALS) + palette = NUMBONUSPALS-1; + palette += STARTBONUSPALS; + } + else + if (plyr->powers[pw_ironfeet] > 4*32 || plyr->powers[pw_ironfeet] & 8) + palette = RADIATIONPAL; + else + palette = 0; + + if (palette != st_palette) { + V_SetPalette(st_palette = palette); // CPhipps - use new palette function + + // have to redraw the entire status bar when the palette changes + // in truecolor modes - POPE + if (V_GetMode() != VID_MODE8) + st_firsttime = true; + } +} + +static void ST_drawWidgets(boolean refresh) +{ + int i; + + // used by w_arms[] widgets + st_armson = st_statusbaron && !deathmatch; + + // used by w_frags widget + st_fragson = deathmatch && st_statusbaron; + + //jff 2/16/98 make color of ammo depend on amount + if (*w_ready.num*100 < ammo_red*plyr->maxammo[weaponinfo[w_ready.data].ammo]) + STlib_updateNum(&w_ready, CR_RED, refresh); + else + if (*w_ready.num*100 < + ammo_yellow*plyr->maxammo[weaponinfo[w_ready.data].ammo]) + STlib_updateNum(&w_ready, CR_GOLD, refresh); + else + STlib_updateNum(&w_ready, CR_GREEN, refresh); + + for (i=0;i<4;i++) + { + STlib_updateNum(&w_ammo[i], CR_DEFAULT, refresh); //jff 2/16/98 no xlation + STlib_updateNum(&w_maxammo[i], CR_DEFAULT, refresh); + } + + //jff 2/16/98 make color of health depend on amount + if (*w_health.n.numweaponowned[i]; + + for (i=0;i<3;i++) + keyboxes[i] = -1; + + STlib_init(); +} + +static void ST_createWidgets(void) +{ + int i; + + // ready weapon ammo + STlib_initNum(&w_ready, + ST_AMMOX, + ST_AMMOY, + tallnum, + &plyr->ammo[weaponinfo[plyr->readyweapon].ammo], + &st_statusbaron, + ST_AMMOWIDTH ); + + // the last weapon type + w_ready.data = plyr->readyweapon; + + // health percentage + STlib_initPercent(&w_health, + ST_HEALTHX, + ST_HEALTHY, + tallnum, + &plyr->health, + &st_statusbaron, + &tallpercent); + + // arms background + STlib_initBinIcon(&w_armsbg, + ST_ARMSBGX, + ST_ARMSBGY, + &armsbg, + &st_notdeathmatch, + &st_statusbaron); + + // weapons owned + for(i=0;i<6;i++) + { + STlib_initMultIcon(&w_arms[i], + ST_ARMSX+(i%3)*ST_ARMSXSPACE, + ST_ARMSY+(i/3)*ST_ARMSYSPACE, + arms[i], (int *) &plyr->weaponowned[i+1], + &st_armson); + } + + // frags sum + STlib_initNum(&w_frags, + ST_FRAGSX, + ST_FRAGSY, + tallnum, + &st_fragscount, + &st_fragson, + ST_FRAGSWIDTH); + + // faces + STlib_initMultIcon(&w_faces, + ST_FACESX, + ST_FACESY, + faces, + &st_faceindex, + &st_statusbaron); + + // armor percentage - should be colored later + STlib_initPercent(&w_armor, + ST_ARMORX, + ST_ARMORY, + tallnum, + &plyr->armorpoints, + &st_statusbaron, &tallpercent); + + // keyboxes 0-2 + STlib_initMultIcon(&w_keyboxes[0], + ST_KEY0X, + ST_KEY0Y, + keys, + &keyboxes[0], + &st_statusbaron); + + STlib_initMultIcon(&w_keyboxes[1], + ST_KEY1X, + ST_KEY1Y, + keys, + &keyboxes[1], + &st_statusbaron); + + STlib_initMultIcon(&w_keyboxes[2], + ST_KEY2X, + ST_KEY2Y, + keys, + &keyboxes[2], + &st_statusbaron); + + // ammo count (all four kinds) + STlib_initNum(&w_ammo[0], + ST_AMMO0X, + ST_AMMO0Y, + shortnum, + &plyr->ammo[0], + &st_statusbaron, + ST_AMMO0WIDTH); + + STlib_initNum(&w_ammo[1], + ST_AMMO1X, + ST_AMMO1Y, + shortnum, + &plyr->ammo[1], + &st_statusbaron, + ST_AMMO1WIDTH); + + STlib_initNum(&w_ammo[2], + ST_AMMO2X, + ST_AMMO2Y, + shortnum, + &plyr->ammo[2], + &st_statusbaron, + ST_AMMO2WIDTH); + + STlib_initNum(&w_ammo[3], + ST_AMMO3X, + ST_AMMO3Y, + shortnum, + &plyr->ammo[3], + &st_statusbaron, + ST_AMMO3WIDTH); + + // max ammo count (all four kinds) + STlib_initNum(&w_maxammo[0], + ST_MAXAMMO0X, + ST_MAXAMMO0Y, + shortnum, + &plyr->maxammo[0], + &st_statusbaron, + ST_MAXAMMO0WIDTH); + + STlib_initNum(&w_maxammo[1], + ST_MAXAMMO1X, + ST_MAXAMMO1Y, + shortnum, + &plyr->maxammo[1], + &st_statusbaron, + ST_MAXAMMO1WIDTH); + + STlib_initNum(&w_maxammo[2], + ST_MAXAMMO2X, + ST_MAXAMMO2Y, + shortnum, + &plyr->maxammo[2], + &st_statusbaron, + ST_MAXAMMO2WIDTH); + + STlib_initNum(&w_maxammo[3], + ST_MAXAMMO3X, + ST_MAXAMMO3Y, + shortnum, + &plyr->maxammo[3], + &st_statusbaron, + ST_MAXAMMO3WIDTH); +} + +static boolean st_stopped = true; + +void ST_Start(void) +{ + if (!st_stopped) + ST_Stop(); + ST_initData(); + ST_createWidgets(); + st_stopped = false; +} + +static void ST_Stop(void) +{ + if (st_stopped) + return; + V_SetPalette(0); + st_stopped = true; +} + +void ST_Init(void) +{ + veryfirsttime = 0; + ST_loadGraphics(true); +} diff --git a/components/doom/prboom/st_stuff.h b/components/doom/prboom/st_stuff.h new file mode 100644 index 0000000..83ba51e --- /dev/null +++ b/components/doom/prboom/st_stuff.h @@ -0,0 +1,102 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Status bar code. + * Does the face/direction indicator animatin. + * Does palette indicators as well (red pain/berserk, bright pickup) + * + *-----------------------------------------------------------------------------*/ + +#ifndef __STSTUFF_H__ +#define __STSTUFF_H__ + +#include "doomtype.h" +#include "d_event.h" + +// Size of statusbar. +// Now sensitive for scaling. + +// proff 08/18/98: Changed for high-res +#define ST_HEIGHT 32 +#define ST_WIDTH 320 +#define ST_Y (200 - ST_HEIGHT) +#define ST_SCALED_HEIGHT (ST_HEIGHT*SCREENHEIGHT/200) +#define ST_SCALED_WIDTH SCREENWIDTH +#define ST_SCALED_Y (SCREENHEIGHT - ST_SCALED_HEIGHT) + +// +// STATUS BAR +// + +// Called by main loop. +boolean ST_Responder(event_t* ev); + +// Called by main loop. +void ST_Ticker(void); + +// Called by main loop. +void ST_Drawer(boolean st_statusbaron, boolean refresh); + +// Called when the console player is spawned on each level. +void ST_Start(void); + +// Called by startup code. +void ST_Init(void); + +// States for status bar code. +typedef enum +{ + AutomapState, + FirstPersonState +} st_stateenum_t; + +// States for the chat code. +typedef enum +{ + StartChatState, + WaitDestState, + GetChatState +} st_chatstateenum_t; + +// killough 5/2/98: moved from m_misc.c: + +extern int health_red; // health amount less than which status is red +extern int health_yellow; // health amount less than which status is yellow +extern int health_green; // health amount above is blue, below is green +extern int armor_red; // armor amount less than which status is red +extern int armor_yellow; // armor amount less than which status is yellow +extern int armor_green; // armor amount above is blue, below is green +extern int ammo_red; // ammo percent less than which status is red +extern int ammo_yellow; // ammo percent less is yellow more green +extern int sts_always_red;// status numbers do not change colors +extern int sts_pct_always_gray;// status percents do not change colors +extern int sts_traditional_keys; // display keys the traditional way + +extern int st_palette; // cph 2006/04/06 - make palette visible +#endif diff --git a/components/doom/prboom/tables.c b/components/doom/prboom/tables.c new file mode 100644 index 0000000..d69eb4b --- /dev/null +++ b/components/doom/prboom/tables.c @@ -0,0 +1,2114 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Lookup tables. + * Do not try to look them up :-). + * In the order of appearance: + * + * int finetangent[4096] - Tangens LUT. + * Should work with BAM fairly well (12 of 16bit, + * effectively, by shifting). + * + * int finesine[10240] - Sine lookup. + * Guess what, serves as cosine, too. + * Remarkable thing is, how to use BAMs with this? + * + * int tantoangle[2049] - ArcTan LUT, + * maps tan(angle) to angle fast. Gotta search. + * + *----------------------------------------------------------------------------- + */ + +#include +#include "tables.h" + +const fixed_t finesine[5*FINEANGLES/4] = { + 0x00000019, 0x0000004B, 0x0000007D, 0x000000AF, 0x000000E2, 0x00000114, 0x00000146, 0x00000178, + 0x000001AB, 0x000001DD, 0x0000020F, 0x00000242, 0x00000274, 0x000002A6, 0x000002D8, 0x0000030B, + 0x0000033D, 0x0000036F, 0x000003A1, 0x000003D4, 0x00000406, 0x00000438, 0x0000046A, 0x0000049D, + 0x000004CF, 0x00000501, 0x00000533, 0x00000566, 0x00000598, 0x000005CA, 0x000005FC, 0x0000062F, + 0x00000661, 0x00000693, 0x000006C5, 0x000006F8, 0x0000072A, 0x0000075C, 0x0000078E, 0x000007C1, + 0x000007F3, 0x00000825, 0x00000857, 0x0000088A, 0x000008BC, 0x000008EE, 0x00000920, 0x00000953, + 0x00000985, 0x000009B7, 0x000009E9, 0x00000A1B, 0x00000A4E, 0x00000A80, 0x00000AB2, 0x00000AE4, + 0x00000B17, 0x00000B49, 0x00000B7B, 0x00000BAD, 0x00000BDF, 0x00000C12, 0x00000C44, 0x00000C76, + 0x00000CA8, 0x00000CDB, 0x00000D0D, 0x00000D3F, 0x00000D71, 0x00000DA3, 0x00000DD5, 0x00000E08, + 0x00000E3A, 0x00000E6C, 0x00000E9E, 0x00000ED0, 0x00000F03, 0x00000F35, 0x00000F67, 0x00000F99, + 0x00000FCB, 0x00000FFD, 0x00001030, 0x00001062, 0x00001094, 0x000010C6, 0x000010F8, 0x0000112A, + 0x0000115D, 0x0000118F, 0x000011C1, 0x000011F3, 0x00001225, 0x00001257, 0x00001289, 0x000012BC, + 0x000012EE, 0x00001320, 0x00001352, 0x00001384, 0x000013B6, 0x000013E8, 0x0000141A, 0x0000144D, + 0x0000147F, 0x000014B1, 0x000014E3, 0x00001515, 0x00001547, 0x00001579, 0x000015AB, 0x000015DD, + 0x0000160F, 0x00001641, 0x00001674, 0x000016A6, 0x000016D8, 0x0000170A, 0x0000173C, 0x0000176E, + 0x000017A0, 0x000017D2, 0x00001804, 0x00001836, 0x00001868, 0x0000189A, 0x000018CC, 0x000018FE, + 0x00001930, 0x00001962, 0x00001994, 0x000019C6, 0x000019F8, 0x00001A2A, 0x00001A5C, 0x00001A8E, + 0x00001AC0, 0x00001AF2, 0x00001B24, 0x00001B56, 0x00001B88, 0x00001BBA, 0x00001BEC, 0x00001C1E, + 0x00001C50, 0x00001C82, 0x00001CB4, 0x00001CE6, 0x00001D18, 0x00001D4A, 0x00001D7C, 0x00001DAE, + 0x00001DE0, 0x00001E11, 0x00001E43, 0x00001E75, 0x00001EA7, 0x00001ED9, 0x00001F0B, 0x00001F3D, + 0x00001F6F, 0x00001FA1, 0x00001FD3, 0x00002004, 0x00002036, 0x00002068, 0x0000209A, 0x000020CC, + 0x000020FE, 0x00002130, 0x00002161, 0x00002193, 0x000021C5, 0x000021F7, 0x00002229, 0x0000225A, + 0x0000228C, 0x000022BE, 0x000022F0, 0x00002322, 0x00002353, 0x00002385, 0x000023B7, 0x000023E9, + 0x0000241B, 0x0000244C, 0x0000247E, 0x000024B0, 0x000024E2, 0x00002513, 0x00002545, 0x00002577, + 0x000025A8, 0x000025DA, 0x0000260C, 0x0000263E, 0x0000266F, 0x000026A1, 0x000026D3, 0x00002704, + 0x00002736, 0x00002768, 0x00002799, 0x000027CB, 0x000027FD, 0x0000282E, 0x00002860, 0x00002892, + 0x000028C3, 0x000028F5, 0x00002926, 0x00002958, 0x0000298A, 0x000029BB, 0x000029ED, 0x00002A1E, + 0x00002A50, 0x00002A82, 0x00002AB3, 0x00002AE5, 0x00002B16, 0x00002B48, 0x00002B79, 0x00002BAB, + 0x00002BDC, 0x00002C0E, 0x00002C3F, 0x00002C71, 0x00002CA2, 0x00002CD4, 0x00002D05, 0x00002D37, + 0x00002D68, 0x00002D9A, 0x00002DCB, 0x00002DFD, 0x00002E2E, 0x00002E60, 0x00002E91, 0x00002EC2, + 0x00002EF4, 0x00002F25, 0x00002F57, 0x00002F88, 0x00002FBA, 0x00002FEB, 0x0000301C, 0x0000304E, + 0x0000307F, 0x000030B0, 0x000030E2, 0x00003113, 0x00003144, 0x00003176, 0x000031A7, 0x000031D8, + 0x0000320A, 0x0000323B, 0x0000326C, 0x0000329D, 0x000032CF, 0x00003300, 0x00003331, 0x00003362, + 0x00003394, 0x000033C5, 0x000033F6, 0x00003427, 0x00003459, 0x0000348A, 0x000034BB, 0x000034EC, + 0x0000351D, 0x0000354F, 0x00003580, 0x000035B1, 0x000035E2, 0x00003613, 0x00003644, 0x00003675, + 0x000036A6, 0x000036D8, 0x00003709, 0x0000373A, 0x0000376B, 0x0000379C, 0x000037CD, 0x000037FE, + 0x0000382F, 0x00003860, 0x00003891, 0x000038C2, 0x000038F3, 0x00003924, 0x00003955, 0x00003986, + 0x000039B7, 0x000039E8, 0x00003A19, 0x00003A4A, 0x00003A7B, 0x00003AAC, 0x00003ADD, 0x00003B0E, + 0x00003B3F, 0x00003B6F, 0x00003BA0, 0x00003BD1, 0x00003C02, 0x00003C33, 0x00003C64, 0x00003C95, + 0x00003CC5, 0x00003CF6, 0x00003D27, 0x00003D58, 0x00003D89, 0x00003DBA, 0x00003DEA, 0x00003E1B, + 0x00003E4C, 0x00003E7D, 0x00003EAD, 0x00003EDE, 0x00003F0F, 0x00003F3F, 0x00003F70, 0x00003FA1, + 0x00003FD2, 0x00004002, 0x00004033, 0x00004064, 0x00004094, 0x000040C5, 0x000040F5, 0x00004126, + 0x00004157, 0x00004187, 0x000041B8, 0x000041E8, 0x00004219, 0x0000424A, 0x0000427A, 0x000042AB, + 0x000042DB, 0x0000430C, 0x0000433C, 0x0000436D, 0x0000439D, 0x000043CE, 0x000043FE, 0x0000442F, + 0x0000445F, 0x0000448F, 0x000044C0, 0x000044F0, 0x00004521, 0x00004551, 0x00004581, 0x000045B2, + 0x000045E2, 0x00004613, 0x00004643, 0x00004673, 0x000046A4, 0x000046D4, 0x00004704, 0x00004734, + 0x00004765, 0x00004795, 0x000047C5, 0x000047F5, 0x00004826, 0x00004856, 0x00004886, 0x000048B6, + 0x000048E7, 0x00004917, 0x00004947, 0x00004977, 0x000049A7, 0x000049D7, 0x00004A07, 0x00004A38, + 0x00004A68, 0x00004A98, 0x00004AC8, 0x00004AF8, 0x00004B28, 0x00004B58, 0x00004B88, 0x00004BB8, + 0x00004BE8, 0x00004C18, 0x00004C48, 0x00004C78, 0x00004CA8, 0x00004CD8, 0x00004D08, 0x00004D38, + 0x00004D68, 0x00004D98, 0x00004DC8, 0x00004DF7, 0x00004E27, 0x00004E57, 0x00004E87, 0x00004EB7, + 0x00004EE7, 0x00004F16, 0x00004F46, 0x00004F76, 0x00004FA6, 0x00004FD6, 0x00005005, 0x00005035, + 0x00005065, 0x00005095, 0x000050C4, 0x000050F4, 0x00005124, 0x00005153, 0x00005183, 0x000051B3, + 0x000051E2, 0x00005212, 0x00005241, 0x00005271, 0x000052A1, 0x000052D0, 0x00005300, 0x0000532F, + 0x0000535F, 0x0000538E, 0x000053BE, 0x000053ED, 0x0000541D, 0x0000544C, 0x0000547C, 0x000054AB, + 0x000054DB, 0x0000550A, 0x00005539, 0x00005569, 0x00005598, 0x000055C8, 0x000055F7, 0x00005626, + 0x00005656, 0x00005685, 0x000056B4, 0x000056E3, 0x00005713, 0x00005742, 0x00005771, 0x000057A1, + 0x000057D0, 0x000057FF, 0x0000582E, 0x0000585D, 0x0000588C, 0x000058BC, 0x000058EB, 0x0000591A, + 0x00005949, 0x00005978, 0x000059A7, 0x000059D6, 0x00005A05, 0x00005A34, 0x00005A63, 0x00005A92, + 0x00005AC1, 0x00005AF0, 0x00005B1F, 0x00005B4E, 0x00005B7D, 0x00005BAC, 0x00005BDB, 0x00005C0A, + 0x00005C39, 0x00005C68, 0x00005C97, 0x00005CC6, 0x00005CF4, 0x00005D23, 0x00005D52, 0x00005D81, + 0x00005DB0, 0x00005DDE, 0x00005E0D, 0x00005E3C, 0x00005E6B, 0x00005E99, 0x00005EC8, 0x00005EF7, + 0x00005F25, 0x00005F54, 0x00005F83, 0x00005FB1, 0x00005FE0, 0x0000600F, 0x0000603D, 0x0000606C, + 0x0000609A, 0x000060C9, 0x000060F7, 0x00006126, 0x00006154, 0x00006183, 0x000061B1, 0x000061E0, + 0x0000620E, 0x0000623D, 0x0000626B, 0x00006299, 0x000062C8, 0x000062F6, 0x00006325, 0x00006353, + 0x00006381, 0x000063B0, 0x000063DE, 0x0000640C, 0x0000643A, 0x00006469, 0x00006497, 0x000064C5, + 0x000064F3, 0x00006521, 0x00006550, 0x0000657E, 0x000065AC, 0x000065DA, 0x00006608, 0x00006636, + 0x00006664, 0x00006692, 0x000066C0, 0x000066EE, 0x0000671C, 0x0000674A, 0x00006778, 0x000067A6, + 0x000067D4, 0x00006802, 0x00006830, 0x0000685E, 0x0000688C, 0x000068BA, 0x000068E8, 0x00006916, + 0x00006943, 0x00006971, 0x0000699F, 0x000069CD, 0x000069FB, 0x00006A28, 0x00006A56, 0x00006A84, + 0x00006AB1, 0x00006ADF, 0x00006B0D, 0x00006B3A, 0x00006B68, 0x00006B96, 0x00006BC3, 0x00006BF1, + 0x00006C1E, 0x00006C4C, 0x00006C7A, 0x00006CA7, 0x00006CD5, 0x00006D02, 0x00006D30, 0x00006D5D, + 0x00006D8A, 0x00006DB8, 0x00006DE5, 0x00006E13, 0x00006E40, 0x00006E6D, 0x00006E9B, 0x00006EC8, + 0x00006EF5, 0x00006F23, 0x00006F50, 0x00006F7D, 0x00006FAA, 0x00006FD8, 0x00007005, 0x00007032, + 0x0000705F, 0x0000708C, 0x000070BA, 0x000070E7, 0x00007114, 0x00007141, 0x0000716E, 0x0000719B, + 0x000071C8, 0x000071F5, 0x00007222, 0x0000724F, 0x0000727C, 0x000072A9, 0x000072D6, 0x00007303, + 0x00007330, 0x0000735D, 0x00007389, 0x000073B6, 0x000073E3, 0x00007410, 0x0000743D, 0x00007469, + 0x00007496, 0x000074C3, 0x000074F0, 0x0000751C, 0x00007549, 0x00007576, 0x000075A2, 0x000075CF, + 0x000075FC, 0x00007628, 0x00007655, 0x00007681, 0x000076AE, 0x000076DA, 0x00007707, 0x00007733, + 0x00007760, 0x0000778C, 0x000077B9, 0x000077E5, 0x00007812, 0x0000783E, 0x0000786A, 0x00007897, + 0x000078C3, 0x000078EF, 0x0000791C, 0x00007948, 0x00007974, 0x000079A0, 0x000079CD, 0x000079F9, + 0x00007A25, 0x00007A51, 0x00007A7D, 0x00007AAA, 0x00007AD6, 0x00007B02, 0x00007B2E, 0x00007B5A, + 0x00007B86, 0x00007BB2, 0x00007BDE, 0x00007C0A, 0x00007C36, 0x00007C62, 0x00007C8E, 0x00007CBA, + 0x00007CE6, 0x00007D11, 0x00007D3D, 0x00007D69, 0x00007D95, 0x00007DC1, 0x00007DEC, 0x00007E18, + 0x00007E44, 0x00007E70, 0x00007E9B, 0x00007EC7, 0x00007EF3, 0x00007F1E, 0x00007F4A, 0x00007F76, + 0x00007FA1, 0x00007FCD, 0x00007FF8, 0x00008024, 0x0000804F, 0x0000807B, 0x000080A6, 0x000080D2, + 0x000080FD, 0x00008129, 0x00008154, 0x0000817F, 0x000081AB, 0x000081D6, 0x00008201, 0x0000822D, + 0x00008258, 0x00008283, 0x000082AE, 0x000082DA, 0x00008305, 0x00008330, 0x0000835B, 0x00008386, + 0x000083B1, 0x000083DC, 0x00008407, 0x00008433, 0x0000845E, 0x00008489, 0x000084B4, 0x000084DF, + 0x00008509, 0x00008534, 0x0000855F, 0x0000858A, 0x000085B5, 0x000085E0, 0x0000860B, 0x00008636, + 0x00008660, 0x0000868B, 0x000086B6, 0x000086E1, 0x0000870B, 0x00008736, 0x00008761, 0x0000878B, + 0x000087B6, 0x000087E1, 0x0000880B, 0x00008836, 0x00008860, 0x0000888B, 0x000088B5, 0x000088E0, + 0x0000890A, 0x00008935, 0x0000895F, 0x0000898A, 0x000089B4, 0x000089DE, 0x00008A09, 0x00008A33, + 0x00008A5D, 0x00008A88, 0x00008AB2, 0x00008ADC, 0x00008B06, 0x00008B31, 0x00008B5B, 0x00008B85, + 0x00008BAF, 0x00008BD9, 0x00008C03, 0x00008C2D, 0x00008C57, 0x00008C81, 0x00008CAB, 0x00008CD5, + 0x00008CFF, 0x00008D29, 0x00008D53, 0x00008D7D, 0x00008DA7, 0x00008DD1, 0x00008DFB, 0x00008E24, + 0x00008E4E, 0x00008E78, 0x00008EA2, 0x00008ECB, 0x00008EF5, 0x00008F1F, 0x00008F49, 0x00008F72, + 0x00008F9C, 0x00008FC5, 0x00008FEF, 0x00009019, 0x00009042, 0x0000906C, 0x00009095, 0x000090BF, + 0x000090E8, 0x00009111, 0x0000913B, 0x00009164, 0x0000918E, 0x000091B7, 0x000091E0, 0x0000920A, + 0x00009233, 0x0000925C, 0x00009285, 0x000092AF, 0x000092D8, 0x00009301, 0x0000932A, 0x00009353, + 0x0000937C, 0x000093A5, 0x000093CE, 0x000093F7, 0x00009420, 0x00009449, 0x00009472, 0x0000949B, + 0x000094C4, 0x000094ED, 0x00009516, 0x0000953F, 0x00009568, 0x00009590, 0x000095B9, 0x000095E2, + 0x0000960B, 0x00009633, 0x0000965C, 0x00009685, 0x000096AD, 0x000096D6, 0x000096FF, 0x00009727, + 0x00009750, 0x00009778, 0x000097A1, 0x000097C9, 0x000097F2, 0x0000981A, 0x00009843, 0x0000986B, + 0x00009893, 0x000098BC, 0x000098E4, 0x0000990C, 0x00009935, 0x0000995D, 0x00009985, 0x000099AD, + 0x000099D6, 0x000099FE, 0x00009A26, 0x00009A4E, 0x00009A76, 0x00009A9E, 0x00009AC6, 0x00009AEE, + 0x00009B16, 0x00009B3E, 0x00009B66, 0x00009B8E, 0x00009BB6, 0x00009BDE, 0x00009C06, 0x00009C2E, + 0x00009C55, 0x00009C7D, 0x00009CA5, 0x00009CCD, 0x00009CF4, 0x00009D1C, 0x00009D44, 0x00009D6C, + 0x00009D93, 0x00009DBB, 0x00009DE2, 0x00009E0A, 0x00009E31, 0x00009E59, 0x00009E80, 0x00009EA8, + 0x00009ECF, 0x00009EF7, 0x00009F1E, 0x00009F45, 0x00009F6D, 0x00009F94, 0x00009FBB, 0x00009FE3, + 0x0000A00A, 0x0000A031, 0x0000A058, 0x0000A07F, 0x0000A0A7, 0x0000A0CE, 0x0000A0F5, 0x0000A11C, + 0x0000A143, 0x0000A16A, 0x0000A191, 0x0000A1B8, 0x0000A1DF, 0x0000A206, 0x0000A22D, 0x0000A254, + 0x0000A27B, 0x0000A2A1, 0x0000A2C8, 0x0000A2EF, 0x0000A316, 0x0000A33C, 0x0000A363, 0x0000A38A, + 0x0000A3B0, 0x0000A3D7, 0x0000A3FE, 0x0000A424, 0x0000A44B, 0x0000A471, 0x0000A498, 0x0000A4BE, + 0x0000A4E5, 0x0000A50B, 0x0000A532, 0x0000A558, 0x0000A57E, 0x0000A5A5, 0x0000A5CB, 0x0000A5F1, + 0x0000A618, 0x0000A63E, 0x0000A664, 0x0000A68A, 0x0000A6B0, 0x0000A6D7, 0x0000A6FD, 0x0000A723, + 0x0000A749, 0x0000A76F, 0x0000A795, 0x0000A7BB, 0x0000A7E1, 0x0000A807, 0x0000A82D, 0x0000A853, + 0x0000A878, 0x0000A89E, 0x0000A8C4, 0x0000A8EA, 0x0000A910, 0x0000A935, 0x0000A95B, 0x0000A981, + 0x0000A9A6, 0x0000A9CC, 0x0000A9F2, 0x0000AA17, 0x0000AA3D, 0x0000AA62, 0x0000AA88, 0x0000AAAD, + 0x0000AAD3, 0x0000AAF8, 0x0000AB1E, 0x0000AB43, 0x0000AB68, 0x0000AB8E, 0x0000ABB3, 0x0000ABD8, + 0x0000ABFD, 0x0000AC23, 0x0000AC48, 0x0000AC6D, 0x0000AC92, 0x0000ACB7, 0x0000ACDC, 0x0000AD01, + 0x0000AD26, 0x0000AD4B, 0x0000AD70, 0x0000AD95, 0x0000ADBA, 0x0000ADDF, 0x0000AE04, 0x0000AE29, + 0x0000AE4E, 0x0000AE73, 0x0000AE97, 0x0000AEBC, 0x0000AEE1, 0x0000AF06, 0x0000AF2A, 0x0000AF4F, + 0x0000AF73, 0x0000AF98, 0x0000AFBD, 0x0000AFE1, 0x0000B006, 0x0000B02A, 0x0000B04F, 0x0000B073, + 0x0000B097, 0x0000B0BC, 0x0000B0E0, 0x0000B104, 0x0000B129, 0x0000B14D, 0x0000B171, 0x0000B196, + 0x0000B1BA, 0x0000B1DE, 0x0000B202, 0x0000B226, 0x0000B24A, 0x0000B26E, 0x0000B292, 0x0000B2B6, + 0x0000B2DA, 0x0000B2FE, 0x0000B322, 0x0000B346, 0x0000B36A, 0x0000B38E, 0x0000B3B2, 0x0000B3D5, + 0x0000B3F9, 0x0000B41D, 0x0000B441, 0x0000B464, 0x0000B488, 0x0000B4AC, 0x0000B4CF, 0x0000B4F3, + 0x0000B516, 0x0000B53A, 0x0000B55D, 0x0000B581, 0x0000B5A4, 0x0000B5C8, 0x0000B5EB, 0x0000B60E, + 0x0000B632, 0x0000B655, 0x0000B678, 0x0000B69B, 0x0000B6BF, 0x0000B6E2, 0x0000B705, 0x0000B728, + 0x0000B74B, 0x0000B76E, 0x0000B791, 0x0000B7B4, 0x0000B7D7, 0x0000B7FA, 0x0000B81D, 0x0000B840, + 0x0000B863, 0x0000B886, 0x0000B8A9, 0x0000B8CC, 0x0000B8EE, 0x0000B911, 0x0000B934, 0x0000B956, + 0x0000B979, 0x0000B99C, 0x0000B9BE, 0x0000B9E1, 0x0000BA03, 0x0000BA26, 0x0000BA48, 0x0000BA6B, + 0x0000BA8D, 0x0000BAB0, 0x0000BAD2, 0x0000BAF4, 0x0000BB17, 0x0000BB39, 0x0000BB5B, 0x0000BB7E, + 0x0000BBA0, 0x0000BBC2, 0x0000BBE4, 0x0000BC06, 0x0000BC28, 0x0000BC4A, 0x0000BC6D, 0x0000BC8F, + 0x0000BCB1, 0x0000BCD2, 0x0000BCF4, 0x0000BD16, 0x0000BD38, 0x0000BD5A, 0x0000BD7C, 0x0000BD9E, + 0x0000BDBF, 0x0000BDE1, 0x0000BE03, 0x0000BE24, 0x0000BE46, 0x0000BE68, 0x0000BE89, 0x0000BEAB, + 0x0000BECC, 0x0000BEEE, 0x0000BF0F, 0x0000BF31, 0x0000BF52, 0x0000BF74, 0x0000BF95, 0x0000BFB6, + 0x0000BFD8, 0x0000BFF9, 0x0000C01A, 0x0000C03B, 0x0000C05C, 0x0000C07E, 0x0000C09F, 0x0000C0C0, + 0x0000C0E1, 0x0000C102, 0x0000C123, 0x0000C144, 0x0000C165, 0x0000C186, 0x0000C1A7, 0x0000C1C8, + 0x0000C1E8, 0x0000C209, 0x0000C22A, 0x0000C24B, 0x0000C26B, 0x0000C28C, 0x0000C2AD, 0x0000C2CD, + 0x0000C2EE, 0x0000C30F, 0x0000C32F, 0x0000C350, 0x0000C370, 0x0000C391, 0x0000C3B1, 0x0000C3D1, + 0x0000C3F2, 0x0000C412, 0x0000C432, 0x0000C453, 0x0000C473, 0x0000C493, 0x0000C4B3, 0x0000C4D3, + 0x0000C4F4, 0x0000C514, 0x0000C534, 0x0000C554, 0x0000C574, 0x0000C594, 0x0000C5B4, 0x0000C5D4, + 0x0000C5F3, 0x0000C613, 0x0000C633, 0x0000C653, 0x0000C673, 0x0000C692, 0x0000C6B2, 0x0000C6D2, + 0x0000C6F1, 0x0000C711, 0x0000C731, 0x0000C750, 0x0000C770, 0x0000C78F, 0x0000C7AF, 0x0000C7CE, + 0x0000C7EE, 0x0000C80D, 0x0000C82C, 0x0000C84C, 0x0000C86B, 0x0000C88A, 0x0000C8A9, 0x0000C8C9, + 0x0000C8E8, 0x0000C907, 0x0000C926, 0x0000C945, 0x0000C964, 0x0000C983, 0x0000C9A2, 0x0000C9C1, + 0x0000C9E0, 0x0000C9FF, 0x0000CA1E, 0x0000CA3D, 0x0000CA5B, 0x0000CA7A, 0x0000CA99, 0x0000CAB8, + 0x0000CAD6, 0x0000CAF5, 0x0000CB14, 0x0000CB32, 0x0000CB51, 0x0000CB6F, 0x0000CB8E, 0x0000CBAC, + 0x0000CBCB, 0x0000CBE9, 0x0000CC07, 0x0000CC26, 0x0000CC44, 0x0000CC62, 0x0000CC81, 0x0000CC9F, + 0x0000CCBD, 0x0000CCDB, 0x0000CCF9, 0x0000CD17, 0x0000CD36, 0x0000CD54, 0x0000CD72, 0x0000CD90, + 0x0000CDAD, 0x0000CDCB, 0x0000CDE9, 0x0000CE07, 0x0000CE25, 0x0000CE43, 0x0000CE60, 0x0000CE7E, + 0x0000CE9C, 0x0000CEBA, 0x0000CED7, 0x0000CEF5, 0x0000CF12, 0x0000CF30, 0x0000CF4D, 0x0000CF6B, + 0x0000CF88, 0x0000CFA6, 0x0000CFC3, 0x0000CFE0, 0x0000CFFE, 0x0000D01B, 0x0000D038, 0x0000D056, + 0x0000D073, 0x0000D090, 0x0000D0AD, 0x0000D0CA, 0x0000D0E7, 0x0000D104, 0x0000D121, 0x0000D13E, + 0x0000D15B, 0x0000D178, 0x0000D195, 0x0000D1B2, 0x0000D1CF, 0x0000D1EB, 0x0000D208, 0x0000D225, + 0x0000D242, 0x0000D25E, 0x0000D27B, 0x0000D297, 0x0000D2B4, 0x0000D2D1, 0x0000D2ED, 0x0000D30A, + 0x0000D326, 0x0000D342, 0x0000D35F, 0x0000D37B, 0x0000D397, 0x0000D3B4, 0x0000D3D0, 0x0000D3EC, + 0x0000D408, 0x0000D424, 0x0000D441, 0x0000D45D, 0x0000D479, 0x0000D495, 0x0000D4B1, 0x0000D4CD, + 0x0000D4E9, 0x0000D505, 0x0000D520, 0x0000D53C, 0x0000D558, 0x0000D574, 0x0000D590, 0x0000D5AB, + 0x0000D5C7, 0x0000D5E3, 0x0000D5FE, 0x0000D61A, 0x0000D635, 0x0000D651, 0x0000D66C, 0x0000D688, + 0x0000D6A3, 0x0000D6BE, 0x0000D6DA, 0x0000D6F5, 0x0000D710, 0x0000D72C, 0x0000D747, 0x0000D762, + 0x0000D77D, 0x0000D798, 0x0000D7B3, 0x0000D7CE, 0x0000D7EA, 0x0000D804, 0x0000D81F, 0x0000D83A, + 0x0000D855, 0x0000D870, 0x0000D88B, 0x0000D8A6, 0x0000D8C1, 0x0000D8DB, 0x0000D8F6, 0x0000D911, + 0x0000D92B, 0x0000D946, 0x0000D960, 0x0000D97B, 0x0000D995, 0x0000D9B0, 0x0000D9CA, 0x0000D9E5, + 0x0000D9FF, 0x0000DA19, 0x0000DA34, 0x0000DA4E, 0x0000DA68, 0x0000DA82, 0x0000DA9D, 0x0000DAB7, + 0x0000DAD1, 0x0000DAEB, 0x0000DB05, 0x0000DB1F, 0x0000DB39, 0x0000DB53, 0x0000DB6D, 0x0000DB87, + 0x0000DBA1, 0x0000DBBA, 0x0000DBD4, 0x0000DBEE, 0x0000DC08, 0x0000DC21, 0x0000DC3B, 0x0000DC54, + 0x0000DC6E, 0x0000DC88, 0x0000DCA1, 0x0000DCBB, 0x0000DCD4, 0x0000DCED, 0x0000DD07, 0x0000DD20, + 0x0000DD39, 0x0000DD53, 0x0000DD6C, 0x0000DD85, 0x0000DD9E, 0x0000DDB8, 0x0000DDD1, 0x0000DDEA, + 0x0000DE03, 0x0000DE1C, 0x0000DE35, 0x0000DE4E, 0x0000DE67, 0x0000DE7F, 0x0000DE98, 0x0000DEB1, + 0x0000DECA, 0x0000DEE3, 0x0000DEFB, 0x0000DF14, 0x0000DF2D, 0x0000DF45, 0x0000DF5E, 0x0000DF76, + 0x0000DF8F, 0x0000DFA7, 0x0000DFC0, 0x0000DFD8, 0x0000DFF1, 0x0000E009, 0x0000E021, 0x0000E03A, + 0x0000E052, 0x0000E06A, 0x0000E082, 0x0000E09A, 0x0000E0B2, 0x0000E0CA, 0x0000E0E2, 0x0000E0FA, + 0x0000E112, 0x0000E12A, 0x0000E142, 0x0000E15A, 0x0000E172, 0x0000E18A, 0x0000E1A2, 0x0000E1B9, + 0x0000E1D1, 0x0000E1E9, 0x0000E200, 0x0000E218, 0x0000E22F, 0x0000E247, 0x0000E25E, 0x0000E276, + 0x0000E28D, 0x0000E2A5, 0x0000E2BC, 0x0000E2D3, 0x0000E2EB, 0x0000E302, 0x0000E319, 0x0000E330, + 0x0000E347, 0x0000E35F, 0x0000E376, 0x0000E38D, 0x0000E3A4, 0x0000E3BB, 0x0000E3D2, 0x0000E3E9, + 0x0000E3FF, 0x0000E416, 0x0000E42D, 0x0000E444, 0x0000E45B, 0x0000E471, 0x0000E488, 0x0000E49F, + 0x0000E4B5, 0x0000E4CC, 0x0000E4E2, 0x0000E4F9, 0x0000E50F, 0x0000E526, 0x0000E53C, 0x0000E552, + 0x0000E569, 0x0000E57F, 0x0000E595, 0x0000E5AB, 0x0000E5C2, 0x0000E5D8, 0x0000E5EE, 0x0000E604, + 0x0000E61A, 0x0000E630, 0x0000E646, 0x0000E65C, 0x0000E672, 0x0000E688, 0x0000E69E, 0x0000E6B3, + 0x0000E6C9, 0x0000E6DF, 0x0000E6F5, 0x0000E70A, 0x0000E720, 0x0000E736, 0x0000E74B, 0x0000E761, + 0x0000E776, 0x0000E78C, 0x0000E7A1, 0x0000E7B6, 0x0000E7CC, 0x0000E7E1, 0x0000E7F6, 0x0000E80C, + 0x0000E821, 0x0000E836, 0x0000E84B, 0x0000E860, 0x0000E875, 0x0000E88A, 0x0000E89F, 0x0000E8B4, + 0x0000E8C9, 0x0000E8DE, 0x0000E8F3, 0x0000E908, 0x0000E91D, 0x0000E931, 0x0000E946, 0x0000E95B, + 0x0000E96F, 0x0000E984, 0x0000E999, 0x0000E9AD, 0x0000E9C2, 0x0000E9D6, 0x0000E9EB, 0x0000E9FF, + 0x0000EA13, 0x0000EA28, 0x0000EA3C, 0x0000EA50, 0x0000EA64, 0x0000EA79, 0x0000EA8D, 0x0000EAA1, + 0x0000EAB5, 0x0000EAC9, 0x0000EADD, 0x0000EAF1, 0x0000EB05, 0x0000EB19, 0x0000EB2D, 0x0000EB41, + 0x0000EB54, 0x0000EB68, 0x0000EB7C, 0x0000EB90, 0x0000EBA3, 0x0000EBB7, 0x0000EBCB, 0x0000EBDE, + 0x0000EBF2, 0x0000EC05, 0x0000EC19, 0x0000EC2C, 0x0000EC3F, 0x0000EC53, 0x0000EC66, 0x0000EC79, + 0x0000EC8C, 0x0000ECA0, 0x0000ECB3, 0x0000ECC6, 0x0000ECD9, 0x0000ECEC, 0x0000ECFF, 0x0000ED12, + 0x0000ED25, 0x0000ED38, 0x0000ED4B, 0x0000ED5E, 0x0000ED71, 0x0000ED83, 0x0000ED96, 0x0000EDA9, + 0x0000EDBB, 0x0000EDCE, 0x0000EDE1, 0x0000EDF3, 0x0000EE06, 0x0000EE18, 0x0000EE2B, 0x0000EE3D, + 0x0000EE4F, 0x0000EE62, 0x0000EE74, 0x0000EE86, 0x0000EE99, 0x0000EEAB, 0x0000EEBD, 0x0000EECF, + 0x0000EEE1, 0x0000EEF3, 0x0000EF05, 0x0000EF17, 0x0000EF29, 0x0000EF3B, 0x0000EF4D, 0x0000EF5F, + 0x0000EF71, 0x0000EF82, 0x0000EF94, 0x0000EFA6, 0x0000EFB7, 0x0000EFC9, 0x0000EFDB, 0x0000EFEC, + 0x0000EFFE, 0x0000F00F, 0x0000F021, 0x0000F032, 0x0000F043, 0x0000F055, 0x0000F066, 0x0000F077, + 0x0000F089, 0x0000F09A, 0x0000F0AB, 0x0000F0BC, 0x0000F0CD, 0x0000F0DE, 0x0000F0EF, 0x0000F100, + 0x0000F111, 0x0000F122, 0x0000F133, 0x0000F144, 0x0000F154, 0x0000F165, 0x0000F176, 0x0000F187, + 0x0000F197, 0x0000F1A8, 0x0000F1B8, 0x0000F1C9, 0x0000F1D9, 0x0000F1EA, 0x0000F1FA, 0x0000F20B, + 0x0000F21B, 0x0000F22B, 0x0000F23C, 0x0000F24C, 0x0000F25C, 0x0000F26C, 0x0000F27C, 0x0000F28C, + 0x0000F29C, 0x0000F2AD, 0x0000F2BD, 0x0000F2CC, 0x0000F2DC, 0x0000F2EC, 0x0000F2FC, 0x0000F30C, + 0x0000F31C, 0x0000F32B, 0x0000F33B, 0x0000F34B, 0x0000F35A, 0x0000F36A, 0x0000F379, 0x0000F389, + 0x0000F398, 0x0000F3A8, 0x0000F3B7, 0x0000F3C7, 0x0000F3D6, 0x0000F3E5, 0x0000F3F5, 0x0000F404, + 0x0000F413, 0x0000F422, 0x0000F431, 0x0000F440, 0x0000F44F, 0x0000F45E, 0x0000F46D, 0x0000F47C, + 0x0000F48B, 0x0000F49A, 0x0000F4A9, 0x0000F4B8, 0x0000F4C6, 0x0000F4D5, 0x0000F4E4, 0x0000F4F2, + 0x0000F501, 0x0000F50F, 0x0000F51E, 0x0000F52C, 0x0000F53B, 0x0000F549, 0x0000F558, 0x0000F566, + 0x0000F574, 0x0000F582, 0x0000F591, 0x0000F59F, 0x0000F5AD, 0x0000F5BB, 0x0000F5C9, 0x0000F5D7, + 0x0000F5E5, 0x0000F5F3, 0x0000F601, 0x0000F60F, 0x0000F61D, 0x0000F62B, 0x0000F638, 0x0000F646, + 0x0000F654, 0x0000F662, 0x0000F66F, 0x0000F67D, 0x0000F68A, 0x0000F698, 0x0000F6A5, 0x0000F6B3, + 0x0000F6C0, 0x0000F6CE, 0x0000F6DB, 0x0000F6E8, 0x0000F6F5, 0x0000F703, 0x0000F710, 0x0000F71D, + 0x0000F72A, 0x0000F737, 0x0000F744, 0x0000F751, 0x0000F75E, 0x0000F76B, 0x0000F778, 0x0000F785, + 0x0000F792, 0x0000F79E, 0x0000F7AB, 0x0000F7B8, 0x0000F7C5, 0x0000F7D1, 0x0000F7DE, 0x0000F7EA, + 0x0000F7F7, 0x0000F803, 0x0000F810, 0x0000F81C, 0x0000F828, 0x0000F835, 0x0000F841, 0x0000F84D, + 0x0000F85A, 0x0000F866, 0x0000F872, 0x0000F87E, 0x0000F88A, 0x0000F896, 0x0000F8A2, 0x0000F8AE, + 0x0000F8BA, 0x0000F8C6, 0x0000F8D2, 0x0000F8DD, 0x0000F8E9, 0x0000F8F5, 0x0000F901, 0x0000F90C, + 0x0000F918, 0x0000F923, 0x0000F92F, 0x0000F93B, 0x0000F946, 0x0000F951, 0x0000F95D, 0x0000F968, + 0x0000F973, 0x0000F97F, 0x0000F98A, 0x0000F995, 0x0000F9A0, 0x0000F9AB, 0x0000F9B7, 0x0000F9C2, + 0x0000F9CD, 0x0000F9D8, 0x0000F9E3, 0x0000F9ED, 0x0000F9F8, 0x0000FA03, 0x0000FA0E, 0x0000FA19, + 0x0000FA23, 0x0000FA2E, 0x0000FA39, 0x0000FA43, 0x0000FA4E, 0x0000FA58, 0x0000FA63, 0x0000FA6D, + 0x0000FA78, 0x0000FA82, 0x0000FA8C, 0x0000FA97, 0x0000FAA1, 0x0000FAAB, 0x0000FAB5, 0x0000FAC0, + 0x0000FACA, 0x0000FAD4, 0x0000FADE, 0x0000FAE8, 0x0000FAF2, 0x0000FAFC, 0x0000FB05, 0x0000FB0F, + 0x0000FB19, 0x0000FB23, 0x0000FB2D, 0x0000FB36, 0x0000FB40, 0x0000FB4A, 0x0000FB53, 0x0000FB5D, + 0x0000FB66, 0x0000FB70, 0x0000FB79, 0x0000FB83, 0x0000FB8C, 0x0000FB95, 0x0000FB9E, 0x0000FBA8, + 0x0000FBB1, 0x0000FBBA, 0x0000FBC3, 0x0000FBCC, 0x0000FBD5, 0x0000FBDE, 0x0000FBE7, 0x0000FBF0, + 0x0000FBF9, 0x0000FC02, 0x0000FC0B, 0x0000FC14, 0x0000FC1C, 0x0000FC25, 0x0000FC2E, 0x0000FC36, + 0x0000FC3F, 0x0000FC48, 0x0000FC50, 0x0000FC59, 0x0000FC61, 0x0000FC69, 0x0000FC72, 0x0000FC7A, + 0x0000FC82, 0x0000FC8B, 0x0000FC93, 0x0000FC9B, 0x0000FCA3, 0x0000FCAB, 0x0000FCB3, 0x0000FCBB, + 0x0000FCC3, 0x0000FCCB, 0x0000FCD3, 0x0000FCDB, 0x0000FCE3, 0x0000FCEB, 0x0000FCF2, 0x0000FCFA, + 0x0000FD02, 0x0000FD09, 0x0000FD11, 0x0000FD19, 0x0000FD20, 0x0000FD28, 0x0000FD2F, 0x0000FD36, + 0x0000FD3E, 0x0000FD45, 0x0000FD4C, 0x0000FD54, 0x0000FD5B, 0x0000FD62, 0x0000FD69, 0x0000FD70, + 0x0000FD77, 0x0000FD7F, 0x0000FD86, 0x0000FD8C, 0x0000FD93, 0x0000FD9A, 0x0000FDA1, 0x0000FDA8, + 0x0000FDAF, 0x0000FDB5, 0x0000FDBC, 0x0000FDC3, 0x0000FDC9, 0x0000FDD0, 0x0000FDD6, 0x0000FDDD, + 0x0000FDE3, 0x0000FDEA, 0x0000FDF0, 0x0000FDF7, 0x0000FDFD, 0x0000FE03, 0x0000FE09, 0x0000FE10, + 0x0000FE16, 0x0000FE1C, 0x0000FE22, 0x0000FE28, 0x0000FE2E, 0x0000FE34, 0x0000FE3A, 0x0000FE40, + 0x0000FE46, 0x0000FE4B, 0x0000FE51, 0x0000FE57, 0x0000FE5D, 0x0000FE62, 0x0000FE68, 0x0000FE6D, + 0x0000FE73, 0x0000FE78, 0x0000FE7E, 0x0000FE83, 0x0000FE89, 0x0000FE8E, 0x0000FE93, 0x0000FE99, + 0x0000FE9E, 0x0000FEA3, 0x0000FEA8, 0x0000FEAD, 0x0000FEB2, 0x0000FEB7, 0x0000FEBC, 0x0000FEC1, + 0x0000FEC6, 0x0000FECB, 0x0000FED0, 0x0000FED5, 0x0000FEDA, 0x0000FEDE, 0x0000FEE3, 0x0000FEE8, + 0x0000FEEC, 0x0000FEF1, 0x0000FEF6, 0x0000FEFA, 0x0000FEFF, 0x0000FF03, 0x0000FF07, 0x0000FF0C, + 0x0000FF10, 0x0000FF14, 0x0000FF19, 0x0000FF1D, 0x0000FF21, 0x0000FF25, 0x0000FF29, 0x0000FF2D, + 0x0000FF31, 0x0000FF35, 0x0000FF39, 0x0000FF3D, 0x0000FF41, 0x0000FF45, 0x0000FF48, 0x0000FF4C, + 0x0000FF50, 0x0000FF53, 0x0000FF57, 0x0000FF5B, 0x0000FF5E, 0x0000FF62, 0x0000FF65, 0x0000FF69, + 0x0000FF6C, 0x0000FF6F, 0x0000FF73, 0x0000FF76, 0x0000FF79, 0x0000FF7C, 0x0000FF80, 0x0000FF83, + 0x0000FF86, 0x0000FF89, 0x0000FF8C, 0x0000FF8F, 0x0000FF92, 0x0000FF95, 0x0000FF97, 0x0000FF9A, + 0x0000FF9D, 0x0000FFA0, 0x0000FFA2, 0x0000FFA5, 0x0000FFA8, 0x0000FFAA, 0x0000FFAD, 0x0000FFAF, + 0x0000FFB2, 0x0000FFB4, 0x0000FFB7, 0x0000FFB9, 0x0000FFBB, 0x0000FFBE, 0x0000FFC0, 0x0000FFC2, + 0x0000FFC4, 0x0000FFC6, 0x0000FFC8, 0x0000FFCA, 0x0000FFCC, 0x0000FFCE, 0x0000FFD0, 0x0000FFD2, + 0x0000FFD4, 0x0000FFD6, 0x0000FFD8, 0x0000FFD9, 0x0000FFDB, 0x0000FFDD, 0x0000FFDE, 0x0000FFE0, + 0x0000FFE1, 0x0000FFE3, 0x0000FFE4, 0x0000FFE6, 0x0000FFE7, 0x0000FFE9, 0x0000FFEA, 0x0000FFEB, + 0x0000FFEC, 0x0000FFEE, 0x0000FFEF, 0x0000FFF0, 0x0000FFF1, 0x0000FFF2, 0x0000FFF3, 0x0000FFF4, + 0x0000FFF5, 0x0000FFF6, 0x0000FFF7, 0x0000FFF7, 0x0000FFF8, 0x0000FFF9, 0x0000FFFA, 0x0000FFFA, + 0x0000FFFB, 0x0000FFFB, 0x0000FFFC, 0x0000FFFC, 0x0000FFFD, 0x0000FFFD, 0x0000FFFE, 0x0000FFFE, + 0x0000FFFE, 0x0000FFFF, 0x0000FFFF, 0x0000FFFF, 0x0000FFFF, 0x0000FFFF, 0x0000FFFF, 0x0000FFFF, + 0x0000FFFF, 0x0000FFFF, 0x0000FFFF, 0x0000FFFF, 0x0000FFFF, 0x0000FFFF, 0x0000FFFF, 0x0000FFFE, + 0x0000FFFE, 0x0000FFFE, 0x0000FFFD, 0x0000FFFD, 0x0000FFFC, 0x0000FFFC, 0x0000FFFB, 0x0000FFFB, + 0x0000FFFA, 0x0000FFFA, 0x0000FFF9, 0x0000FFF8, 0x0000FFF7, 0x0000FFF7, 0x0000FFF6, 0x0000FFF5, + 0x0000FFF4, 0x0000FFF3, 0x0000FFF2, 0x0000FFF1, 0x0000FFF0, 0x0000FFEF, 0x0000FFEE, 0x0000FFEC, + 0x0000FFEB, 0x0000FFEA, 0x0000FFE9, 0x0000FFE7, 0x0000FFE6, 0x0000FFE4, 0x0000FFE3, 0x0000FFE1, + 0x0000FFE0, 0x0000FFDE, 0x0000FFDD, 0x0000FFDB, 0x0000FFD9, 0x0000FFD8, 0x0000FFD6, 0x0000FFD4, + 0x0000FFD2, 0x0000FFD0, 0x0000FFCE, 0x0000FFCC, 0x0000FFCA, 0x0000FFC8, 0x0000FFC6, 0x0000FFC4, + 0x0000FFC2, 0x0000FFC0, 0x0000FFBE, 0x0000FFBB, 0x0000FFB9, 0x0000FFB7, 0x0000FFB4, 0x0000FFB2, + 0x0000FFAF, 0x0000FFAD, 0x0000FFAA, 0x0000FFA8, 0x0000FFA5, 0x0000FFA2, 0x0000FFA0, 0x0000FF9D, + 0x0000FF9A, 0x0000FF97, 0x0000FF95, 0x0000FF92, 0x0000FF8F, 0x0000FF8C, 0x0000FF89, 0x0000FF86, + 0x0000FF83, 0x0000FF80, 0x0000FF7C, 0x0000FF79, 0x0000FF76, 0x0000FF73, 0x0000FF6F, 0x0000FF6C, + 0x0000FF69, 0x0000FF65, 0x0000FF62, 0x0000FF5E, 0x0000FF5B, 0x0000FF57, 0x0000FF53, 0x0000FF50, + 0x0000FF4C, 0x0000FF48, 0x0000FF45, 0x0000FF41, 0x0000FF3D, 0x0000FF39, 0x0000FF35, 0x0000FF31, + 0x0000FF2D, 0x0000FF29, 0x0000FF25, 0x0000FF21, 0x0000FF1D, 0x0000FF19, 0x0000FF14, 0x0000FF10, + 0x0000FF0C, 0x0000FF07, 0x0000FF03, 0x0000FEFF, 0x0000FEFA, 0x0000FEF6, 0x0000FEF1, 0x0000FEEC, + 0x0000FEE8, 0x0000FEE3, 0x0000FEDE, 0x0000FEDA, 0x0000FED5, 0x0000FED0, 0x0000FECB, 0x0000FEC6, + 0x0000FEC1, 0x0000FEBC, 0x0000FEB7, 0x0000FEB2, 0x0000FEAD, 0x0000FEA8, 0x0000FEA3, 0x0000FE9E, + 0x0000FE99, 0x0000FE93, 0x0000FE8E, 0x0000FE89, 0x0000FE83, 0x0000FE7E, 0x0000FE78, 0x0000FE73, + 0x0000FE6D, 0x0000FE68, 0x0000FE62, 0x0000FE5D, 0x0000FE57, 0x0000FE51, 0x0000FE4B, 0x0000FE46, + 0x0000FE40, 0x0000FE3A, 0x0000FE34, 0x0000FE2E, 0x0000FE28, 0x0000FE22, 0x0000FE1C, 0x0000FE16, + 0x0000FE10, 0x0000FE09, 0x0000FE03, 0x0000FDFD, 0x0000FDF7, 0x0000FDF0, 0x0000FDEA, 0x0000FDE3, + 0x0000FDDD, 0x0000FDD6, 0x0000FDD0, 0x0000FDC9, 0x0000FDC3, 0x0000FDBC, 0x0000FDB5, 0x0000FDAF, + 0x0000FDA8, 0x0000FDA1, 0x0000FD9A, 0x0000FD93, 0x0000FD8C, 0x0000FD86, 0x0000FD7F, 0x0000FD77, + 0x0000FD70, 0x0000FD69, 0x0000FD62, 0x0000FD5B, 0x0000FD54, 0x0000FD4C, 0x0000FD45, 0x0000FD3E, + 0x0000FD36, 0x0000FD2F, 0x0000FD28, 0x0000FD20, 0x0000FD19, 0x0000FD11, 0x0000FD09, 0x0000FD02, + 0x0000FCFA, 0x0000FCF2, 0x0000FCEB, 0x0000FCE3, 0x0000FCDB, 0x0000FCD3, 0x0000FCCB, 0x0000FCC3, + 0x0000FCBB, 0x0000FCB3, 0x0000FCAB, 0x0000FCA3, 0x0000FC9B, 0x0000FC93, 0x0000FC8B, 0x0000FC82, + 0x0000FC7A, 0x0000FC72, 0x0000FC69, 0x0000FC61, 0x0000FC58, 0x0000FC50, 0x0000FC48, 0x0000FC3F, + 0x0000FC36, 0x0000FC2E, 0x0000FC25, 0x0000FC1C, 0x0000FC14, 0x0000FC0B, 0x0000FC02, 0x0000FBF9, + 0x0000FBF0, 0x0000FBE7, 0x0000FBDE, 0x0000FBD5, 0x0000FBCC, 0x0000FBC3, 0x0000FBBA, 0x0000FBB1, + 0x0000FBA8, 0x0000FB9E, 0x0000FB95, 0x0000FB8C, 0x0000FB83, 0x0000FB79, 0x0000FB70, 0x0000FB66, + 0x0000FB5D, 0x0000FB53, 0x0000FB4A, 0x0000FB40, 0x0000FB36, 0x0000FB2D, 0x0000FB23, 0x0000FB19, + 0x0000FB0F, 0x0000FB05, 0x0000FAFC, 0x0000FAF2, 0x0000FAE8, 0x0000FADE, 0x0000FAD4, 0x0000FACA, + 0x0000FAC0, 0x0000FAB5, 0x0000FAAB, 0x0000FAA1, 0x0000FA97, 0x0000FA8C, 0x0000FA82, 0x0000FA78, + 0x0000FA6D, 0x0000FA63, 0x0000FA58, 0x0000FA4E, 0x0000FA43, 0x0000FA39, 0x0000FA2E, 0x0000FA23, + 0x0000FA19, 0x0000FA0E, 0x0000FA03, 0x0000F9F8, 0x0000F9ED, 0x0000F9E3, 0x0000F9D8, 0x0000F9CD, + 0x0000F9C2, 0x0000F9B7, 0x0000F9AB, 0x0000F9A0, 0x0000F995, 0x0000F98A, 0x0000F97F, 0x0000F973, + 0x0000F968, 0x0000F95D, 0x0000F951, 0x0000F946, 0x0000F93B, 0x0000F92F, 0x0000F923, 0x0000F918, + 0x0000F90C, 0x0000F901, 0x0000F8F5, 0x0000F8E9, 0x0000F8DD, 0x0000F8D2, 0x0000F8C6, 0x0000F8BA, + 0x0000F8AE, 0x0000F8A2, 0x0000F896, 0x0000F88A, 0x0000F87E, 0x0000F872, 0x0000F866, 0x0000F85A, + 0x0000F84D, 0x0000F841, 0x0000F835, 0x0000F828, 0x0000F81C, 0x0000F810, 0x0000F803, 0x0000F7F7, + 0x0000F7EA, 0x0000F7DE, 0x0000F7D1, 0x0000F7C5, 0x0000F7B8, 0x0000F7AB, 0x0000F79E, 0x0000F792, + 0x0000F785, 0x0000F778, 0x0000F76B, 0x0000F75E, 0x0000F751, 0x0000F744, 0x0000F737, 0x0000F72A, + 0x0000F71D, 0x0000F710, 0x0000F703, 0x0000F6F5, 0x0000F6E8, 0x0000F6DB, 0x0000F6CE, 0x0000F6C0, + 0x0000F6B3, 0x0000F6A5, 0x0000F698, 0x0000F68A, 0x0000F67D, 0x0000F66F, 0x0000F662, 0x0000F654, + 0x0000F646, 0x0000F638, 0x0000F62B, 0x0000F61D, 0x0000F60F, 0x0000F601, 0x0000F5F3, 0x0000F5E5, + 0x0000F5D7, 0x0000F5C9, 0x0000F5BB, 0x0000F5AD, 0x0000F59F, 0x0000F591, 0x0000F582, 0x0000F574, + 0x0000F566, 0x0000F558, 0x0000F549, 0x0000F53B, 0x0000F52C, 0x0000F51E, 0x0000F50F, 0x0000F501, + 0x0000F4F2, 0x0000F4E4, 0x0000F4D5, 0x0000F4C6, 0x0000F4B8, 0x0000F4A9, 0x0000F49A, 0x0000F48B, + 0x0000F47C, 0x0000F46D, 0x0000F45E, 0x0000F44F, 0x0000F440, 0x0000F431, 0x0000F422, 0x0000F413, + 0x0000F404, 0x0000F3F5, 0x0000F3E5, 0x0000F3D6, 0x0000F3C7, 0x0000F3B7, 0x0000F3A8, 0x0000F398, + 0x0000F389, 0x0000F379, 0x0000F36A, 0x0000F35A, 0x0000F34B, 0x0000F33B, 0x0000F32B, 0x0000F31C, + 0x0000F30C, 0x0000F2FC, 0x0000F2EC, 0x0000F2DC, 0x0000F2CC, 0x0000F2BD, 0x0000F2AD, 0x0000F29C, + 0x0000F28C, 0x0000F27C, 0x0000F26C, 0x0000F25C, 0x0000F24C, 0x0000F23C, 0x0000F22B, 0x0000F21B, + 0x0000F20B, 0x0000F1FA, 0x0000F1EA, 0x0000F1D9, 0x0000F1C9, 0x0000F1B8, 0x0000F1A8, 0x0000F197, + 0x0000F187, 0x0000F176, 0x0000F165, 0x0000F154, 0x0000F144, 0x0000F133, 0x0000F122, 0x0000F111, + 0x0000F100, 0x0000F0EF, 0x0000F0DE, 0x0000F0CD, 0x0000F0BC, 0x0000F0AB, 0x0000F09A, 0x0000F089, + 0x0000F077, 0x0000F066, 0x0000F055, 0x0000F043, 0x0000F032, 0x0000F021, 0x0000F00F, 0x0000EFFE, + 0x0000EFEC, 0x0000EFDB, 0x0000EFC9, 0x0000EFB7, 0x0000EFA6, 0x0000EF94, 0x0000EF82, 0x0000EF71, + 0x0000EF5F, 0x0000EF4D, 0x0000EF3B, 0x0000EF29, 0x0000EF17, 0x0000EF05, 0x0000EEF3, 0x0000EEE1, + 0x0000EECF, 0x0000EEBD, 0x0000EEAB, 0x0000EE99, 0x0000EE86, 0x0000EE74, 0x0000EE62, 0x0000EE4F, + 0x0000EE3D, 0x0000EE2B, 0x0000EE18, 0x0000EE06, 0x0000EDF3, 0x0000EDE1, 0x0000EDCE, 0x0000EDBB, + 0x0000EDA9, 0x0000ED96, 0x0000ED83, 0x0000ED71, 0x0000ED5E, 0x0000ED4B, 0x0000ED38, 0x0000ED25, + 0x0000ED12, 0x0000ECFF, 0x0000ECEC, 0x0000ECD9, 0x0000ECC6, 0x0000ECB3, 0x0000ECA0, 0x0000EC8C, + 0x0000EC79, 0x0000EC66, 0x0000EC53, 0x0000EC3F, 0x0000EC2C, 0x0000EC19, 0x0000EC05, 0x0000EBF2, + 0x0000EBDE, 0x0000EBCB, 0x0000EBB7, 0x0000EBA3, 0x0000EB90, 0x0000EB7C, 0x0000EB68, 0x0000EB54, + 0x0000EB41, 0x0000EB2D, 0x0000EB19, 0x0000EB05, 0x0000EAF1, 0x0000EADD, 0x0000EAC9, 0x0000EAB5, + 0x0000EAA1, 0x0000EA8D, 0x0000EA79, 0x0000EA64, 0x0000EA50, 0x0000EA3C, 0x0000EA28, 0x0000EA13, + 0x0000E9FF, 0x0000E9EB, 0x0000E9D6, 0x0000E9C2, 0x0000E9AD, 0x0000E999, 0x0000E984, 0x0000E96F, + 0x0000E95B, 0x0000E946, 0x0000E931, 0x0000E91D, 0x0000E908, 0x0000E8F3, 0x0000E8DE, 0x0000E8C9, + 0x0000E8B4, 0x0000E89F, 0x0000E88A, 0x0000E875, 0x0000E860, 0x0000E84B, 0x0000E836, 0x0000E821, + 0x0000E80C, 0x0000E7F6, 0x0000E7E1, 0x0000E7CC, 0x0000E7B6, 0x0000E7A1, 0x0000E78C, 0x0000E776, + 0x0000E761, 0x0000E74B, 0x0000E736, 0x0000E720, 0x0000E70A, 0x0000E6F5, 0x0000E6DF, 0x0000E6C9, + 0x0000E6B3, 0x0000E69E, 0x0000E688, 0x0000E672, 0x0000E65C, 0x0000E646, 0x0000E630, 0x0000E61A, + 0x0000E604, 0x0000E5EE, 0x0000E5D8, 0x0000E5C2, 0x0000E5AB, 0x0000E595, 0x0000E57F, 0x0000E569, + 0x0000E552, 0x0000E53C, 0x0000E526, 0x0000E50F, 0x0000E4F9, 0x0000E4E2, 0x0000E4CC, 0x0000E4B5, + 0x0000E49F, 0x0000E488, 0x0000E471, 0x0000E45B, 0x0000E444, 0x0000E42D, 0x0000E416, 0x0000E3FF, + 0x0000E3E9, 0x0000E3D2, 0x0000E3BB, 0x0000E3A4, 0x0000E38D, 0x0000E376, 0x0000E35F, 0x0000E347, + 0x0000E330, 0x0000E319, 0x0000E302, 0x0000E2EB, 0x0000E2D3, 0x0000E2BC, 0x0000E2A5, 0x0000E28D, + 0x0000E276, 0x0000E25E, 0x0000E247, 0x0000E22F, 0x0000E218, 0x0000E200, 0x0000E1E9, 0x0000E1D1, + 0x0000E1B9, 0x0000E1A2, 0x0000E18A, 0x0000E172, 0x0000E15A, 0x0000E142, 0x0000E12A, 0x0000E112, + 0x0000E0FA, 0x0000E0E2, 0x0000E0CA, 0x0000E0B2, 0x0000E09A, 0x0000E082, 0x0000E06A, 0x0000E052, + 0x0000E03A, 0x0000E021, 0x0000E009, 0x0000DFF1, 0x0000DFD8, 0x0000DFC0, 0x0000DFA7, 0x0000DF8F, + 0x0000DF76, 0x0000DF5E, 0x0000DF45, 0x0000DF2D, 0x0000DF14, 0x0000DEFB, 0x0000DEE3, 0x0000DECA, + 0x0000DEB1, 0x0000DE98, 0x0000DE7F, 0x0000DE67, 0x0000DE4E, 0x0000DE35, 0x0000DE1C, 0x0000DE03, + 0x0000DDEA, 0x0000DDD1, 0x0000DDB8, 0x0000DD9E, 0x0000DD85, 0x0000DD6C, 0x0000DD53, 0x0000DD39, + 0x0000DD20, 0x0000DD07, 0x0000DCED, 0x0000DCD4, 0x0000DCBB, 0x0000DCA1, 0x0000DC88, 0x0000DC6E, + 0x0000DC54, 0x0000DC3B, 0x0000DC21, 0x0000DC08, 0x0000DBEE, 0x0000DBD4, 0x0000DBBA, 0x0000DBA1, + 0x0000DB87, 0x0000DB6D, 0x0000DB53, 0x0000DB39, 0x0000DB1F, 0x0000DB05, 0x0000DAEB, 0x0000DAD1, + 0x0000DAB7, 0x0000DA9D, 0x0000DA82, 0x0000DA68, 0x0000DA4E, 0x0000DA34, 0x0000DA19, 0x0000D9FF, + 0x0000D9E5, 0x0000D9CA, 0x0000D9B0, 0x0000D995, 0x0000D97B, 0x0000D960, 0x0000D946, 0x0000D92B, + 0x0000D911, 0x0000D8F6, 0x0000D8DB, 0x0000D8C1, 0x0000D8A6, 0x0000D88B, 0x0000D870, 0x0000D855, + 0x0000D83A, 0x0000D81F, 0x0000D804, 0x0000D7EA, 0x0000D7CE, 0x0000D7B3, 0x0000D798, 0x0000D77D, + 0x0000D762, 0x0000D747, 0x0000D72C, 0x0000D710, 0x0000D6F5, 0x0000D6DA, 0x0000D6BE, 0x0000D6A3, + 0x0000D688, 0x0000D66C, 0x0000D651, 0x0000D635, 0x0000D61A, 0x0000D5FE, 0x0000D5E3, 0x0000D5C7, + 0x0000D5AB, 0x0000D590, 0x0000D574, 0x0000D558, 0x0000D53C, 0x0000D520, 0x0000D505, 0x0000D4E9, + 0x0000D4CD, 0x0000D4B1, 0x0000D495, 0x0000D479, 0x0000D45D, 0x0000D441, 0x0000D424, 0x0000D408, + 0x0000D3EC, 0x0000D3D0, 0x0000D3B4, 0x0000D397, 0x0000D37B, 0x0000D35F, 0x0000D342, 0x0000D326, + 0x0000D30A, 0x0000D2ED, 0x0000D2D1, 0x0000D2B4, 0x0000D297, 0x0000D27B, 0x0000D25E, 0x0000D242, + 0x0000D225, 0x0000D208, 0x0000D1EB, 0x0000D1CF, 0x0000D1B2, 0x0000D195, 0x0000D178, 0x0000D15B, + 0x0000D13E, 0x0000D121, 0x0000D104, 0x0000D0E7, 0x0000D0CA, 0x0000D0AD, 0x0000D090, 0x0000D073, + 0x0000D056, 0x0000D038, 0x0000D01B, 0x0000CFFE, 0x0000CFE0, 0x0000CFC3, 0x0000CFA6, 0x0000CF88, + 0x0000CF6B, 0x0000CF4D, 0x0000CF30, 0x0000CF12, 0x0000CEF5, 0x0000CED7, 0x0000CEBA, 0x0000CE9C, + 0x0000CE7E, 0x0000CE60, 0x0000CE43, 0x0000CE25, 0x0000CE07, 0x0000CDE9, 0x0000CDCB, 0x0000CDAD, + 0x0000CD90, 0x0000CD72, 0x0000CD54, 0x0000CD36, 0x0000CD17, 0x0000CCF9, 0x0000CCDB, 0x0000CCBD, + 0x0000CC9F, 0x0000CC81, 0x0000CC62, 0x0000CC44, 0x0000CC26, 0x0000CC07, 0x0000CBE9, 0x0000CBCB, + 0x0000CBAC, 0x0000CB8E, 0x0000CB6F, 0x0000CB51, 0x0000CB32, 0x0000CB14, 0x0000CAF5, 0x0000CAD6, + 0x0000CAB8, 0x0000CA99, 0x0000CA7A, 0x0000CA5B, 0x0000CA3D, 0x0000CA1E, 0x0000C9FF, 0x0000C9E0, + 0x0000C9C1, 0x0000C9A2, 0x0000C983, 0x0000C964, 0x0000C945, 0x0000C926, 0x0000C907, 0x0000C8E8, + 0x0000C8C9, 0x0000C8A9, 0x0000C88A, 0x0000C86B, 0x0000C84C, 0x0000C82C, 0x0000C80D, 0x0000C7EE, + 0x0000C7CE, 0x0000C7AF, 0x0000C78F, 0x0000C770, 0x0000C750, 0x0000C731, 0x0000C711, 0x0000C6F1, + 0x0000C6D2, 0x0000C6B2, 0x0000C692, 0x0000C673, 0x0000C653, 0x0000C633, 0x0000C613, 0x0000C5F3, + 0x0000C5D4, 0x0000C5B4, 0x0000C594, 0x0000C574, 0x0000C554, 0x0000C534, 0x0000C514, 0x0000C4F4, + 0x0000C4D3, 0x0000C4B3, 0x0000C493, 0x0000C473, 0x0000C453, 0x0000C432, 0x0000C412, 0x0000C3F2, + 0x0000C3D1, 0x0000C3B1, 0x0000C391, 0x0000C370, 0x0000C350, 0x0000C32F, 0x0000C30F, 0x0000C2EE, + 0x0000C2CD, 0x0000C2AD, 0x0000C28C, 0x0000C26B, 0x0000C24B, 0x0000C22A, 0x0000C209, 0x0000C1E8, + 0x0000C1C8, 0x0000C1A7, 0x0000C186, 0x0000C165, 0x0000C144, 0x0000C123, 0x0000C102, 0x0000C0E1, + 0x0000C0C0, 0x0000C09F, 0x0000C07E, 0x0000C05C, 0x0000C03B, 0x0000C01A, 0x0000BFF9, 0x0000BFD8, + 0x0000BFB6, 0x0000BF95, 0x0000BF74, 0x0000BF52, 0x0000BF31, 0x0000BF0F, 0x0000BEEE, 0x0000BECC, + 0x0000BEAB, 0x0000BE89, 0x0000BE68, 0x0000BE46, 0x0000BE24, 0x0000BE03, 0x0000BDE1, 0x0000BDBF, + 0x0000BD9E, 0x0000BD7C, 0x0000BD5A, 0x0000BD38, 0x0000BD16, 0x0000BCF4, 0x0000BCD2, 0x0000BCB0, + 0x0000BC8F, 0x0000BC6D, 0x0000BC4A, 0x0000BC28, 0x0000BC06, 0x0000BBE4, 0x0000BBC2, 0x0000BBA0, + 0x0000BB7E, 0x0000BB5B, 0x0000BB39, 0x0000BB17, 0x0000BAF4, 0x0000BAD2, 0x0000BAB0, 0x0000BA8D, + 0x0000BA6B, 0x0000BA48, 0x0000BA26, 0x0000BA03, 0x0000B9E1, 0x0000B9BE, 0x0000B99C, 0x0000B979, + 0x0000B956, 0x0000B934, 0x0000B911, 0x0000B8EE, 0x0000B8CC, 0x0000B8A9, 0x0000B886, 0x0000B863, + 0x0000B840, 0x0000B81D, 0x0000B7FA, 0x0000B7D7, 0x0000B7B4, 0x0000B791, 0x0000B76E, 0x0000B74B, + 0x0000B728, 0x0000B705, 0x0000B6E2, 0x0000B6BF, 0x0000B69B, 0x0000B678, 0x0000B655, 0x0000B632, + 0x0000B60E, 0x0000B5EB, 0x0000B5C8, 0x0000B5A4, 0x0000B581, 0x0000B55D, 0x0000B53A, 0x0000B516, + 0x0000B4F3, 0x0000B4CF, 0x0000B4AC, 0x0000B488, 0x0000B464, 0x0000B441, 0x0000B41D, 0x0000B3F9, + 0x0000B3D5, 0x0000B3B2, 0x0000B38E, 0x0000B36A, 0x0000B346, 0x0000B322, 0x0000B2FE, 0x0000B2DA, + 0x0000B2B6, 0x0000B292, 0x0000B26E, 0x0000B24A, 0x0000B226, 0x0000B202, 0x0000B1DE, 0x0000B1BA, + 0x0000B196, 0x0000B171, 0x0000B14D, 0x0000B129, 0x0000B104, 0x0000B0E0, 0x0000B0BC, 0x0000B097, + 0x0000B073, 0x0000B04F, 0x0000B02A, 0x0000B006, 0x0000AFE1, 0x0000AFBD, 0x0000AF98, 0x0000AF73, + 0x0000AF4F, 0x0000AF2A, 0x0000AF06, 0x0000AEE1, 0x0000AEBC, 0x0000AE97, 0x0000AE73, 0x0000AE4E, + 0x0000AE29, 0x0000AE04, 0x0000ADDF, 0x0000ADBA, 0x0000AD95, 0x0000AD70, 0x0000AD4B, 0x0000AD26, + 0x0000AD01, 0x0000ACDC, 0x0000ACB7, 0x0000AC92, 0x0000AC6D, 0x0000AC48, 0x0000AC23, 0x0000ABFD, + 0x0000ABD8, 0x0000ABB3, 0x0000AB8E, 0x0000AB68, 0x0000AB43, 0x0000AB1E, 0x0000AAF8, 0x0000AAD3, + 0x0000AAAD, 0x0000AA88, 0x0000AA62, 0x0000AA3D, 0x0000AA17, 0x0000A9F2, 0x0000A9CC, 0x0000A9A6, + 0x0000A981, 0x0000A95B, 0x0000A935, 0x0000A910, 0x0000A8EA, 0x0000A8C4, 0x0000A89E, 0x0000A878, + 0x0000A853, 0x0000A82D, 0x0000A807, 0x0000A7E1, 0x0000A7BB, 0x0000A795, 0x0000A76F, 0x0000A749, + 0x0000A723, 0x0000A6FD, 0x0000A6D7, 0x0000A6B0, 0x0000A68A, 0x0000A664, 0x0000A63E, 0x0000A618, + 0x0000A5F1, 0x0000A5CB, 0x0000A5A5, 0x0000A57E, 0x0000A558, 0x0000A532, 0x0000A50B, 0x0000A4E5, + 0x0000A4BE, 0x0000A498, 0x0000A471, 0x0000A44B, 0x0000A424, 0x0000A3FE, 0x0000A3D7, 0x0000A3B0, + 0x0000A38A, 0x0000A363, 0x0000A33C, 0x0000A316, 0x0000A2EF, 0x0000A2C8, 0x0000A2A1, 0x0000A27B, + 0x0000A254, 0x0000A22D, 0x0000A206, 0x0000A1DF, 0x0000A1B8, 0x0000A191, 0x0000A16A, 0x0000A143, + 0x0000A11C, 0x0000A0F5, 0x0000A0CE, 0x0000A0A7, 0x0000A080, 0x0000A058, 0x0000A031, 0x0000A00A, + 0x00009FE3, 0x00009FBB, 0x00009F94, 0x00009F6D, 0x00009F45, 0x00009F1E, 0x00009EF7, 0x00009ECF, + 0x00009EA8, 0x00009E80, 0x00009E59, 0x00009E31, 0x00009E0A, 0x00009DE2, 0x00009DBB, 0x00009D93, + 0x00009D6C, 0x00009D44, 0x00009D1C, 0x00009CF4, 0x00009CCD, 0x00009CA5, 0x00009C7D, 0x00009C55, + 0x00009C2E, 0x00009C06, 0x00009BDE, 0x00009BB6, 0x00009B8E, 0x00009B66, 0x00009B3E, 0x00009B16, + 0x00009AEE, 0x00009AC6, 0x00009A9E, 0x00009A76, 0x00009A4E, 0x00009A26, 0x000099FE, 0x000099D6, + 0x000099AD, 0x00009985, 0x0000995D, 0x00009935, 0x0000990C, 0x000098E4, 0x000098BC, 0x00009893, + 0x0000986B, 0x00009843, 0x0000981A, 0x000097F2, 0x000097C9, 0x000097A1, 0x00009778, 0x00009750, + 0x00009727, 0x000096FF, 0x000096D6, 0x000096AD, 0x00009685, 0x0000965C, 0x00009633, 0x0000960B, + 0x000095E2, 0x000095B9, 0x00009590, 0x00009568, 0x0000953F, 0x00009516, 0x000094ED, 0x000094C4, + 0x0000949B, 0x00009472, 0x00009449, 0x00009420, 0x000093F7, 0x000093CE, 0x000093A5, 0x0000937C, + 0x00009353, 0x0000932A, 0x00009301, 0x000092D8, 0x000092AF, 0x00009285, 0x0000925C, 0x00009233, + 0x0000920A, 0x000091E0, 0x000091B7, 0x0000918E, 0x00009164, 0x0000913B, 0x00009111, 0x000090E8, + 0x000090BF, 0x00009095, 0x0000906C, 0x00009042, 0x00009019, 0x00008FEF, 0x00008FC5, 0x00008F9C, + 0x00008F72, 0x00008F49, 0x00008F1F, 0x00008EF5, 0x00008ECC, 0x00008EA2, 0x00008E78, 0x00008E4E, + 0x00008E24, 0x00008DFB, 0x00008DD1, 0x00008DA7, 0x00008D7D, 0x00008D53, 0x00008D29, 0x00008CFF, + 0x00008CD5, 0x00008CAB, 0x00008C81, 0x00008C57, 0x00008C2D, 0x00008C03, 0x00008BD9, 0x00008BAF, + 0x00008B85, 0x00008B5B, 0x00008B31, 0x00008B06, 0x00008ADC, 0x00008AB2, 0x00008A88, 0x00008A5D, + 0x00008A33, 0x00008A09, 0x000089DE, 0x000089B4, 0x0000898A, 0x0000895F, 0x00008935, 0x0000890A, + 0x000088E0, 0x000088B5, 0x0000888B, 0x00008860, 0x00008836, 0x0000880B, 0x000087E1, 0x000087B6, + 0x0000878B, 0x00008761, 0x00008736, 0x0000870B, 0x000086E1, 0x000086B6, 0x0000868B, 0x00008660, + 0x00008636, 0x0000860B, 0x000085E0, 0x000085B5, 0x0000858A, 0x0000855F, 0x00008534, 0x00008509, + 0x000084DF, 0x000084B4, 0x00008489, 0x0000845E, 0x00008433, 0x00008407, 0x000083DC, 0x000083B1, + 0x00008386, 0x0000835B, 0x00008330, 0x00008305, 0x000082DA, 0x000082AE, 0x00008283, 0x00008258, + 0x0000822D, 0x00008201, 0x000081D6, 0x000081AB, 0x0000817F, 0x00008154, 0x00008129, 0x000080FD, + 0x000080D2, 0x000080A6, 0x0000807B, 0x0000804F, 0x00008024, 0x00007FF8, 0x00007FCD, 0x00007FA1, + 0x00007F76, 0x00007F4A, 0x00007F1E, 0x00007EF3, 0x00007EC7, 0x00007E9B, 0x00007E70, 0x00007E44, + 0x00007E18, 0x00007DEC, 0x00007DC1, 0x00007D95, 0x00007D69, 0x00007D3D, 0x00007D11, 0x00007CE6, + 0x00007CBA, 0x00007C8E, 0x00007C62, 0x00007C36, 0x00007C0A, 0x00007BDE, 0x00007BB2, 0x00007B86, + 0x00007B5A, 0x00007B2E, 0x00007B02, 0x00007AD6, 0x00007AAA, 0x00007A7D, 0x00007A51, 0x00007A25, + 0x000079F9, 0x000079CD, 0x000079A0, 0x00007974, 0x00007948, 0x0000791C, 0x000078EF, 0x000078C3, + 0x00007897, 0x0000786A, 0x0000783E, 0x00007812, 0x000077E5, 0x000077B9, 0x0000778C, 0x00007760, + 0x00007733, 0x00007707, 0x000076DA, 0x000076AE, 0x00007681, 0x00007655, 0x00007628, 0x000075FC, + 0x000075CF, 0x000075A2, 0x00007576, 0x00007549, 0x0000751C, 0x000074F0, 0x000074C3, 0x00007496, + 0x00007469, 0x0000743D, 0x00007410, 0x000073E3, 0x000073B6, 0x00007389, 0x0000735D, 0x00007330, + 0x00007303, 0x000072D6, 0x000072A9, 0x0000727C, 0x0000724F, 0x00007222, 0x000071F5, 0x000071C8, + 0x0000719B, 0x0000716E, 0x00007141, 0x00007114, 0x000070E7, 0x000070BA, 0x0000708C, 0x0000705F, + 0x00007032, 0x00007005, 0x00006FD8, 0x00006FAA, 0x00006F7D, 0x00006F50, 0x00006F23, 0x00006EF5, + 0x00006EC8, 0x00006E9B, 0x00006E6D, 0x00006E40, 0x00006E13, 0x00006DE5, 0x00006DB8, 0x00006D8A, + 0x00006D5D, 0x00006D30, 0x00006D02, 0x00006CD5, 0x00006CA7, 0x00006C7A, 0x00006C4C, 0x00006C1E, + 0x00006BF1, 0x00006BC3, 0x00006B96, 0x00006B68, 0x00006B3A, 0x00006B0D, 0x00006ADF, 0x00006AB1, + 0x00006A84, 0x00006A56, 0x00006A28, 0x000069FB, 0x000069CD, 0x0000699F, 0x00006971, 0x00006943, + 0x00006916, 0x000068E8, 0x000068BA, 0x0000688C, 0x0000685E, 0x00006830, 0x00006802, 0x000067D4, + 0x000067A6, 0x00006778, 0x0000674A, 0x0000671C, 0x000066EE, 0x000066C0, 0x00006692, 0x00006664, + 0x00006636, 0x00006608, 0x000065DA, 0x000065AC, 0x0000657E, 0x00006550, 0x00006521, 0x000064F3, + 0x000064C5, 0x00006497, 0x00006469, 0x0000643A, 0x0000640C, 0x000063DE, 0x000063B0, 0x00006381, + 0x00006353, 0x00006325, 0x000062F6, 0x000062C8, 0x00006299, 0x0000626B, 0x0000623D, 0x0000620E, + 0x000061E0, 0x000061B1, 0x00006183, 0x00006154, 0x00006126, 0x000060F7, 0x000060C9, 0x0000609A, + 0x0000606C, 0x0000603D, 0x0000600F, 0x00005FE0, 0x00005FB1, 0x00005F83, 0x00005F54, 0x00005F25, + 0x00005EF7, 0x00005EC8, 0x00005E99, 0x00005E6B, 0x00005E3C, 0x00005E0D, 0x00005DDE, 0x00005DB0, + 0x00005D81, 0x00005D52, 0x00005D23, 0x00005CF4, 0x00005CC6, 0x00005C97, 0x00005C68, 0x00005C39, + 0x00005C0A, 0x00005BDB, 0x00005BAC, 0x00005B7D, 0x00005B4E, 0x00005B1F, 0x00005AF0, 0x00005AC1, + 0x00005A92, 0x00005A63, 0x00005A34, 0x00005A05, 0x000059D6, 0x000059A7, 0x00005978, 0x00005949, + 0x0000591A, 0x000058EB, 0x000058BC, 0x0000588C, 0x0000585D, 0x0000582E, 0x000057FF, 0x000057D0, + 0x000057A1, 0x00005771, 0x00005742, 0x00005713, 0x000056E3, 0x000056B4, 0x00005685, 0x00005656, + 0x00005626, 0x000055F7, 0x000055C8, 0x00005598, 0x00005569, 0x00005539, 0x0000550A, 0x000054DB, + 0x000054AB, 0x0000547C, 0x0000544C, 0x0000541D, 0x000053ED, 0x000053BE, 0x0000538E, 0x0000535F, + 0x0000532F, 0x00005300, 0x000052D0, 0x000052A1, 0x00005271, 0x00005241, 0x00005212, 0x000051E2, + 0x000051B3, 0x00005183, 0x00005153, 0x00005124, 0x000050F4, 0x000050C4, 0x00005095, 0x00005065, + 0x00005035, 0x00005005, 0x00004FD6, 0x00004FA6, 0x00004F76, 0x00004F46, 0x00004F16, 0x00004EE7, + 0x00004EB7, 0x00004E87, 0x00004E57, 0x00004E27, 0x00004DF7, 0x00004DC8, 0x00004D98, 0x00004D68, + 0x00004D38, 0x00004D08, 0x00004CD8, 0x00004CA8, 0x00004C78, 0x00004C48, 0x00004C18, 0x00004BE8, + 0x00004BB8, 0x00004B88, 0x00004B58, 0x00004B28, 0x00004AF8, 0x00004AC8, 0x00004A98, 0x00004A68, + 0x00004A38, 0x00004A07, 0x000049D7, 0x000049A7, 0x00004977, 0x00004947, 0x00004917, 0x000048E7, + 0x000048B6, 0x00004886, 0x00004856, 0x00004826, 0x000047F5, 0x000047C5, 0x00004795, 0x00004765, + 0x00004734, 0x00004704, 0x000046D4, 0x000046A4, 0x00004673, 0x00004643, 0x00004613, 0x000045E2, + 0x000045B2, 0x00004581, 0x00004551, 0x00004521, 0x000044F0, 0x000044C0, 0x0000448F, 0x0000445F, + 0x0000442F, 0x000043FE, 0x000043CE, 0x0000439D, 0x0000436D, 0x0000433C, 0x0000430C, 0x000042DB, + 0x000042AB, 0x0000427A, 0x0000424A, 0x00004219, 0x000041E8, 0x000041B8, 0x00004187, 0x00004157, + 0x00004126, 0x000040F5, 0x000040C5, 0x00004094, 0x00004064, 0x00004033, 0x00004002, 0x00003FD2, + 0x00003FA1, 0x00003F70, 0x00003F3F, 0x00003F0F, 0x00003EDE, 0x00003EAD, 0x00003E7D, 0x00003E4C, + 0x00003E1B, 0x00003DEA, 0x00003DBA, 0x00003D89, 0x00003D58, 0x00003D27, 0x00003CF6, 0x00003CC5, + 0x00003C95, 0x00003C64, 0x00003C33, 0x00003C02, 0x00003BD1, 0x00003BA0, 0x00003B6F, 0x00003B3F, + 0x00003B0E, 0x00003ADD, 0x00003AAC, 0x00003A7B, 0x00003A4A, 0x00003A19, 0x000039E8, 0x000039B7, + 0x00003986, 0x00003955, 0x00003924, 0x000038F3, 0x000038C2, 0x00003891, 0x00003860, 0x0000382F, + 0x000037FE, 0x000037CD, 0x0000379C, 0x0000376B, 0x0000373A, 0x00003709, 0x000036D8, 0x000036A6, + 0x00003675, 0x00003644, 0x00003613, 0x000035E2, 0x000035B1, 0x00003580, 0x0000354E, 0x0000351D, + 0x000034EC, 0x000034BB, 0x0000348A, 0x00003459, 0x00003427, 0x000033F6, 0x000033C5, 0x00003394, + 0x00003362, 0x00003331, 0x00003300, 0x000032CF, 0x0000329D, 0x0000326C, 0x0000323B, 0x0000320A, + 0x000031D8, 0x000031A7, 0x00003176, 0x00003144, 0x00003113, 0x000030E2, 0x000030B0, 0x0000307F, + 0x0000304E, 0x0000301C, 0x00002FEB, 0x00002FBA, 0x00002F88, 0x00002F57, 0x00002F25, 0x00002EF4, + 0x00002EC2, 0x00002E91, 0x00002E60, 0x00002E2E, 0x00002DFD, 0x00002DCB, 0x00002D9A, 0x00002D68, + 0x00002D37, 0x00002D05, 0x00002CD4, 0x00002CA2, 0x00002C71, 0x00002C3F, 0x00002C0E, 0x00002BDC, + 0x00002BAB, 0x00002B79, 0x00002B48, 0x00002B16, 0x00002AE5, 0x00002AB3, 0x00002A82, 0x00002A50, + 0x00002A1E, 0x000029ED, 0x000029BB, 0x0000298A, 0x00002958, 0x00002926, 0x000028F5, 0x000028C3, + 0x00002892, 0x00002860, 0x0000282E, 0x000027FD, 0x000027CB, 0x00002799, 0x00002768, 0x00002736, + 0x00002704, 0x000026D3, 0x000026A1, 0x0000266F, 0x0000263E, 0x0000260C, 0x000025DA, 0x000025A8, + 0x00002577, 0x00002545, 0x00002513, 0x000024E2, 0x000024B0, 0x0000247E, 0x0000244C, 0x0000241B, + 0x000023E9, 0x000023B7, 0x00002385, 0x00002353, 0x00002322, 0x000022F0, 0x000022BE, 0x0000228C, + 0x0000225A, 0x00002229, 0x000021F7, 0x000021C5, 0x00002193, 0x00002161, 0x00002130, 0x000020FE, + 0x000020CC, 0x0000209A, 0x00002068, 0x00002036, 0x00002004, 0x00001FD3, 0x00001FA1, 0x00001F6F, + 0x00001F3D, 0x00001F0B, 0x00001ED9, 0x00001EA7, 0x00001E75, 0x00001E43, 0x00001E11, 0x00001DE0, + 0x00001DAE, 0x00001D7C, 0x00001D4A, 0x00001D18, 0x00001CE6, 0x00001CB4, 0x00001C82, 0x00001C50, + 0x00001C1E, 0x00001BEC, 0x00001BBA, 0x00001B88, 0x00001B56, 0x00001B24, 0x00001AF2, 0x00001AC0, + 0x00001A8E, 0x00001A5C, 0x00001A2A, 0x000019F8, 0x000019C6, 0x00001994, 0x00001962, 0x00001930, + 0x000018FE, 0x000018CC, 0x0000189A, 0x00001868, 0x00001836, 0x00001804, 0x000017D2, 0x000017A0, + 0x0000176E, 0x0000173C, 0x0000170A, 0x000016D8, 0x000016A6, 0x00001674, 0x00001641, 0x0000160F, + 0x000015DD, 0x000015AB, 0x00001579, 0x00001547, 0x00001515, 0x000014E3, 0x000014B1, 0x0000147F, + 0x0000144D, 0x0000141A, 0x000013E8, 0x000013B6, 0x00001384, 0x00001352, 0x00001320, 0x000012EE, + 0x000012BC, 0x00001289, 0x00001257, 0x00001225, 0x000011F3, 0x000011C1, 0x0000118F, 0x0000115D, + 0x0000112A, 0x000010F8, 0x000010C6, 0x00001094, 0x00001062, 0x00001030, 0x00000FFD, 0x00000FCB, + 0x00000F99, 0x00000F67, 0x00000F35, 0x00000F03, 0x00000ED0, 0x00000E9E, 0x00000E6C, 0x00000E3A, + 0x00000E08, 0x00000DD5, 0x00000DA3, 0x00000D71, 0x00000D3F, 0x00000D0D, 0x00000CDB, 0x00000CA8, + 0x00000C76, 0x00000C44, 0x00000C12, 0x00000BDF, 0x00000BAD, 0x00000B7B, 0x00000B49, 0x00000B17, + 0x00000AE4, 0x00000AB2, 0x00000A80, 0x00000A4E, 0x00000A1B, 0x000009E9, 0x000009B7, 0x00000985, + 0x00000953, 0x00000920, 0x000008EE, 0x000008BC, 0x0000088A, 0x00000857, 0x00000825, 0x000007F3, + 0x000007C1, 0x0000078E, 0x0000075C, 0x0000072A, 0x000006F8, 0x000006C5, 0x00000693, 0x00000661, + 0x0000062F, 0x000005FC, 0x000005CA, 0x00000598, 0x00000566, 0x00000533, 0x00000501, 0x000004CF, + 0x0000049D, 0x0000046A, 0x00000438, 0x00000406, 0x000003D4, 0x000003A1, 0x0000036F, 0x0000033D, + 0x0000030B, 0x000002D8, 0x000002A6, 0x00000274, 0x00000242, 0x0000020F, 0x000001DD, 0x000001AB, + 0x00000178, 0x00000146, 0x00000114, 0x000000E2, 0x000000AF, 0x0000007D, 0x0000004B, 0x00000019, + 0xFFFFFFE7, 0xFFFFFFB5, 0xFFFFFF83, 0xFFFFFF51, 0xFFFFFF1E, 0xFFFFFEEC, 0xFFFFFEBA, 0xFFFFFE88, + 0xFFFFFE55, 0xFFFFFE23, 0xFFFFFDF1, 0xFFFFFDBE, 0xFFFFFD8C, 0xFFFFFD5A, 0xFFFFFD28, 0xFFFFFCF5, + 0xFFFFFCC3, 0xFFFFFC91, 0xFFFFFC5F, 0xFFFFFC2C, 0xFFFFFBFA, 0xFFFFFBC8, 0xFFFFFB96, 0xFFFFFB63, + 0xFFFFFB31, 0xFFFFFAFF, 0xFFFFFACD, 0xFFFFFA9A, 0xFFFFFA68, 0xFFFFFA36, 0xFFFFFA04, 0xFFFFF9D1, + 0xFFFFF99F, 0xFFFFF96D, 0xFFFFF93B, 0xFFFFF908, 0xFFFFF8D6, 0xFFFFF8A4, 0xFFFFF872, 0xFFFFF83F, + 0xFFFFF80D, 0xFFFFF7DB, 0xFFFFF7A9, 0xFFFFF776, 0xFFFFF744, 0xFFFFF712, 0xFFFFF6E0, 0xFFFFF6AD, + 0xFFFFF67B, 0xFFFFF649, 0xFFFFF617, 0xFFFFF5E4, 0xFFFFF5B2, 0xFFFFF580, 0xFFFFF54E, 0xFFFFF51C, + 0xFFFFF4E9, 0xFFFFF4B7, 0xFFFFF485, 0xFFFFF453, 0xFFFFF421, 0xFFFFF3EE, 0xFFFFF3BC, 0xFFFFF38A, + 0xFFFFF358, 0xFFFFF325, 0xFFFFF2F3, 0xFFFFF2C1, 0xFFFFF28F, 0xFFFFF25D, 0xFFFFF22B, 0xFFFFF1F8, + 0xFFFFF1C6, 0xFFFFF194, 0xFFFFF162, 0xFFFFF130, 0xFFFFF0FD, 0xFFFFF0CB, 0xFFFFF099, 0xFFFFF067, + 0xFFFFF035, 0xFFFFF003, 0xFFFFEFD0, 0xFFFFEF9E, 0xFFFFEF6C, 0xFFFFEF3A, 0xFFFFEF08, 0xFFFFEED6, + 0xFFFFEEA3, 0xFFFFEE71, 0xFFFFEE3F, 0xFFFFEE0D, 0xFFFFEDDB, 0xFFFFEDA9, 0xFFFFED77, 0xFFFFED44, + 0xFFFFED12, 0xFFFFECE0, 0xFFFFECAE, 0xFFFFEC7C, 0xFFFFEC4A, 0xFFFFEC18, 0xFFFFEBE6, 0xFFFFEBB3, + 0xFFFFEB81, 0xFFFFEB4F, 0xFFFFEB1D, 0xFFFFEAEB, 0xFFFFEAB9, 0xFFFFEA87, 0xFFFFEA55, 0xFFFFEA23, + 0xFFFFE9F1, 0xFFFFE9BF, 0xFFFFE98C, 0xFFFFE95A, 0xFFFFE928, 0xFFFFE8F6, 0xFFFFE8C4, 0xFFFFE892, + 0xFFFFE860, 0xFFFFE82E, 0xFFFFE7FC, 0xFFFFE7CA, 0xFFFFE798, 0xFFFFE766, 0xFFFFE734, 0xFFFFE702, + 0xFFFFE6D0, 0xFFFFE69E, 0xFFFFE66C, 0xFFFFE63A, 0xFFFFE608, 0xFFFFE5D6, 0xFFFFE5A4, 0xFFFFE572, + 0xFFFFE540, 0xFFFFE50E, 0xFFFFE4DC, 0xFFFFE4AA, 0xFFFFE478, 0xFFFFE446, 0xFFFFE414, 0xFFFFE3E2, + 0xFFFFE3B0, 0xFFFFE37E, 0xFFFFE34C, 0xFFFFE31A, 0xFFFFE2E8, 0xFFFFE2B6, 0xFFFFE284, 0xFFFFE252, + 0xFFFFE220, 0xFFFFE1EF, 0xFFFFE1BD, 0xFFFFE18B, 0xFFFFE159, 0xFFFFE127, 0xFFFFE0F5, 0xFFFFE0C3, + 0xFFFFE091, 0xFFFFE05F, 0xFFFFE02D, 0xFFFFDFFC, 0xFFFFDFCA, 0xFFFFDF98, 0xFFFFDF66, 0xFFFFDF34, + 0xFFFFDF02, 0xFFFFDED0, 0xFFFFDE9F, 0xFFFFDE6D, 0xFFFFDE3B, 0xFFFFDE09, 0xFFFFDDD7, 0xFFFFDDA6, + 0xFFFFDD74, 0xFFFFDD42, 0xFFFFDD10, 0xFFFFDCDE, 0xFFFFDCAD, 0xFFFFDC7B, 0xFFFFDC49, 0xFFFFDC17, + 0xFFFFDBE5, 0xFFFFDBB4, 0xFFFFDB82, 0xFFFFDB50, 0xFFFFDB1E, 0xFFFFDAED, 0xFFFFDABB, 0xFFFFDA89, + 0xFFFFDA58, 0xFFFFDA26, 0xFFFFD9F4, 0xFFFFD9C2, 0xFFFFD991, 0xFFFFD95F, 0xFFFFD92D, 0xFFFFD8FC, + 0xFFFFD8CA, 0xFFFFD898, 0xFFFFD867, 0xFFFFD835, 0xFFFFD803, 0xFFFFD7D2, 0xFFFFD7A0, 0xFFFFD76E, + 0xFFFFD73D, 0xFFFFD70B, 0xFFFFD6DA, 0xFFFFD6A8, 0xFFFFD676, 0xFFFFD645, 0xFFFFD613, 0xFFFFD5E2, + 0xFFFFD5B0, 0xFFFFD57E, 0xFFFFD54D, 0xFFFFD51B, 0xFFFFD4EA, 0xFFFFD4B8, 0xFFFFD487, 0xFFFFD455, + 0xFFFFD424, 0xFFFFD3F2, 0xFFFFD3C1, 0xFFFFD38F, 0xFFFFD35E, 0xFFFFD32C, 0xFFFFD2FB, 0xFFFFD2C9, + 0xFFFFD298, 0xFFFFD266, 0xFFFFD235, 0xFFFFD203, 0xFFFFD1D2, 0xFFFFD1A0, 0xFFFFD16F, 0xFFFFD13E, + 0xFFFFD10C, 0xFFFFD0DB, 0xFFFFD0A9, 0xFFFFD078, 0xFFFFD046, 0xFFFFD015, 0xFFFFCFE4, 0xFFFFCFB2, + 0xFFFFCF81, 0xFFFFCF50, 0xFFFFCF1E, 0xFFFFCEED, 0xFFFFCEBC, 0xFFFFCE8A, 0xFFFFCE59, 0xFFFFCE28, + 0xFFFFCDF6, 0xFFFFCDC5, 0xFFFFCD94, 0xFFFFCD63, 0xFFFFCD31, 0xFFFFCD00, 0xFFFFCCCF, 0xFFFFCC9E, + 0xFFFFCC6C, 0xFFFFCC3B, 0xFFFFCC0A, 0xFFFFCBD9, 0xFFFFCBA7, 0xFFFFCB76, 0xFFFFCB45, 0xFFFFCB14, + 0xFFFFCAE3, 0xFFFFCAB1, 0xFFFFCA80, 0xFFFFCA4F, 0xFFFFCA1E, 0xFFFFC9ED, 0xFFFFC9BC, 0xFFFFC98B, + 0xFFFFC95A, 0xFFFFC928, 0xFFFFC8F7, 0xFFFFC8C6, 0xFFFFC895, 0xFFFFC864, 0xFFFFC833, 0xFFFFC802, + 0xFFFFC7D1, 0xFFFFC7A0, 0xFFFFC76F, 0xFFFFC73E, 0xFFFFC70D, 0xFFFFC6DC, 0xFFFFC6AB, 0xFFFFC67A, + 0xFFFFC649, 0xFFFFC618, 0xFFFFC5E7, 0xFFFFC5B6, 0xFFFFC585, 0xFFFFC554, 0xFFFFC523, 0xFFFFC4F2, + 0xFFFFC4C1, 0xFFFFC491, 0xFFFFC460, 0xFFFFC42F, 0xFFFFC3FE, 0xFFFFC3CD, 0xFFFFC39C, 0xFFFFC36B, + 0xFFFFC33B, 0xFFFFC30A, 0xFFFFC2D9, 0xFFFFC2A8, 0xFFFFC277, 0xFFFFC246, 0xFFFFC216, 0xFFFFC1E5, + 0xFFFFC1B4, 0xFFFFC183, 0xFFFFC153, 0xFFFFC122, 0xFFFFC0F1, 0xFFFFC0C1, 0xFFFFC090, 0xFFFFC05F, + 0xFFFFC02E, 0xFFFFBFFE, 0xFFFFBFCD, 0xFFFFBF9C, 0xFFFFBF6C, 0xFFFFBF3B, 0xFFFFBF0B, 0xFFFFBEDA, + 0xFFFFBEA9, 0xFFFFBE79, 0xFFFFBE48, 0xFFFFBE18, 0xFFFFBDE7, 0xFFFFBDB6, 0xFFFFBD86, 0xFFFFBD55, + 0xFFFFBD25, 0xFFFFBCF4, 0xFFFFBCC4, 0xFFFFBC93, 0xFFFFBC63, 0xFFFFBC32, 0xFFFFBC02, 0xFFFFBBD1, + 0xFFFFBBA1, 0xFFFFBB71, 0xFFFFBB40, 0xFFFFBB10, 0xFFFFBADF, 0xFFFFBAAF, 0xFFFFBA7F, 0xFFFFBA4E, + 0xFFFFBA1E, 0xFFFFB9ED, 0xFFFFB9BD, 0xFFFFB98D, 0xFFFFB95C, 0xFFFFB92C, 0xFFFFB8FC, 0xFFFFB8CC, + 0xFFFFB89B, 0xFFFFB86B, 0xFFFFB83B, 0xFFFFB80B, 0xFFFFB7DA, 0xFFFFB7AA, 0xFFFFB77A, 0xFFFFB74A, + 0xFFFFB719, 0xFFFFB6E9, 0xFFFFB6B9, 0xFFFFB689, 0xFFFFB659, 0xFFFFB629, 0xFFFFB5F9, 0xFFFFB5C8, + 0xFFFFB598, 0xFFFFB568, 0xFFFFB538, 0xFFFFB508, 0xFFFFB4D8, 0xFFFFB4A8, 0xFFFFB478, 0xFFFFB448, + 0xFFFFB418, 0xFFFFB3E8, 0xFFFFB3B8, 0xFFFFB388, 0xFFFFB358, 0xFFFFB328, 0xFFFFB2F8, 0xFFFFB2C8, + 0xFFFFB298, 0xFFFFB268, 0xFFFFB238, 0xFFFFB209, 0xFFFFB1D9, 0xFFFFB1A9, 0xFFFFB179, 0xFFFFB149, + 0xFFFFB119, 0xFFFFB0EA, 0xFFFFB0BA, 0xFFFFB08A, 0xFFFFB05A, 0xFFFFB02A, 0xFFFFAFFB, 0xFFFFAFCB, + 0xFFFFAF9B, 0xFFFFAF6B, 0xFFFFAF3C, 0xFFFFAF0C, 0xFFFFAEDC, 0xFFFFAEAD, 0xFFFFAE7D, 0xFFFFAE4D, + 0xFFFFAE1E, 0xFFFFADEE, 0xFFFFADBF, 0xFFFFAD8F, 0xFFFFAD5F, 0xFFFFAD30, 0xFFFFAD00, 0xFFFFACD1, + 0xFFFFACA1, 0xFFFFAC72, 0xFFFFAC42, 0xFFFFAC13, 0xFFFFABE3, 0xFFFFABB4, 0xFFFFAB84, 0xFFFFAB55, + 0xFFFFAB25, 0xFFFFAAF6, 0xFFFFAAC7, 0xFFFFAA97, 0xFFFFAA68, 0xFFFFAA38, 0xFFFFAA09, 0xFFFFA9DA, + 0xFFFFA9AA, 0xFFFFA97B, 0xFFFFA94C, 0xFFFFA91D, 0xFFFFA8ED, 0xFFFFA8BE, 0xFFFFA88F, 0xFFFFA85F, + 0xFFFFA830, 0xFFFFA801, 0xFFFFA7D2, 0xFFFFA7A3, 0xFFFFA774, 0xFFFFA744, 0xFFFFA715, 0xFFFFA6E6, + 0xFFFFA6B7, 0xFFFFA688, 0xFFFFA659, 0xFFFFA62A, 0xFFFFA5FB, 0xFFFFA5CC, 0xFFFFA59D, 0xFFFFA56E, + 0xFFFFA53F, 0xFFFFA510, 0xFFFFA4E1, 0xFFFFA4B2, 0xFFFFA483, 0xFFFFA454, 0xFFFFA425, 0xFFFFA3F6, + 0xFFFFA3C7, 0xFFFFA398, 0xFFFFA369, 0xFFFFA33A, 0xFFFFA30C, 0xFFFFA2DD, 0xFFFFA2AE, 0xFFFFA27F, + 0xFFFFA250, 0xFFFFA222, 0xFFFFA1F3, 0xFFFFA1C4, 0xFFFFA195, 0xFFFFA167, 0xFFFFA138, 0xFFFFA109, + 0xFFFFA0DB, 0xFFFFA0AC, 0xFFFFA07D, 0xFFFFA04F, 0xFFFFA020, 0xFFFF9FF1, 0xFFFF9FC3, 0xFFFF9F94, + 0xFFFF9F66, 0xFFFF9F37, 0xFFFF9F09, 0xFFFF9EDA, 0xFFFF9EAC, 0xFFFF9E7D, 0xFFFF9E4F, 0xFFFF9E20, + 0xFFFF9DF2, 0xFFFF9DC3, 0xFFFF9D95, 0xFFFF9D67, 0xFFFF9D38, 0xFFFF9D0A, 0xFFFF9CDB, 0xFFFF9CAD, + 0xFFFF9C7F, 0xFFFF9C50, 0xFFFF9C22, 0xFFFF9BF4, 0xFFFF9BC6, 0xFFFF9B97, 0xFFFF9B69, 0xFFFF9B3B, + 0xFFFF9B0D, 0xFFFF9ADF, 0xFFFF9AB0, 0xFFFF9A82, 0xFFFF9A54, 0xFFFF9A26, 0xFFFF99F8, 0xFFFF99CA, + 0xFFFF999C, 0xFFFF996E, 0xFFFF9940, 0xFFFF9912, 0xFFFF98E4, 0xFFFF98B6, 0xFFFF9888, 0xFFFF985A, + 0xFFFF982C, 0xFFFF97FE, 0xFFFF97D0, 0xFFFF97A2, 0xFFFF9774, 0xFFFF9746, 0xFFFF9718, 0xFFFF96EA, + 0xFFFF96BD, 0xFFFF968F, 0xFFFF9661, 0xFFFF9633, 0xFFFF9605, 0xFFFF95D8, 0xFFFF95AA, 0xFFFF957C, + 0xFFFF954F, 0xFFFF9521, 0xFFFF94F3, 0xFFFF94C6, 0xFFFF9498, 0xFFFF946A, 0xFFFF943D, 0xFFFF940F, + 0xFFFF93E2, 0xFFFF93B4, 0xFFFF9386, 0xFFFF9359, 0xFFFF932B, 0xFFFF92FE, 0xFFFF92D0, 0xFFFF92A3, + 0xFFFF9276, 0xFFFF9248, 0xFFFF921B, 0xFFFF91ED, 0xFFFF91C0, 0xFFFF9193, 0xFFFF9165, 0xFFFF9138, + 0xFFFF910B, 0xFFFF90DD, 0xFFFF90B0, 0xFFFF9083, 0xFFFF9056, 0xFFFF9028, 0xFFFF8FFB, 0xFFFF8FCE, + 0xFFFF8FA1, 0xFFFF8F74, 0xFFFF8F46, 0xFFFF8F19, 0xFFFF8EEC, 0xFFFF8EBF, 0xFFFF8E92, 0xFFFF8E65, + 0xFFFF8E38, 0xFFFF8E0B, 0xFFFF8DDE, 0xFFFF8DB1, 0xFFFF8D84, 0xFFFF8D57, 0xFFFF8D2A, 0xFFFF8CFD, + 0xFFFF8CD0, 0xFFFF8CA3, 0xFFFF8C77, 0xFFFF8C4A, 0xFFFF8C1D, 0xFFFF8BF0, 0xFFFF8BC3, 0xFFFF8B97, + 0xFFFF8B6A, 0xFFFF8B3D, 0xFFFF8B10, 0xFFFF8AE4, 0xFFFF8AB7, 0xFFFF8A8A, 0xFFFF8A5E, 0xFFFF8A31, + 0xFFFF8A04, 0xFFFF89D8, 0xFFFF89AB, 0xFFFF897F, 0xFFFF8952, 0xFFFF8926, 0xFFFF88F9, 0xFFFF88CD, + 0xFFFF88A0, 0xFFFF8874, 0xFFFF8847, 0xFFFF881B, 0xFFFF87EE, 0xFFFF87C2, 0xFFFF8796, 0xFFFF8769, + 0xFFFF873D, 0xFFFF8711, 0xFFFF86E4, 0xFFFF86B8, 0xFFFF868C, 0xFFFF8660, 0xFFFF8633, 0xFFFF8607, + 0xFFFF85DB, 0xFFFF85AF, 0xFFFF8583, 0xFFFF8556, 0xFFFF852A, 0xFFFF84FE, 0xFFFF84D2, 0xFFFF84A6, + 0xFFFF847A, 0xFFFF844E, 0xFFFF8422, 0xFFFF83F6, 0xFFFF83CA, 0xFFFF839E, 0xFFFF8372, 0xFFFF8346, + 0xFFFF831A, 0xFFFF82EF, 0xFFFF82C3, 0xFFFF8297, 0xFFFF826B, 0xFFFF823F, 0xFFFF8214, 0xFFFF81E8, + 0xFFFF81BC, 0xFFFF8190, 0xFFFF8165, 0xFFFF8139, 0xFFFF810D, 0xFFFF80E2, 0xFFFF80B6, 0xFFFF808A, + 0xFFFF805F, 0xFFFF8033, 0xFFFF8008, 0xFFFF7FDC, 0xFFFF7FB1, 0xFFFF7F85, 0xFFFF7F5A, 0xFFFF7F2E, + 0xFFFF7F03, 0xFFFF7ED7, 0xFFFF7EAC, 0xFFFF7E81, 0xFFFF7E55, 0xFFFF7E2A, 0xFFFF7DFF, 0xFFFF7DD3, + 0xFFFF7DA8, 0xFFFF7D7D, 0xFFFF7D52, 0xFFFF7D26, 0xFFFF7CFB, 0xFFFF7CD0, 0xFFFF7CA5, 0xFFFF7C7A, + 0xFFFF7C4F, 0xFFFF7C24, 0xFFFF7BF9, 0xFFFF7BCD, 0xFFFF7BA2, 0xFFFF7B77, 0xFFFF7B4C, 0xFFFF7B21, + 0xFFFF7AF7, 0xFFFF7ACC, 0xFFFF7AA1, 0xFFFF7A76, 0xFFFF7A4B, 0xFFFF7A20, 0xFFFF79F5, 0xFFFF79CA, + 0xFFFF79A0, 0xFFFF7975, 0xFFFF794A, 0xFFFF791F, 0xFFFF78F5, 0xFFFF78CA, 0xFFFF789F, 0xFFFF7875, + 0xFFFF784A, 0xFFFF781F, 0xFFFF77F5, 0xFFFF77CA, 0xFFFF77A0, 0xFFFF7775, 0xFFFF774B, 0xFFFF7720, + 0xFFFF76F6, 0xFFFF76CB, 0xFFFF76A1, 0xFFFF7676, 0xFFFF764C, 0xFFFF7622, 0xFFFF75F7, 0xFFFF75CD, + 0xFFFF75A3, 0xFFFF7578, 0xFFFF754E, 0xFFFF7524, 0xFFFF74FA, 0xFFFF74CF, 0xFFFF74A5, 0xFFFF747B, + 0xFFFF7451, 0xFFFF7427, 0xFFFF73FD, 0xFFFF73D3, 0xFFFF73A9, 0xFFFF737F, 0xFFFF7355, 0xFFFF732B, + 0xFFFF7301, 0xFFFF72D7, 0xFFFF72AD, 0xFFFF7283, 0xFFFF7259, 0xFFFF722F, 0xFFFF7205, 0xFFFF71DC, + 0xFFFF71B2, 0xFFFF7188, 0xFFFF715E, 0xFFFF7135, 0xFFFF710B, 0xFFFF70E1, 0xFFFF70B7, 0xFFFF708E, + 0xFFFF7064, 0xFFFF703B, 0xFFFF7011, 0xFFFF6FE7, 0xFFFF6FBE, 0xFFFF6F94, 0xFFFF6F6B, 0xFFFF6F41, + 0xFFFF6F18, 0xFFFF6EEF, 0xFFFF6EC5, 0xFFFF6E9C, 0xFFFF6E72, 0xFFFF6E49, 0xFFFF6E20, 0xFFFF6DF6, + 0xFFFF6DCD, 0xFFFF6DA4, 0xFFFF6D7B, 0xFFFF6D51, 0xFFFF6D28, 0xFFFF6CFF, 0xFFFF6CD6, 0xFFFF6CAD, + 0xFFFF6C84, 0xFFFF6C5B, 0xFFFF6C32, 0xFFFF6C09, 0xFFFF6BE0, 0xFFFF6BB7, 0xFFFF6B8E, 0xFFFF6B65, + 0xFFFF6B3C, 0xFFFF6B13, 0xFFFF6AEA, 0xFFFF6AC1, 0xFFFF6A98, 0xFFFF6A70, 0xFFFF6A47, 0xFFFF6A1E, + 0xFFFF69F5, 0xFFFF69CD, 0xFFFF69A4, 0xFFFF697B, 0xFFFF6953, 0xFFFF692A, 0xFFFF6901, 0xFFFF68D9, + 0xFFFF68B0, 0xFFFF6888, 0xFFFF685F, 0xFFFF6837, 0xFFFF680E, 0xFFFF67E6, 0xFFFF67BD, 0xFFFF6795, + 0xFFFF676D, 0xFFFF6744, 0xFFFF671C, 0xFFFF66F4, 0xFFFF66CB, 0xFFFF66A3, 0xFFFF667B, 0xFFFF6653, + 0xFFFF662A, 0xFFFF6602, 0xFFFF65DA, 0xFFFF65B2, 0xFFFF658A, 0xFFFF6562, 0xFFFF653A, 0xFFFF6512, + 0xFFFF64EA, 0xFFFF64C2, 0xFFFF649A, 0xFFFF6472, 0xFFFF644A, 0xFFFF6422, 0xFFFF63FA, 0xFFFF63D2, + 0xFFFF63AB, 0xFFFF6383, 0xFFFF635B, 0xFFFF6333, 0xFFFF630C, 0xFFFF62E4, 0xFFFF62BC, 0xFFFF6295, + 0xFFFF626D, 0xFFFF6245, 0xFFFF621E, 0xFFFF61F6, 0xFFFF61CF, 0xFFFF61A7, 0xFFFF6180, 0xFFFF6158, + 0xFFFF6131, 0xFFFF6109, 0xFFFF60E2, 0xFFFF60BB, 0xFFFF6093, 0xFFFF606C, 0xFFFF6045, 0xFFFF601D, + 0xFFFF5FF6, 0xFFFF5FCF, 0xFFFF5FA8, 0xFFFF5F81, 0xFFFF5F59, 0xFFFF5F32, 0xFFFF5F0B, 0xFFFF5EE4, + 0xFFFF5EBD, 0xFFFF5E96, 0xFFFF5E6F, 0xFFFF5E48, 0xFFFF5E21, 0xFFFF5DFA, 0xFFFF5DD3, 0xFFFF5DAC, + 0xFFFF5D85, 0xFFFF5D5F, 0xFFFF5D38, 0xFFFF5D11, 0xFFFF5CEA, 0xFFFF5CC4, 0xFFFF5C9D, 0xFFFF5C76, + 0xFFFF5C50, 0xFFFF5C29, 0xFFFF5C02, 0xFFFF5BDC, 0xFFFF5BB5, 0xFFFF5B8F, 0xFFFF5B68, 0xFFFF5B42, + 0xFFFF5B1B, 0xFFFF5AF5, 0xFFFF5ACE, 0xFFFF5AA8, 0xFFFF5A82, 0xFFFF5A5B, 0xFFFF5A35, 0xFFFF5A0F, + 0xFFFF59E8, 0xFFFF59C2, 0xFFFF599C, 0xFFFF5976, 0xFFFF5950, 0xFFFF5929, 0xFFFF5903, 0xFFFF58DD, + 0xFFFF58B7, 0xFFFF5891, 0xFFFF586B, 0xFFFF5845, 0xFFFF581F, 0xFFFF57F9, 0xFFFF57D3, 0xFFFF57AD, + 0xFFFF5788, 0xFFFF5762, 0xFFFF573C, 0xFFFF5716, 0xFFFF56F0, 0xFFFF56CB, 0xFFFF56A5, 0xFFFF567F, + 0xFFFF565A, 0xFFFF5634, 0xFFFF560E, 0xFFFF55E9, 0xFFFF55C3, 0xFFFF559E, 0xFFFF5578, 0xFFFF5553, + 0xFFFF552D, 0xFFFF5508, 0xFFFF54E2, 0xFFFF54BD, 0xFFFF5498, 0xFFFF5472, 0xFFFF544D, 0xFFFF5428, + 0xFFFF5403, 0xFFFF53DD, 0xFFFF53B8, 0xFFFF5393, 0xFFFF536E, 0xFFFF5349, 0xFFFF5324, 0xFFFF52FF, + 0xFFFF52DA, 0xFFFF52B5, 0xFFFF5290, 0xFFFF526B, 0xFFFF5246, 0xFFFF5221, 0xFFFF51FC, 0xFFFF51D7, + 0xFFFF51B2, 0xFFFF518D, 0xFFFF5169, 0xFFFF5144, 0xFFFF511F, 0xFFFF50FA, 0xFFFF50D6, 0xFFFF50B1, + 0xFFFF508D, 0xFFFF5068, 0xFFFF5043, 0xFFFF501F, 0xFFFF4FFA, 0xFFFF4FD6, 0xFFFF4FB1, 0xFFFF4F8D, + 0xFFFF4F69, 0xFFFF4F44, 0xFFFF4F20, 0xFFFF4EFC, 0xFFFF4ED7, 0xFFFF4EB3, 0xFFFF4E8F, 0xFFFF4E6A, + 0xFFFF4E46, 0xFFFF4E22, 0xFFFF4DFE, 0xFFFF4DDA, 0xFFFF4DB6, 0xFFFF4D92, 0xFFFF4D6E, 0xFFFF4D4A, + 0xFFFF4D26, 0xFFFF4D02, 0xFFFF4CDE, 0xFFFF4CBA, 0xFFFF4C96, 0xFFFF4C72, 0xFFFF4C4E, 0xFFFF4C2B, + 0xFFFF4C07, 0xFFFF4BE3, 0xFFFF4BBF, 0xFFFF4B9C, 0xFFFF4B78, 0xFFFF4B54, 0xFFFF4B31, 0xFFFF4B0D, + 0xFFFF4AEA, 0xFFFF4AC6, 0xFFFF4AA3, 0xFFFF4A7F, 0xFFFF4A5C, 0xFFFF4A38, 0xFFFF4A15, 0xFFFF49F2, + 0xFFFF49CE, 0xFFFF49AB, 0xFFFF4988, 0xFFFF4965, 0xFFFF4941, 0xFFFF491E, 0xFFFF48FB, 0xFFFF48D8, + 0xFFFF48B5, 0xFFFF4892, 0xFFFF486F, 0xFFFF484C, 0xFFFF4829, 0xFFFF4806, 0xFFFF47E3, 0xFFFF47C0, + 0xFFFF479D, 0xFFFF477A, 0xFFFF4757, 0xFFFF4734, 0xFFFF4712, 0xFFFF46EF, 0xFFFF46CC, 0xFFFF46AA, + 0xFFFF4687, 0xFFFF4664, 0xFFFF4642, 0xFFFF461F, 0xFFFF45FD, 0xFFFF45DA, 0xFFFF45B8, 0xFFFF4595, + 0xFFFF4573, 0xFFFF4550, 0xFFFF452E, 0xFFFF450C, 0xFFFF44E9, 0xFFFF44C7, 0xFFFF44A5, 0xFFFF4482, + 0xFFFF4460, 0xFFFF443E, 0xFFFF441C, 0xFFFF43FA, 0xFFFF43D8, 0xFFFF43B6, 0xFFFF4394, 0xFFFF4371, + 0xFFFF4350, 0xFFFF432E, 0xFFFF430C, 0xFFFF42EA, 0xFFFF42C8, 0xFFFF42A6, 0xFFFF4284, 0xFFFF4262, + 0xFFFF4241, 0xFFFF421F, 0xFFFF41FD, 0xFFFF41DC, 0xFFFF41BA, 0xFFFF4198, 0xFFFF4177, 0xFFFF4155, + 0xFFFF4134, 0xFFFF4112, 0xFFFF40F1, 0xFFFF40CF, 0xFFFF40AE, 0xFFFF408C, 0xFFFF406B, 0xFFFF404A, + 0xFFFF4028, 0xFFFF4007, 0xFFFF3FE6, 0xFFFF3FC5, 0xFFFF3FA4, 0xFFFF3F82, 0xFFFF3F61, 0xFFFF3F40, + 0xFFFF3F1F, 0xFFFF3EFE, 0xFFFF3EDD, 0xFFFF3EBC, 0xFFFF3E9B, 0xFFFF3E7A, 0xFFFF3E59, 0xFFFF3E38, + 0xFFFF3E18, 0xFFFF3DF7, 0xFFFF3DD6, 0xFFFF3DB5, 0xFFFF3D95, 0xFFFF3D74, 0xFFFF3D53, 0xFFFF3D33, + 0xFFFF3D12, 0xFFFF3CF1, 0xFFFF3CD1, 0xFFFF3CB0, 0xFFFF3C90, 0xFFFF3C6F, 0xFFFF3C4F, 0xFFFF3C2F, + 0xFFFF3C0E, 0xFFFF3BEE, 0xFFFF3BCE, 0xFFFF3BAD, 0xFFFF3B8D, 0xFFFF3B6D, 0xFFFF3B4D, 0xFFFF3B2D, + 0xFFFF3B0C, 0xFFFF3AEC, 0xFFFF3ACC, 0xFFFF3AAC, 0xFFFF3A8C, 0xFFFF3A6C, 0xFFFF3A4C, 0xFFFF3A2C, + 0xFFFF3A0D, 0xFFFF39ED, 0xFFFF39CD, 0xFFFF39AD, 0xFFFF398D, 0xFFFF396E, 0xFFFF394E, 0xFFFF392E, + 0xFFFF390F, 0xFFFF38EF, 0xFFFF38CF, 0xFFFF38B0, 0xFFFF3890, 0xFFFF3871, 0xFFFF3851, 0xFFFF3832, + 0xFFFF3812, 0xFFFF37F3, 0xFFFF37D4, 0xFFFF37B4, 0xFFFF3795, 0xFFFF3776, 0xFFFF3757, 0xFFFF3737, + 0xFFFF3718, 0xFFFF36F9, 0xFFFF36DA, 0xFFFF36BB, 0xFFFF369C, 0xFFFF367D, 0xFFFF365E, 0xFFFF363F, + 0xFFFF3620, 0xFFFF3601, 0xFFFF35E2, 0xFFFF35C3, 0xFFFF35A5, 0xFFFF3586, 0xFFFF3567, 0xFFFF3548, + 0xFFFF352A, 0xFFFF350B, 0xFFFF34EC, 0xFFFF34CE, 0xFFFF34AF, 0xFFFF3491, 0xFFFF3472, 0xFFFF3454, + 0xFFFF3435, 0xFFFF3417, 0xFFFF33F9, 0xFFFF33DA, 0xFFFF33BC, 0xFFFF339E, 0xFFFF337F, 0xFFFF3361, + 0xFFFF3343, 0xFFFF3325, 0xFFFF3307, 0xFFFF32E9, 0xFFFF32CA, 0xFFFF32AC, 0xFFFF328E, 0xFFFF3270, + 0xFFFF3253, 0xFFFF3235, 0xFFFF3217, 0xFFFF31F9, 0xFFFF31DB, 0xFFFF31BD, 0xFFFF31A0, 0xFFFF3182, + 0xFFFF3164, 0xFFFF3146, 0xFFFF3129, 0xFFFF310B, 0xFFFF30EE, 0xFFFF30D0, 0xFFFF30B3, 0xFFFF3095, + 0xFFFF3078, 0xFFFF305A, 0xFFFF303D, 0xFFFF3020, 0xFFFF3002, 0xFFFF2FE5, 0xFFFF2FC8, 0xFFFF2FAA, + 0xFFFF2F8D, 0xFFFF2F70, 0xFFFF2F53, 0xFFFF2F36, 0xFFFF2F19, 0xFFFF2EFC, 0xFFFF2EDF, 0xFFFF2EC2, + 0xFFFF2EA5, 0xFFFF2E88, 0xFFFF2E6B, 0xFFFF2E4E, 0xFFFF2E31, 0xFFFF2E15, 0xFFFF2DF8, 0xFFFF2DDB, + 0xFFFF2DBE, 0xFFFF2DA2, 0xFFFF2D85, 0xFFFF2D69, 0xFFFF2D4C, 0xFFFF2D2F, 0xFFFF2D13, 0xFFFF2CF6, + 0xFFFF2CDA, 0xFFFF2CBE, 0xFFFF2CA1, 0xFFFF2C85, 0xFFFF2C69, 0xFFFF2C4C, 0xFFFF2C30, 0xFFFF2C14, + 0xFFFF2BF8, 0xFFFF2BDC, 0xFFFF2BBF, 0xFFFF2BA3, 0xFFFF2B87, 0xFFFF2B6B, 0xFFFF2B4F, 0xFFFF2B33, + 0xFFFF2B17, 0xFFFF2AFB, 0xFFFF2AE0, 0xFFFF2AC4, 0xFFFF2AA8, 0xFFFF2A8C, 0xFFFF2A70, 0xFFFF2A55, + 0xFFFF2A39, 0xFFFF2A1D, 0xFFFF2A02, 0xFFFF29E6, 0xFFFF29CB, 0xFFFF29AF, 0xFFFF2994, 0xFFFF2978, + 0xFFFF295D, 0xFFFF2942, 0xFFFF2926, 0xFFFF290B, 0xFFFF28F0, 0xFFFF28D4, 0xFFFF28B9, 0xFFFF289E, + 0xFFFF2883, 0xFFFF2868, 0xFFFF284D, 0xFFFF2832, 0xFFFF2816, 0xFFFF27FC, 0xFFFF27E1, 0xFFFF27C6, + 0xFFFF27AB, 0xFFFF2790, 0xFFFF2775, 0xFFFF275A, 0xFFFF273F, 0xFFFF2725, 0xFFFF270A, 0xFFFF26EF, + 0xFFFF26D5, 0xFFFF26BA, 0xFFFF26A0, 0xFFFF2685, 0xFFFF266B, 0xFFFF2650, 0xFFFF2636, 0xFFFF261B, + 0xFFFF2601, 0xFFFF25E7, 0xFFFF25CC, 0xFFFF25B2, 0xFFFF2598, 0xFFFF257E, 0xFFFF2563, 0xFFFF2549, + 0xFFFF252F, 0xFFFF2515, 0xFFFF24FB, 0xFFFF24E1, 0xFFFF24C7, 0xFFFF24AD, 0xFFFF2493, 0xFFFF2479, + 0xFFFF245F, 0xFFFF2446, 0xFFFF242C, 0xFFFF2412, 0xFFFF23F8, 0xFFFF23DF, 0xFFFF23C5, 0xFFFF23AC, + 0xFFFF2392, 0xFFFF2378, 0xFFFF235F, 0xFFFF2345, 0xFFFF232C, 0xFFFF2313, 0xFFFF22F9, 0xFFFF22E0, + 0xFFFF22C7, 0xFFFF22AD, 0xFFFF2294, 0xFFFF227B, 0xFFFF2262, 0xFFFF2248, 0xFFFF222F, 0xFFFF2216, + 0xFFFF21FD, 0xFFFF21E4, 0xFFFF21CB, 0xFFFF21B2, 0xFFFF2199, 0xFFFF2181, 0xFFFF2168, 0xFFFF214F, + 0xFFFF2136, 0xFFFF211D, 0xFFFF2105, 0xFFFF20EC, 0xFFFF20D3, 0xFFFF20BB, 0xFFFF20A2, 0xFFFF208A, + 0xFFFF2071, 0xFFFF2059, 0xFFFF2040, 0xFFFF2028, 0xFFFF200F, 0xFFFF1FF7, 0xFFFF1FDF, 0xFFFF1FC6, + 0xFFFF1FAE, 0xFFFF1F96, 0xFFFF1F7E, 0xFFFF1F66, 0xFFFF1F4E, 0xFFFF1F36, 0xFFFF1F1E, 0xFFFF1F06, + 0xFFFF1EEE, 0xFFFF1ED6, 0xFFFF1EBE, 0xFFFF1EA6, 0xFFFF1E8E, 0xFFFF1E76, 0xFFFF1E5E, 0xFFFF1E47, + 0xFFFF1E2F, 0xFFFF1E17, 0xFFFF1E00, 0xFFFF1DE8, 0xFFFF1DD1, 0xFFFF1DB9, 0xFFFF1DA2, 0xFFFF1D8A, + 0xFFFF1D73, 0xFFFF1D5B, 0xFFFF1D44, 0xFFFF1D2D, 0xFFFF1D15, 0xFFFF1CFE, 0xFFFF1CE7, 0xFFFF1CD0, + 0xFFFF1CB9, 0xFFFF1CA1, 0xFFFF1C8A, 0xFFFF1C73, 0xFFFF1C5C, 0xFFFF1C45, 0xFFFF1C2E, 0xFFFF1C17, + 0xFFFF1C01, 0xFFFF1BEA, 0xFFFF1BD3, 0xFFFF1BBC, 0xFFFF1BA5, 0xFFFF1B8F, 0xFFFF1B78, 0xFFFF1B61, + 0xFFFF1B4B, 0xFFFF1B34, 0xFFFF1B1E, 0xFFFF1B07, 0xFFFF1AF1, 0xFFFF1ADA, 0xFFFF1AC4, 0xFFFF1AAE, + 0xFFFF1A97, 0xFFFF1A81, 0xFFFF1A6B, 0xFFFF1A55, 0xFFFF1A3E, 0xFFFF1A28, 0xFFFF1A12, 0xFFFF19FC, + 0xFFFF19E6, 0xFFFF19D0, 0xFFFF19BA, 0xFFFF19A4, 0xFFFF198E, 0xFFFF1978, 0xFFFF1962, 0xFFFF194D, + 0xFFFF1937, 0xFFFF1921, 0xFFFF190B, 0xFFFF18F6, 0xFFFF18E0, 0xFFFF18CA, 0xFFFF18B5, 0xFFFF189F, + 0xFFFF188A, 0xFFFF1874, 0xFFFF185F, 0xFFFF184A, 0xFFFF1834, 0xFFFF181F, 0xFFFF180A, 0xFFFF17F4, + 0xFFFF17DF, 0xFFFF17CA, 0xFFFF17B5, 0xFFFF17A0, 0xFFFF178B, 0xFFFF1776, 0xFFFF1761, 0xFFFF174C, + 0xFFFF1737, 0xFFFF1722, 0xFFFF170D, 0xFFFF16F8, 0xFFFF16E3, 0xFFFF16CF, 0xFFFF16BA, 0xFFFF16A5, + 0xFFFF1691, 0xFFFF167C, 0xFFFF1667, 0xFFFF1653, 0xFFFF163E, 0xFFFF162A, 0xFFFF1615, 0xFFFF1601, + 0xFFFF15ED, 0xFFFF15D8, 0xFFFF15C4, 0xFFFF15B0, 0xFFFF159C, 0xFFFF1587, 0xFFFF1573, 0xFFFF155F, + 0xFFFF154B, 0xFFFF1537, 0xFFFF1523, 0xFFFF150F, 0xFFFF14FB, 0xFFFF14E7, 0xFFFF14D3, 0xFFFF14BF, + 0xFFFF14AC, 0xFFFF1498, 0xFFFF1484, 0xFFFF1470, 0xFFFF145D, 0xFFFF1449, 0xFFFF1435, 0xFFFF1422, + 0xFFFF140E, 0xFFFF13FB, 0xFFFF13E7, 0xFFFF13D4, 0xFFFF13C1, 0xFFFF13AD, 0xFFFF139A, 0xFFFF1387, + 0xFFFF1374, 0xFFFF1360, 0xFFFF134D, 0xFFFF133A, 0xFFFF1327, 0xFFFF1314, 0xFFFF1301, 0xFFFF12EE, + 0xFFFF12DB, 0xFFFF12C8, 0xFFFF12B5, 0xFFFF12A2, 0xFFFF128F, 0xFFFF127D, 0xFFFF126A, 0xFFFF1257, + 0xFFFF1245, 0xFFFF1232, 0xFFFF121F, 0xFFFF120D, 0xFFFF11FA, 0xFFFF11E8, 0xFFFF11D5, 0xFFFF11C3, + 0xFFFF11B1, 0xFFFF119E, 0xFFFF118C, 0xFFFF117A, 0xFFFF1167, 0xFFFF1155, 0xFFFF1143, 0xFFFF1131, + 0xFFFF111F, 0xFFFF110D, 0xFFFF10FB, 0xFFFF10E9, 0xFFFF10D7, 0xFFFF10C5, 0xFFFF10B3, 0xFFFF10A1, + 0xFFFF108F, 0xFFFF107E, 0xFFFF106C, 0xFFFF105A, 0xFFFF1049, 0xFFFF1037, 0xFFFF1025, 0xFFFF1014, + 0xFFFF1002, 0xFFFF0FF1, 0xFFFF0FDF, 0xFFFF0FCE, 0xFFFF0FBD, 0xFFFF0FAB, 0xFFFF0F9A, 0xFFFF0F89, + 0xFFFF0F77, 0xFFFF0F66, 0xFFFF0F55, 0xFFFF0F44, 0xFFFF0F33, 0xFFFF0F22, 0xFFFF0F11, 0xFFFF0F00, + 0xFFFF0EEF, 0xFFFF0EDE, 0xFFFF0ECD, 0xFFFF0EBC, 0xFFFF0EAC, 0xFFFF0E9B, 0xFFFF0E8A, 0xFFFF0E79, + 0xFFFF0E69, 0xFFFF0E58, 0xFFFF0E48, 0xFFFF0E37, 0xFFFF0E27, 0xFFFF0E16, 0xFFFF0E06, 0xFFFF0DF5, + 0xFFFF0DE5, 0xFFFF0DD5, 0xFFFF0DC4, 0xFFFF0DB4, 0xFFFF0DA4, 0xFFFF0D94, 0xFFFF0D84, 0xFFFF0D74, + 0xFFFF0D64, 0xFFFF0D53, 0xFFFF0D43, 0xFFFF0D34, 0xFFFF0D24, 0xFFFF0D14, 0xFFFF0D04, 0xFFFF0CF4, + 0xFFFF0CE4, 0xFFFF0CD5, 0xFFFF0CC5, 0xFFFF0CB5, 0xFFFF0CA6, 0xFFFF0C96, 0xFFFF0C87, 0xFFFF0C77, + 0xFFFF0C68, 0xFFFF0C58, 0xFFFF0C49, 0xFFFF0C39, 0xFFFF0C2A, 0xFFFF0C1B, 0xFFFF0C0B, 0xFFFF0BFC, + 0xFFFF0BED, 0xFFFF0BDE, 0xFFFF0BCF, 0xFFFF0BC0, 0xFFFF0BB1, 0xFFFF0BA2, 0xFFFF0B93, 0xFFFF0B84, + 0xFFFF0B75, 0xFFFF0B66, 0xFFFF0B57, 0xFFFF0B48, 0xFFFF0B3A, 0xFFFF0B2B, 0xFFFF0B1C, 0xFFFF0B0E, + 0xFFFF0AFF, 0xFFFF0AF1, 0xFFFF0AE2, 0xFFFF0AD4, 0xFFFF0AC5, 0xFFFF0AB7, 0xFFFF0AA8, 0xFFFF0A9A, + 0xFFFF0A8C, 0xFFFF0A7E, 0xFFFF0A6F, 0xFFFF0A61, 0xFFFF0A53, 0xFFFF0A45, 0xFFFF0A37, 0xFFFF0A29, + 0xFFFF0A1B, 0xFFFF0A0D, 0xFFFF09FF, 0xFFFF09F1, 0xFFFF09E3, 0xFFFF09D5, 0xFFFF09C8, 0xFFFF09BA, + 0xFFFF09AC, 0xFFFF099E, 0xFFFF0991, 0xFFFF0983, 0xFFFF0976, 0xFFFF0968, 0xFFFF095B, 0xFFFF094D, + 0xFFFF0940, 0xFFFF0932, 0xFFFF0925, 0xFFFF0918, 0xFFFF090B, 0xFFFF08FD, 0xFFFF08F0, 0xFFFF08E3, + 0xFFFF08D6, 0xFFFF08C9, 0xFFFF08BC, 0xFFFF08AF, 0xFFFF08A2, 0xFFFF0895, 0xFFFF0888, 0xFFFF087B, + 0xFFFF086E, 0xFFFF0862, 0xFFFF0855, 0xFFFF0848, 0xFFFF083B, 0xFFFF082F, 0xFFFF0822, 0xFFFF0816, + 0xFFFF0809, 0xFFFF07FD, 0xFFFF07F0, 0xFFFF07E4, 0xFFFF07D8, 0xFFFF07CB, 0xFFFF07BF, 0xFFFF07B3, + 0xFFFF07A6, 0xFFFF079A, 0xFFFF078E, 0xFFFF0782, 0xFFFF0776, 0xFFFF076A, 0xFFFF075E, 0xFFFF0752, + 0xFFFF0746, 0xFFFF073A, 0xFFFF072E, 0xFFFF0723, 0xFFFF0717, 0xFFFF070B, 0xFFFF06FF, 0xFFFF06F4, + 0xFFFF06E8, 0xFFFF06DD, 0xFFFF06D1, 0xFFFF06C5, 0xFFFF06BA, 0xFFFF06AF, 0xFFFF06A3, 0xFFFF0698, + 0xFFFF068D, 0xFFFF0681, 0xFFFF0676, 0xFFFF066B, 0xFFFF0660, 0xFFFF0655, 0xFFFF0649, 0xFFFF063E, + 0xFFFF0633, 0xFFFF0628, 0xFFFF061D, 0xFFFF0613, 0xFFFF0608, 0xFFFF05FD, 0xFFFF05F2, 0xFFFF05E7, + 0xFFFF05DD, 0xFFFF05D2, 0xFFFF05C7, 0xFFFF05BD, 0xFFFF05B2, 0xFFFF05A8, 0xFFFF059D, 0xFFFF0593, + 0xFFFF0588, 0xFFFF057E, 0xFFFF0574, 0xFFFF0569, 0xFFFF055F, 0xFFFF0555, 0xFFFF054B, 0xFFFF0540, + 0xFFFF0536, 0xFFFF052C, 0xFFFF0522, 0xFFFF0518, 0xFFFF050E, 0xFFFF0504, 0xFFFF04FB, 0xFFFF04F1, + 0xFFFF04E7, 0xFFFF04DD, 0xFFFF04D3, 0xFFFF04CA, 0xFFFF04C0, 0xFFFF04B6, 0xFFFF04AD, 0xFFFF04A3, + 0xFFFF049A, 0xFFFF0490, 0xFFFF0487, 0xFFFF047D, 0xFFFF0474, 0xFFFF046B, 0xFFFF0462, 0xFFFF0458, + 0xFFFF044F, 0xFFFF0446, 0xFFFF043D, 0xFFFF0434, 0xFFFF042B, 0xFFFF0422, 0xFFFF0419, 0xFFFF0410, + 0xFFFF0407, 0xFFFF03FE, 0xFFFF03F5, 0xFFFF03EC, 0xFFFF03E4, 0xFFFF03DB, 0xFFFF03D2, 0xFFFF03CA, + 0xFFFF03C1, 0xFFFF03B8, 0xFFFF03B0, 0xFFFF03A7, 0xFFFF039F, 0xFFFF0397, 0xFFFF038E, 0xFFFF0386, + 0xFFFF037E, 0xFFFF0375, 0xFFFF036D, 0xFFFF0365, 0xFFFF035D, 0xFFFF0355, 0xFFFF034D, 0xFFFF0345, + 0xFFFF033D, 0xFFFF0335, 0xFFFF032D, 0xFFFF0325, 0xFFFF031D, 0xFFFF0315, 0xFFFF030E, 0xFFFF0306, + 0xFFFF02FE, 0xFFFF02F7, 0xFFFF02EF, 0xFFFF02E7, 0xFFFF02E0, 0xFFFF02D8, 0xFFFF02D1, 0xFFFF02CA, + 0xFFFF02C2, 0xFFFF02BB, 0xFFFF02B4, 0xFFFF02AC, 0xFFFF02A5, 0xFFFF029E, 0xFFFF0297, 0xFFFF0290, + 0xFFFF0289, 0xFFFF0281, 0xFFFF027A, 0xFFFF0274, 0xFFFF026D, 0xFFFF0266, 0xFFFF025F, 0xFFFF0258, + 0xFFFF0251, 0xFFFF024B, 0xFFFF0244, 0xFFFF023D, 0xFFFF0237, 0xFFFF0230, 0xFFFF022A, 0xFFFF0223, + 0xFFFF021D, 0xFFFF0216, 0xFFFF0210, 0xFFFF0209, 0xFFFF0203, 0xFFFF01FD, 0xFFFF01F7, 0xFFFF01F0, + 0xFFFF01EA, 0xFFFF01E4, 0xFFFF01DE, 0xFFFF01D8, 0xFFFF01D2, 0xFFFF01CC, 0xFFFF01C6, 0xFFFF01C0, + 0xFFFF01BA, 0xFFFF01B5, 0xFFFF01AF, 0xFFFF01A9, 0xFFFF01A3, 0xFFFF019E, 0xFFFF0198, 0xFFFF0193, + 0xFFFF018D, 0xFFFF0188, 0xFFFF0182, 0xFFFF017D, 0xFFFF0177, 0xFFFF0172, 0xFFFF016D, 0xFFFF0167, + 0xFFFF0162, 0xFFFF015D, 0xFFFF0158, 0xFFFF0153, 0xFFFF014E, 0xFFFF0149, 0xFFFF0144, 0xFFFF013F, + 0xFFFF013A, 0xFFFF0135, 0xFFFF0130, 0xFFFF012B, 0xFFFF0126, 0xFFFF0122, 0xFFFF011D, 0xFFFF0118, + 0xFFFF0114, 0xFFFF010F, 0xFFFF010A, 0xFFFF0106, 0xFFFF0101, 0xFFFF00FD, 0xFFFF00F9, 0xFFFF00F4, + 0xFFFF00F0, 0xFFFF00EC, 0xFFFF00E7, 0xFFFF00E3, 0xFFFF00DF, 0xFFFF00DB, 0xFFFF00D7, 0xFFFF00D3, + 0xFFFF00CF, 0xFFFF00CB, 0xFFFF00C7, 0xFFFF00C3, 0xFFFF00BF, 0xFFFF00BB, 0xFFFF00B8, 0xFFFF00B4, + 0xFFFF00B0, 0xFFFF00AD, 0xFFFF00A9, 0xFFFF00A5, 0xFFFF00A2, 0xFFFF009E, 0xFFFF009B, 0xFFFF0097, + 0xFFFF0094, 0xFFFF0091, 0xFFFF008D, 0xFFFF008A, 0xFFFF0087, 0xFFFF0084, 0xFFFF0080, 0xFFFF007D, + 0xFFFF007A, 0xFFFF0077, 0xFFFF0074, 0xFFFF0071, 0xFFFF006E, 0xFFFF006B, 0xFFFF0069, 0xFFFF0066, + 0xFFFF0063, 0xFFFF0060, 0xFFFF005E, 0xFFFF005B, 0xFFFF0058, 0xFFFF0056, 0xFFFF0053, 0xFFFF0051, + 0xFFFF004E, 0xFFFF004C, 0xFFFF0049, 0xFFFF0047, 0xFFFF0045, 0xFFFF0042, 0xFFFF0040, 0xFFFF003E, + 0xFFFF003C, 0xFFFF003A, 0xFFFF0038, 0xFFFF0036, 0xFFFF0034, 0xFFFF0032, 0xFFFF0030, 0xFFFF002E, + 0xFFFF002C, 0xFFFF002A, 0xFFFF0028, 0xFFFF0027, 0xFFFF0025, 0xFFFF0023, 0xFFFF0022, 0xFFFF0020, + 0xFFFF001F, 0xFFFF001D, 0xFFFF001C, 0xFFFF001A, 0xFFFF0019, 0xFFFF0017, 0xFFFF0016, 0xFFFF0015, + 0xFFFF0014, 0xFFFF0012, 0xFFFF0011, 0xFFFF0010, 0xFFFF000F, 0xFFFF000E, 0xFFFF000D, 0xFFFF000C, + 0xFFFF000B, 0xFFFF000A, 0xFFFF0009, 0xFFFF0009, 0xFFFF0008, 0xFFFF0007, 0xFFFF0006, 0xFFFF0006, + 0xFFFF0005, 0xFFFF0005, 0xFFFF0004, 0xFFFF0004, 0xFFFF0003, 0xFFFF0003, 0xFFFF0002, 0xFFFF0002, + 0xFFFF0002, 0xFFFF0001, 0xFFFF0001, 0xFFFF0001, 0xFFFF0001, 0xFFFF0001, 0xFFFF0001, 0xFFFF0001, + 0xFFFF0001, 0xFFFF0001, 0xFFFF0001, 0xFFFF0001, 0xFFFF0001, 0xFFFF0001, 0xFFFF0001, 0xFFFF0002, + 0xFFFF0002, 0xFFFF0002, 0xFFFF0003, 0xFFFF0003, 0xFFFF0004, 0xFFFF0004, 0xFFFF0005, 0xFFFF0005, + 0xFFFF0006, 0xFFFF0006, 0xFFFF0007, 0xFFFF0008, 0xFFFF0009, 0xFFFF0009, 0xFFFF000A, 0xFFFF000B, + 0xFFFF000C, 0xFFFF000D, 0xFFFF000E, 0xFFFF000F, 0xFFFF0010, 0xFFFF0011, 0xFFFF0012, 0xFFFF0014, + 0xFFFF0015, 0xFFFF0016, 0xFFFF0017, 0xFFFF0019, 0xFFFF001A, 0xFFFF001C, 0xFFFF001D, 0xFFFF001F, + 0xFFFF0020, 0xFFFF0022, 0xFFFF0023, 0xFFFF0025, 0xFFFF0027, 0xFFFF0028, 0xFFFF002A, 0xFFFF002C, + 0xFFFF002E, 0xFFFF0030, 0xFFFF0032, 0xFFFF0034, 0xFFFF0036, 0xFFFF0038, 0xFFFF003A, 0xFFFF003C, + 0xFFFF003E, 0xFFFF0040, 0xFFFF0042, 0xFFFF0045, 0xFFFF0047, 0xFFFF0049, 0xFFFF004C, 0xFFFF004E, + 0xFFFF0051, 0xFFFF0053, 0xFFFF0056, 0xFFFF0058, 0xFFFF005B, 0xFFFF005E, 0xFFFF0060, 0xFFFF0063, + 0xFFFF0066, 0xFFFF0069, 0xFFFF006B, 0xFFFF006E, 0xFFFF0071, 0xFFFF0074, 0xFFFF0077, 0xFFFF007A, + 0xFFFF007D, 0xFFFF0080, 0xFFFF0084, 0xFFFF0087, 0xFFFF008A, 0xFFFF008D, 0xFFFF0091, 0xFFFF0094, + 0xFFFF0097, 0xFFFF009B, 0xFFFF009E, 0xFFFF00A2, 0xFFFF00A5, 0xFFFF00A9, 0xFFFF00AD, 0xFFFF00B0, + 0xFFFF00B4, 0xFFFF00B8, 0xFFFF00BB, 0xFFFF00BF, 0xFFFF00C3, 0xFFFF00C7, 0xFFFF00CB, 0xFFFF00CF, + 0xFFFF00D3, 0xFFFF00D7, 0xFFFF00DB, 0xFFFF00DF, 0xFFFF00E3, 0xFFFF00E7, 0xFFFF00EC, 0xFFFF00F0, + 0xFFFF00F4, 0xFFFF00F9, 0xFFFF00FD, 0xFFFF0101, 0xFFFF0106, 0xFFFF010A, 0xFFFF010F, 0xFFFF0114, + 0xFFFF0118, 0xFFFF011D, 0xFFFF0122, 0xFFFF0126, 0xFFFF012B, 0xFFFF0130, 0xFFFF0135, 0xFFFF013A, + 0xFFFF013F, 0xFFFF0144, 0xFFFF0149, 0xFFFF014E, 0xFFFF0153, 0xFFFF0158, 0xFFFF015D, 0xFFFF0162, + 0xFFFF0167, 0xFFFF016D, 0xFFFF0172, 0xFFFF0177, 0xFFFF017D, 0xFFFF0182, 0xFFFF0188, 0xFFFF018D, + 0xFFFF0193, 0xFFFF0198, 0xFFFF019E, 0xFFFF01A3, 0xFFFF01A9, 0xFFFF01AF, 0xFFFF01B5, 0xFFFF01BA, + 0xFFFF01C0, 0xFFFF01C6, 0xFFFF01CC, 0xFFFF01D2, 0xFFFF01D8, 0xFFFF01DE, 0xFFFF01E4, 0xFFFF01EA, + 0xFFFF01F0, 0xFFFF01F7, 0xFFFF01FD, 0xFFFF0203, 0xFFFF0209, 0xFFFF0210, 0xFFFF0216, 0xFFFF021D, + 0xFFFF0223, 0xFFFF022A, 0xFFFF0230, 0xFFFF0237, 0xFFFF023D, 0xFFFF0244, 0xFFFF024B, 0xFFFF0251, + 0xFFFF0258, 0xFFFF025F, 0xFFFF0266, 0xFFFF026D, 0xFFFF0274, 0xFFFF027A, 0xFFFF0281, 0xFFFF0289, + 0xFFFF0290, 0xFFFF0297, 0xFFFF029E, 0xFFFF02A5, 0xFFFF02AC, 0xFFFF02B4, 0xFFFF02BB, 0xFFFF02C2, + 0xFFFF02CA, 0xFFFF02D1, 0xFFFF02D8, 0xFFFF02E0, 0xFFFF02E7, 0xFFFF02EF, 0xFFFF02F7, 0xFFFF02FE, + 0xFFFF0306, 0xFFFF030E, 0xFFFF0315, 0xFFFF031D, 0xFFFF0325, 0xFFFF032D, 0xFFFF0335, 0xFFFF033D, + 0xFFFF0345, 0xFFFF034D, 0xFFFF0355, 0xFFFF035D, 0xFFFF0365, 0xFFFF036D, 0xFFFF0375, 0xFFFF037E, + 0xFFFF0386, 0xFFFF038E, 0xFFFF0397, 0xFFFF039F, 0xFFFF03A7, 0xFFFF03B0, 0xFFFF03B8, 0xFFFF03C1, + 0xFFFF03CA, 0xFFFF03D2, 0xFFFF03DB, 0xFFFF03E4, 0xFFFF03EC, 0xFFFF03F5, 0xFFFF03FE, 0xFFFF0407, + 0xFFFF0410, 0xFFFF0419, 0xFFFF0422, 0xFFFF042B, 0xFFFF0434, 0xFFFF043D, 0xFFFF0446, 0xFFFF044F, + 0xFFFF0458, 0xFFFF0462, 0xFFFF046B, 0xFFFF0474, 0xFFFF047D, 0xFFFF0487, 0xFFFF0490, 0xFFFF049A, + 0xFFFF04A3, 0xFFFF04AD, 0xFFFF04B6, 0xFFFF04C0, 0xFFFF04CA, 0xFFFF04D3, 0xFFFF04DD, 0xFFFF04E7, + 0xFFFF04F1, 0xFFFF04FB, 0xFFFF0504, 0xFFFF050E, 0xFFFF0518, 0xFFFF0522, 0xFFFF052C, 0xFFFF0536, + 0xFFFF0540, 0xFFFF054B, 0xFFFF0555, 0xFFFF055F, 0xFFFF0569, 0xFFFF0574, 0xFFFF057E, 0xFFFF0588, + 0xFFFF0593, 0xFFFF059D, 0xFFFF05A8, 0xFFFF05B2, 0xFFFF05BD, 0xFFFF05C7, 0xFFFF05D2, 0xFFFF05DD, + 0xFFFF05E7, 0xFFFF05F2, 0xFFFF05FD, 0xFFFF0608, 0xFFFF0613, 0xFFFF061D, 0xFFFF0628, 0xFFFF0633, + 0xFFFF063E, 0xFFFF0649, 0xFFFF0655, 0xFFFF0660, 0xFFFF066B, 0xFFFF0676, 0xFFFF0681, 0xFFFF068D, + 0xFFFF0698, 0xFFFF06A3, 0xFFFF06AF, 0xFFFF06BA, 0xFFFF06C5, 0xFFFF06D1, 0xFFFF06DD, 0xFFFF06E8, + 0xFFFF06F4, 0xFFFF06FF, 0xFFFF070B, 0xFFFF0717, 0xFFFF0723, 0xFFFF072E, 0xFFFF073A, 0xFFFF0746, + 0xFFFF0752, 0xFFFF075E, 0xFFFF076A, 0xFFFF0776, 0xFFFF0782, 0xFFFF078E, 0xFFFF079A, 0xFFFF07A6, + 0xFFFF07B3, 0xFFFF07BF, 0xFFFF07CB, 0xFFFF07D8, 0xFFFF07E4, 0xFFFF07F0, 0xFFFF07FD, 0xFFFF0809, + 0xFFFF0816, 0xFFFF0822, 0xFFFF082F, 0xFFFF083B, 0xFFFF0848, 0xFFFF0855, 0xFFFF0862, 0xFFFF086E, + 0xFFFF087B, 0xFFFF0888, 0xFFFF0895, 0xFFFF08A2, 0xFFFF08AF, 0xFFFF08BC, 0xFFFF08C9, 0xFFFF08D6, + 0xFFFF08E3, 0xFFFF08F0, 0xFFFF08FD, 0xFFFF090B, 0xFFFF0918, 0xFFFF0925, 0xFFFF0932, 0xFFFF0940, + 0xFFFF094D, 0xFFFF095B, 0xFFFF0968, 0xFFFF0976, 0xFFFF0983, 0xFFFF0991, 0xFFFF099E, 0xFFFF09AC, + 0xFFFF09BA, 0xFFFF09C8, 0xFFFF09D5, 0xFFFF09E3, 0xFFFF09F1, 0xFFFF09FF, 0xFFFF0A0D, 0xFFFF0A1B, + 0xFFFF0A29, 0xFFFF0A37, 0xFFFF0A45, 0xFFFF0A53, 0xFFFF0A61, 0xFFFF0A6F, 0xFFFF0A7E, 0xFFFF0A8C, + 0xFFFF0A9A, 0xFFFF0AA8, 0xFFFF0AB7, 0xFFFF0AC5, 0xFFFF0AD4, 0xFFFF0AE2, 0xFFFF0AF1, 0xFFFF0AFF, + 0xFFFF0B0E, 0xFFFF0B1C, 0xFFFF0B2B, 0xFFFF0B3A, 0xFFFF0B48, 0xFFFF0B57, 0xFFFF0B66, 0xFFFF0B75, + 0xFFFF0B84, 0xFFFF0B93, 0xFFFF0BA2, 0xFFFF0BB1, 0xFFFF0BC0, 0xFFFF0BCF, 0xFFFF0BDE, 0xFFFF0BED, + 0xFFFF0BFC, 0xFFFF0C0B, 0xFFFF0C1B, 0xFFFF0C2A, 0xFFFF0C39, 0xFFFF0C49, 0xFFFF0C58, 0xFFFF0C68, + 0xFFFF0C77, 0xFFFF0C87, 0xFFFF0C96, 0xFFFF0CA6, 0xFFFF0CB5, 0xFFFF0CC5, 0xFFFF0CD5, 0xFFFF0CE4, + 0xFFFF0CF4, 0xFFFF0D04, 0xFFFF0D14, 0xFFFF0D24, 0xFFFF0D34, 0xFFFF0D43, 0xFFFF0D53, 0xFFFF0D64, + 0xFFFF0D74, 0xFFFF0D84, 0xFFFF0D94, 0xFFFF0DA4, 0xFFFF0DB4, 0xFFFF0DC4, 0xFFFF0DD5, 0xFFFF0DE5, + 0xFFFF0DF5, 0xFFFF0E06, 0xFFFF0E16, 0xFFFF0E27, 0xFFFF0E37, 0xFFFF0E48, 0xFFFF0E58, 0xFFFF0E69, + 0xFFFF0E79, 0xFFFF0E8A, 0xFFFF0E9B, 0xFFFF0EAC, 0xFFFF0EBC, 0xFFFF0ECD, 0xFFFF0EDE, 0xFFFF0EEF, + 0xFFFF0F00, 0xFFFF0F11, 0xFFFF0F22, 0xFFFF0F33, 0xFFFF0F44, 0xFFFF0F55, 0xFFFF0F66, 0xFFFF0F77, + 0xFFFF0F89, 0xFFFF0F9A, 0xFFFF0FAB, 0xFFFF0FBD, 0xFFFF0FCE, 0xFFFF0FDF, 0xFFFF0FF1, 0xFFFF1002, + 0xFFFF1014, 0xFFFF1025, 0xFFFF1037, 0xFFFF1049, 0xFFFF105A, 0xFFFF106C, 0xFFFF107E, 0xFFFF108F, + 0xFFFF10A1, 0xFFFF10B3, 0xFFFF10C5, 0xFFFF10D7, 0xFFFF10E9, 0xFFFF10FB, 0xFFFF110D, 0xFFFF111F, + 0xFFFF1131, 0xFFFF1143, 0xFFFF1155, 0xFFFF1167, 0xFFFF117A, 0xFFFF118C, 0xFFFF119E, 0xFFFF11B1, + 0xFFFF11C3, 0xFFFF11D5, 0xFFFF11E8, 0xFFFF11FA, 0xFFFF120D, 0xFFFF121F, 0xFFFF1232, 0xFFFF1245, + 0xFFFF1257, 0xFFFF126A, 0xFFFF127D, 0xFFFF128F, 0xFFFF12A2, 0xFFFF12B5, 0xFFFF12C8, 0xFFFF12DB, + 0xFFFF12EE, 0xFFFF1301, 0xFFFF1314, 0xFFFF1327, 0xFFFF133A, 0xFFFF134D, 0xFFFF1360, 0xFFFF1374, + 0xFFFF1387, 0xFFFF139A, 0xFFFF13AD, 0xFFFF13C1, 0xFFFF13D4, 0xFFFF13E7, 0xFFFF13FB, 0xFFFF140E, + 0xFFFF1422, 0xFFFF1435, 0xFFFF1449, 0xFFFF145D, 0xFFFF1470, 0xFFFF1484, 0xFFFF1498, 0xFFFF14AC, + 0xFFFF14BF, 0xFFFF14D3, 0xFFFF14E7, 0xFFFF14FB, 0xFFFF150F, 0xFFFF1523, 0xFFFF1537, 0xFFFF154B, + 0xFFFF155F, 0xFFFF1573, 0xFFFF1587, 0xFFFF159C, 0xFFFF15B0, 0xFFFF15C4, 0xFFFF15D8, 0xFFFF15ED, + 0xFFFF1601, 0xFFFF1615, 0xFFFF162A, 0xFFFF163E, 0xFFFF1653, 0xFFFF1667, 0xFFFF167C, 0xFFFF1691, + 0xFFFF16A5, 0xFFFF16BA, 0xFFFF16CF, 0xFFFF16E3, 0xFFFF16F8, 0xFFFF170D, 0xFFFF1722, 0xFFFF1737, + 0xFFFF174C, 0xFFFF1761, 0xFFFF1776, 0xFFFF178B, 0xFFFF17A0, 0xFFFF17B5, 0xFFFF17CA, 0xFFFF17DF, + 0xFFFF17F4, 0xFFFF180A, 0xFFFF181F, 0xFFFF1834, 0xFFFF184A, 0xFFFF185F, 0xFFFF1874, 0xFFFF188A, + 0xFFFF189F, 0xFFFF18B5, 0xFFFF18CB, 0xFFFF18E0, 0xFFFF18F6, 0xFFFF190B, 0xFFFF1921, 0xFFFF1937, + 0xFFFF194D, 0xFFFF1962, 0xFFFF1978, 0xFFFF198E, 0xFFFF19A4, 0xFFFF19BA, 0xFFFF19D0, 0xFFFF19E6, + 0xFFFF19FC, 0xFFFF1A12, 0xFFFF1A28, 0xFFFF1A3E, 0xFFFF1A55, 0xFFFF1A6B, 0xFFFF1A81, 0xFFFF1A97, + 0xFFFF1AAE, 0xFFFF1AC4, 0xFFFF1ADA, 0xFFFF1AF1, 0xFFFF1B07, 0xFFFF1B1E, 0xFFFF1B34, 0xFFFF1B4B, + 0xFFFF1B61, 0xFFFF1B78, 0xFFFF1B8F, 0xFFFF1BA5, 0xFFFF1BBC, 0xFFFF1BD3, 0xFFFF1BEA, 0xFFFF1C01, + 0xFFFF1C17, 0xFFFF1C2E, 0xFFFF1C45, 0xFFFF1C5C, 0xFFFF1C73, 0xFFFF1C8A, 0xFFFF1CA1, 0xFFFF1CB9, + 0xFFFF1CD0, 0xFFFF1CE7, 0xFFFF1CFE, 0xFFFF1D15, 0xFFFF1D2D, 0xFFFF1D44, 0xFFFF1D5B, 0xFFFF1D73, + 0xFFFF1D8A, 0xFFFF1DA2, 0xFFFF1DB9, 0xFFFF1DD1, 0xFFFF1DE8, 0xFFFF1E00, 0xFFFF1E17, 0xFFFF1E2F, + 0xFFFF1E47, 0xFFFF1E5E, 0xFFFF1E76, 0xFFFF1E8E, 0xFFFF1EA6, 0xFFFF1EBE, 0xFFFF1ED6, 0xFFFF1EEE, + 0xFFFF1F06, 0xFFFF1F1E, 0xFFFF1F36, 0xFFFF1F4E, 0xFFFF1F66, 0xFFFF1F7E, 0xFFFF1F96, 0xFFFF1FAE, + 0xFFFF1FC6, 0xFFFF1FDF, 0xFFFF1FF7, 0xFFFF200F, 0xFFFF2028, 0xFFFF2040, 0xFFFF2059, 0xFFFF2071, + 0xFFFF208A, 0xFFFF20A2, 0xFFFF20BB, 0xFFFF20D3, 0xFFFF20EC, 0xFFFF2105, 0xFFFF211D, 0xFFFF2136, + 0xFFFF214F, 0xFFFF2168, 0xFFFF2181, 0xFFFF2199, 0xFFFF21B2, 0xFFFF21CB, 0xFFFF21E4, 0xFFFF21FD, + 0xFFFF2216, 0xFFFF222F, 0xFFFF2248, 0xFFFF2262, 0xFFFF227B, 0xFFFF2294, 0xFFFF22AD, 0xFFFF22C7, + 0xFFFF22E0, 0xFFFF22F9, 0xFFFF2313, 0xFFFF232C, 0xFFFF2345, 0xFFFF235F, 0xFFFF2378, 0xFFFF2392, + 0xFFFF23AC, 0xFFFF23C5, 0xFFFF23DF, 0xFFFF23F8, 0xFFFF2412, 0xFFFF242C, 0xFFFF2446, 0xFFFF245F, + 0xFFFF2479, 0xFFFF2493, 0xFFFF24AD, 0xFFFF24C7, 0xFFFF24E1, 0xFFFF24FB, 0xFFFF2515, 0xFFFF252F, + 0xFFFF2549, 0xFFFF2563, 0xFFFF257E, 0xFFFF2598, 0xFFFF25B2, 0xFFFF25CC, 0xFFFF25E7, 0xFFFF2601, + 0xFFFF261B, 0xFFFF2636, 0xFFFF2650, 0xFFFF266B, 0xFFFF2685, 0xFFFF26A0, 0xFFFF26BA, 0xFFFF26D5, + 0xFFFF26EF, 0xFFFF270A, 0xFFFF2725, 0xFFFF273F, 0xFFFF275A, 0xFFFF2775, 0xFFFF2790, 0xFFFF27AB, + 0xFFFF27C6, 0xFFFF27E1, 0xFFFF27FC, 0xFFFF2816, 0xFFFF2832, 0xFFFF284D, 0xFFFF2868, 0xFFFF2883, + 0xFFFF289E, 0xFFFF28B9, 0xFFFF28D4, 0xFFFF28F0, 0xFFFF290B, 0xFFFF2926, 0xFFFF2942, 0xFFFF295D, + 0xFFFF2978, 0xFFFF2994, 0xFFFF29AF, 0xFFFF29CB, 0xFFFF29E6, 0xFFFF2A02, 0xFFFF2A1D, 0xFFFF2A39, + 0xFFFF2A55, 0xFFFF2A70, 0xFFFF2A8C, 0xFFFF2AA8, 0xFFFF2AC4, 0xFFFF2AE0, 0xFFFF2AFB, 0xFFFF2B17, + 0xFFFF2B33, 0xFFFF2B4F, 0xFFFF2B6B, 0xFFFF2B87, 0xFFFF2BA3, 0xFFFF2BBF, 0xFFFF2BDC, 0xFFFF2BF8, + 0xFFFF2C14, 0xFFFF2C30, 0xFFFF2C4C, 0xFFFF2C69, 0xFFFF2C85, 0xFFFF2CA1, 0xFFFF2CBE, 0xFFFF2CDA, + 0xFFFF2CF6, 0xFFFF2D13, 0xFFFF2D2F, 0xFFFF2D4C, 0xFFFF2D69, 0xFFFF2D85, 0xFFFF2DA2, 0xFFFF2DBE, + 0xFFFF2DDB, 0xFFFF2DF8, 0xFFFF2E15, 0xFFFF2E31, 0xFFFF2E4E, 0xFFFF2E6B, 0xFFFF2E88, 0xFFFF2EA5, + 0xFFFF2EC2, 0xFFFF2EDF, 0xFFFF2EFC, 0xFFFF2F19, 0xFFFF2F36, 0xFFFF2F53, 0xFFFF2F70, 0xFFFF2F8D, + 0xFFFF2FAA, 0xFFFF2FC8, 0xFFFF2FE5, 0xFFFF3002, 0xFFFF3020, 0xFFFF303D, 0xFFFF305A, 0xFFFF3078, + 0xFFFF3095, 0xFFFF30B3, 0xFFFF30D0, 0xFFFF30EE, 0xFFFF310B, 0xFFFF3129, 0xFFFF3146, 0xFFFF3164, + 0xFFFF3182, 0xFFFF31A0, 0xFFFF31BD, 0xFFFF31DB, 0xFFFF31F9, 0xFFFF3217, 0xFFFF3235, 0xFFFF3253, + 0xFFFF3270, 0xFFFF328E, 0xFFFF32AC, 0xFFFF32CA, 0xFFFF32E9, 0xFFFF3307, 0xFFFF3325, 0xFFFF3343, + 0xFFFF3361, 0xFFFF337F, 0xFFFF339E, 0xFFFF33BC, 0xFFFF33DA, 0xFFFF33F9, 0xFFFF3417, 0xFFFF3435, + 0xFFFF3454, 0xFFFF3472, 0xFFFF3491, 0xFFFF34AF, 0xFFFF34CE, 0xFFFF34EC, 0xFFFF350B, 0xFFFF352A, + 0xFFFF3548, 0xFFFF3567, 0xFFFF3586, 0xFFFF35A5, 0xFFFF35C3, 0xFFFF35E2, 0xFFFF3601, 0xFFFF3620, + 0xFFFF363F, 0xFFFF365E, 0xFFFF367D, 0xFFFF369C, 0xFFFF36BB, 0xFFFF36DA, 0xFFFF36F9, 0xFFFF3718, + 0xFFFF3737, 0xFFFF3757, 0xFFFF3776, 0xFFFF3795, 0xFFFF37B4, 0xFFFF37D4, 0xFFFF37F3, 0xFFFF3812, + 0xFFFF3832, 0xFFFF3851, 0xFFFF3871, 0xFFFF3890, 0xFFFF38B0, 0xFFFF38CF, 0xFFFF38EF, 0xFFFF390F, + 0xFFFF392E, 0xFFFF394E, 0xFFFF396E, 0xFFFF398D, 0xFFFF39AD, 0xFFFF39CD, 0xFFFF39ED, 0xFFFF3A0D, + 0xFFFF3A2C, 0xFFFF3A4C, 0xFFFF3A6C, 0xFFFF3A8C, 0xFFFF3AAC, 0xFFFF3ACC, 0xFFFF3AEC, 0xFFFF3B0C, + 0xFFFF3B2D, 0xFFFF3B4D, 0xFFFF3B6D, 0xFFFF3B8D, 0xFFFF3BAD, 0xFFFF3BCE, 0xFFFF3BEE, 0xFFFF3C0E, + 0xFFFF3C2F, 0xFFFF3C4F, 0xFFFF3C6F, 0xFFFF3C90, 0xFFFF3CB0, 0xFFFF3CD1, 0xFFFF3CF1, 0xFFFF3D12, + 0xFFFF3D33, 0xFFFF3D53, 0xFFFF3D74, 0xFFFF3D95, 0xFFFF3DB5, 0xFFFF3DD6, 0xFFFF3DF7, 0xFFFF3E18, + 0xFFFF3E38, 0xFFFF3E59, 0xFFFF3E7A, 0xFFFF3E9B, 0xFFFF3EBC, 0xFFFF3EDD, 0xFFFF3EFE, 0xFFFF3F1F, + 0xFFFF3F40, 0xFFFF3F61, 0xFFFF3F82, 0xFFFF3FA4, 0xFFFF3FC5, 0xFFFF3FE6, 0xFFFF4007, 0xFFFF4028, + 0xFFFF404A, 0xFFFF406B, 0xFFFF408C, 0xFFFF40AE, 0xFFFF40CF, 0xFFFF40F1, 0xFFFF4112, 0xFFFF4134, + 0xFFFF4155, 0xFFFF4177, 0xFFFF4198, 0xFFFF41BA, 0xFFFF41DC, 0xFFFF41FD, 0xFFFF421F, 0xFFFF4241, + 0xFFFF4262, 0xFFFF4284, 0xFFFF42A6, 0xFFFF42C8, 0xFFFF42EA, 0xFFFF430C, 0xFFFF432E, 0xFFFF434F, + 0xFFFF4371, 0xFFFF4393, 0xFFFF43B6, 0xFFFF43D8, 0xFFFF43FA, 0xFFFF441C, 0xFFFF443E, 0xFFFF4460, + 0xFFFF4482, 0xFFFF44A5, 0xFFFF44C7, 0xFFFF44E9, 0xFFFF450C, 0xFFFF452E, 0xFFFF4550, 0xFFFF4573, + 0xFFFF4595, 0xFFFF45B8, 0xFFFF45DA, 0xFFFF45FD, 0xFFFF461F, 0xFFFF4642, 0xFFFF4664, 0xFFFF4687, + 0xFFFF46AA, 0xFFFF46CC, 0xFFFF46EF, 0xFFFF4712, 0xFFFF4735, 0xFFFF4757, 0xFFFF477A, 0xFFFF479D, + 0xFFFF47C0, 0xFFFF47E3, 0xFFFF4806, 0xFFFF4829, 0xFFFF484C, 0xFFFF486F, 0xFFFF4892, 0xFFFF48B5, + 0xFFFF48D8, 0xFFFF48FB, 0xFFFF491E, 0xFFFF4941, 0xFFFF4965, 0xFFFF4988, 0xFFFF49AB, 0xFFFF49CE, + 0xFFFF49F2, 0xFFFF4A15, 0xFFFF4A38, 0xFFFF4A5C, 0xFFFF4A7F, 0xFFFF4AA3, 0xFFFF4AC6, 0xFFFF4AEA, + 0xFFFF4B0D, 0xFFFF4B31, 0xFFFF4B55, 0xFFFF4B78, 0xFFFF4B9C, 0xFFFF4BBF, 0xFFFF4BE3, 0xFFFF4C07, + 0xFFFF4C2B, 0xFFFF4C4E, 0xFFFF4C72, 0xFFFF4C96, 0xFFFF4CBA, 0xFFFF4CDE, 0xFFFF4D02, 0xFFFF4D26, + 0xFFFF4D4A, 0xFFFF4D6E, 0xFFFF4D92, 0xFFFF4DB6, 0xFFFF4DDA, 0xFFFF4DFE, 0xFFFF4E22, 0xFFFF4E46, + 0xFFFF4E6A, 0xFFFF4E8F, 0xFFFF4EB3, 0xFFFF4ED7, 0xFFFF4EFC, 0xFFFF4F20, 0xFFFF4F44, 0xFFFF4F69, + 0xFFFF4F8D, 0xFFFF4FB1, 0xFFFF4FD6, 0xFFFF4FFA, 0xFFFF501F, 0xFFFF5043, 0xFFFF5068, 0xFFFF508D, + 0xFFFF50B1, 0xFFFF50D6, 0xFFFF50FA, 0xFFFF511F, 0xFFFF5144, 0xFFFF5169, 0xFFFF518D, 0xFFFF51B2, + 0xFFFF51D7, 0xFFFF51FC, 0xFFFF5221, 0xFFFF5246, 0xFFFF526B, 0xFFFF5290, 0xFFFF52B5, 0xFFFF52DA, + 0xFFFF52FF, 0xFFFF5324, 0xFFFF5349, 0xFFFF536E, 0xFFFF5393, 0xFFFF53B8, 0xFFFF53DD, 0xFFFF5403, + 0xFFFF5428, 0xFFFF544D, 0xFFFF5472, 0xFFFF5498, 0xFFFF54BD, 0xFFFF54E2, 0xFFFF5508, 0xFFFF552D, + 0xFFFF5553, 0xFFFF5578, 0xFFFF559E, 0xFFFF55C3, 0xFFFF55E9, 0xFFFF560E, 0xFFFF5634, 0xFFFF565A, + 0xFFFF567F, 0xFFFF56A5, 0xFFFF56CB, 0xFFFF56F0, 0xFFFF5716, 0xFFFF573C, 0xFFFF5762, 0xFFFF5788, + 0xFFFF57AD, 0xFFFF57D3, 0xFFFF57F9, 0xFFFF581F, 0xFFFF5845, 0xFFFF586B, 0xFFFF5891, 0xFFFF58B7, + 0xFFFF58DD, 0xFFFF5903, 0xFFFF5929, 0xFFFF5950, 0xFFFF5976, 0xFFFF599C, 0xFFFF59C2, 0xFFFF59E8, + 0xFFFF5A0F, 0xFFFF5A35, 0xFFFF5A5B, 0xFFFF5A82, 0xFFFF5AA8, 0xFFFF5ACE, 0xFFFF5AF5, 0xFFFF5B1B, + 0xFFFF5B42, 0xFFFF5B68, 0xFFFF5B8F, 0xFFFF5BB5, 0xFFFF5BDC, 0xFFFF5C02, 0xFFFF5C29, 0xFFFF5C50, + 0xFFFF5C76, 0xFFFF5C9D, 0xFFFF5CC4, 0xFFFF5CEA, 0xFFFF5D11, 0xFFFF5D38, 0xFFFF5D5F, 0xFFFF5D85, + 0xFFFF5DAC, 0xFFFF5DD3, 0xFFFF5DFA, 0xFFFF5E21, 0xFFFF5E48, 0xFFFF5E6F, 0xFFFF5E96, 0xFFFF5EBD, + 0xFFFF5EE4, 0xFFFF5F0B, 0xFFFF5F32, 0xFFFF5F59, 0xFFFF5F81, 0xFFFF5FA8, 0xFFFF5FCF, 0xFFFF5FF6, + 0xFFFF601D, 0xFFFF6045, 0xFFFF606C, 0xFFFF6093, 0xFFFF60BB, 0xFFFF60E2, 0xFFFF6109, 0xFFFF6131, + 0xFFFF6158, 0xFFFF6180, 0xFFFF61A7, 0xFFFF61CF, 0xFFFF61F6, 0xFFFF621E, 0xFFFF6245, 0xFFFF626D, + 0xFFFF6295, 0xFFFF62BC, 0xFFFF62E4, 0xFFFF630C, 0xFFFF6333, 0xFFFF635B, 0xFFFF6383, 0xFFFF63AB, + 0xFFFF63D2, 0xFFFF63FA, 0xFFFF6422, 0xFFFF644A, 0xFFFF6472, 0xFFFF649A, 0xFFFF64C2, 0xFFFF64EA, + 0xFFFF6512, 0xFFFF653A, 0xFFFF6562, 0xFFFF658A, 0xFFFF65B2, 0xFFFF65DA, 0xFFFF6602, 0xFFFF662A, + 0xFFFF6653, 0xFFFF667B, 0xFFFF66A3, 0xFFFF66CB, 0xFFFF66F4, 0xFFFF671C, 0xFFFF6744, 0xFFFF676D, + 0xFFFF6795, 0xFFFF67BD, 0xFFFF67E6, 0xFFFF680E, 0xFFFF6837, 0xFFFF685F, 0xFFFF6888, 0xFFFF68B0, + 0xFFFF68D9, 0xFFFF6901, 0xFFFF692A, 0xFFFF6953, 0xFFFF697B, 0xFFFF69A4, 0xFFFF69CD, 0xFFFF69F5, + 0xFFFF6A1E, 0xFFFF6A47, 0xFFFF6A70, 0xFFFF6A98, 0xFFFF6AC1, 0xFFFF6AEA, 0xFFFF6B13, 0xFFFF6B3C, + 0xFFFF6B65, 0xFFFF6B8E, 0xFFFF6BB7, 0xFFFF6BE0, 0xFFFF6C09, 0xFFFF6C32, 0xFFFF6C5B, 0xFFFF6C84, + 0xFFFF6CAD, 0xFFFF6CD6, 0xFFFF6CFF, 0xFFFF6D28, 0xFFFF6D52, 0xFFFF6D7B, 0xFFFF6DA4, 0xFFFF6DCD, + 0xFFFF6DF6, 0xFFFF6E20, 0xFFFF6E49, 0xFFFF6E72, 0xFFFF6E9C, 0xFFFF6EC5, 0xFFFF6EEF, 0xFFFF6F18, + 0xFFFF6F41, 0xFFFF6F6B, 0xFFFF6F94, 0xFFFF6FBE, 0xFFFF6FE7, 0xFFFF7011, 0xFFFF703B, 0xFFFF7064, + 0xFFFF708E, 0xFFFF70B7, 0xFFFF70E1, 0xFFFF710B, 0xFFFF7134, 0xFFFF715E, 0xFFFF7188, 0xFFFF71B2, + 0xFFFF71DC, 0xFFFF7205, 0xFFFF722F, 0xFFFF7259, 0xFFFF7283, 0xFFFF72AD, 0xFFFF72D7, 0xFFFF7301, + 0xFFFF732B, 0xFFFF7355, 0xFFFF737F, 0xFFFF73A9, 0xFFFF73D3, 0xFFFF73FD, 0xFFFF7427, 0xFFFF7451, + 0xFFFF747B, 0xFFFF74A5, 0xFFFF74CF, 0xFFFF74FA, 0xFFFF7524, 0xFFFF754E, 0xFFFF7578, 0xFFFF75A3, + 0xFFFF75CD, 0xFFFF75F7, 0xFFFF7622, 0xFFFF764C, 0xFFFF7676, 0xFFFF76A1, 0xFFFF76CB, 0xFFFF76F6, + 0xFFFF7720, 0xFFFF774B, 0xFFFF7775, 0xFFFF77A0, 0xFFFF77CA, 0xFFFF77F5, 0xFFFF781F, 0xFFFF784A, + 0xFFFF7875, 0xFFFF789F, 0xFFFF78CA, 0xFFFF78F5, 0xFFFF791F, 0xFFFF794A, 0xFFFF7975, 0xFFFF79A0, + 0xFFFF79CA, 0xFFFF79F5, 0xFFFF7A20, 0xFFFF7A4B, 0xFFFF7A76, 0xFFFF7AA1, 0xFFFF7ACC, 0xFFFF7AF7, + 0xFFFF7B21, 0xFFFF7B4C, 0xFFFF7B77, 0xFFFF7BA2, 0xFFFF7BCD, 0xFFFF7BF9, 0xFFFF7C24, 0xFFFF7C4F, + 0xFFFF7C7A, 0xFFFF7CA5, 0xFFFF7CD0, 0xFFFF7CFB, 0xFFFF7D26, 0xFFFF7D52, 0xFFFF7D7D, 0xFFFF7DA8, + 0xFFFF7DD3, 0xFFFF7DFF, 0xFFFF7E2A, 0xFFFF7E55, 0xFFFF7E81, 0xFFFF7EAC, 0xFFFF7ED7, 0xFFFF7F03, + 0xFFFF7F2E, 0xFFFF7F5A, 0xFFFF7F85, 0xFFFF7FB1, 0xFFFF7FDC, 0xFFFF8008, 0xFFFF8033, 0xFFFF805F, + 0xFFFF808A, 0xFFFF80B6, 0xFFFF80E2, 0xFFFF810D, 0xFFFF8139, 0xFFFF8165, 0xFFFF8190, 0xFFFF81BC, + 0xFFFF81E8, 0xFFFF8214, 0xFFFF823F, 0xFFFF826B, 0xFFFF8297, 0xFFFF82C3, 0xFFFF82EF, 0xFFFF831A, + 0xFFFF8346, 0xFFFF8372, 0xFFFF839E, 0xFFFF83CA, 0xFFFF83F6, 0xFFFF8422, 0xFFFF844E, 0xFFFF847A, + 0xFFFF84A6, 0xFFFF84D2, 0xFFFF84FE, 0xFFFF852A, 0xFFFF8556, 0xFFFF8583, 0xFFFF85AF, 0xFFFF85DB, + 0xFFFF8607, 0xFFFF8633, 0xFFFF8660, 0xFFFF868C, 0xFFFF86B8, 0xFFFF86E4, 0xFFFF8711, 0xFFFF873D, + 0xFFFF8769, 0xFFFF8796, 0xFFFF87C2, 0xFFFF87EE, 0xFFFF881B, 0xFFFF8847, 0xFFFF8874, 0xFFFF88A0, + 0xFFFF88CD, 0xFFFF88F9, 0xFFFF8926, 0xFFFF8952, 0xFFFF897F, 0xFFFF89AB, 0xFFFF89D8, 0xFFFF8A04, + 0xFFFF8A31, 0xFFFF8A5E, 0xFFFF8A8A, 0xFFFF8AB7, 0xFFFF8AE4, 0xFFFF8B10, 0xFFFF8B3D, 0xFFFF8B6A, + 0xFFFF8B97, 0xFFFF8BC3, 0xFFFF8BF0, 0xFFFF8C1D, 0xFFFF8C4A, 0xFFFF8C77, 0xFFFF8CA3, 0xFFFF8CD0, + 0xFFFF8CFD, 0xFFFF8D2A, 0xFFFF8D57, 0xFFFF8D84, 0xFFFF8DB1, 0xFFFF8DDE, 0xFFFF8E0B, 0xFFFF8E38, + 0xFFFF8E65, 0xFFFF8E92, 0xFFFF8EBF, 0xFFFF8EEC, 0xFFFF8F19, 0xFFFF8F46, 0xFFFF8F74, 0xFFFF8FA1, + 0xFFFF8FCE, 0xFFFF8FFB, 0xFFFF9028, 0xFFFF9056, 0xFFFF9083, 0xFFFF90B0, 0xFFFF90DD, 0xFFFF910B, + 0xFFFF9138, 0xFFFF9165, 0xFFFF9193, 0xFFFF91C0, 0xFFFF91ED, 0xFFFF921B, 0xFFFF9248, 0xFFFF9276, + 0xFFFF92A3, 0xFFFF92D0, 0xFFFF92FE, 0xFFFF932B, 0xFFFF9359, 0xFFFF9386, 0xFFFF93B4, 0xFFFF93E2, + 0xFFFF940F, 0xFFFF943D, 0xFFFF946A, 0xFFFF9498, 0xFFFF94C6, 0xFFFF94F3, 0xFFFF9521, 0xFFFF954F, + 0xFFFF957C, 0xFFFF95AA, 0xFFFF95D8, 0xFFFF9605, 0xFFFF9633, 0xFFFF9661, 0xFFFF968F, 0xFFFF96BD, + 0xFFFF96EA, 0xFFFF9718, 0xFFFF9746, 0xFFFF9774, 0xFFFF97A2, 0xFFFF97D0, 0xFFFF97FE, 0xFFFF982C, + 0xFFFF985A, 0xFFFF9888, 0xFFFF98B6, 0xFFFF98E4, 0xFFFF9912, 0xFFFF9940, 0xFFFF996E, 0xFFFF999C, + 0xFFFF99CA, 0xFFFF99F8, 0xFFFF9A26, 0xFFFF9A54, 0xFFFF9A82, 0xFFFF9AB0, 0xFFFF9ADF, 0xFFFF9B0D, + 0xFFFF9B3B, 0xFFFF9B69, 0xFFFF9B97, 0xFFFF9BC6, 0xFFFF9BF4, 0xFFFF9C22, 0xFFFF9C50, 0xFFFF9C7F, + 0xFFFF9CAD, 0xFFFF9CDB, 0xFFFF9D0A, 0xFFFF9D38, 0xFFFF9D67, 0xFFFF9D95, 0xFFFF9DC3, 0xFFFF9DF2, + 0xFFFF9E20, 0xFFFF9E4F, 0xFFFF9E7D, 0xFFFF9EAC, 0xFFFF9EDA, 0xFFFF9F09, 0xFFFF9F37, 0xFFFF9F66, + 0xFFFF9F94, 0xFFFF9FC3, 0xFFFF9FF1, 0xFFFFA020, 0xFFFFA04F, 0xFFFFA07D, 0xFFFFA0AC, 0xFFFFA0DB, + 0xFFFFA109, 0xFFFFA138, 0xFFFFA167, 0xFFFFA195, 0xFFFFA1C4, 0xFFFFA1F3, 0xFFFFA222, 0xFFFFA250, + 0xFFFFA27F, 0xFFFFA2AE, 0xFFFFA2DD, 0xFFFFA30C, 0xFFFFA33A, 0xFFFFA369, 0xFFFFA398, 0xFFFFA3C7, + 0xFFFFA3F6, 0xFFFFA425, 0xFFFFA454, 0xFFFFA483, 0xFFFFA4B2, 0xFFFFA4E1, 0xFFFFA510, 0xFFFFA53F, + 0xFFFFA56E, 0xFFFFA59D, 0xFFFFA5CC, 0xFFFFA5FB, 0xFFFFA62A, 0xFFFFA659, 0xFFFFA688, 0xFFFFA6B7, + 0xFFFFA6E6, 0xFFFFA715, 0xFFFFA744, 0xFFFFA774, 0xFFFFA7A3, 0xFFFFA7D2, 0xFFFFA801, 0xFFFFA830, + 0xFFFFA860, 0xFFFFA88F, 0xFFFFA8BE, 0xFFFFA8ED, 0xFFFFA91D, 0xFFFFA94C, 0xFFFFA97B, 0xFFFFA9AA, + 0xFFFFA9DA, 0xFFFFAA09, 0xFFFFAA38, 0xFFFFAA68, 0xFFFFAA97, 0xFFFFAAC7, 0xFFFFAAF6, 0xFFFFAB25, + 0xFFFFAB55, 0xFFFFAB84, 0xFFFFABB4, 0xFFFFABE3, 0xFFFFAC13, 0xFFFFAC42, 0xFFFFAC72, 0xFFFFACA1, + 0xFFFFACD1, 0xFFFFAD00, 0xFFFFAD30, 0xFFFFAD5F, 0xFFFFAD8F, 0xFFFFADBF, 0xFFFFADEE, 0xFFFFAE1E, + 0xFFFFAE4D, 0xFFFFAE7D, 0xFFFFAEAD, 0xFFFFAEDC, 0xFFFFAF0C, 0xFFFFAF3C, 0xFFFFAF6B, 0xFFFFAF9B, + 0xFFFFAFCB, 0xFFFFAFFB, 0xFFFFB02A, 0xFFFFB05A, 0xFFFFB08A, 0xFFFFB0BA, 0xFFFFB0EA, 0xFFFFB119, + 0xFFFFB149, 0xFFFFB179, 0xFFFFB1A9, 0xFFFFB1D9, 0xFFFFB209, 0xFFFFB238, 0xFFFFB268, 0xFFFFB298, + 0xFFFFB2C8, 0xFFFFB2F8, 0xFFFFB328, 0xFFFFB358, 0xFFFFB388, 0xFFFFB3B8, 0xFFFFB3E8, 0xFFFFB418, + 0xFFFFB448, 0xFFFFB478, 0xFFFFB4A8, 0xFFFFB4D8, 0xFFFFB508, 0xFFFFB538, 0xFFFFB568, 0xFFFFB598, + 0xFFFFB5C8, 0xFFFFB5F9, 0xFFFFB629, 0xFFFFB659, 0xFFFFB689, 0xFFFFB6B9, 0xFFFFB6E9, 0xFFFFB719, + 0xFFFFB74A, 0xFFFFB77A, 0xFFFFB7AA, 0xFFFFB7DA, 0xFFFFB80B, 0xFFFFB83B, 0xFFFFB86B, 0xFFFFB89B, + 0xFFFFB8CC, 0xFFFFB8FC, 0xFFFFB92C, 0xFFFFB95C, 0xFFFFB98D, 0xFFFFB9BD, 0xFFFFB9ED, 0xFFFFBA1E, + 0xFFFFBA4E, 0xFFFFBA7F, 0xFFFFBAAF, 0xFFFFBADF, 0xFFFFBB10, 0xFFFFBB40, 0xFFFFBB71, 0xFFFFBBA1, + 0xFFFFBBD1, 0xFFFFBC02, 0xFFFFBC32, 0xFFFFBC63, 0xFFFFBC93, 0xFFFFBCC4, 0xFFFFBCF4, 0xFFFFBD25, + 0xFFFFBD55, 0xFFFFBD86, 0xFFFFBDB6, 0xFFFFBDE7, 0xFFFFBE18, 0xFFFFBE48, 0xFFFFBE79, 0xFFFFBEA9, + 0xFFFFBEDA, 0xFFFFBF0B, 0xFFFFBF3B, 0xFFFFBF6C, 0xFFFFBF9C, 0xFFFFBFCD, 0xFFFFBFFE, 0xFFFFC02E, + 0xFFFFC05F, 0xFFFFC090, 0xFFFFC0C1, 0xFFFFC0F1, 0xFFFFC122, 0xFFFFC153, 0xFFFFC183, 0xFFFFC1B4, + 0xFFFFC1E5, 0xFFFFC216, 0xFFFFC246, 0xFFFFC277, 0xFFFFC2A8, 0xFFFFC2D9, 0xFFFFC30A, 0xFFFFC33B, + 0xFFFFC36B, 0xFFFFC39C, 0xFFFFC3CD, 0xFFFFC3FE, 0xFFFFC42F, 0xFFFFC460, 0xFFFFC491, 0xFFFFC4C1, + 0xFFFFC4F2, 0xFFFFC523, 0xFFFFC554, 0xFFFFC585, 0xFFFFC5B6, 0xFFFFC5E7, 0xFFFFC618, 0xFFFFC649, + 0xFFFFC67A, 0xFFFFC6AB, 0xFFFFC6DC, 0xFFFFC70D, 0xFFFFC73E, 0xFFFFC76F, 0xFFFFC7A0, 0xFFFFC7D1, + 0xFFFFC802, 0xFFFFC833, 0xFFFFC864, 0xFFFFC895, 0xFFFFC8C6, 0xFFFFC8F7, 0xFFFFC928, 0xFFFFC95A, + 0xFFFFC98B, 0xFFFFC9BC, 0xFFFFC9ED, 0xFFFFCA1E, 0xFFFFCA4F, 0xFFFFCA80, 0xFFFFCAB1, 0xFFFFCAE3, + 0xFFFFCB14, 0xFFFFCB45, 0xFFFFCB76, 0xFFFFCBA7, 0xFFFFCBD9, 0xFFFFCC0A, 0xFFFFCC3B, 0xFFFFCC6C, + 0xFFFFCC9E, 0xFFFFCCCF, 0xFFFFCD00, 0xFFFFCD31, 0xFFFFCD63, 0xFFFFCD94, 0xFFFFCDC5, 0xFFFFCDF6, + 0xFFFFCE28, 0xFFFFCE59, 0xFFFFCE8A, 0xFFFFCEBC, 0xFFFFCEED, 0xFFFFCF1E, 0xFFFFCF50, 0xFFFFCF81, + 0xFFFFCFB2, 0xFFFFCFE4, 0xFFFFD015, 0xFFFFD047, 0xFFFFD078, 0xFFFFD0A9, 0xFFFFD0DB, 0xFFFFD10C, + 0xFFFFD13E, 0xFFFFD16F, 0xFFFFD1A0, 0xFFFFD1D2, 0xFFFFD203, 0xFFFFD235, 0xFFFFD266, 0xFFFFD298, + 0xFFFFD2C9, 0xFFFFD2FB, 0xFFFFD32C, 0xFFFFD35E, 0xFFFFD38F, 0xFFFFD3C1, 0xFFFFD3F2, 0xFFFFD424, + 0xFFFFD455, 0xFFFFD487, 0xFFFFD4B8, 0xFFFFD4EA, 0xFFFFD51B, 0xFFFFD54D, 0xFFFFD57E, 0xFFFFD5B0, + 0xFFFFD5E2, 0xFFFFD613, 0xFFFFD645, 0xFFFFD676, 0xFFFFD6A8, 0xFFFFD6DA, 0xFFFFD70B, 0xFFFFD73D, + 0xFFFFD76E, 0xFFFFD7A0, 0xFFFFD7D2, 0xFFFFD803, 0xFFFFD835, 0xFFFFD867, 0xFFFFD898, 0xFFFFD8CA, + 0xFFFFD8FC, 0xFFFFD92D, 0xFFFFD95F, 0xFFFFD991, 0xFFFFD9C2, 0xFFFFD9F4, 0xFFFFDA26, 0xFFFFDA58, + 0xFFFFDA89, 0xFFFFDABB, 0xFFFFDAED, 0xFFFFDB1E, 0xFFFFDB50, 0xFFFFDB82, 0xFFFFDBB4, 0xFFFFDBE5, + 0xFFFFDC17, 0xFFFFDC49, 0xFFFFDC7B, 0xFFFFDCAD, 0xFFFFDCDE, 0xFFFFDD10, 0xFFFFDD42, 0xFFFFDD74, + 0xFFFFDDA6, 0xFFFFDDD7, 0xFFFFDE09, 0xFFFFDE3B, 0xFFFFDE6D, 0xFFFFDE9F, 0xFFFFDED0, 0xFFFFDF02, + 0xFFFFDF34, 0xFFFFDF66, 0xFFFFDF98, 0xFFFFDFCA, 0xFFFFDFFC, 0xFFFFE02D, 0xFFFFE05F, 0xFFFFE091, + 0xFFFFE0C3, 0xFFFFE0F5, 0xFFFFE127, 0xFFFFE159, 0xFFFFE18B, 0xFFFFE1BD, 0xFFFFE1EF, 0xFFFFE220, + 0xFFFFE252, 0xFFFFE284, 0xFFFFE2B6, 0xFFFFE2E8, 0xFFFFE31A, 0xFFFFE34C, 0xFFFFE37E, 0xFFFFE3B0, + 0xFFFFE3E2, 0xFFFFE414, 0xFFFFE446, 0xFFFFE478, 0xFFFFE4AA, 0xFFFFE4DC, 0xFFFFE50E, 0xFFFFE540, + 0xFFFFE572, 0xFFFFE5A4, 0xFFFFE5D6, 0xFFFFE608, 0xFFFFE63A, 0xFFFFE66C, 0xFFFFE69E, 0xFFFFE6D0, + 0xFFFFE702, 0xFFFFE734, 0xFFFFE766, 0xFFFFE798, 0xFFFFE7CA, 0xFFFFE7FC, 0xFFFFE82E, 0xFFFFE860, + 0xFFFFE892, 0xFFFFE8C4, 0xFFFFE8F6, 0xFFFFE928, 0xFFFFE95A, 0xFFFFE98D, 0xFFFFE9BF, 0xFFFFE9F1, + 0xFFFFEA23, 0xFFFFEA55, 0xFFFFEA87, 0xFFFFEAB9, 0xFFFFEAEB, 0xFFFFEB1D, 0xFFFFEB4F, 0xFFFFEB81, + 0xFFFFEBB3, 0xFFFFEBE6, 0xFFFFEC18, 0xFFFFEC4A, 0xFFFFEC7C, 0xFFFFECAE, 0xFFFFECE0, 0xFFFFED12, + 0xFFFFED44, 0xFFFFED77, 0xFFFFEDA9, 0xFFFFEDDB, 0xFFFFEE0D, 0xFFFFEE3F, 0xFFFFEE71, 0xFFFFEEA3, + 0xFFFFEED6, 0xFFFFEF08, 0xFFFFEF3A, 0xFFFFEF6C, 0xFFFFEF9E, 0xFFFFEFD0, 0xFFFFF003, 0xFFFFF035, + 0xFFFFF067, 0xFFFFF099, 0xFFFFF0CB, 0xFFFFF0FD, 0xFFFFF130, 0xFFFFF162, 0xFFFFF194, 0xFFFFF1C6, + 0xFFFFF1F8, 0xFFFFF22B, 0xFFFFF25D, 0xFFFFF28F, 0xFFFFF2C1, 0xFFFFF2F3, 0xFFFFF325, 0xFFFFF358, + 0xFFFFF38A, 0xFFFFF3BC, 0xFFFFF3EE, 0xFFFFF421, 0xFFFFF453, 0xFFFFF485, 0xFFFFF4B7, 0xFFFFF4E9, + 0xFFFFF51C, 0xFFFFF54E, 0xFFFFF580, 0xFFFFF5B2, 0xFFFFF5E4, 0xFFFFF617, 0xFFFFF649, 0xFFFFF67B, + 0xFFFFF6AD, 0xFFFFF6E0, 0xFFFFF712, 0xFFFFF744, 0xFFFFF776, 0xFFFFF7A9, 0xFFFFF7DB, 0xFFFFF80D, + 0xFFFFF83F, 0xFFFFF872, 0xFFFFF8A4, 0xFFFFF8D6, 0xFFFFF908, 0xFFFFF93B, 0xFFFFF96D, 0xFFFFF99F, + 0xFFFFF9D1, 0xFFFFFA04, 0xFFFFFA36, 0xFFFFFA68, 0xFFFFFA9A, 0xFFFFFACD, 0xFFFFFAFF, 0xFFFFFB31, + 0xFFFFFB63, 0xFFFFFB96, 0xFFFFFBC8, 0xFFFFFBFA, 0xFFFFFC2C, 0xFFFFFC5F, 0xFFFFFC91, 0xFFFFFCC3, + 0xFFFFFCF5, 0xFFFFFD28, 0xFFFFFD5A, 0xFFFFFD8C, 0xFFFFFDBE, 0xFFFFFDF1, 0xFFFFFE23, 0xFFFFFE55, + 0xFFFFFE88, 0xFFFFFEBA, 0xFFFFFEEC, 0xFFFFFF1E, 0xFFFFFF51, 0xFFFFFF83, 0xFFFFFFB5, 0xFFFFFFE7, + 0x00000019, 0x0000004B, 0x0000007D, 0x000000AF, 0x000000E2, 0x00000114, 0x00000146, 0x00000178, + 0x000001AB, 0x000001DD, 0x0000020F, 0x00000242, 0x00000274, 0x000002A6, 0x000002D8, 0x0000030B, + 0x0000033D, 0x0000036F, 0x000003A1, 0x000003D4, 0x00000406, 0x00000438, 0x0000046A, 0x0000049D, + 0x000004CF, 0x00000501, 0x00000533, 0x00000566, 0x00000598, 0x000005CA, 0x000005FC, 0x0000062F, + 0x00000661, 0x00000693, 0x000006C5, 0x000006F8, 0x0000072A, 0x0000075C, 0x0000078E, 0x000007C1, + 0x000007F3, 0x00000825, 0x00000857, 0x0000088A, 0x000008BC, 0x000008EE, 0x00000920, 0x00000953, + 0x00000985, 0x000009B7, 0x000009E9, 0x00000A1B, 0x00000A4E, 0x00000A80, 0x00000AB2, 0x00000AE4, + 0x00000B17, 0x00000B49, 0x00000B7B, 0x00000BAD, 0x00000BDF, 0x00000C12, 0x00000C44, 0x00000C76, + 0x00000CA8, 0x00000CDB, 0x00000D0D, 0x00000D3F, 0x00000D71, 0x00000DA3, 0x00000DD6, 0x00000E08, + 0x00000E3A, 0x00000E6C, 0x00000E9E, 0x00000ED0, 0x00000F03, 0x00000F35, 0x00000F67, 0x00000F99, + 0x00000FCB, 0x00000FFD, 0x00001030, 0x00001062, 0x00001094, 0x000010C6, 0x000010F8, 0x0000112A, + 0x0000115D, 0x0000118F, 0x000011C1, 0x000011F3, 0x00001225, 0x00001257, 0x00001289, 0x000012BC, + 0x000012EE, 0x00001320, 0x00001352, 0x00001384, 0x000013B6, 0x000013E8, 0x0000141A, 0x0000144D, + 0x0000147F, 0x000014B1, 0x000014E3, 0x00001515, 0x00001547, 0x00001579, 0x000015AB, 0x000015DD, + 0x0000160F, 0x00001641, 0x00001673, 0x000016A6, 0x000016D8, 0x0000170A, 0x0000173C, 0x0000176E, + 0x000017A0, 0x000017D2, 0x00001804, 0x00001836, 0x00001868, 0x0000189A, 0x000018CC, 0x000018FE, + 0x00001930, 0x00001962, 0x00001994, 0x000019C6, 0x000019F8, 0x00001A2A, 0x00001A5C, 0x00001A8E, + 0x00001AC0, 0x00001AF2, 0x00001B24, 0x00001B56, 0x00001B88, 0x00001BBA, 0x00001BEC, 0x00001C1E, + 0x00001C50, 0x00001C82, 0x00001CB4, 0x00001CE6, 0x00001D18, 0x00001D4A, 0x00001D7C, 0x00001DAE, + 0x00001DE0, 0x00001E11, 0x00001E43, 0x00001E75, 0x00001EA7, 0x00001ED9, 0x00001F0B, 0x00001F3D, + 0x00001F6F, 0x00001FA1, 0x00001FD3, 0x00002004, 0x00002036, 0x00002068, 0x0000209A, 0x000020CC, + 0x000020FE, 0x00002130, 0x00002161, 0x00002193, 0x000021C5, 0x000021F7, 0x00002229, 0x0000225A, + 0x0000228C, 0x000022BE, 0x000022F0, 0x00002322, 0x00002353, 0x00002385, 0x000023B7, 0x000023E9, + 0x0000241B, 0x0000244C, 0x0000247E, 0x000024B0, 0x000024E2, 0x00002513, 0x00002545, 0x00002577, + 0x000025A8, 0x000025DA, 0x0000260C, 0x0000263E, 0x0000266F, 0x000026A1, 0x000026D3, 0x00002704, + 0x00002736, 0x00002768, 0x00002799, 0x000027CB, 0x000027FD, 0x0000282E, 0x00002860, 0x00002892, + 0x000028C3, 0x000028F5, 0x00002926, 0x00002958, 0x0000298A, 0x000029BB, 0x000029ED, 0x00002A1E, + 0x00002A50, 0x00002A82, 0x00002AB3, 0x00002AE5, 0x00002B16, 0x00002B48, 0x00002B79, 0x00002BAB, + 0x00002BDC, 0x00002C0E, 0x00002C3F, 0x00002C71, 0x00002CA2, 0x00002CD4, 0x00002D05, 0x00002D37, + 0x00002D68, 0x00002D9A, 0x00002DCB, 0x00002DFD, 0x00002E2E, 0x00002E60, 0x00002E91, 0x00002EC2, + 0x00002EF4, 0x00002F25, 0x00002F57, 0x00002F88, 0x00002FBA, 0x00002FEB, 0x0000301C, 0x0000304E, + 0x0000307F, 0x000030B0, 0x000030E2, 0x00003113, 0x00003144, 0x00003176, 0x000031A7, 0x000031D8, + 0x0000320A, 0x0000323B, 0x0000326C, 0x0000329D, 0x000032CF, 0x00003300, 0x00003331, 0x00003362, + 0x00003394, 0x000033C5, 0x000033F6, 0x00003427, 0x00003459, 0x0000348A, 0x000034BB, 0x000034EC, + 0x0000351D, 0x0000354F, 0x00003580, 0x000035B1, 0x000035E2, 0x00003613, 0x00003644, 0x00003675, + 0x000036A6, 0x000036D8, 0x00003709, 0x0000373A, 0x0000376B, 0x0000379C, 0x000037CD, 0x000037FE, + 0x0000382F, 0x00003860, 0x00003891, 0x000038C2, 0x000038F3, 0x00003924, 0x00003955, 0x00003986, + 0x000039B7, 0x000039E8, 0x00003A19, 0x00003A4A, 0x00003A7B, 0x00003AAC, 0x00003ADD, 0x00003B0E, + 0x00003B3F, 0x00003B6F, 0x00003BA0, 0x00003BD1, 0x00003C02, 0x00003C33, 0x00003C64, 0x00003C95, + 0x00003CC5, 0x00003CF6, 0x00003D27, 0x00003D58, 0x00003D89, 0x00003DBA, 0x00003DEA, 0x00003E1B, + 0x00003E4C, 0x00003E7D, 0x00003EAD, 0x00003EDE, 0x00003F0F, 0x00003F3F, 0x00003F70, 0x00003FA1, + 0x00003FD2, 0x00004002, 0x00004033, 0x00004064, 0x00004094, 0x000040C5, 0x000040F5, 0x00004126, + 0x00004157, 0x00004187, 0x000041B8, 0x000041E8, 0x00004219, 0x0000424A, 0x0000427A, 0x000042AB, + 0x000042DB, 0x0000430C, 0x0000433C, 0x0000436D, 0x0000439D, 0x000043CE, 0x000043FE, 0x0000442F, + 0x0000445F, 0x0000448F, 0x000044C0, 0x000044F0, 0x00004521, 0x00004551, 0x00004581, 0x000045B2, + 0x000045E2, 0x00004613, 0x00004643, 0x00004673, 0x000046A4, 0x000046D4, 0x00004704, 0x00004734, + 0x00004765, 0x00004795, 0x000047C5, 0x000047F5, 0x00004826, 0x00004856, 0x00004886, 0x000048B6, + 0x000048E7, 0x00004917, 0x00004947, 0x00004977, 0x000049A7, 0x000049D7, 0x00004A07, 0x00004A38, + 0x00004A68, 0x00004A98, 0x00004AC8, 0x00004AF8, 0x00004B28, 0x00004B58, 0x00004B88, 0x00004BB8, + 0x00004BE8, 0x00004C18, 0x00004C48, 0x00004C78, 0x00004CA8, 0x00004CD8, 0x00004D08, 0x00004D38, + 0x00004D68, 0x00004D98, 0x00004DC8, 0x00004DF7, 0x00004E27, 0x00004E57, 0x00004E87, 0x00004EB7, + 0x00004EE7, 0x00004F16, 0x00004F46, 0x00004F76, 0x00004FA6, 0x00004FD6, 0x00005005, 0x00005035, + 0x00005065, 0x00005095, 0x000050C4, 0x000050F4, 0x00005124, 0x00005153, 0x00005183, 0x000051B3, + 0x000051E2, 0x00005212, 0x00005241, 0x00005271, 0x000052A1, 0x000052D0, 0x00005300, 0x0000532F, + 0x0000535F, 0x0000538E, 0x000053BE, 0x000053ED, 0x0000541D, 0x0000544C, 0x0000547C, 0x000054AB, + 0x000054DB, 0x0000550A, 0x00005539, 0x00005569, 0x00005598, 0x000055C8, 0x000055F7, 0x00005626, + 0x00005656, 0x00005685, 0x000056B4, 0x000056E3, 0x00005713, 0x00005742, 0x00005771, 0x000057A0, + 0x000057D0, 0x000057FF, 0x0000582E, 0x0000585D, 0x0000588C, 0x000058BC, 0x000058EB, 0x0000591A, + 0x00005949, 0x00005978, 0x000059A7, 0x000059D6, 0x00005A05, 0x00005A34, 0x00005A63, 0x00005A92, + 0x00005AC1, 0x00005AF0, 0x00005B1F, 0x00005B4E, 0x00005B7D, 0x00005BAC, 0x00005BDB, 0x00005C0A, + 0x00005C39, 0x00005C68, 0x00005C97, 0x00005CC6, 0x00005CF4, 0x00005D23, 0x00005D52, 0x00005D81, + 0x00005DB0, 0x00005DDE, 0x00005E0D, 0x00005E3C, 0x00005E6B, 0x00005E99, 0x00005EC8, 0x00005EF7, + 0x00005F25, 0x00005F54, 0x00005F83, 0x00005FB1, 0x00005FE0, 0x0000600F, 0x0000603D, 0x0000606C, + 0x0000609A, 0x000060C9, 0x000060F7, 0x00006126, 0x00006154, 0x00006183, 0x000061B1, 0x000061E0, + 0x0000620E, 0x0000623D, 0x0000626B, 0x00006299, 0x000062C8, 0x000062F6, 0x00006325, 0x00006353, + 0x00006381, 0x000063B0, 0x000063DE, 0x0000640C, 0x0000643A, 0x00006469, 0x00006497, 0x000064C5, + 0x000064F3, 0x00006521, 0x00006550, 0x0000657E, 0x000065AC, 0x000065DA, 0x00006608, 0x00006636, + 0x00006664, 0x00006692, 0x000066C0, 0x000066EE, 0x0000671C, 0x0000674A, 0x00006778, 0x000067A6, + 0x000067D4, 0x00006802, 0x00006830, 0x0000685E, 0x0000688C, 0x000068BA, 0x000068E8, 0x00006916, + 0x00006943, 0x00006971, 0x0000699F, 0x000069CD, 0x000069FB, 0x00006A28, 0x00006A56, 0x00006A84, + 0x00006AB1, 0x00006ADF, 0x00006B0D, 0x00006B3A, 0x00006B68, 0x00006B96, 0x00006BC3, 0x00006BF1, + 0x00006C1E, 0x00006C4C, 0x00006C7A, 0x00006CA7, 0x00006CD5, 0x00006D02, 0x00006D30, 0x00006D5D, + 0x00006D8A, 0x00006DB8, 0x00006DE5, 0x00006E13, 0x00006E40, 0x00006E6D, 0x00006E9B, 0x00006EC8, + 0x00006EF5, 0x00006F23, 0x00006F50, 0x00006F7D, 0x00006FAA, 0x00006FD8, 0x00007005, 0x00007032, + 0x0000705F, 0x0000708C, 0x000070BA, 0x000070E7, 0x00007114, 0x00007141, 0x0000716E, 0x0000719B, + 0x000071C8, 0x000071F5, 0x00007222, 0x0000724F, 0x0000727C, 0x000072A9, 0x000072D6, 0x00007303, + 0x00007330, 0x0000735D, 0x00007389, 0x000073B6, 0x000073E3, 0x00007410, 0x0000743D, 0x00007469, + 0x00007496, 0x000074C3, 0x000074F0, 0x0000751C, 0x00007549, 0x00007576, 0x000075A2, 0x000075CF, + 0x000075FC, 0x00007628, 0x00007655, 0x00007681, 0x000076AE, 0x000076DB, 0x00007707, 0x00007734, + 0x00007760, 0x0000778C, 0x000077B9, 0x000077E5, 0x00007812, 0x0000783E, 0x0000786A, 0x00007897, + 0x000078C3, 0x000078EF, 0x0000791C, 0x00007948, 0x00007974, 0x000079A0, 0x000079CD, 0x000079F9, + 0x00007A25, 0x00007A51, 0x00007A7D, 0x00007AAA, 0x00007AD6, 0x00007B02, 0x00007B2E, 0x00007B5A, + 0x00007B86, 0x00007BB2, 0x00007BDE, 0x00007C0A, 0x00007C36, 0x00007C62, 0x00007C8E, 0x00007CBA, + 0x00007CE6, 0x00007D11, 0x00007D3D, 0x00007D69, 0x00007D95, 0x00007DC1, 0x00007DEC, 0x00007E18, + 0x00007E44, 0x00007E70, 0x00007E9B, 0x00007EC7, 0x00007EF3, 0x00007F1E, 0x00007F4A, 0x00007F76, + 0x00007FA1, 0x00007FCD, 0x00007FF8, 0x00008024, 0x0000804F, 0x0000807B, 0x000080A6, 0x000080D2, + 0x000080FD, 0x00008129, 0x00008154, 0x0000817F, 0x000081AB, 0x000081D6, 0x00008201, 0x0000822D, + 0x00008258, 0x00008283, 0x000082AE, 0x000082DA, 0x00008305, 0x00008330, 0x0000835B, 0x00008386, + 0x000083B1, 0x000083DC, 0x00008407, 0x00008433, 0x0000845E, 0x00008489, 0x000084B4, 0x000084DF, + 0x00008509, 0x00008534, 0x0000855F, 0x0000858A, 0x000085B5, 0x000085E0, 0x0000860B, 0x00008636, + 0x00008660, 0x0000868B, 0x000086B6, 0x000086E1, 0x0000870B, 0x00008736, 0x00008761, 0x0000878B, + 0x000087B6, 0x000087E1, 0x0000880B, 0x00008836, 0x00008860, 0x0000888B, 0x000088B5, 0x000088E0, + 0x0000890A, 0x00008935, 0x0000895F, 0x0000898A, 0x000089B4, 0x000089DE, 0x00008A09, 0x00008A33, + 0x00008A5D, 0x00008A88, 0x00008AB2, 0x00008ADC, 0x00008B06, 0x00008B31, 0x00008B5B, 0x00008B85, + 0x00008BAF, 0x00008BD9, 0x00008C03, 0x00008C2D, 0x00008C57, 0x00008C81, 0x00008CAB, 0x00008CD5, + 0x00008CFF, 0x00008D29, 0x00008D53, 0x00008D7D, 0x00008DA7, 0x00008DD1, 0x00008DFB, 0x00008E24, + 0x00008E4E, 0x00008E78, 0x00008EA2, 0x00008ECC, 0x00008EF5, 0x00008F1F, 0x00008F49, 0x00008F72, + 0x00008F9C, 0x00008FC5, 0x00008FEF, 0x00009019, 0x00009042, 0x0000906C, 0x00009095, 0x000090BF, + 0x000090E8, 0x00009111, 0x0000913B, 0x00009164, 0x0000918E, 0x000091B7, 0x000091E0, 0x0000920A, + 0x00009233, 0x0000925C, 0x00009285, 0x000092AF, 0x000092D8, 0x00009301, 0x0000932A, 0x00009353, + 0x0000937C, 0x000093A5, 0x000093CE, 0x000093F7, 0x00009420, 0x00009449, 0x00009472, 0x0000949B, + 0x000094C4, 0x000094ED, 0x00009516, 0x0000953F, 0x00009568, 0x00009590, 0x000095B9, 0x000095E2, + 0x0000960B, 0x00009633, 0x0000965C, 0x00009685, 0x000096AD, 0x000096D6, 0x000096FF, 0x00009727, + 0x00009750, 0x00009778, 0x000097A1, 0x000097C9, 0x000097F2, 0x0000981A, 0x00009843, 0x0000986B, + 0x00009893, 0x000098BC, 0x000098E4, 0x0000990C, 0x00009935, 0x0000995D, 0x00009985, 0x000099AD, + 0x000099D6, 0x000099FE, 0x00009A26, 0x00009A4E, 0x00009A76, 0x00009A9E, 0x00009AC6, 0x00009AEE, + 0x00009B16, 0x00009B3E, 0x00009B66, 0x00009B8E, 0x00009BB6, 0x00009BDE, 0x00009C06, 0x00009C2E, + 0x00009C55, 0x00009C7D, 0x00009CA5, 0x00009CCD, 0x00009CF4, 0x00009D1C, 0x00009D44, 0x00009D6B, + 0x00009D93, 0x00009DBB, 0x00009DE2, 0x00009E0A, 0x00009E31, 0x00009E59, 0x00009E80, 0x00009EA8, + 0x00009ECF, 0x00009EF7, 0x00009F1E, 0x00009F45, 0x00009F6D, 0x00009F94, 0x00009FBB, 0x00009FE3, + 0x0000A00A, 0x0000A031, 0x0000A058, 0x0000A07F, 0x0000A0A7, 0x0000A0CE, 0x0000A0F5, 0x0000A11C, + 0x0000A143, 0x0000A16A, 0x0000A191, 0x0000A1B8, 0x0000A1DF, 0x0000A206, 0x0000A22D, 0x0000A254, + 0x0000A27B, 0x0000A2A1, 0x0000A2C8, 0x0000A2EF, 0x0000A316, 0x0000A33C, 0x0000A363, 0x0000A38A, + 0x0000A3B0, 0x0000A3D7, 0x0000A3FE, 0x0000A424, 0x0000A44B, 0x0000A471, 0x0000A498, 0x0000A4BE, + 0x0000A4E5, 0x0000A50B, 0x0000A532, 0x0000A558, 0x0000A57E, 0x0000A5A5, 0x0000A5CB, 0x0000A5F1, + 0x0000A618, 0x0000A63E, 0x0000A664, 0x0000A68A, 0x0000A6B0, 0x0000A6D7, 0x0000A6FD, 0x0000A723, + 0x0000A749, 0x0000A76F, 0x0000A795, 0x0000A7BB, 0x0000A7E1, 0x0000A807, 0x0000A82D, 0x0000A853, + 0x0000A878, 0x0000A89E, 0x0000A8C4, 0x0000A8EA, 0x0000A910, 0x0000A935, 0x0000A95B, 0x0000A981, + 0x0000A9A6, 0x0000A9CC, 0x0000A9F2, 0x0000AA17, 0x0000AA3D, 0x0000AA62, 0x0000AA88, 0x0000AAAD, + 0x0000AAD3, 0x0000AAF8, 0x0000AB1E, 0x0000AB43, 0x0000AB68, 0x0000AB8E, 0x0000ABB3, 0x0000ABD8, + 0x0000ABFD, 0x0000AC23, 0x0000AC48, 0x0000AC6D, 0x0000AC92, 0x0000ACB7, 0x0000ACDC, 0x0000AD01, + 0x0000AD26, 0x0000AD4B, 0x0000AD70, 0x0000AD95, 0x0000ADBA, 0x0000ADDF, 0x0000AE04, 0x0000AE29, + 0x0000AE4E, 0x0000AE73, 0x0000AE97, 0x0000AEBC, 0x0000AEE1, 0x0000AF06, 0x0000AF2A, 0x0000AF4F, + 0x0000AF73, 0x0000AF98, 0x0000AFBD, 0x0000AFE1, 0x0000B006, 0x0000B02A, 0x0000B04F, 0x0000B073, + 0x0000B097, 0x0000B0BC, 0x0000B0E0, 0x0000B104, 0x0000B129, 0x0000B14D, 0x0000B171, 0x0000B196, + 0x0000B1BA, 0x0000B1DE, 0x0000B202, 0x0000B226, 0x0000B24A, 0x0000B26E, 0x0000B292, 0x0000B2B6, + 0x0000B2DA, 0x0000B2FE, 0x0000B322, 0x0000B346, 0x0000B36A, 0x0000B38E, 0x0000B3B2, 0x0000B3D5, + 0x0000B3F9, 0x0000B41D, 0x0000B441, 0x0000B464, 0x0000B488, 0x0000B4AC, 0x0000B4CF, 0x0000B4F3, + 0x0000B516, 0x0000B53A, 0x0000B55D, 0x0000B581, 0x0000B5A4, 0x0000B5C8, 0x0000B5EB, 0x0000B60E, + 0x0000B632, 0x0000B655, 0x0000B678, 0x0000B69B, 0x0000B6BF, 0x0000B6E2, 0x0000B705, 0x0000B728, + 0x0000B74B, 0x0000B76E, 0x0000B791, 0x0000B7B4, 0x0000B7D7, 0x0000B7FA, 0x0000B81D, 0x0000B840, + 0x0000B863, 0x0000B886, 0x0000B8A9, 0x0000B8CC, 0x0000B8EE, 0x0000B911, 0x0000B934, 0x0000B956, + 0x0000B979, 0x0000B99C, 0x0000B9BE, 0x0000B9E1, 0x0000BA03, 0x0000BA26, 0x0000BA48, 0x0000BA6B, + 0x0000BA8D, 0x0000BAB0, 0x0000BAD2, 0x0000BAF5, 0x0000BB17, 0x0000BB39, 0x0000BB5B, 0x0000BB7E, + 0x0000BBA0, 0x0000BBC2, 0x0000BBE4, 0x0000BC06, 0x0000BC28, 0x0000BC4A, 0x0000BC6D, 0x0000BC8F, + 0x0000BCB1, 0x0000BCD2, 0x0000BCF4, 0x0000BD16, 0x0000BD38, 0x0000BD5A, 0x0000BD7C, 0x0000BD9E, + 0x0000BDBF, 0x0000BDE1, 0x0000BE03, 0x0000BE24, 0x0000BE46, 0x0000BE68, 0x0000BE89, 0x0000BEAB, + 0x0000BECC, 0x0000BEEE, 0x0000BF0F, 0x0000BF31, 0x0000BF52, 0x0000BF74, 0x0000BF95, 0x0000BFB6, + 0x0000BFD8, 0x0000BFF9, 0x0000C01A, 0x0000C03B, 0x0000C05C, 0x0000C07E, 0x0000C09F, 0x0000C0C0, + 0x0000C0E1, 0x0000C102, 0x0000C123, 0x0000C144, 0x0000C165, 0x0000C186, 0x0000C1A7, 0x0000C1C8, + 0x0000C1E8, 0x0000C209, 0x0000C22A, 0x0000C24B, 0x0000C26B, 0x0000C28C, 0x0000C2AD, 0x0000C2CD, + 0x0000C2EE, 0x0000C30F, 0x0000C32F, 0x0000C350, 0x0000C370, 0x0000C390, 0x0000C3B1, 0x0000C3D1, + 0x0000C3F2, 0x0000C412, 0x0000C432, 0x0000C453, 0x0000C473, 0x0000C493, 0x0000C4B3, 0x0000C4D3, + 0x0000C4F4, 0x0000C514, 0x0000C534, 0x0000C554, 0x0000C574, 0x0000C594, 0x0000C5B4, 0x0000C5D4, + 0x0000C5F3, 0x0000C613, 0x0000C633, 0x0000C653, 0x0000C673, 0x0000C692, 0x0000C6B2, 0x0000C6D2, + 0x0000C6F1, 0x0000C711, 0x0000C731, 0x0000C750, 0x0000C770, 0x0000C78F, 0x0000C7AF, 0x0000C7CE, + 0x0000C7EE, 0x0000C80D, 0x0000C82C, 0x0000C84C, 0x0000C86B, 0x0000C88A, 0x0000C8A9, 0x0000C8C9, + 0x0000C8E8, 0x0000C907, 0x0000C926, 0x0000C945, 0x0000C964, 0x0000C983, 0x0000C9A2, 0x0000C9C1, + 0x0000C9E0, 0x0000C9FF, 0x0000CA1E, 0x0000CA3D, 0x0000CA5B, 0x0000CA7A, 0x0000CA99, 0x0000CAB8, + 0x0000CAD6, 0x0000CAF5, 0x0000CB14, 0x0000CB32, 0x0000CB51, 0x0000CB6F, 0x0000CB8E, 0x0000CBAC, + 0x0000CBCB, 0x0000CBE9, 0x0000CC07, 0x0000CC26, 0x0000CC44, 0x0000CC62, 0x0000CC81, 0x0000CC9F, + 0x0000CCBD, 0x0000CCDB, 0x0000CCF9, 0x0000CD17, 0x0000CD36, 0x0000CD54, 0x0000CD72, 0x0000CD90, + 0x0000CDAD, 0x0000CDCB, 0x0000CDE9, 0x0000CE07, 0x0000CE25, 0x0000CE43, 0x0000CE60, 0x0000CE7E, + 0x0000CE9C, 0x0000CEBA, 0x0000CED7, 0x0000CEF5, 0x0000CF12, 0x0000CF30, 0x0000CF4D, 0x0000CF6B, + 0x0000CF88, 0x0000CFA6, 0x0000CFC3, 0x0000CFE0, 0x0000CFFE, 0x0000D01B, 0x0000D038, 0x0000D056, + 0x0000D073, 0x0000D090, 0x0000D0AD, 0x0000D0CA, 0x0000D0E7, 0x0000D104, 0x0000D121, 0x0000D13E, + 0x0000D15B, 0x0000D178, 0x0000D195, 0x0000D1B2, 0x0000D1CF, 0x0000D1EB, 0x0000D208, 0x0000D225, + 0x0000D242, 0x0000D25E, 0x0000D27B, 0x0000D298, 0x0000D2B4, 0x0000D2D1, 0x0000D2ED, 0x0000D30A, + 0x0000D326, 0x0000D342, 0x0000D35F, 0x0000D37B, 0x0000D397, 0x0000D3B4, 0x0000D3D0, 0x0000D3EC, + 0x0000D408, 0x0000D425, 0x0000D441, 0x0000D45D, 0x0000D479, 0x0000D495, 0x0000D4B1, 0x0000D4CD, + 0x0000D4E9, 0x0000D505, 0x0000D520, 0x0000D53C, 0x0000D558, 0x0000D574, 0x0000D590, 0x0000D5AB, + 0x0000D5C7, 0x0000D5E3, 0x0000D5FE, 0x0000D61A, 0x0000D635, 0x0000D651, 0x0000D66C, 0x0000D688, + 0x0000D6A3, 0x0000D6BE, 0x0000D6DA, 0x0000D6F5, 0x0000D710, 0x0000D72C, 0x0000D747, 0x0000D762, + 0x0000D77D, 0x0000D798, 0x0000D7B3, 0x0000D7CE, 0x0000D7EA, 0x0000D804, 0x0000D81F, 0x0000D83A, + 0x0000D855, 0x0000D870, 0x0000D88B, 0x0000D8A6, 0x0000D8C1, 0x0000D8DB, 0x0000D8F6, 0x0000D911, + 0x0000D92B, 0x0000D946, 0x0000D960, 0x0000D97B, 0x0000D995, 0x0000D9B0, 0x0000D9CA, 0x0000D9E5, + 0x0000D9FF, 0x0000DA19, 0x0000DA34, 0x0000DA4E, 0x0000DA68, 0x0000DA82, 0x0000DA9D, 0x0000DAB7, + 0x0000DAD1, 0x0000DAEB, 0x0000DB05, 0x0000DB1F, 0x0000DB39, 0x0000DB53, 0x0000DB6D, 0x0000DB87, + 0x0000DBA1, 0x0000DBBA, 0x0000DBD4, 0x0000DBEE, 0x0000DC08, 0x0000DC21, 0x0000DC3B, 0x0000DC54, + 0x0000DC6E, 0x0000DC88, 0x0000DCA1, 0x0000DCBB, 0x0000DCD4, 0x0000DCED, 0x0000DD07, 0x0000DD20, + 0x0000DD39, 0x0000DD53, 0x0000DD6C, 0x0000DD85, 0x0000DD9E, 0x0000DDB8, 0x0000DDD1, 0x0000DDEA, + 0x0000DE03, 0x0000DE1C, 0x0000DE35, 0x0000DE4E, 0x0000DE67, 0x0000DE7F, 0x0000DE98, 0x0000DEB1, + 0x0000DECA, 0x0000DEE3, 0x0000DEFB, 0x0000DF14, 0x0000DF2D, 0x0000DF45, 0x0000DF5E, 0x0000DF76, + 0x0000DF8F, 0x0000DFA7, 0x0000DFC0, 0x0000DFD8, 0x0000DFF1, 0x0000E009, 0x0000E021, 0x0000E03A, + 0x0000E052, 0x0000E06A, 0x0000E082, 0x0000E09A, 0x0000E0B2, 0x0000E0CA, 0x0000E0E2, 0x0000E0FA, + 0x0000E112, 0x0000E12A, 0x0000E142, 0x0000E15A, 0x0000E172, 0x0000E18A, 0x0000E1A2, 0x0000E1B9, + 0x0000E1D1, 0x0000E1E9, 0x0000E200, 0x0000E218, 0x0000E22F, 0x0000E247, 0x0000E25E, 0x0000E276, + 0x0000E28D, 0x0000E2A5, 0x0000E2BC, 0x0000E2D3, 0x0000E2EB, 0x0000E302, 0x0000E319, 0x0000E330, + 0x0000E347, 0x0000E35F, 0x0000E376, 0x0000E38D, 0x0000E3A4, 0x0000E3BB, 0x0000E3D2, 0x0000E3E9, + 0x0000E3FF, 0x0000E416, 0x0000E42D, 0x0000E444, 0x0000E45B, 0x0000E471, 0x0000E488, 0x0000E49F, + 0x0000E4B5, 0x0000E4CC, 0x0000E4E2, 0x0000E4F9, 0x0000E50F, 0x0000E526, 0x0000E53C, 0x0000E552, + 0x0000E569, 0x0000E57F, 0x0000E595, 0x0000E5AB, 0x0000E5C2, 0x0000E5D8, 0x0000E5EE, 0x0000E604, + 0x0000E61A, 0x0000E630, 0x0000E646, 0x0000E65C, 0x0000E672, 0x0000E688, 0x0000E69E, 0x0000E6B3, + 0x0000E6C9, 0x0000E6DF, 0x0000E6F5, 0x0000E70A, 0x0000E720, 0x0000E736, 0x0000E74B, 0x0000E761, + 0x0000E776, 0x0000E78C, 0x0000E7A1, 0x0000E7B6, 0x0000E7CC, 0x0000E7E1, 0x0000E7F6, 0x0000E80C, + 0x0000E821, 0x0000E836, 0x0000E84B, 0x0000E860, 0x0000E875, 0x0000E88A, 0x0000E89F, 0x0000E8B4, + 0x0000E8C9, 0x0000E8DE, 0x0000E8F3, 0x0000E908, 0x0000E91D, 0x0000E931, 0x0000E946, 0x0000E95B, + 0x0000E96F, 0x0000E984, 0x0000E999, 0x0000E9AD, 0x0000E9C2, 0x0000E9D6, 0x0000E9EB, 0x0000E9FF, + 0x0000EA13, 0x0000EA28, 0x0000EA3C, 0x0000EA50, 0x0000EA64, 0x0000EA79, 0x0000EA8D, 0x0000EAA1, + 0x0000EAB5, 0x0000EAC9, 0x0000EADD, 0x0000EAF1, 0x0000EB05, 0x0000EB19, 0x0000EB2D, 0x0000EB41, + 0x0000EB54, 0x0000EB68, 0x0000EB7C, 0x0000EB90, 0x0000EBA3, 0x0000EBB7, 0x0000EBCB, 0x0000EBDE, + 0x0000EBF2, 0x0000EC05, 0x0000EC19, 0x0000EC2C, 0x0000EC3F, 0x0000EC53, 0x0000EC66, 0x0000EC79, + 0x0000EC8C, 0x0000ECA0, 0x0000ECB3, 0x0000ECC6, 0x0000ECD9, 0x0000ECEC, 0x0000ECFF, 0x0000ED12, + 0x0000ED25, 0x0000ED38, 0x0000ED4B, 0x0000ED5E, 0x0000ED71, 0x0000ED83, 0x0000ED96, 0x0000EDA9, + 0x0000EDBB, 0x0000EDCE, 0x0000EDE1, 0x0000EDF3, 0x0000EE06, 0x0000EE18, 0x0000EE2B, 0x0000EE3D, + 0x0000EE4F, 0x0000EE62, 0x0000EE74, 0x0000EE86, 0x0000EE99, 0x0000EEAB, 0x0000EEBD, 0x0000EECF, + 0x0000EEE1, 0x0000EEF3, 0x0000EF05, 0x0000EF17, 0x0000EF29, 0x0000EF3B, 0x0000EF4D, 0x0000EF5F, + 0x0000EF71, 0x0000EF82, 0x0000EF94, 0x0000EFA6, 0x0000EFB7, 0x0000EFC9, 0x0000EFDB, 0x0000EFEC, + 0x0000EFFE, 0x0000F00F, 0x0000F021, 0x0000F032, 0x0000F043, 0x0000F055, 0x0000F066, 0x0000F077, + 0x0000F089, 0x0000F09A, 0x0000F0AB, 0x0000F0BC, 0x0000F0CD, 0x0000F0DE, 0x0000F0EF, 0x0000F100, + 0x0000F111, 0x0000F122, 0x0000F133, 0x0000F144, 0x0000F154, 0x0000F165, 0x0000F176, 0x0000F187, + 0x0000F197, 0x0000F1A8, 0x0000F1B8, 0x0000F1C9, 0x0000F1D9, 0x0000F1EA, 0x0000F1FA, 0x0000F20B, + 0x0000F21B, 0x0000F22B, 0x0000F23C, 0x0000F24C, 0x0000F25C, 0x0000F26C, 0x0000F27C, 0x0000F28C, + 0x0000F29C, 0x0000F2AD, 0x0000F2BD, 0x0000F2CC, 0x0000F2DC, 0x0000F2EC, 0x0000F2FC, 0x0000F30C, + 0x0000F31C, 0x0000F32B, 0x0000F33B, 0x0000F34B, 0x0000F35A, 0x0000F36A, 0x0000F379, 0x0000F389, + 0x0000F398, 0x0000F3A8, 0x0000F3B7, 0x0000F3C7, 0x0000F3D6, 0x0000F3E5, 0x0000F3F5, 0x0000F404, + 0x0000F413, 0x0000F422, 0x0000F431, 0x0000F440, 0x0000F44F, 0x0000F45E, 0x0000F46D, 0x0000F47C, + 0x0000F48B, 0x0000F49A, 0x0000F4A9, 0x0000F4B8, 0x0000F4C6, 0x0000F4D5, 0x0000F4E4, 0x0000F4F2, + 0x0000F501, 0x0000F50F, 0x0000F51E, 0x0000F52C, 0x0000F53B, 0x0000F549, 0x0000F558, 0x0000F566, + 0x0000F574, 0x0000F582, 0x0000F591, 0x0000F59F, 0x0000F5AD, 0x0000F5BB, 0x0000F5C9, 0x0000F5D7, + 0x0000F5E5, 0x0000F5F3, 0x0000F601, 0x0000F60F, 0x0000F61D, 0x0000F62B, 0x0000F638, 0x0000F646, + 0x0000F654, 0x0000F662, 0x0000F66F, 0x0000F67D, 0x0000F68A, 0x0000F698, 0x0000F6A5, 0x0000F6B3, + 0x0000F6C0, 0x0000F6CE, 0x0000F6DB, 0x0000F6E8, 0x0000F6F5, 0x0000F703, 0x0000F710, 0x0000F71D, + 0x0000F72A, 0x0000F737, 0x0000F744, 0x0000F751, 0x0000F75E, 0x0000F76B, 0x0000F778, 0x0000F785, + 0x0000F792, 0x0000F79E, 0x0000F7AB, 0x0000F7B8, 0x0000F7C5, 0x0000F7D1, 0x0000F7DE, 0x0000F7EA, + 0x0000F7F7, 0x0000F803, 0x0000F810, 0x0000F81C, 0x0000F828, 0x0000F835, 0x0000F841, 0x0000F84D, + 0x0000F85A, 0x0000F866, 0x0000F872, 0x0000F87E, 0x0000F88A, 0x0000F896, 0x0000F8A2, 0x0000F8AE, + 0x0000F8BA, 0x0000F8C6, 0x0000F8D2, 0x0000F8DD, 0x0000F8E9, 0x0000F8F5, 0x0000F901, 0x0000F90C, + 0x0000F918, 0x0000F923, 0x0000F92F, 0x0000F93B, 0x0000F946, 0x0000F951, 0x0000F95D, 0x0000F968, + 0x0000F973, 0x0000F97F, 0x0000F98A, 0x0000F995, 0x0000F9A0, 0x0000F9AB, 0x0000F9B7, 0x0000F9C2, + 0x0000F9CD, 0x0000F9D8, 0x0000F9E3, 0x0000F9ED, 0x0000F9F8, 0x0000FA03, 0x0000FA0E, 0x0000FA19, + 0x0000FA23, 0x0000FA2E, 0x0000FA39, 0x0000FA43, 0x0000FA4E, 0x0000FA58, 0x0000FA63, 0x0000FA6D, + 0x0000FA78, 0x0000FA82, 0x0000FA8C, 0x0000FA97, 0x0000FAA1, 0x0000FAAB, 0x0000FAB5, 0x0000FAC0, + 0x0000FACA, 0x0000FAD4, 0x0000FADE, 0x0000FAE8, 0x0000FAF2, 0x0000FAFC, 0x0000FB05, 0x0000FB0F, + 0x0000FB19, 0x0000FB23, 0x0000FB2D, 0x0000FB36, 0x0000FB40, 0x0000FB4A, 0x0000FB53, 0x0000FB5D, + 0x0000FB66, 0x0000FB70, 0x0000FB79, 0x0000FB83, 0x0000FB8C, 0x0000FB95, 0x0000FB9E, 0x0000FBA8, + 0x0000FBB1, 0x0000FBBA, 0x0000FBC3, 0x0000FBCC, 0x0000FBD5, 0x0000FBDE, 0x0000FBE7, 0x0000FBF0, + 0x0000FBF9, 0x0000FC02, 0x0000FC0B, 0x0000FC14, 0x0000FC1C, 0x0000FC25, 0x0000FC2E, 0x0000FC36, + 0x0000FC3F, 0x0000FC48, 0x0000FC50, 0x0000FC58, 0x0000FC61, 0x0000FC69, 0x0000FC72, 0x0000FC7A, + 0x0000FC82, 0x0000FC8B, 0x0000FC93, 0x0000FC9B, 0x0000FCA3, 0x0000FCAB, 0x0000FCB3, 0x0000FCBB, + 0x0000FCC3, 0x0000FCCB, 0x0000FCD3, 0x0000FCDB, 0x0000FCE3, 0x0000FCEB, 0x0000FCF2, 0x0000FCFA, + 0x0000FD02, 0x0000FD09, 0x0000FD11, 0x0000FD19, 0x0000FD20, 0x0000FD28, 0x0000FD2F, 0x0000FD36, + 0x0000FD3E, 0x0000FD45, 0x0000FD4C, 0x0000FD54, 0x0000FD5B, 0x0000FD62, 0x0000FD69, 0x0000FD70, + 0x0000FD77, 0x0000FD7F, 0x0000FD86, 0x0000FD8C, 0x0000FD93, 0x0000FD9A, 0x0000FDA1, 0x0000FDA8, + 0x0000FDAF, 0x0000FDB5, 0x0000FDBC, 0x0000FDC3, 0x0000FDC9, 0x0000FDD0, 0x0000FDD6, 0x0000FDDD, + 0x0000FDE3, 0x0000FDEA, 0x0000FDF0, 0x0000FDF7, 0x0000FDFD, 0x0000FE03, 0x0000FE09, 0x0000FE10, + 0x0000FE16, 0x0000FE1C, 0x0000FE22, 0x0000FE28, 0x0000FE2E, 0x0000FE34, 0x0000FE3A, 0x0000FE40, + 0x0000FE46, 0x0000FE4B, 0x0000FE51, 0x0000FE57, 0x0000FE5D, 0x0000FE62, 0x0000FE68, 0x0000FE6D, + 0x0000FE73, 0x0000FE78, 0x0000FE7E, 0x0000FE83, 0x0000FE89, 0x0000FE8E, 0x0000FE93, 0x0000FE99, + 0x0000FE9E, 0x0000FEA3, 0x0000FEA8, 0x0000FEAD, 0x0000FEB2, 0x0000FEB7, 0x0000FEBC, 0x0000FEC1, + 0x0000FEC6, 0x0000FECB, 0x0000FED0, 0x0000FED5, 0x0000FEDA, 0x0000FEDE, 0x0000FEE3, 0x0000FEE8, + 0x0000FEEC, 0x0000FEF1, 0x0000FEF6, 0x0000FEFA, 0x0000FEFF, 0x0000FF03, 0x0000FF07, 0x0000FF0C, + 0x0000FF10, 0x0000FF14, 0x0000FF19, 0x0000FF1D, 0x0000FF21, 0x0000FF25, 0x0000FF29, 0x0000FF2D, + 0x0000FF31, 0x0000FF35, 0x0000FF39, 0x0000FF3D, 0x0000FF41, 0x0000FF45, 0x0000FF48, 0x0000FF4C, + 0x0000FF50, 0x0000FF53, 0x0000FF57, 0x0000FF5B, 0x0000FF5E, 0x0000FF62, 0x0000FF65, 0x0000FF69, + 0x0000FF6C, 0x0000FF6F, 0x0000FF73, 0x0000FF76, 0x0000FF79, 0x0000FF7C, 0x0000FF80, 0x0000FF83, + 0x0000FF86, 0x0000FF89, 0x0000FF8C, 0x0000FF8F, 0x0000FF92, 0x0000FF95, 0x0000FF97, 0x0000FF9A, + 0x0000FF9D, 0x0000FFA0, 0x0000FFA2, 0x0000FFA5, 0x0000FFA8, 0x0000FFAA, 0x0000FFAD, 0x0000FFAF, + 0x0000FFB2, 0x0000FFB4, 0x0000FFB7, 0x0000FFB9, 0x0000FFBB, 0x0000FFBE, 0x0000FFC0, 0x0000FFC2, + 0x0000FFC4, 0x0000FFC6, 0x0000FFC8, 0x0000FFCA, 0x0000FFCC, 0x0000FFCE, 0x0000FFD0, 0x0000FFD2, + 0x0000FFD4, 0x0000FFD6, 0x0000FFD8, 0x0000FFD9, 0x0000FFDB, 0x0000FFDD, 0x0000FFDE, 0x0000FFE0, + 0x0000FFE1, 0x0000FFE3, 0x0000FFE4, 0x0000FFE6, 0x0000FFE7, 0x0000FFE9, 0x0000FFEA, 0x0000FFEB, + 0x0000FFEC, 0x0000FFEE, 0x0000FFEF, 0x0000FFF0, 0x0000FFF1, 0x0000FFF2, 0x0000FFF3, 0x0000FFF4, + 0x0000FFF5, 0x0000FFF6, 0x0000FFF7, 0x0000FFF7, 0x0000FFF8, 0x0000FFF9, 0x0000FFFA, 0x0000FFFA, + 0x0000FFFB, 0x0000FFFB, 0x0000FFFC, 0x0000FFFC, 0x0000FFFD, 0x0000FFFD, 0x0000FFFE, 0x0000FFFE, + 0x0000FFFE, 0x0000FFFF, 0x0000FFFF, 0x0000FFFF, 0x0000FFFF, 0x0000FFFF, 0x0000FFFF, 0x0000FFFF, +}; + + +// Re-use data, is just PI/2 phase shift. +const fixed_t *finecosine = finesine + (FINEANGLES/4); + + +const fixed_t finetangent[FINEANGLES/2] = { + 0xF5D01DA0, 0xFC9AC588, 0xFDF678A8, 0xFE8B7B7C, 0xFEDE43FC, 0xFF12F211, 0xFF376A91, 0xFF522955, + 0xFF669D19, 0xFF76C29B, 0xFF83D4C9, 0xFF8EA108, 0xFF97B301, 0xFF9F6CFE, 0xFFA61629, 0xFFABE350, + 0xFFB0FC75, 0xFFB58072, 0xFFB98779, 0xFFBD24C2, 0xFFC067C7, 0xFFC35D21, 0xFFC60F2A, 0xFFC8867A, + 0xFFCACA43, 0xFFCCE093, 0xFFCECE92, 0xFFD098A5, 0xFFD24293, 0xFFD3CFA2, 0xFFD542A9, 0xFFD69E22, + 0xFFD7E43B, 0xFFD916DC, 0xFFDA37B8, 0xFFDB484E, 0xFFDC49F6, 0xFFDD3DE1, 0xFFDE2521, 0xFFDF00AC, + 0xFFDFD161, 0xFFE09807, 0xFFE15555, 0xFFE209F0, 0xFFE2B66E, 0xFFE35B57, 0xFFE3F92A, 0xFFE49051, + 0xFFE52144, 0xFFE5AC5C, 0xFFE631F3, 0xFFE6B25A, 0xFFE72DDE, 0xFFE7A4C4, 0xFFE8174E, 0xFFE885B8, + 0xFFE8F039, 0xFFE95707, 0xFFE9BA52, 0xFFEA1A47, 0xFFEA7710, 0xFFEAD0D6, 0xFFEB27BC, 0xFFEB7BE7, + 0xFFEBCD76, 0xFFEC1C88, 0xFFEC6939, 0xFFECB3A6, 0xFFECFBE6, 0xFFED4213, 0xFFED8643, 0xFFEDC88A, + 0xFFEE08FF, 0xFFEE47B2, 0xFFEE84B7, 0xFFEEC01F, 0xFFEEF9FA, 0xFFEF3257, 0xFFEF6944, 0xFFEF9ED1, + 0xFFEFD309, 0xFFF005FA, 0xFFF037AE, 0xFFF06833, 0xFFF09792, 0xFFF0C5D5, 0xFFF0F307, 0xFFF11F32, + 0xFFF14A5D, 0xFFF17491, 0xFFF19DD7, 0xFFF1C636, 0xFFF1EDB6, 0xFFF2145F, 0xFFF23A36, 0xFFF25F43, + 0xFFF2838B, 0xFFF2A716, 0xFFF2C9E7, 0xFFF2EC07, 0xFFF30D78, 0xFFF32E41, 0xFFF34E66, 0xFFF36DED, + 0xFFF38CDA, 0xFFF3AB31, 0xFFF3C8F7, 0xFFF3E62F, 0xFFF402DD, 0xFFF41F06, 0xFFF43AAD, 0xFFF455D4, + 0xFFF47081, 0xFFF48AB6, 0xFFF4A475, 0xFFF4BDC3, 0xFFF4D6A2, 0xFFF4EF15, 0xFFF5071E, 0xFFF51EC1, + 0xFFF53600, 0xFFF54CDD, 0xFFF5635A, 0xFFF5797B, 0xFFF58F41, 0xFFF5A4AF, 0xFFF5B9C6, 0xFFF5CE88, + 0xFFF5E2F8, 0xFFF5F718, 0xFFF60AE8, 0xFFF61E6C, 0xFFF631A5, 0xFFF64495, 0xFFF6573C, 0xFFF6699D, + 0xFFF67BBA, 0xFFF68D93, 0xFFF69F2B, 0xFFF6B082, 0xFFF6C19A, 0xFFF6D275, 0xFFF6E313, 0xFFF6F377, + 0xFFF703A0, 0xFFF71391, 0xFFF7234B, 0xFFF732CE, 0xFFF7421B, 0xFFF75135, 0xFFF7601B, 0xFFF76ED0, + 0xFFF77D53, 0xFFF78BA6, 0xFFF799C9, 0xFFF7A7BF, 0xFFF7B586, 0xFFF7C322, 0xFFF7D091, 0xFFF7DDD6, + 0xFFF7EAF0, 0xFFF7F7E2, 0xFFF804AA, 0xFFF8114B, 0xFFF81DC5, 0xFFF82A18, 0xFFF83646, 0xFFF8424F, + 0xFFF84E33, 0xFFF859F3, 0xFFF86591, 0xFFF8710C, 0xFFF87C65, 0xFFF8879D, 0xFFF892B4, 0xFFF89DAB, + 0xFFF8A882, 0xFFF8B33A, 0xFFF8BDD4, 0xFFF8C84F, 0xFFF8D2AD, 0xFFF8DCEE, 0xFFF8E713, 0xFFF8F11B, + 0xFFF8FB08, 0xFFF904D9, 0xFFF90E90, 0xFFF9182C, 0xFFF921AF, 0xFFF92B18, 0xFFF93467, 0xFFF93D9E, + 0xFFF946BD, 0xFFF94FC4, 0xFFF958B3, 0xFFF9618B, 0xFFF96A4C, 0xFFF972F7, 0xFFF97B8B, 0xFFF98409, + 0xFFF98C72, 0xFFF994C6, 0xFFF99D05, 0xFFF9A52F, 0xFFF9AD45, 0xFFF9B548, 0xFFF9BD36, 0xFFF9C511, + 0xFFF9CCD9, 0xFFF9D48E, 0xFFF9DC30, 0xFFF9E3C0, 0xFFF9EB3E, 0xFFF9F2AA, 0xFFF9FA05, 0xFFFA014E, + 0xFFFA0886, 0xFFFA0FAE, 0xFFFA16C5, 0xFFFA1DCB, 0xFFFA24C1, 0xFFFA2BA8, 0xFFFA327E, 0xFFFA3945, + 0xFFFA3FFD, 0xFFFA46A6, 0xFFFA4D40, 0xFFFA53CB, 0xFFFA5A47, 0xFFFA60B5, 0xFFFA6716, 0xFFFA6D68, + 0xFFFA73AC, 0xFFFA79E3, 0xFFFA800C, 0xFFFA8628, 0xFFFA8C37, 0xFFFA9239, 0xFFFA982F, 0xFFFA9E18, + 0xFFFAA3F4, 0xFFFAA9C4, 0xFFFAAF88, 0xFFFAB540, 0xFFFABAEC, 0xFFFAC08C, 0xFFFAC621, 0xFFFACBAA, + 0xFFFAD129, 0xFFFAD69C, 0xFFFADC04, 0xFFFAE161, 0xFFFAE6B3, 0xFFFAEBFB, 0xFFFAF138, 0xFFFAF66B, + 0xFFFAFB94, 0xFFFB00B2, 0xFFFB05C7, 0xFFFB0AD2, 0xFFFB0FD3, 0xFFFB14CA, 0xFFFB19B7, 0xFFFB1E9C, + 0xFFFB2377, 0xFFFB2848, 0xFFFB2D11, 0xFFFB31D0, 0xFFFB3687, 0xFFFB3B34, 0xFFFB3FD9, 0xFFFB4476, + 0xFFFB4909, 0xFFFB4D95, 0xFFFB5218, 0xFFFB5693, 0xFFFB5B05, 0xFFFB5F70, 0xFFFB63D2, 0xFFFB682D, + 0xFFFB6C80, 0xFFFB70CB, 0xFFFB750E, 0xFFFB794A, 0xFFFB7D7E, 0xFFFB81AB, 0xFFFB85D1, 0xFFFB89EF, + 0xFFFB8E06, 0xFFFB9216, 0xFFFB961F, 0xFFFB9A21, 0xFFFB9E1C, 0xFFFBA210, 0xFFFBA5FE, 0xFFFBA9E4, + 0xFFFBADC5, 0xFFFBB19E, 0xFFFBB571, 0xFFFBB93E, 0xFFFBBD04, 0xFFFBC0C4, 0xFFFBC47E, 0xFFFBC832, + 0xFFFBCBDF, 0xFFFBCF87, 0xFFFBD328, 0xFFFBD6C4, 0xFFFBDA5A, 0xFFFBDDE9, 0xFFFBE173, 0xFFFBE4F8, + 0xFFFBE877, 0xFFFBEBF0, 0xFFFBEF63, 0xFFFBF2D1, 0xFFFBF63A, 0xFFFBF99D, 0xFFFBFCFB, 0xFFFC0054, + 0xFFFC03A7, 0xFFFC06F5, 0xFFFC0A3E, 0xFFFC0D82, 0xFFFC10C1, 0xFFFC13FB, 0xFFFC1730, 0xFFFC1A60, + 0xFFFC1D8B, 0xFFFC20B2, 0xFFFC23D3, 0xFFFC26F0, 0xFFFC2A08, 0xFFFC2D1C, 0xFFFC302B, 0xFFFC3335, + 0xFFFC363B, 0xFFFC393C, 0xFFFC3C39, 0xFFFC3F32, 0xFFFC4226, 0xFFFC4516, 0xFFFC4801, 0xFFFC4AE9, + 0xFFFC4DCC, 0xFFFC50AB, 0xFFFC5385, 0xFFFC565C, 0xFFFC592E, 0xFFFC5BFD, 0xFFFC5EC7, 0xFFFC618E, + 0xFFFC6451, 0xFFFC670F, 0xFFFC69CA, 0xFFFC6C81, 0xFFFC6F34, 0xFFFC71E4, 0xFFFC7490, 0xFFFC7738, + 0xFFFC79DC, 0xFFFC7C7D, 0xFFFC7F1A, 0xFFFC81B3, 0xFFFC8449, 0xFFFC86DB, 0xFFFC896A, 0xFFFC8BF6, + 0xFFFC8E7E, 0xFFFC9102, 0xFFFC9383, 0xFFFC9601, 0xFFFC987C, 0xFFFC9AF3, 0xFFFC9D67, 0xFFFC9FD7, + 0xFFFCA245, 0xFFFCA4AF, 0xFFFCA716, 0xFFFCA97A, 0xFFFCABDB, 0xFFFCAE38, 0xFFFCB093, 0xFFFCB2EB, + 0xFFFCB53F, 0xFFFCB791, 0xFFFCB9DF, 0xFFFCBC2B, 0xFFFCBE73, 0xFFFCC0B9, 0xFFFCC2FC, 0xFFFCC53C, + 0xFFFCC779, 0xFFFCC9B3, 0xFFFCCBEB, 0xFFFCCE20, 0xFFFCD051, 0xFFFCD281, 0xFFFCD4AD, 0xFFFCD6D7, + 0xFFFCD8FE, 0xFFFCDB23, 0xFFFCDD44, 0xFFFCDF64, 0xFFFCE180, 0xFFFCE39A, 0xFFFCE5B2, 0xFFFCE7C7, + 0xFFFCE9D9, 0xFFFCEBE9, 0xFFFCEDF6, 0xFFFCF001, 0xFFFCF20A, 0xFFFCF410, 0xFFFCF613, 0xFFFCF814, + 0xFFFCFA13, 0xFFFCFC10, 0xFFFCFE0A, 0xFFFD0002, 0xFFFD01F7, 0xFFFD03EA, 0xFFFD05DB, 0xFFFD07CA, + 0xFFFD09B6, 0xFFFD0BA1, 0xFFFD0D89, 0xFFFD0F6E, 0xFFFD1152, 0xFFFD1333, 0xFFFD1513, 0xFFFD16F0, + 0xFFFD18CB, 0xFFFD1AA3, 0xFFFD1C7A, 0xFFFD1E4F, 0xFFFD2022, 0xFFFD21F2, 0xFFFD23C1, 0xFFFD258D, + 0xFFFD2758, 0xFFFD2920, 0xFFFD2AE7, 0xFFFD2CAB, 0xFFFD2E6E, 0xFFFD302E, 0xFFFD31ED, 0xFFFD33AA, + 0xFFFD3565, 0xFFFD371E, 0xFFFD38D5, 0xFFFD3A8A, 0xFFFD3C3E, 0xFFFD3DEF, 0xFFFD3F9F, 0xFFFD414D, + 0xFFFD42F9, 0xFFFD44A3, 0xFFFD464C, 0xFFFD47F2, 0xFFFD4997, 0xFFFD4B3B, 0xFFFD4CDC, 0xFFFD4E7C, + 0xFFFD501A, 0xFFFD51B6, 0xFFFD5351, 0xFFFD54EA, 0xFFFD5681, 0xFFFD5817, 0xFFFD59AB, 0xFFFD5B3D, + 0xFFFD5CCE, 0xFFFD5E5D, 0xFFFD5FEB, 0xFFFD6177, 0xFFFD6301, 0xFFFD648A, 0xFFFD6611, 0xFFFD6797, + 0xFFFD691B, 0xFFFD6A9D, 0xFFFD6C1E, 0xFFFD6D9E, 0xFFFD6F1C, 0xFFFD7098, 0xFFFD7213, 0xFFFD738D, + 0xFFFD7505, 0xFFFD767B, 0xFFFD77F0, 0xFFFD7964, 0xFFFD7AD6, 0xFFFD7C47, 0xFFFD7DB6, 0xFFFD7F24, + 0xFFFD8091, 0xFFFD81FC, 0xFFFD8366, 0xFFFD84CE, 0xFFFD8635, 0xFFFD879B, 0xFFFD88FF, 0xFFFD8A62, + 0xFFFD8BC4, 0xFFFD8D24, 0xFFFD8E83, 0xFFFD8FE1, 0xFFFD913D, 0xFFFD9299, 0xFFFD93F2, 0xFFFD954B, + 0xFFFD96A2, 0xFFFD97F8, 0xFFFD994D, 0xFFFD9AA0, 0xFFFD9BF2, 0xFFFD9D43, 0xFFFD9E93, 0xFFFD9FE2, + 0xFFFDA12F, 0xFFFDA27B, 0xFFFDA3C6, 0xFFFDA510, 0xFFFDA658, 0xFFFDA79F, 0xFFFDA8E6, 0xFFFDAA2B, + 0xFFFDAB6E, 0xFFFDACB1, 0xFFFDADF3, 0xFFFDAF33, 0xFFFDB072, 0xFFFDB1B0, 0xFFFDB2ED, 0xFFFDB429, + 0xFFFDB564, 0xFFFDB69D, 0xFFFDB7D6, 0xFFFDB90D, 0xFFFDBA44, 0xFFFDBB79, 0xFFFDBCAD, 0xFFFDBDE0, + 0xFFFDBF13, 0xFFFDC044, 0xFFFDC174, 0xFFFDC2A2, 0xFFFDC3D0, 0xFFFDC4FD, 0xFFFDC629, 0xFFFDC754, + 0xFFFDC87E, 0xFFFDC9A6, 0xFFFDCACE, 0xFFFDCBF5, 0xFFFDCD1B, 0xFFFDCE40, 0xFFFDCF63, 0xFFFDD086, + 0xFFFDD1A8, 0xFFFDD2C9, 0xFFFDD3E9, 0xFFFDD508, 0xFFFDD626, 0xFFFDD743, 0xFFFDD85F, 0xFFFDD97A, + 0xFFFDDA95, 0xFFFDDBAE, 0xFFFDDCC6, 0xFFFDDDDE, 0xFFFDDEF4, 0xFFFDE00A, 0xFFFDE11F, 0xFFFDE233, + 0xFFFDE346, 0xFFFDE458, 0xFFFDE569, 0xFFFDE679, 0xFFFDE789, 0xFFFDE897, 0xFFFDE9A5, 0xFFFDEAB2, + 0xFFFDEBBE, 0xFFFDECC9, 0xFFFDEDD3, 0xFFFDEEDD, 0xFFFDEFE5, 0xFFFDF0ED, 0xFFFDF1F4, 0xFFFDF2FA, + 0xFFFDF3FF, 0xFFFDF504, 0xFFFDF607, 0xFFFDF70A, 0xFFFDF80C, 0xFFFDF90D, 0xFFFDFA0E, 0xFFFDFB0D, + 0xFFFDFC0C, 0xFFFDFD0A, 0xFFFDFE08, 0xFFFDFF04, 0xFFFE0000, 0xFFFE00FB, 0xFFFE01F5, 0xFFFE02EE, + 0xFFFE03E7, 0xFFFE04DF, 0xFFFE05D6, 0xFFFE06CC, 0xFFFE07C2, 0xFFFE08B7, 0xFFFE09AB, 0xFFFE0A9F, + 0xFFFE0B91, 0xFFFE0C83, 0xFFFE0D75, 0xFFFE0E65, 0xFFFE0F55, 0xFFFE1044, 0xFFFE1133, 0xFFFE1220, + 0xFFFE130D, 0xFFFE13F9, 0xFFFE14E5, 0xFFFE15D0, 0xFFFE16BA, 0xFFFE17A4, 0xFFFE188D, 0xFFFE1975, + 0xFFFE1A5C, 0xFFFE1B43, 0xFFFE1C29, 0xFFFE1D0F, 0xFFFE1DF4, 0xFFFE1ED8, 0xFFFE1FBB, 0xFFFE209E, + 0xFFFE2180, 0xFFFE2262, 0xFFFE2343, 0xFFFE2423, 0xFFFE2503, 0xFFFE25E2, 0xFFFE26C0, 0xFFFE279E, + 0xFFFE287B, 0xFFFE2957, 0xFFFE2A33, 0xFFFE2B0E, 0xFFFE2BE9, 0xFFFE2CC3, 0xFFFE2D9C, 0xFFFE2E75, + 0xFFFE2F4D, 0xFFFE3025, 0xFFFE30FC, 0xFFFE31D2, 0xFFFE32A8, 0xFFFE337D, 0xFFFE3452, 0xFFFE3526, + 0xFFFE35FA, 0xFFFE36CC, 0xFFFE379F, 0xFFFE3871, 0xFFFE3942, 0xFFFE3A12, 0xFFFE3AE2, 0xFFFE3BB2, + 0xFFFE3C81, 0xFFFE3D4F, 0xFFFE3E1D, 0xFFFE3EEA, 0xFFFE3FB7, 0xFFFE4083, 0xFFFE414E, 0xFFFE4219, + 0xFFFE42E4, 0xFFFE43AE, 0xFFFE4477, 0xFFFE4540, 0xFFFE4609, 0xFFFE46D0, 0xFFFE4798, 0xFFFE485E, + 0xFFFE4925, 0xFFFE49EA, 0xFFFE4AB0, 0xFFFE4B74, 0xFFFE4C38, 0xFFFE4CFC, 0xFFFE4DBF, 0xFFFE4E82, + 0xFFFE4F44, 0xFFFE5006, 0xFFFE50C7, 0xFFFE5188, 0xFFFE5248, 0xFFFE5307, 0xFFFE53C6, 0xFFFE5485, + 0xFFFE5543, 0xFFFE5601, 0xFFFE56BE, 0xFFFE577B, 0xFFFE5837, 0xFFFE58F3, 0xFFFE59AE, 0xFFFE5A69, + 0xFFFE5B23, 0xFFFE5BDD, 0xFFFE5C97, 0xFFFE5D50, 0xFFFE5E08, 0xFFFE5EC0, 0xFFFE5F78, 0xFFFE602F, + 0xFFFE60E6, 0xFFFE619C, 0xFFFE6252, 0xFFFE6307, 0xFFFE63BC, 0xFFFE6470, 0xFFFE6524, 0xFFFE65D8, + 0xFFFE668B, 0xFFFE673D, 0xFFFE67EF, 0xFFFE68A1, 0xFFFE6953, 0xFFFE6A03, 0xFFFE6AB4, 0xFFFE6B64, + 0xFFFE6C14, 0xFFFE6CC3, 0xFFFE6D72, 0xFFFE6E20, 0xFFFE6ECE, 0xFFFE6F7B, 0xFFFE7028, 0xFFFE70D5, + 0xFFFE7181, 0xFFFE722D, 0xFFFE72D9, 0xFFFE7384, 0xFFFE742E, 0xFFFE74D9, 0xFFFE7582, 0xFFFE762C, + 0xFFFE76D5, 0xFFFE777E, 0xFFFE7826, 0xFFFE78CE, 0xFFFE7975, 0xFFFE7A1C, 0xFFFE7AC3, 0xFFFE7B69, + 0xFFFE7C0F, 0xFFFE7CB4, 0xFFFE7D5A, 0xFFFE7DFE, 0xFFFE7EA3, 0xFFFE7F47, 0xFFFE7FEA, 0xFFFE808D, + 0xFFFE8130, 0xFFFE81D3, 0xFFFE8275, 0xFFFE8317, 0xFFFE83B8, 0xFFFE8459, 0xFFFE84FA, 0xFFFE859A, + 0xFFFE863A, 0xFFFE86D9, 0xFFFE8779, 0xFFFE8817, 0xFFFE88B6, 0xFFFE8954, 0xFFFE89F2, 0xFFFE8A8F, + 0xFFFE8B2C, 0xFFFE8BC9, 0xFFFE8C65, 0xFFFE8D01, 0xFFFE8D9D, 0xFFFE8E38, 0xFFFE8ED3, 0xFFFE8F6E, + 0xFFFE9008, 0xFFFE90A2, 0xFFFE913C, 0xFFFE91D5, 0xFFFE926E, 0xFFFE9306, 0xFFFE939F, 0xFFFE9437, + 0xFFFE94CE, 0xFFFE9566, 0xFFFE95FD, 0xFFFE9693, 0xFFFE9729, 0xFFFE97BF, 0xFFFE9855, 0xFFFE98EA, + 0xFFFE997F, 0xFFFE9A14, 0xFFFE9AA8, 0xFFFE9B3C, 0xFFFE9BD0, 0xFFFE9C64, 0xFFFE9CF7, 0xFFFE9D8A, + 0xFFFE9E1C, 0xFFFE9EAE, 0xFFFE9F40, 0xFFFE9FD2, 0xFFFEA063, 0xFFFEA0F4, 0xFFFEA184, 0xFFFEA215, + 0xFFFEA2A5, 0xFFFEA334, 0xFFFEA3C4, 0xFFFEA453, 0xFFFEA4E2, 0xFFFEA570, 0xFFFEA5FF, 0xFFFEA68D, + 0xFFFEA71A, 0xFFFEA7A8, 0xFFFEA835, 0xFFFEA8C1, 0xFFFEA94E, 0xFFFEA9DA, 0xFFFEAA66, 0xFFFEAAF2, + 0xFFFEAB7D, 0xFFFEAC08, 0xFFFEAC93, 0xFFFEAD1D, 0xFFFEADA8, 0xFFFEAE31, 0xFFFEAEBB, 0xFFFEAF44, + 0xFFFEAFCE, 0xFFFEB056, 0xFFFEB0DF, 0xFFFEB167, 0xFFFEB1EF, 0xFFFEB277, 0xFFFEB2FE, 0xFFFEB386, + 0xFFFEB40C, 0xFFFEB493, 0xFFFEB51A, 0xFFFEB5A0, 0xFFFEB625, 0xFFFEB6AB, 0xFFFEB730, 0xFFFEB7B5, + 0xFFFEB83A, 0xFFFEB8BF, 0xFFFEB943, 0xFFFEB9C7, 0xFFFEBA4B, 0xFFFEBACE, 0xFFFEBB52, 0xFFFEBBD5, + 0xFFFEBC57, 0xFFFEBCDA, 0xFFFEBD5C, 0xFFFEBDDE, 0xFFFEBE60, 0xFFFEBEE1, 0xFFFEBF62, 0xFFFEBFE3, + 0xFFFEC064, 0xFFFEC0E5, 0xFFFEC165, 0xFFFEC1E5, 0xFFFEC265, 0xFFFEC2E4, 0xFFFEC363, 0xFFFEC3E3, + 0xFFFEC461, 0xFFFEC4E0, 0xFFFEC55E, 0xFFFEC5DC, 0xFFFEC65A, 0xFFFEC6D8, 0xFFFEC755, 0xFFFEC7D2, + 0xFFFEC84F, 0xFFFEC8CC, 0xFFFEC948, 0xFFFEC9C4, 0xFFFECA40, 0xFFFECABC, 0xFFFECB38, 0xFFFECBB3, + 0xFFFECC2E, 0xFFFECCA9, 0xFFFECD23, 0xFFFECD9E, 0xFFFECE18, 0xFFFECE92, 0xFFFECF0C, 0xFFFECF85, + 0xFFFECFFE, 0xFFFED077, 0xFFFED0F0, 0xFFFED169, 0xFFFED1E1, 0xFFFED259, 0xFFFED2D1, 0xFFFED349, + 0xFFFED3C0, 0xFFFED438, 0xFFFED4AF, 0xFFFED526, 0xFFFED59C, 0xFFFED613, 0xFFFED689, 0xFFFED6FF, + 0xFFFED775, 0xFFFED7EB, 0xFFFED860, 0xFFFED8D5, 0xFFFED94A, 0xFFFED9BF, 0xFFFEDA33, 0xFFFEDAA8, + 0xFFFEDB1C, 0xFFFEDB90, 0xFFFEDC04, 0xFFFEDC77, 0xFFFEDCEB, 0xFFFEDD5E, 0xFFFEDDD1, 0xFFFEDE44, + 0xFFFEDEB6, 0xFFFEDF28, 0xFFFEDF9B, 0xFFFEE00D, 0xFFFEE07E, 0xFFFEE0F0, 0xFFFEE161, 0xFFFEE1D2, + 0xFFFEE243, 0xFFFEE2B4, 0xFFFEE325, 0xFFFEE395, 0xFFFEE405, 0xFFFEE475, 0xFFFEE4E5, 0xFFFEE555, + 0xFFFEE5C4, 0xFFFEE634, 0xFFFEE6A3, 0xFFFEE712, 0xFFFEE780, 0xFFFEE7EF, 0xFFFEE85D, 0xFFFEE8CB, + 0xFFFEE939, 0xFFFEE9A7, 0xFFFEEA15, 0xFFFEEA82, 0xFFFEEAEF, 0xFFFEEB5C, 0xFFFEEBC9, 0xFFFEEC36, + 0xFFFEECA2, 0xFFFEED0F, 0xFFFEED7B, 0xFFFEEDE7, 0xFFFEEE53, 0xFFFEEEBE, 0xFFFEEF2A, 0xFFFEEF95, + 0xFFFEF000, 0xFFFEF06B, 0xFFFEF0D6, 0xFFFEF140, 0xFFFEF1AB, 0xFFFEF215, 0xFFFEF27F, 0xFFFEF2E9, + 0xFFFEF353, 0xFFFEF3BC, 0xFFFEF426, 0xFFFEF48F, 0xFFFEF4F8, 0xFFFEF561, 0xFFFEF5C9, 0xFFFEF632, + 0xFFFEF69A, 0xFFFEF703, 0xFFFEF76B, 0xFFFEF7D3, 0xFFFEF83A, 0xFFFEF8A2, 0xFFFEF909, 0xFFFEF970, + 0xFFFEF9D7, 0xFFFEFA3E, 0xFFFEFAA5, 0xFFFEFB0C, 0xFFFEFB72, 0xFFFEFBD8, 0xFFFEFC3E, 0xFFFEFCA4, + 0xFFFEFD0A, 0xFFFEFD70, 0xFFFEFDD5, 0xFFFEFE3B, 0xFFFEFEA0, 0xFFFEFF05, 0xFFFEFF6A, 0xFFFEFFCE, + 0xFFFF0033, 0xFFFF0097, 0xFFFF00FB, 0xFFFF015F, 0xFFFF01C3, 0xFFFF0227, 0xFFFF028B, 0xFFFF02EE, + 0xFFFF0351, 0xFFFF03B5, 0xFFFF0418, 0xFFFF047B, 0xFFFF04DD, 0xFFFF0540, 0xFFFF05A2, 0xFFFF0604, + 0xFFFF0667, 0xFFFF06C9, 0xFFFF072A, 0xFFFF078C, 0xFFFF07EE, 0xFFFF084F, 0xFFFF08B0, 0xFFFF0911, + 0xFFFF0972, 0xFFFF09D3, 0xFFFF0A34, 0xFFFF0A94, 0xFFFF0AF5, 0xFFFF0B55, 0xFFFF0BB5, 0xFFFF0C15, + 0xFFFF0C75, 0xFFFF0CD5, 0xFFFF0D34, 0xFFFF0D94, 0xFFFF0DF3, 0xFFFF0E52, 0xFFFF0EB1, 0xFFFF0F10, + 0xFFFF0F6F, 0xFFFF0FCD, 0xFFFF102C, 0xFFFF108A, 0xFFFF10E8, 0xFFFF1146, 0xFFFF11A4, 0xFFFF1202, + 0xFFFF125F, 0xFFFF12BD, 0xFFFF131A, 0xFFFF1378, 0xFFFF13D5, 0xFFFF1432, 0xFFFF148F, 0xFFFF14EB, + 0xFFFF1548, 0xFFFF15A4, 0xFFFF1601, 0xFFFF165D, 0xFFFF16B9, 0xFFFF1715, 0xFFFF1771, 0xFFFF17CC, + 0xFFFF1828, 0xFFFF1883, 0xFFFF18DF, 0xFFFF193A, 0xFFFF1995, 0xFFFF19F0, 0xFFFF1A4B, 0xFFFF1AA5, + 0xFFFF1B00, 0xFFFF1B5A, 0xFFFF1BB5, 0xFFFF1C0F, 0xFFFF1C69, 0xFFFF1CC3, 0xFFFF1D1D, 0xFFFF1D76, + 0xFFFF1DD0, 0xFFFF1E29, 0xFFFF1E83, 0xFFFF1EDC, 0xFFFF1F35, 0xFFFF1F8E, 0xFFFF1FE7, 0xFFFF203F, + 0xFFFF2098, 0xFFFF20F0, 0xFFFF2149, 0xFFFF21A1, 0xFFFF21F9, 0xFFFF2251, 0xFFFF22A9, 0xFFFF2301, + 0xFFFF2359, 0xFFFF23B0, 0xFFFF2408, 0xFFFF245F, 0xFFFF24B6, 0xFFFF250D, 0xFFFF2564, 0xFFFF25BB, + 0xFFFF2612, 0xFFFF2668, 0xFFFF26BF, 0xFFFF2715, 0xFFFF276C, 0xFFFF27C2, 0xFFFF2818, 0xFFFF286E, + 0xFFFF28C4, 0xFFFF2919, 0xFFFF296F, 0xFFFF29C5, 0xFFFF2A1A, 0xFFFF2A6F, 0xFFFF2AC5, 0xFFFF2B1A, + 0xFFFF2B6F, 0xFFFF2BC3, 0xFFFF2C18, 0xFFFF2C6D, 0xFFFF2CC1, 0xFFFF2D16, 0xFFFF2D6A, 0xFFFF2DBE, + 0xFFFF2E13, 0xFFFF2E67, 0xFFFF2EBA, 0xFFFF2F0E, 0xFFFF2F62, 0xFFFF2FB6, 0xFFFF3009, 0xFFFF305C, + 0xFFFF30B0, 0xFFFF3103, 0xFFFF3156, 0xFFFF31A9, 0xFFFF31FC, 0xFFFF324F, 0xFFFF32A1, 0xFFFF32F4, + 0xFFFF3346, 0xFFFF3399, 0xFFFF33EB, 0xFFFF343D, 0xFFFF348F, 0xFFFF34E1, 0xFFFF3533, 0xFFFF3585, + 0xFFFF35D6, 0xFFFF3628, 0xFFFF3679, 0xFFFF36CB, 0xFFFF371C, 0xFFFF376D, 0xFFFF37BE, 0xFFFF380F, + 0xFFFF3860, 0xFFFF38B1, 0xFFFF3902, 0xFFFF3952, 0xFFFF39A3, 0xFFFF39F3, 0xFFFF3A43, 0xFFFF3A94, + 0xFFFF3AE4, 0xFFFF3B34, 0xFFFF3B84, 0xFFFF3BD3, 0xFFFF3C23, 0xFFFF3C73, 0xFFFF3CC2, 0xFFFF3D12, + 0xFFFF3D61, 0xFFFF3DB0, 0xFFFF3E00, 0xFFFF3E4F, 0xFFFF3E9E, 0xFFFF3EED, 0xFFFF3F3B, 0xFFFF3F8A, + 0xFFFF3FD9, 0xFFFF4027, 0xFFFF4076, 0xFFFF40C4, 0xFFFF4112, 0xFFFF4161, 0xFFFF41AF, 0xFFFF41FD, + 0xFFFF424B, 0xFFFF4298, 0xFFFF42E6, 0xFFFF4334, 0xFFFF4381, 0xFFFF43CF, 0xFFFF441C, 0xFFFF446A, + 0xFFFF44B7, 0xFFFF4504, 0xFFFF4551, 0xFFFF459E, 0xFFFF45EB, 0xFFFF4638, 0xFFFF4684, 0xFFFF46D1, + 0xFFFF471D, 0xFFFF476A, 0xFFFF47B6, 0xFFFF4802, 0xFFFF484F, 0xFFFF489B, 0xFFFF48E7, 0xFFFF4933, + 0xFFFF497F, 0xFFFF49CA, 0xFFFF4A16, 0xFFFF4A62, 0xFFFF4AAD, 0xFFFF4AF9, 0xFFFF4B44, 0xFFFF4B8F, + 0xFFFF4BDA, 0xFFFF4C26, 0xFFFF4C71, 0xFFFF4CBC, 0xFFFF4D06, 0xFFFF4D51, 0xFFFF4D9C, 0xFFFF4DE7, + 0xFFFF4E31, 0xFFFF4E7C, 0xFFFF4EC6, 0xFFFF4F10, 0xFFFF4F5B, 0xFFFF4FA5, 0xFFFF4FEF, 0xFFFF5039, + 0xFFFF5083, 0xFFFF50CD, 0xFFFF5116, 0xFFFF5160, 0xFFFF51AA, 0xFFFF51F3, 0xFFFF523D, 0xFFFF5286, + 0xFFFF52CF, 0xFFFF5319, 0xFFFF5362, 0xFFFF53AB, 0xFFFF53F4, 0xFFFF543D, 0xFFFF5486, 0xFFFF54CE, + 0xFFFF5517, 0xFFFF5560, 0xFFFF55A8, 0xFFFF55F1, 0xFFFF5639, 0xFFFF5682, 0xFFFF56CA, 0xFFFF5712, + 0xFFFF575A, 0xFFFF57A2, 0xFFFF57EA, 0xFFFF5832, 0xFFFF587A, 0xFFFF58C2, 0xFFFF5909, 0xFFFF5951, + 0xFFFF5998, 0xFFFF59E0, 0xFFFF5A27, 0xFFFF5A6F, 0xFFFF5AB6, 0xFFFF5AFD, 0xFFFF5B44, 0xFFFF5B8B, + 0xFFFF5BD2, 0xFFFF5C19, 0xFFFF5C60, 0xFFFF5CA7, 0xFFFF5CED, 0xFFFF5D34, 0xFFFF5D7B, 0xFFFF5DC1, + 0xFFFF5E07, 0xFFFF5E4E, 0xFFFF5E94, 0xFFFF5EDA, 0xFFFF5F20, 0xFFFF5F67, 0xFFFF5FAD, 0xFFFF5FF3, + 0xFFFF6038, 0xFFFF607E, 0xFFFF60C4, 0xFFFF610A, 0xFFFF614F, 0xFFFF6195, 0xFFFF61DA, 0xFFFF6220, + 0xFFFF6265, 0xFFFF62AA, 0xFFFF62F0, 0xFFFF6335, 0xFFFF637A, 0xFFFF63BF, 0xFFFF6404, 0xFFFF6449, + 0xFFFF648E, 0xFFFF64D2, 0xFFFF6517, 0xFFFF655C, 0xFFFF65A0, 0xFFFF65E5, 0xFFFF6629, 0xFFFF666E, + 0xFFFF66B2, 0xFFFF66F6, 0xFFFF673A, 0xFFFF677E, 0xFFFF67C3, 0xFFFF6807, 0xFFFF684B, 0xFFFF688E, + 0xFFFF68D2, 0xFFFF6916, 0xFFFF695A, 0xFFFF699D, 0xFFFF69E1, 0xFFFF6A24, 0xFFFF6A68, 0xFFFF6AAB, + 0xFFFF6AEF, 0xFFFF6B32, 0xFFFF6B75, 0xFFFF6BB8, 0xFFFF6BFB, 0xFFFF6C3E, 0xFFFF6C81, 0xFFFF6CC4, + 0xFFFF6D07, 0xFFFF6D4A, 0xFFFF6D8D, 0xFFFF6DCF, 0xFFFF6E12, 0xFFFF6E55, 0xFFFF6E97, 0xFFFF6EDA, + 0xFFFF6F1C, 0xFFFF6F5E, 0xFFFF6FA1, 0xFFFF6FE3, 0xFFFF7025, 0xFFFF7067, 0xFFFF70A9, 0xFFFF70EB, + 0xFFFF712D, 0xFFFF716F, 0xFFFF71B1, 0xFFFF71F3, 0xFFFF7234, 0xFFFF7276, 0xFFFF72B8, 0xFFFF72F9, + 0xFFFF733B, 0xFFFF737C, 0xFFFF73BD, 0xFFFF73FF, 0xFFFF7440, 0xFFFF7481, 0xFFFF74C2, 0xFFFF7504, + 0xFFFF7545, 0xFFFF7586, 0xFFFF75C7, 0xFFFF7607, 0xFFFF7648, 0xFFFF7689, 0xFFFF76CA, 0xFFFF770A, + 0xFFFF774B, 0xFFFF778C, 0xFFFF77CC, 0xFFFF780D, 0xFFFF784D, 0xFFFF788D, 0xFFFF78CE, 0xFFFF790E, + 0xFFFF794E, 0xFFFF798E, 0xFFFF79CE, 0xFFFF7A0F, 0xFFFF7A4F, 0xFFFF7A8E, 0xFFFF7ACE, 0xFFFF7B0E, + 0xFFFF7B4E, 0xFFFF7B8E, 0xFFFF7BCD, 0xFFFF7C0D, 0xFFFF7C4D, 0xFFFF7C8C, 0xFFFF7CCC, 0xFFFF7D0B, + 0xFFFF7D4B, 0xFFFF7D8A, 0xFFFF7DC9, 0xFFFF7E08, 0xFFFF7E48, 0xFFFF7E87, 0xFFFF7EC6, 0xFFFF7F05, + 0xFFFF7F44, 0xFFFF7F83, 0xFFFF7FC2, 0xFFFF8001, 0xFFFF803F, 0xFFFF807E, 0xFFFF80BD, 0xFFFF80FC, + 0xFFFF813A, 0xFFFF8179, 0xFFFF81B7, 0xFFFF81F6, 0xFFFF8234, 0xFFFF8273, 0xFFFF82B1, 0xFFFF82EF, + 0xFFFF832D, 0xFFFF836C, 0xFFFF83AA, 0xFFFF83E8, 0xFFFF8426, 0xFFFF8464, 0xFFFF84A2, 0xFFFF84E0, + 0xFFFF851E, 0xFFFF855C, 0xFFFF8599, 0xFFFF85D7, 0xFFFF8615, 0xFFFF8652, 0xFFFF8690, 0xFFFF86CE, + 0xFFFF870B, 0xFFFF8748, 0xFFFF8786, 0xFFFF87C3, 0xFFFF8801, 0xFFFF883E, 0xFFFF887B, 0xFFFF88B8, + 0xFFFF88F6, 0xFFFF8933, 0xFFFF8970, 0xFFFF89AD, 0xFFFF89EA, 0xFFFF8A27, 0xFFFF8A64, 0xFFFF8AA0, + 0xFFFF8ADD, 0xFFFF8B1A, 0xFFFF8B57, 0xFFFF8B93, 0xFFFF8BD0, 0xFFFF8C0D, 0xFFFF8C49, 0xFFFF8C86, + 0xFFFF8CC2, 0xFFFF8CFF, 0xFFFF8D3B, 0xFFFF8D77, 0xFFFF8DB4, 0xFFFF8DF0, 0xFFFF8E2C, 0xFFFF8E68, + 0xFFFF8EA4, 0xFFFF8EE1, 0xFFFF8F1D, 0xFFFF8F59, 0xFFFF8F95, 0xFFFF8FD1, 0xFFFF900C, 0xFFFF9048, + 0xFFFF9084, 0xFFFF90C0, 0xFFFF90FC, 0xFFFF9137, 0xFFFF9173, 0xFFFF91AF, 0xFFFF91EA, 0xFFFF9226, + 0xFFFF9261, 0xFFFF929D, 0xFFFF92D8, 0xFFFF9314, 0xFFFF934F, 0xFFFF938A, 0xFFFF93C5, 0xFFFF9401, + 0xFFFF943C, 0xFFFF9477, 0xFFFF94B2, 0xFFFF94ED, 0xFFFF9528, 0xFFFF9563, 0xFFFF959E, 0xFFFF95D9, + 0xFFFF9614, 0xFFFF964F, 0xFFFF968A, 0xFFFF96C4, 0xFFFF96FF, 0xFFFF973A, 0xFFFF9775, 0xFFFF97AF, + 0xFFFF97EA, 0xFFFF9824, 0xFFFF985F, 0xFFFF9899, 0xFFFF98D4, 0xFFFF990E, 0xFFFF9949, 0xFFFF9983, + 0xFFFF99BD, 0xFFFF99F8, 0xFFFF9A32, 0xFFFF9A6C, 0xFFFF9AA6, 0xFFFF9AE0, 0xFFFF9B1A, 0xFFFF9B54, + 0xFFFF9B8E, 0xFFFF9BC8, 0xFFFF9C02, 0xFFFF9C3C, 0xFFFF9C76, 0xFFFF9CB0, 0xFFFF9CEA, 0xFFFF9D24, + 0xFFFF9D5D, 0xFFFF9D97, 0xFFFF9DD1, 0xFFFF9E0A, 0xFFFF9E44, 0xFFFF9E7E, 0xFFFF9EB7, 0xFFFF9EF1, + 0xFFFF9F2A, 0xFFFF9F64, 0xFFFF9F9D, 0xFFFF9FD6, 0xFFFFA010, 0xFFFFA049, 0xFFFFA082, 0xFFFFA0BB, + 0xFFFFA0F5, 0xFFFFA12E, 0xFFFFA167, 0xFFFFA1A0, 0xFFFFA1D9, 0xFFFFA212, 0xFFFFA24B, 0xFFFFA284, + 0xFFFFA2BD, 0xFFFFA2F6, 0xFFFFA32F, 0xFFFFA368, 0xFFFFA3A1, 0xFFFFA3D9, 0xFFFFA412, 0xFFFFA44B, + 0xFFFFA484, 0xFFFFA4BC, 0xFFFFA4F5, 0xFFFFA52E, 0xFFFFA566, 0xFFFFA59F, 0xFFFFA5D7, 0xFFFFA610, + 0xFFFFA648, 0xFFFFA681, 0xFFFFA6B9, 0xFFFFA6F1, 0xFFFFA72A, 0xFFFFA762, 0xFFFFA79A, 0xFFFFA7D3, + 0xFFFFA80B, 0xFFFFA843, 0xFFFFA87B, 0xFFFFA8B3, 0xFFFFA8EB, 0xFFFFA923, 0xFFFFA95B, 0xFFFFA993, + 0xFFFFA9CB, 0xFFFFAA03, 0xFFFFAA3B, 0xFFFFAA73, 0xFFFFAAAB, 0xFFFFAAE3, 0xFFFFAB1B, 0xFFFFAB52, + 0xFFFFAB8A, 0xFFFFABC2, 0xFFFFABFA, 0xFFFFAC31, 0xFFFFAC69, 0xFFFFACA1, 0xFFFFACD8, 0xFFFFAD10, + 0xFFFFAD47, 0xFFFFAD7F, 0xFFFFADB6, 0xFFFFADEE, 0xFFFFAE25, 0xFFFFAE5C, 0xFFFFAE94, 0xFFFFAECB, + 0xFFFFAF02, 0xFFFFAF3A, 0xFFFFAF71, 0xFFFFAFA8, 0xFFFFAFDF, 0xFFFFB017, 0xFFFFB04E, 0xFFFFB085, + 0xFFFFB0BC, 0xFFFFB0F3, 0xFFFFB12A, 0xFFFFB161, 0xFFFFB198, 0xFFFFB1CF, 0xFFFFB206, 0xFFFFB23D, + 0xFFFFB274, 0xFFFFB2AB, 0xFFFFB2E2, 0xFFFFB318, 0xFFFFB34F, 0xFFFFB386, 0xFFFFB3BD, 0xFFFFB3F3, + 0xFFFFB42A, 0xFFFFB461, 0xFFFFB497, 0xFFFFB4CE, 0xFFFFB505, 0xFFFFB53B, 0xFFFFB572, 0xFFFFB5A8, + 0xFFFFB5DF, 0xFFFFB615, 0xFFFFB64C, 0xFFFFB682, 0xFFFFB6B8, 0xFFFFB6EF, 0xFFFFB725, 0xFFFFB75B, + 0xFFFFB792, 0xFFFFB7C8, 0xFFFFB7FE, 0xFFFFB834, 0xFFFFB86B, 0xFFFFB8A1, 0xFFFFB8D7, 0xFFFFB90D, + 0xFFFFB943, 0xFFFFB979, 0xFFFFB9AF, 0xFFFFB9E6, 0xFFFFBA1C, 0xFFFFBA52, 0xFFFFBA88, 0xFFFFBABD, + 0xFFFFBAF3, 0xFFFFBB29, 0xFFFFBB5F, 0xFFFFBB95, 0xFFFFBBCB, 0xFFFFBC01, 0xFFFFBC37, 0xFFFFBC6C, + 0xFFFFBCA2, 0xFFFFBCD8, 0xFFFFBD0E, 0xFFFFBD43, 0xFFFFBD79, 0xFFFFBDAF, 0xFFFFBDE4, 0xFFFFBE1A, + 0xFFFFBE4F, 0xFFFFBE85, 0xFFFFBEBA, 0xFFFFBEF0, 0xFFFFBF25, 0xFFFFBF5B, 0xFFFFBF90, 0xFFFFBFC6, + 0xFFFFBFFB, 0xFFFFC031, 0xFFFFC066, 0xFFFFC09B, 0xFFFFC0D1, 0xFFFFC106, 0xFFFFC13B, 0xFFFFC171, + 0xFFFFC1A6, 0xFFFFC1DB, 0xFFFFC210, 0xFFFFC246, 0xFFFFC27B, 0xFFFFC2B0, 0xFFFFC2E5, 0xFFFFC31A, + 0xFFFFC34F, 0xFFFFC384, 0xFFFFC3B9, 0xFFFFC3EE, 0xFFFFC423, 0xFFFFC458, 0xFFFFC48D, 0xFFFFC4C2, + 0xFFFFC4F7, 0xFFFFC52C, 0xFFFFC561, 0xFFFFC596, 0xFFFFC5CB, 0xFFFFC600, 0xFFFFC635, 0xFFFFC669, + 0xFFFFC69E, 0xFFFFC6D3, 0xFFFFC708, 0xFFFFC73D, 0xFFFFC771, 0xFFFFC7A6, 0xFFFFC7DB, 0xFFFFC80F, + 0xFFFFC844, 0xFFFFC879, 0xFFFFC8AD, 0xFFFFC8E2, 0xFFFFC917, 0xFFFFC94B, 0xFFFFC980, 0xFFFFC9B4, + 0xFFFFC9E9, 0xFFFFCA1D, 0xFFFFCA52, 0xFFFFCA86, 0xFFFFCABB, 0xFFFFCAEF, 0xFFFFCB23, 0xFFFFCB58, + 0xFFFFCB8C, 0xFFFFCBC1, 0xFFFFCBF5, 0xFFFFCC29, 0xFFFFCC5E, 0xFFFFCC92, 0xFFFFCCC6, 0xFFFFCCFA, + 0xFFFFCD2F, 0xFFFFCD63, 0xFFFFCD97, 0xFFFFCDCB, 0xFFFFCE00, 0xFFFFCE34, 0xFFFFCE68, 0xFFFFCE9C, + 0xFFFFCED0, 0xFFFFCF04, 0xFFFFCF38, 0xFFFFCF6C, 0xFFFFCFA1, 0xFFFFCFD5, 0xFFFFD009, 0xFFFFD03D, + 0xFFFFD071, 0xFFFFD0A5, 0xFFFFD0D9, 0xFFFFD10D, 0xFFFFD141, 0xFFFFD174, 0xFFFFD1A8, 0xFFFFD1DC, + 0xFFFFD210, 0xFFFFD244, 0xFFFFD278, 0xFFFFD2AC, 0xFFFFD2E0, 0xFFFFD313, 0xFFFFD347, 0xFFFFD37B, + 0xFFFFD3AF, 0xFFFFD3E3, 0xFFFFD416, 0xFFFFD44A, 0xFFFFD47E, 0xFFFFD4B2, 0xFFFFD4E5, 0xFFFFD519, + 0xFFFFD54D, 0xFFFFD580, 0xFFFFD5B4, 0xFFFFD5E7, 0xFFFFD61B, 0xFFFFD64F, 0xFFFFD682, 0xFFFFD6B6, + 0xFFFFD6E9, 0xFFFFD71D, 0xFFFFD751, 0xFFFFD784, 0xFFFFD7B8, 0xFFFFD7EB, 0xFFFFD81F, 0xFFFFD852, + 0xFFFFD886, 0xFFFFD8B9, 0xFFFFD8EC, 0xFFFFD920, 0xFFFFD953, 0xFFFFD987, 0xFFFFD9BA, 0xFFFFD9ED, + 0xFFFFDA21, 0xFFFFDA54, 0xFFFFDA88, 0xFFFFDABB, 0xFFFFDAEE, 0xFFFFDB22, 0xFFFFDB55, 0xFFFFDB88, + 0xFFFFDBBB, 0xFFFFDBEF, 0xFFFFDC22, 0xFFFFDC55, 0xFFFFDC88, 0xFFFFDCBC, 0xFFFFDCEF, 0xFFFFDD22, + 0xFFFFDD55, 0xFFFFDD88, 0xFFFFDDBC, 0xFFFFDDEF, 0xFFFFDE22, 0xFFFFDE55, 0xFFFFDE88, 0xFFFFDEBB, + 0xFFFFDEEE, 0xFFFFDF22, 0xFFFFDF55, 0xFFFFDF88, 0xFFFFDFBB, 0xFFFFDFEE, 0xFFFFE021, 0xFFFFE054, + 0xFFFFE087, 0xFFFFE0BA, 0xFFFFE0ED, 0xFFFFE120, 0xFFFFE153, 0xFFFFE186, 0xFFFFE1B9, 0xFFFFE1EC, + 0xFFFFE21F, 0xFFFFE252, 0xFFFFE285, 0xFFFFE2B8, 0xFFFFE2EB, 0xFFFFE31D, 0xFFFFE350, 0xFFFFE383, + 0xFFFFE3B6, 0xFFFFE3E9, 0xFFFFE41C, 0xFFFFE44F, 0xFFFFE482, 0xFFFFE4B4, 0xFFFFE4E7, 0xFFFFE51A, + 0xFFFFE54D, 0xFFFFE580, 0xFFFFE5B3, 0xFFFFE5E5, 0xFFFFE618, 0xFFFFE64B, 0xFFFFE67E, 0xFFFFE6B0, + 0xFFFFE6E3, 0xFFFFE716, 0xFFFFE749, 0xFFFFE77B, 0xFFFFE7AE, 0xFFFFE7E1, 0xFFFFE814, 0xFFFFE846, + 0xFFFFE879, 0xFFFFE8AC, 0xFFFFE8DE, 0xFFFFE911, 0xFFFFE944, 0xFFFFE976, 0xFFFFE9A9, 0xFFFFE9DC, + 0xFFFFEA0E, 0xFFFFEA41, 0xFFFFEA73, 0xFFFFEAA6, 0xFFFFEAD9, 0xFFFFEB0B, 0xFFFFEB3E, 0xFFFFEB70, + 0xFFFFEBA3, 0xFFFFEBD6, 0xFFFFEC08, 0xFFFFEC3B, 0xFFFFEC6D, 0xFFFFECA0, 0xFFFFECD2, 0xFFFFED05, + 0xFFFFED38, 0xFFFFED6A, 0xFFFFED9D, 0xFFFFEDCF, 0xFFFFEE02, 0xFFFFEE34, 0xFFFFEE67, 0xFFFFEE99, + 0xFFFFEECC, 0xFFFFEEFE, 0xFFFFEF31, 0xFFFFEF63, 0xFFFFEF96, 0xFFFFEFC8, 0xFFFFEFFB, 0xFFFFF02D, + 0xFFFFF05F, 0xFFFFF092, 0xFFFFF0C4, 0xFFFFF0F7, 0xFFFFF129, 0xFFFFF15C, 0xFFFFF18E, 0xFFFFF1C0, + 0xFFFFF1F3, 0xFFFFF225, 0xFFFFF258, 0xFFFFF28A, 0xFFFFF2BD, 0xFFFFF2EF, 0xFFFFF321, 0xFFFFF354, + 0xFFFFF386, 0xFFFFF3B8, 0xFFFFF3EB, 0xFFFFF41D, 0xFFFFF450, 0xFFFFF482, 0xFFFFF4B4, 0xFFFFF4E7, + 0xFFFFF519, 0xFFFFF54B, 0xFFFFF57E, 0xFFFFF5B0, 0xFFFFF5E2, 0xFFFFF615, 0xFFFFF647, 0xFFFFF679, + 0xFFFFF6AC, 0xFFFFF6DE, 0xFFFFF710, 0xFFFFF743, 0xFFFFF775, 0xFFFFF7A7, 0xFFFFF7DA, 0xFFFFF80C, + 0xFFFFF83E, 0xFFFFF871, 0xFFFFF8A3, 0xFFFFF8D5, 0xFFFFF908, 0xFFFFF93A, 0xFFFFF96C, 0xFFFFF99F, + 0xFFFFF9D1, 0xFFFFFA03, 0xFFFFFA35, 0xFFFFFA68, 0xFFFFFA9A, 0xFFFFFACC, 0xFFFFFAFF, 0xFFFFFB31, + 0xFFFFFB63, 0xFFFFFB95, 0xFFFFFBC8, 0xFFFFFBFA, 0xFFFFFC2C, 0xFFFFFC5F, 0xFFFFFC91, 0xFFFFFCC3, + 0xFFFFFCF5, 0xFFFFFD28, 0xFFFFFD5A, 0xFFFFFD8C, 0xFFFFFDBE, 0xFFFFFDF1, 0xFFFFFE23, 0xFFFFFE55, + 0xFFFFFE88, 0xFFFFFEBA, 0xFFFFFEEC, 0xFFFFFF1E, 0xFFFFFF51, 0xFFFFFF83, 0xFFFFFFB5, 0xFFFFFFE7, + 0x00000019, 0x0000004B, 0x0000007D, 0x000000AF, 0x000000E2, 0x00000114, 0x00000146, 0x00000178, + 0x000001AB, 0x000001DD, 0x0000020F, 0x00000242, 0x00000274, 0x000002A6, 0x000002D8, 0x0000030B, + 0x0000033D, 0x0000036F, 0x000003A1, 0x000003D4, 0x00000406, 0x00000438, 0x0000046B, 0x0000049D, + 0x000004CF, 0x00000501, 0x00000534, 0x00000566, 0x00000598, 0x000005CB, 0x000005FD, 0x0000062F, + 0x00000661, 0x00000694, 0x000006C6, 0x000006F8, 0x0000072B, 0x0000075D, 0x0000078F, 0x000007C2, + 0x000007F4, 0x00000826, 0x00000859, 0x0000088B, 0x000008BD, 0x000008F0, 0x00000922, 0x00000954, + 0x00000987, 0x000009B9, 0x000009EB, 0x00000A1E, 0x00000A50, 0x00000A82, 0x00000AB5, 0x00000AE7, + 0x00000B19, 0x00000B4C, 0x00000B7E, 0x00000BB0, 0x00000BE3, 0x00000C15, 0x00000C48, 0x00000C7A, + 0x00000CAC, 0x00000CDF, 0x00000D11, 0x00000D43, 0x00000D76, 0x00000DA8, 0x00000DDB, 0x00000E0D, + 0x00000E40, 0x00000E72, 0x00000EA4, 0x00000ED7, 0x00000F09, 0x00000F3C, 0x00000F6E, 0x00000FA1, + 0x00000FD3, 0x00001005, 0x00001038, 0x0000106A, 0x0000109D, 0x000010CF, 0x00001102, 0x00001134, + 0x00001167, 0x00001199, 0x000011CC, 0x000011FE, 0x00001231, 0x00001263, 0x00001296, 0x000012C8, + 0x000012FB, 0x0000132E, 0x00001360, 0x00001393, 0x000013C5, 0x000013F8, 0x0000142A, 0x0000145D, + 0x00001490, 0x000014C2, 0x000014F5, 0x00001527, 0x0000155A, 0x0000158D, 0x000015BF, 0x000015F2, + 0x00001624, 0x00001657, 0x0000168A, 0x000016BC, 0x000016EF, 0x00001722, 0x00001754, 0x00001787, + 0x000017BA, 0x000017EC, 0x0000181F, 0x00001852, 0x00001885, 0x000018B7, 0x000018EA, 0x0000191D, + 0x00001950, 0x00001982, 0x000019B5, 0x000019E8, 0x00001A1B, 0x00001A4D, 0x00001A80, 0x00001AB3, + 0x00001AE6, 0x00001B19, 0x00001B4C, 0x00001B7E, 0x00001BB1, 0x00001BE4, 0x00001C17, 0x00001C4A, + 0x00001C7D, 0x00001CB0, 0x00001CE3, 0x00001D15, 0x00001D48, 0x00001D7B, 0x00001DAE, 0x00001DE1, + 0x00001E14, 0x00001E47, 0x00001E7A, 0x00001EAD, 0x00001EE0, 0x00001F13, 0x00001F46, 0x00001F79, + 0x00001FAC, 0x00001FDF, 0x00002012, 0x00002045, 0x00002078, 0x000020AB, 0x000020DE, 0x00002112, + 0x00002145, 0x00002178, 0x000021AB, 0x000021DE, 0x00002211, 0x00002244, 0x00002278, 0x000022AB, + 0x000022DE, 0x00002311, 0x00002344, 0x00002378, 0x000023AB, 0x000023DE, 0x00002411, 0x00002445, + 0x00002478, 0x000024AB, 0x000024DE, 0x00002512, 0x00002545, 0x00002578, 0x000025AC, 0x000025DF, + 0x00002613, 0x00002646, 0x00002679, 0x000026AD, 0x000026E0, 0x00002714, 0x00002747, 0x0000277A, + 0x000027AE, 0x000027E1, 0x00002815, 0x00002848, 0x0000287C, 0x000028AF, 0x000028E3, 0x00002917, + 0x0000294A, 0x0000297E, 0x000029B1, 0x000029E5, 0x00002A19, 0x00002A4C, 0x00002A80, 0x00002AB3, + 0x00002AE7, 0x00002B1B, 0x00002B4E, 0x00002B82, 0x00002BB6, 0x00002BEA, 0x00002C1D, 0x00002C51, + 0x00002C85, 0x00002CB9, 0x00002CED, 0x00002D20, 0x00002D54, 0x00002D88, 0x00002DBC, 0x00002DF0, + 0x00002E24, 0x00002E58, 0x00002E8C, 0x00002EBF, 0x00002EF3, 0x00002F27, 0x00002F5B, 0x00002F8F, + 0x00002FC3, 0x00002FF7, 0x0000302B, 0x0000305F, 0x00003094, 0x000030C8, 0x000030FC, 0x00003130, + 0x00003164, 0x00003198, 0x000031CC, 0x00003200, 0x00003235, 0x00003269, 0x0000329D, 0x000032D1, + 0x00003306, 0x0000333A, 0x0000336E, 0x000033A2, 0x000033D7, 0x0000340B, 0x0000343F, 0x00003474, + 0x000034A8, 0x000034DD, 0x00003511, 0x00003545, 0x0000357A, 0x000035AE, 0x000035E3, 0x00003617, + 0x0000364C, 0x00003680, 0x000036B5, 0x000036E9, 0x0000371E, 0x00003753, 0x00003787, 0x000037BC, + 0x000037F1, 0x00003825, 0x0000385A, 0x0000388F, 0x000038C3, 0x000038F8, 0x0000392D, 0x00003962, + 0x00003997, 0x000039CB, 0x00003A00, 0x00003A35, 0x00003A6A, 0x00003A9F, 0x00003AD4, 0x00003B09, + 0x00003B3E, 0x00003B73, 0x00003BA8, 0x00003BDD, 0x00003C12, 0x00003C47, 0x00003C7C, 0x00003CB1, + 0x00003CE6, 0x00003D1B, 0x00003D50, 0x00003D85, 0x00003DBA, 0x00003DF0, 0x00003E25, 0x00003E5A, + 0x00003E8F, 0x00003EC5, 0x00003EFA, 0x00003F2F, 0x00003F65, 0x00003F9A, 0x00003FCF, 0x00004005, + 0x0000403A, 0x00004070, 0x000040A5, 0x000040DB, 0x00004110, 0x00004146, 0x0000417B, 0x000041B1, + 0x000041E6, 0x0000421C, 0x00004251, 0x00004287, 0x000042BD, 0x000042F2, 0x00004328, 0x0000435E, + 0x00004394, 0x000043C9, 0x000043FF, 0x00004435, 0x0000446B, 0x000044A1, 0x000044D7, 0x0000450D, + 0x00004543, 0x00004578, 0x000045AE, 0x000045E4, 0x0000461A, 0x00004651, 0x00004687, 0x000046BD, + 0x000046F3, 0x00004729, 0x0000475F, 0x00004795, 0x000047CC, 0x00004802, 0x00004838, 0x0000486E, + 0x000048A5, 0x000048DB, 0x00004911, 0x00004948, 0x0000497E, 0x000049B4, 0x000049EB, 0x00004A21, + 0x00004A58, 0x00004A8E, 0x00004AC5, 0x00004AFB, 0x00004B32, 0x00004B69, 0x00004B9F, 0x00004BD6, + 0x00004C0D, 0x00004C43, 0x00004C7A, 0x00004CB1, 0x00004CE8, 0x00004D1E, 0x00004D55, 0x00004D8C, + 0x00004DC3, 0x00004DFA, 0x00004E31, 0x00004E68, 0x00004E9F, 0x00004ED6, 0x00004F0D, 0x00004F44, + 0x00004F7B, 0x00004FB2, 0x00004FE9, 0x00005021, 0x00005058, 0x0000508F, 0x000050C6, 0x000050FE, + 0x00005135, 0x0000516C, 0x000051A4, 0x000051DB, 0x00005212, 0x0000524A, 0x00005281, 0x000052B9, + 0x000052F0, 0x00005328, 0x0000535F, 0x00005397, 0x000053CF, 0x00005406, 0x0000543E, 0x00005476, + 0x000054AE, 0x000054E5, 0x0000551D, 0x00005555, 0x0000558D, 0x000055C5, 0x000055FD, 0x00005635, + 0x0000566D, 0x000056A5, 0x000056DD, 0x00005715, 0x0000574D, 0x00005785, 0x000057BD, 0x000057F5, + 0x0000582D, 0x00005866, 0x0000589E, 0x000058D6, 0x0000590F, 0x00005947, 0x0000597F, 0x000059B8, + 0x000059F0, 0x00005A29, 0x00005A61, 0x00005A9A, 0x00005AD2, 0x00005B0B, 0x00005B44, 0x00005B7C, + 0x00005BB5, 0x00005BEE, 0x00005C27, 0x00005C5F, 0x00005C98, 0x00005CD1, 0x00005D0A, 0x00005D43, + 0x00005D7C, 0x00005DB5, 0x00005DEE, 0x00005E27, 0x00005E60, 0x00005E99, 0x00005ED2, 0x00005F0B, + 0x00005F45, 0x00005F7E, 0x00005FB7, 0x00005FF0, 0x0000602A, 0x00006063, 0x0000609C, 0x000060D6, + 0x0000610F, 0x00006149, 0x00006182, 0x000061BC, 0x000061F6, 0x0000622F, 0x00006269, 0x000062A3, + 0x000062DC, 0x00006316, 0x00006350, 0x0000638A, 0x000063C4, 0x000063FE, 0x00006438, 0x00006472, + 0x000064AC, 0x000064E6, 0x00006520, 0x0000655A, 0x00006594, 0x000065CE, 0x00006608, 0x00006643, + 0x0000667D, 0x000066B7, 0x000066F2, 0x0000672C, 0x00006767, 0x000067A1, 0x000067DC, 0x00006816, + 0x00006851, 0x0000688B, 0x000068C6, 0x00006901, 0x0000693C, 0x00006976, 0x000069B1, 0x000069EC, + 0x00006A27, 0x00006A62, 0x00006A9D, 0x00006AD8, 0x00006B13, 0x00006B4E, 0x00006B89, 0x00006BC4, + 0x00006BFF, 0x00006C3B, 0x00006C76, 0x00006CB1, 0x00006CEC, 0x00006D28, 0x00006D63, 0x00006D9F, + 0x00006DDA, 0x00006E16, 0x00006E51, 0x00006E8D, 0x00006EC9, 0x00006F04, 0x00006F40, 0x00006F7C, + 0x00006FB8, 0x00006FF4, 0x0000702F, 0x0000706B, 0x000070A7, 0x000070E3, 0x0000711F, 0x0000715C, + 0x00007198, 0x000071D4, 0x00007210, 0x0000724C, 0x00007289, 0x000072C5, 0x00007301, 0x0000733E, + 0x0000737A, 0x000073B7, 0x000073F3, 0x00007430, 0x0000746D, 0x000074A9, 0x000074E6, 0x00007523, + 0x00007560, 0x0000759C, 0x000075D9, 0x00007616, 0x00007653, 0x00007690, 0x000076CD, 0x0000770A, + 0x00007748, 0x00007785, 0x000077C2, 0x000077FF, 0x0000783D, 0x0000787A, 0x000078B8, 0x000078F5, + 0x00007932, 0x00007970, 0x000079AE, 0x000079EB, 0x00007A29, 0x00007A67, 0x00007AA4, 0x00007AE2, + 0x00007B20, 0x00007B5E, 0x00007B9C, 0x00007BDA, 0x00007C18, 0x00007C56, 0x00007C94, 0x00007CD3, + 0x00007D11, 0x00007D4F, 0x00007D8D, 0x00007DCC, 0x00007E0A, 0x00007E49, 0x00007E87, 0x00007EC6, + 0x00007F04, 0x00007F43, 0x00007F82, 0x00007FC1, 0x00007FFF, 0x0000803E, 0x0000807D, 0x000080BC, + 0x000080FB, 0x0000813A, 0x00008179, 0x000081B8, 0x000081F8, 0x00008237, 0x00008276, 0x000082B5, + 0x000082F5, 0x00008334, 0x00008374, 0x000083B3, 0x000083F3, 0x00008433, 0x00008472, 0x000084B2, + 0x000084F2, 0x00008532, 0x00008572, 0x000085B1, 0x000085F1, 0x00008632, 0x00008672, 0x000086B2, + 0x000086F2, 0x00008732, 0x00008773, 0x000087B3, 0x000087F3, 0x00008834, 0x00008874, 0x000088B5, + 0x000088F6, 0x00008936, 0x00008977, 0x000089B8, 0x000089F9, 0x00008A39, 0x00008A7A, 0x00008ABB, + 0x00008AFC, 0x00008B3E, 0x00008B7F, 0x00008BC0, 0x00008C01, 0x00008C43, 0x00008C84, 0x00008CC5, + 0x00008D07, 0x00008D48, 0x00008D8A, 0x00008DCC, 0x00008E0D, 0x00008E4F, 0x00008E91, 0x00008ED3, + 0x00008F15, 0x00008F57, 0x00008F99, 0x00008FDB, 0x0000901D, 0x0000905F, 0x000090A2, 0x000090E4, + 0x00009126, 0x00009169, 0x000091AB, 0x000091EE, 0x00009231, 0x00009273, 0x000092B6, 0x000092F9, + 0x0000933C, 0x0000937F, 0x000093C2, 0x00009405, 0x00009448, 0x0000948B, 0x000094CE, 0x00009511, + 0x00009555, 0x00009598, 0x000095DC, 0x0000961F, 0x00009663, 0x000096A6, 0x000096EA, 0x0000972E, + 0x00009772, 0x000097B5, 0x000097F9, 0x0000983D, 0x00009882, 0x000098C6, 0x0000990A, 0x0000994E, + 0x00009992, 0x000099D7, 0x00009A1B, 0x00009A60, 0x00009AA4, 0x00009AE9, 0x00009B2E, 0x00009B72, + 0x00009BB7, 0x00009BFC, 0x00009C41, 0x00009C86, 0x00009CCB, 0x00009D10, 0x00009D56, 0x00009D9B, + 0x00009DE0, 0x00009E26, 0x00009E6B, 0x00009EB1, 0x00009EF6, 0x00009F3C, 0x00009F82, 0x00009FC8, + 0x0000A00D, 0x0000A053, 0x0000A099, 0x0000A0E0, 0x0000A126, 0x0000A16C, 0x0000A1B2, 0x0000A1F9, + 0x0000A23F, 0x0000A285, 0x0000A2CC, 0x0000A313, 0x0000A359, 0x0000A3A0, 0x0000A3E7, 0x0000A42E, + 0x0000A475, 0x0000A4BC, 0x0000A503, 0x0000A54A, 0x0000A591, 0x0000A5D9, 0x0000A620, 0x0000A668, + 0x0000A6AF, 0x0000A6F7, 0x0000A73E, 0x0000A786, 0x0000A7CE, 0x0000A816, 0x0000A85E, 0x0000A8A6, + 0x0000A8EE, 0x0000A936, 0x0000A97E, 0x0000A9C7, 0x0000AA0F, 0x0000AA58, 0x0000AAA0, 0x0000AAE9, + 0x0000AB32, 0x0000AB7A, 0x0000ABC3, 0x0000AC0C, 0x0000AC55, 0x0000AC9E, 0x0000ACE7, 0x0000AD31, + 0x0000AD7A, 0x0000ADC3, 0x0000AE0D, 0x0000AE56, 0x0000AEA0, 0x0000AEEA, 0x0000AF33, 0x0000AF7D, + 0x0000AFC7, 0x0000B011, 0x0000B05B, 0x0000B0A5, 0x0000B0F0, 0x0000B13A, 0x0000B184, 0x0000B1CF, + 0x0000B219, 0x0000B264, 0x0000B2AF, 0x0000B2FA, 0x0000B344, 0x0000B38F, 0x0000B3DA, 0x0000B426, + 0x0000B471, 0x0000B4BC, 0x0000B507, 0x0000B553, 0x0000B59E, 0x0000B5EA, 0x0000B636, 0x0000B681, + 0x0000B6CD, 0x0000B719, 0x0000B765, 0x0000B7B1, 0x0000B7FE, 0x0000B84A, 0x0000B896, 0x0000B8E3, + 0x0000B92F, 0x0000B97C, 0x0000B9C8, 0x0000BA15, 0x0000BA62, 0x0000BAAF, 0x0000BAFC, 0x0000BB49, + 0x0000BB96, 0x0000BBE4, 0x0000BC31, 0x0000BC7F, 0x0000BCCC, 0x0000BD1A, 0x0000BD68, 0x0000BDB5, + 0x0000BE03, 0x0000BE51, 0x0000BE9F, 0x0000BEEE, 0x0000BF3C, 0x0000BF8A, 0x0000BFD9, 0x0000C027, + 0x0000C076, 0x0000C0C5, 0x0000C113, 0x0000C162, 0x0000C1B1, 0x0000C200, 0x0000C250, 0x0000C29F, + 0x0000C2EE, 0x0000C33E, 0x0000C38D, 0x0000C3DD, 0x0000C42D, 0x0000C47C, 0x0000C4CC, 0x0000C51C, + 0x0000C56C, 0x0000C5BD, 0x0000C60D, 0x0000C65D, 0x0000C6AE, 0x0000C6FE, 0x0000C74F, 0x0000C7A0, + 0x0000C7F1, 0x0000C842, 0x0000C893, 0x0000C8E4, 0x0000C935, 0x0000C987, 0x0000C9D8, 0x0000CA2A, + 0x0000CA7B, 0x0000CACD, 0x0000CB1F, 0x0000CB71, 0x0000CBC3, 0x0000CC15, 0x0000CC67, 0x0000CCBA, + 0x0000CD0C, 0x0000CD5F, 0x0000CDB1, 0x0000CE04, 0x0000CE57, 0x0000CEAA, 0x0000CEFD, 0x0000CF50, + 0x0000CFA4, 0x0000CFF7, 0x0000D04A, 0x0000D09E, 0x0000D0F2, 0x0000D146, 0x0000D199, 0x0000D1ED, + 0x0000D242, 0x0000D296, 0x0000D2EA, 0x0000D33F, 0x0000D393, 0x0000D3E8, 0x0000D43D, 0x0000D491, + 0x0000D4E6, 0x0000D53B, 0x0000D591, 0x0000D5E6, 0x0000D63B, 0x0000D691, 0x0000D6E7, 0x0000D73C, + 0x0000D792, 0x0000D7E8, 0x0000D83E, 0x0000D894, 0x0000D8EB, 0x0000D941, 0x0000D998, 0x0000D9EE, + 0x0000DA45, 0x0000DA9C, 0x0000DAF3, 0x0000DB4A, 0x0000DBA1, 0x0000DBF8, 0x0000DC50, 0x0000DCA7, + 0x0000DCFF, 0x0000DD57, 0x0000DDAF, 0x0000DE07, 0x0000DE5F, 0x0000DEB7, 0x0000DF10, 0x0000DF68, + 0x0000DFC1, 0x0000E019, 0x0000E072, 0x0000E0CB, 0x0000E124, 0x0000E17D, 0x0000E1D7, 0x0000E230, + 0x0000E28A, 0x0000E2E3, 0x0000E33D, 0x0000E397, 0x0000E3F1, 0x0000E44B, 0x0000E4A6, 0x0000E500, + 0x0000E55B, 0x0000E5B5, 0x0000E610, 0x0000E66B, 0x0000E6C6, 0x0000E721, 0x0000E77D, 0x0000E7D8, + 0x0000E834, 0x0000E88F, 0x0000E8EB, 0x0000E947, 0x0000E9A3, 0x0000E9FF, 0x0000EA5C, 0x0000EAB8, + 0x0000EB15, 0x0000EB71, 0x0000EBCE, 0x0000EC2B, 0x0000EC88, 0x0000ECE6, 0x0000ED43, 0x0000EDA1, + 0x0000EDFE, 0x0000EE5C, 0x0000EEBA, 0x0000EF18, 0x0000EF76, 0x0000EFD4, 0x0000F033, 0x0000F091, + 0x0000F0F0, 0x0000F14F, 0x0000F1AE, 0x0000F20D, 0x0000F26C, 0x0000F2CC, 0x0000F32B, 0x0000F38B, + 0x0000F3EB, 0x0000F44B, 0x0000F4AB, 0x0000F50B, 0x0000F56C, 0x0000F5CC, 0x0000F62D, 0x0000F68E, + 0x0000F6EF, 0x0000F750, 0x0000F7B1, 0x0000F812, 0x0000F874, 0x0000F8D6, 0x0000F937, 0x0000F999, + 0x0000F9FC, 0x0000FA5E, 0x0000FAC0, 0x0000FB23, 0x0000FB85, 0x0000FBE8, 0x0000FC4B, 0x0000FCAF, + 0x0000FD12, 0x0000FD75, 0x0000FDD9, 0x0000FE3D, 0x0000FEA1, 0x0000FF05, 0x0000FF69, 0x0000FFCD, + 0x00010032, 0x00010096, 0x000100FB, 0x00010160, 0x000101C5, 0x0001022B, 0x00010290, 0x000102F6, + 0x0001035C, 0x000103C2, 0x00010428, 0x0001048E, 0x000104F4, 0x0001055B, 0x000105C2, 0x00010629, + 0x00010690, 0x000106F7, 0x0001075E, 0x000107C6, 0x0001082D, 0x00010895, 0x000108FD, 0x00010966, + 0x000109CE, 0x00010A37, 0x00010A9F, 0x00010B08, 0x00010B71, 0x00010BDA, 0x00010C44, 0x00010CAD, + 0x00010D17, 0x00010D81, 0x00010DEB, 0x00010E55, 0x00010EC0, 0x00010F2A, 0x00010F95, 0x00011000, + 0x0001106B, 0x000110D6, 0x00011142, 0x000111AD, 0x00011219, 0x00011285, 0x000112F1, 0x0001135E, + 0x000113CA, 0x00011437, 0x000114A4, 0x00011511, 0x0001157E, 0x000115EB, 0x00011659, 0x000116C7, + 0x00011735, 0x000117A3, 0x00011811, 0x00011880, 0x000118EE, 0x0001195D, 0x000119CC, 0x00011A3C, + 0x00011AAB, 0x00011B1B, 0x00011B8B, 0x00011BFB, 0x00011C6B, 0x00011CDB, 0x00011D4C, 0x00011DBD, + 0x00011E2E, 0x00011E9F, 0x00011F10, 0x00011F82, 0x00011FF3, 0x00012065, 0x000120D8, 0x0001214A, + 0x000121BC, 0x0001222F, 0x000122A2, 0x00012315, 0x00012389, 0x000123FC, 0x00012470, 0x000124E4, + 0x00012558, 0x000125CD, 0x00012641, 0x000126B6, 0x0001272B, 0x000127A0, 0x00012815, 0x0001288B, + 0x00012901, 0x00012977, 0x000129ED, 0x00012A64, 0x00012ADA, 0x00012B51, 0x00012BC8, 0x00012C40, + 0x00012CB7, 0x00012D2F, 0x00012DA7, 0x00012E1F, 0x00012E97, 0x00012F10, 0x00012F89, 0x00013002, + 0x0001307B, 0x000130F4, 0x0001316E, 0x000131E8, 0x00013262, 0x000132DD, 0x00013357, 0x000133D2, + 0x0001344D, 0x000134C8, 0x00013544, 0x000135C0, 0x0001363C, 0x000136B8, 0x00013734, 0x000137B1, + 0x0001382E, 0x000138AB, 0x00013928, 0x000139A6, 0x00013A24, 0x00013AA2, 0x00013B20, 0x00013B9F, + 0x00013C1D, 0x00013C9D, 0x00013D1C, 0x00013D9B, 0x00013E1B, 0x00013E9B, 0x00013F1B, 0x00013F9C, + 0x0001401D, 0x0001409E, 0x0001411F, 0x000141A0, 0x00014222, 0x000142A4, 0x00014326, 0x000143A9, + 0x0001442B, 0x000144AE, 0x00014532, 0x000145B5, 0x00014639, 0x000146BD, 0x00014741, 0x000147C6, + 0x0001484B, 0x000148D0, 0x00014955, 0x000149DB, 0x00014A60, 0x00014AE6, 0x00014B6D, 0x00014BF4, + 0x00014C7A, 0x00014D02, 0x00014D89, 0x00014E11, 0x00014E99, 0x00014F21, 0x00014FAA, 0x00015032, + 0x000150BC, 0x00015145, 0x000151CF, 0x00015258, 0x000152E3, 0x0001536D, 0x000153F8, 0x00015483, + 0x0001550E, 0x0001559A, 0x00015626, 0x000156B2, 0x0001573F, 0x000157CB, 0x00015858, 0x000158E6, + 0x00015973, 0x00015A01, 0x00015A90, 0x00015B1E, 0x00015BAD, 0x00015C3C, 0x00015CCC, 0x00015D5B, + 0x00015DEB, 0x00015E7C, 0x00015F0C, 0x00015F9D, 0x0001602E, 0x000160C0, 0x00016152, 0x000161E4, + 0x00016276, 0x00016309, 0x0001639C, 0x00016430, 0x000164C4, 0x00016558, 0x000165EC, 0x00016681, + 0x00016716, 0x000167AB, 0x00016841, 0x000168D7, 0x0001696D, 0x00016A03, 0x00016A9A, 0x00016B32, + 0x00016BC9, 0x00016C61, 0x00016CFA, 0x00016D92, 0x00016E2B, 0x00016EC4, 0x00016F5E, 0x00016FF8, + 0x00017092, 0x0001712D, 0x000171C8, 0x00017263, 0x000172FF, 0x0001739B, 0x00017437, 0x000174D4, + 0x00017571, 0x0001760E, 0x000176AC, 0x0001774A, 0x000177E9, 0x00017887, 0x00017927, 0x000179C6, + 0x00017A66, 0x00017B06, 0x00017BA7, 0x00017C48, 0x00017CE9, 0x00017D8B, 0x00017E2D, 0x00017ED0, + 0x00017F73, 0x00018016, 0x000180B9, 0x0001815D, 0x00018202, 0x000182A6, 0x0001834C, 0x000183F1, + 0x00018497, 0x0001853D, 0x000185E4, 0x0001868B, 0x00018732, 0x000187DA, 0x00018882, 0x0001892B, + 0x000189D4, 0x00018A7E, 0x00018B27, 0x00018BD2, 0x00018C7C, 0x00018D27, 0x00018DD3, 0x00018E7F, + 0x00018F2B, 0x00018FD8, 0x00019085, 0x00019132, 0x000191E0, 0x0001928E, 0x0001933D, 0x000193EC, + 0x0001949C, 0x0001954C, 0x000195FD, 0x000196AD, 0x0001975F, 0x00019811, 0x000198C3, 0x00019975, + 0x00019A28, 0x00019ADC, 0x00019B90, 0x00019C44, 0x00019CF9, 0x00019DAE, 0x00019E64, 0x00019F1A, + 0x00019FD1, 0x0001A088, 0x0001A140, 0x0001A1F8, 0x0001A2B0, 0x0001A369, 0x0001A423, 0x0001A4DD, + 0x0001A597, 0x0001A652, 0x0001A70D, 0x0001A7C9, 0x0001A885, 0x0001A942, 0x0001A9FF, 0x0001AABD, + 0x0001AB7B, 0x0001AC3A, 0x0001ACF9, 0x0001ADB8, 0x0001AE78, 0x0001AF39, 0x0001AFFA, 0x0001B0BC, + 0x0001B17E, 0x0001B241, 0x0001B304, 0x0001B3C8, 0x0001B48C, 0x0001B550, 0x0001B616, 0x0001B6DB, + 0x0001B7A2, 0x0001B868, 0x0001B930, 0x0001B9F7, 0x0001BAC0, 0x0001BB89, 0x0001BC52, 0x0001BD1C, + 0x0001BDE7, 0x0001BEB2, 0x0001BF7D, 0x0001C049, 0x0001C116, 0x0001C1E3, 0x0001C2B1, 0x0001C37F, + 0x0001C44E, 0x0001C51E, 0x0001C5EE, 0x0001C6BE, 0x0001C78F, 0x0001C861, 0x0001C934, 0x0001CA06, + 0x0001CADA, 0x0001CBAE, 0x0001CC83, 0x0001CD58, 0x0001CE2E, 0x0001CF04, 0x0001CFDB, 0x0001D0B3, + 0x0001D18B, 0x0001D264, 0x0001D33D, 0x0001D417, 0x0001D4F2, 0x0001D5CD, 0x0001D6A9, 0x0001D785, + 0x0001D862, 0x0001D940, 0x0001DA1E, 0x0001DAFD, 0x0001DBDD, 0x0001DCBD, 0x0001DD9E, 0x0001DE80, + 0x0001DF62, 0x0001E045, 0x0001E128, 0x0001E20C, 0x0001E2F1, 0x0001E3D7, 0x0001E4BD, 0x0001E5A4, + 0x0001E68B, 0x0001E773, 0x0001E85C, 0x0001E946, 0x0001EA30, 0x0001EB1B, 0x0001EC07, 0x0001ECF3, + 0x0001EDE0, 0x0001EECD, 0x0001EFBC, 0x0001F0AB, 0x0001F19B, 0x0001F28B, 0x0001F37D, 0x0001F46F, + 0x0001F561, 0x0001F655, 0x0001F749, 0x0001F83E, 0x0001F934, 0x0001FA2A, 0x0001FB21, 0x0001FC19, + 0x0001FD12, 0x0001FE0B, 0x0001FF05, 0x00020000, 0x000200FC, 0x000201F8, 0x000202F6, 0x000203F4, + 0x000204F3, 0x000205F2, 0x000206F3, 0x000207F4, 0x000208F6, 0x000209F9, 0x00020AFC, 0x00020C01, + 0x00020D06, 0x00020E0C, 0x00020F13, 0x0002101B, 0x00021123, 0x0002122D, 0x00021337, 0x00021442, + 0x0002154E, 0x0002165B, 0x00021769, 0x00021877, 0x00021987, 0x00021A97, 0x00021BA8, 0x00021CBA, + 0x00021DCD, 0x00021EE1, 0x00021FF6, 0x0002210C, 0x00022222, 0x0002233A, 0x00022452, 0x0002256B, + 0x00022686, 0x000227A1, 0x000228BD, 0x000229DA, 0x00022AF8, 0x00022C17, 0x00022D37, 0x00022E58, + 0x00022F7A, 0x0002309D, 0x000231C0, 0x000232E5, 0x0002340B, 0x00023532, 0x0002365A, 0x00023782, + 0x000238AC, 0x000239D7, 0x00023B03, 0x00023C30, 0x00023D5E, 0x00023E8C, 0x00023FBC, 0x000240ED, + 0x00024220, 0x00024353, 0x00024487, 0x000245BC, 0x000246F3, 0x0002482A, 0x00024963, 0x00024A9C, + 0x00024BD7, 0x00024D13, 0x00024E50, 0x00024F8E, 0x000250CD, 0x0002520D, 0x0002534F, 0x00025492, + 0x000255D5, 0x0002571A, 0x00025861, 0x000259A8, 0x00025AF0, 0x00025C3A, 0x00025D85, 0x00025ED1, + 0x0002601E, 0x0002616D, 0x000262BD, 0x0002640E, 0x00026560, 0x000266B3, 0x00026808, 0x0002695E, + 0x00026AB5, 0x00026C0E, 0x00026D67, 0x00026EC3, 0x0002701F, 0x0002717D, 0x000272DC, 0x0002743C, + 0x0002759E, 0x00027701, 0x00027865, 0x000279CB, 0x00027B32, 0x00027C9A, 0x00027E04, 0x00027F6F, + 0x000280DC, 0x0002824A, 0x000283B9, 0x0002852A, 0x0002869C, 0x00028810, 0x00028985, 0x00028AFB, + 0x00028C73, 0x00028DED, 0x00028F68, 0x000290E4, 0x00029262, 0x000293E2, 0x00029563, 0x000296E5, + 0x00029869, 0x000299EF, 0x00029B76, 0x00029CFF, 0x00029E89, 0x0002A015, 0x0002A1A3, 0x0002A332, + 0x0002A4C3, 0x0002A655, 0x0002A7E9, 0x0002A97F, 0x0002AB16, 0x0002ACAF, 0x0002AE4A, 0x0002AFE6, + 0x0002B184, 0x0002B324, 0x0002B4C5, 0x0002B669, 0x0002B80E, 0x0002B9B4, 0x0002BB5D, 0x0002BD07, + 0x0002BEB3, 0x0002C061, 0x0002C211, 0x0002C3C2, 0x0002C576, 0x0002C72B, 0x0002C8E2, 0x0002CA9B, + 0x0002CC56, 0x0002CE13, 0x0002CFD2, 0x0002D192, 0x0002D355, 0x0002D519, 0x0002D6E0, 0x0002D8A8, + 0x0002DA73, 0x0002DC3F, 0x0002DE0E, 0x0002DFDE, 0x0002E1B1, 0x0002E386, 0x0002E55D, 0x0002E735, + 0x0002E910, 0x0002EAED, 0x0002ECCD, 0x0002EEAE, 0x0002F092, 0x0002F277, 0x0002F45F, 0x0002F64A, + 0x0002F836, 0x0002FA25, 0x0002FC16, 0x0002FE09, 0x0002FFFE, 0x000301F6, 0x000303F0, 0x000305ED, + 0x000307EC, 0x000309ED, 0x00030BF0, 0x00030DF6, 0x00030FFF, 0x0003120A, 0x00031417, 0x00031627, + 0x00031839, 0x00031A4E, 0x00031C66, 0x00031E80, 0x0003209C, 0x000322BC, 0x000324DD, 0x00032702, + 0x00032929, 0x00032B53, 0x00032D7F, 0x00032FAF, 0x000331E0, 0x00033415, 0x0003364D, 0x00033887, + 0x00033AC4, 0x00033D04, 0x00033F47, 0x0003418D, 0x000343D5, 0x00034621, 0x0003486F, 0x00034AC1, + 0x00034D15, 0x00034F6D, 0x000351C8, 0x00035425, 0x00035686, 0x000358EA, 0x00035B51, 0x00035DBB, + 0x00036029, 0x00036299, 0x0003650D, 0x00036784, 0x000369FF, 0x00036C7D, 0x00036EFE, 0x00037182, + 0x0003740A, 0x00037696, 0x00037925, 0x00037BB7, 0x00037E4D, 0x000380E6, 0x00038383, 0x00038624, + 0x000388C8, 0x00038B70, 0x00038E1C, 0x000390CC, 0x0003937F, 0x00039636, 0x000398F1, 0x00039BAF, + 0x00039E72, 0x0003A139, 0x0003A403, 0x0003A6D2, 0x0003A9A4, 0x0003AC7B, 0x0003AF55, 0x0003B234, + 0x0003B517, 0x0003B7FF, 0x0003BAEA, 0x0003BDDA, 0x0003C0CE, 0x0003C3C7, 0x0003C6C4, 0x0003C9C5, + 0x0003CCCB, 0x0003CFD5, 0x0003D2E4, 0x0003D5F8, 0x0003D910, 0x0003DC2D, 0x0003DF4E, 0x0003E275, + 0x0003E5A0, 0x0003E8D0, 0x0003EC05, 0x0003EF3F, 0x0003F27E, 0x0003F5C2, 0x0003F90B, 0x0003FC59, + 0x0003FFAC, 0x00040305, 0x00040663, 0x000409C6, 0x00040D2F, 0x0004109D, 0x00041410, 0x00041789, + 0x00041B08, 0x00041E8D, 0x00042217, 0x000425A6, 0x0004293C, 0x00042CD8, 0x00043079, 0x00043421, + 0x000437CE, 0x00043B82, 0x00043F3C, 0x000442FC, 0x000446C2, 0x00044A8F, 0x00044E62, 0x0004523B, + 0x0004561C, 0x00045A02, 0x00045DF0, 0x000461E4, 0x000465DF, 0x000469E1, 0x00046DEA, 0x000471FA, + 0x00047611, 0x00047A2F, 0x00047E55, 0x00048282, 0x000486B6, 0x00048AF2, 0x00048F35, 0x00049380, + 0x000497D3, 0x00049C2E, 0x0004A090, 0x0004A4FB, 0x0004A96D, 0x0004ADE8, 0x0004B26B, 0x0004B6F7, + 0x0004BB8A, 0x0004C027, 0x0004C4CC, 0x0004C979, 0x0004CE30, 0x0004D2EF, 0x0004D7B8, 0x0004DC89, + 0x0004E164, 0x0004E649, 0x0004EB36, 0x0004F02D, 0x0004F52E, 0x0004FA39, 0x0004FF4E, 0x0005046C, + 0x00050995, 0x00050EC8, 0x00051405, 0x0005194D, 0x00051E9F, 0x000523FC, 0x00052964, 0x00052ED7, + 0x00053456, 0x000539DF, 0x00053F74, 0x00054514, 0x00054AC0, 0x00055078, 0x0005563C, 0x00055C0C, + 0x000561E8, 0x000567D1, 0x00056DC7, 0x000573C9, 0x000579D8, 0x00057FF4, 0x0005861D, 0x00058C54, + 0x00059298, 0x000598EA, 0x00059F4B, 0x0005A5B9, 0x0005AC35, 0x0005B2C0, 0x0005B95A, 0x0005C003, + 0x0005C6BB, 0x0005CD82, 0x0005D458, 0x0005DB3F, 0x0005E235, 0x0005E93B, 0x0005F052, 0x0005F77A, + 0x0005FEB2, 0x000605FB, 0x00060D56, 0x000614C2, 0x00061C40, 0x000623D0, 0x00062B72, 0x00063327, + 0x00063AEF, 0x000642CA, 0x00064AB8, 0x000652BB, 0x00065AD1, 0x000662FB, 0x00066B3A, 0x0006738E, + 0x00067BF7, 0x00068475, 0x00068D09, 0x000695B4, 0x00069E75, 0x0006A74D, 0x0006B03C, 0x0006B943, + 0x0006C262, 0x0006CB99, 0x0006D4E8, 0x0006DE51, 0x0006E7D4, 0x0006F170, 0x0006FB27, 0x000704F8, + 0x00070EE5, 0x000718ED, 0x00072312, 0x00072D53, 0x000737B1, 0x0007422C, 0x00074CC6, 0x0007577E, + 0x00076255, 0x00076D4C, 0x00077863, 0x0007839B, 0x00078EF4, 0x00079A6F, 0x0007A60D, 0x0007B1CD, + 0x0007BDB1, 0x0007C9BA, 0x0007D5E8, 0x0007E23B, 0x0007EEB5, 0x0007FB56, 0x0008081E, 0x00081510, + 0x0008222A, 0x00082F6F, 0x00083CDE, 0x00084A7A, 0x00085841, 0x00086637, 0x0008745A, 0x000882AD, + 0x00089130, 0x00089FE5, 0x0008AECB, 0x0008BDE5, 0x0008CD32, 0x0008DCB5, 0x0008EC6F, 0x0008FC60, + 0x00090C89, 0x00091CED, 0x00092D8B, 0x00093E66, 0x00094F7E, 0x000960D5, 0x0009726D, 0x00098446, + 0x00099663, 0x0009A8C4, 0x0009BB6B, 0x0009CE5B, 0x0009E194, 0x0009F518, 0x000A08E8, 0x000A1D08, + 0x000A3178, 0x000A463A, 0x000A5B51, 0x000A70BF, 0x000A8685, 0x000A9CA6, 0x000AB323, 0x000ACA00, + 0x000AE13F, 0x000AF8E2, 0x000B10EB, 0x000B295E, 0x000B423D, 0x000B5B8B, 0x000B754A, 0x000B8F7F, + 0x000BAA2C, 0x000BC553, 0x000BE0FA, 0x000BFD23, 0x000C19D1, 0x000C3709, 0x000C54CF, 0x000C7326, + 0x000C9213, 0x000CB19A, 0x000CD1BF, 0x000CF288, 0x000D13F9, 0x000D3619, 0x000D58EA, 0x000D7C75, + 0x000DA0BD, 0x000DC5CA, 0x000DEBA1, 0x000E124A, 0x000E39CA, 0x000E6229, 0x000E8B6F, 0x000EB5A3, + 0x000EE0CE, 0x000F0CF9, 0x000F3A2B, 0x000F686E, 0x000F97CD, 0x000FC852, 0x000FFA06, 0x00102CF7, + 0x0010612F, 0x001096BC, 0x0010CDA9, 0x00110606, 0x00113FE1, 0x00117B49, 0x0011B84E, 0x0011F701, + 0x00123776, 0x001279BD, 0x0012BDED, 0x0013041A, 0x00134C5A, 0x001396C7, 0x0013E378, 0x0014328A, + 0x00148419, 0x0014D844, 0x00152F2A, 0x001588F0, 0x0015E5B9, 0x001645AE, 0x0016A8F9, 0x00170FC7, + 0x00177A48, 0x0017E8B2, 0x00185B3C, 0x0018D222, 0x00194DA6, 0x0019CE0D, 0x001A53A4, 0x001ADEBC, + 0x001B6FAF, 0x001C06D6, 0x001CA4A9, 0x001D4992, 0x001DF610, 0x001EAAAB, 0x001F67F9, 0x00202E9F, + 0x0020FF54, 0x0021DADF, 0x0022C21F, 0x0023B60A, 0x0024B7B2, 0x0025C848, 0x0026E924, 0x00281BC5, + 0x002961DE, 0x002ABD57, 0x002C305E, 0x002DBD6D, 0x002F675B, 0x0031316E, 0x00331F6D, 0x003535BD, + 0x00377986, 0x0039F0D6, 0x003CA2DF, 0x003F9839, 0x0042DB3E, 0x00467887, 0x004A7F8E, 0x004F038B, + 0x00541CB0, 0x0059E9D7, 0x00609302, 0x00684CFF, 0x00715EF8, 0x007C2B37, 0x00893D65, 0x009962E7, + 0x00ADD6AB, 0x00C8956F, 0x00ED0DEF, 0x0121BC04, 0x01748484, 0x02098758, 0x03653A78, 0x0A2FE260, +}; + + +// The +1 size is to handle the case when x==y without additional checking. +const angle_t tantoangle[SLOPERANGE+1] = { + 0x00000000, 0x000517CC, 0x000A2F98, 0x000F4763, 0x00145F2E, 0x001976F9, 0x001E8EC2, 0x0023A68B, + 0x0028BE53, 0x002DD619, 0x0032EDDE, 0x003805A1, 0x003D1D63, 0x00423523, 0x00474CE0, 0x004C649C, + 0x00517C55, 0x0056940B, 0x005BABBF, 0x0060C370, 0x0065DB1E, 0x006AF2C8, 0x00700A70, 0x00752213, + 0x007A39B4, 0x007F5150, 0x008468E9, 0x0089807D, 0x008E980D, 0x0093AF98, 0x0098C71F, 0x009DDEA1, + 0x00A2F61E, 0x00A80D96, 0x00AD2509, 0x00B23C77, 0x00B753DE, 0x00BC6B41, 0x00C1829D, 0x00C699F3, + 0x00CBB143, 0x00D0C88D, 0x00D5DFD0, 0x00DAF70C, 0x00E00E42, 0x00E52570, 0x00EA3C98, 0x00EF53B8, + 0x00F46AD1, 0x00F981E2, 0x00FE98EB, 0x0103AFEC, 0x0108C6E6, 0x010DDDD6, 0x0112F4BE, 0x01180B9E, + 0x011D2276, 0x01223944, 0x0127500A, 0x012C66C6, 0x01317D78, 0x01369420, 0x013BAAC0, 0x0140C156, + 0x0145D7E2, 0x014AEE62, 0x015004DA, 0x01551B46, 0x015A31A8, 0x015F4800, 0x01645E4C, 0x0169748C, + 0x016E8AC2, 0x0173A0EC, 0x0178B70C, 0x017DCD1E, 0x0182E326, 0x0187F920, 0x018D0F10, 0x019224F2, + 0x01973AC8, 0x019C5090, 0x01A1664E, 0x01A67BFC, 0x01AB919E, 0x01B0A734, 0x01B5BCBC, 0x01BAD234, + 0x01BFE7A0, 0x01C4FCFE, 0x01CA124E, 0x01CF2790, 0x01D43CC4, 0x01D951E8, 0x01DE66FE, 0x01E37C04, + 0x01E890FC, 0x01EDA5E6, 0x01F2BABE, 0x01F7CF88, 0x01FCE442, 0x0201F8EC, 0x02070D88, 0x020C2210, + 0x0211368C, 0x02164AF4, 0x021B5F4C, 0x02207394, 0x022587CC, 0x022A9BF4, 0x022FB008, 0x0234C40C, + 0x0239D7FC, 0x023EEBDC, 0x0243FFA8, 0x02491364, 0x024E2710, 0x02533AA8, 0x02584E2C, 0x025D61A0, + 0x02627500, 0x0267884C, 0x026C9B84, 0x0271AEAC, 0x0276C1BC, 0x027BD4BC, 0x0280E7A8, 0x0285FA80, + 0x028B0D44, 0x02901FF4, 0x0295328C, 0x029A4514, 0x029F5784, 0x02A469E4, 0x02A97C28, 0x02AE8E5C, + 0x02B3A078, 0x02B8B280, 0x02BDC474, 0x02C2D650, 0x02C7E818, 0x02CCF9C8, 0x02D20B64, 0x02D71CE8, + 0x02DC2E54, 0x02E13FAC, 0x02E650EC, 0x02EB6214, 0x02F07324, 0x02F58420, 0x02FA9504, 0x02FFA5CC, + 0x0304B680, 0x0309C71C, 0x030ED7A0, 0x0313E80C, 0x0318F860, 0x031E0898, 0x032318BC, 0x032828C4, + 0x032D38B4, 0x0332488C, 0x03375848, 0x033C67EC, 0x03417774, 0x034686E8, 0x034B963C, 0x0350A578, + 0x0355B49C, 0x035AC3A4, 0x035FD290, 0x0364E164, 0x0369F01C, 0x036EFEB8, 0x03740D3C, 0x03791BA0, + 0x037E29EC, 0x0383381C, 0x03884630, 0x038D5428, 0x03926200, 0x03976FC0, 0x039C7D64, 0x03A18AEC, + 0x03A69854, 0x03ABA5A0, 0x03B0B2D0, 0x03B5BFE4, 0x03BACCDC, 0x03BFD9B4, 0x03C4E66C, 0x03C9F30C, + 0x03CEFF88, 0x03D40BEC, 0x03D9182C, 0x03DE2454, 0x03E33058, 0x03E83C40, 0x03ED4808, 0x03F253B4, + 0x03F75F3C, 0x03FC6AA8, 0x040175F8, 0x04068120, 0x040B8C30, 0x04109718, 0x0415A1E8, 0x041AAC98, + 0x041FB720, 0x0424C190, 0x0429CBD8, 0x042ED600, 0x0433E010, 0x0438E9F8, 0x043DF3C0, 0x0442FD68, + 0x044806E8, 0x044D1050, 0x04521990, 0x045722B0, 0x045C2BB0, 0x04613488, 0x04663D40, 0x046B45D8, + 0x04704E48, 0x04755698, 0x047A5EC8, 0x047F66D8, 0x04846EC0, 0x04897680, 0x048E7E20, 0x049385A0, + 0x04988CF8, 0x049D9430, 0x04A29B40, 0x04A7A228, 0x04ACA8F0, 0x04B1AF98, 0x04B6B618, 0x04BBBC70, + 0x04C0C2A8, 0x04C5C8B8, 0x04CACEA0, 0x04CFD468, 0x04D4DA08, 0x04D9DF80, 0x04DEE4D0, 0x04E3EA00, + 0x04E8EF08, 0x04EDF3E8, 0x04F2F8A0, 0x04F7FD38, 0x04FD01A8, 0x050205E8, 0x05070A08, 0x050C0E00, + 0x051111D8, 0x05161580, 0x051B1900, 0x05201C58, 0x05251F88, 0x052A2298, 0x052F2578, 0x05342830, + 0x05392AC0, 0x053E2D28, 0x05432F68, 0x05483180, 0x054D3370, 0x05523530, 0x055736C8, 0x055C3840, + 0x05613980, 0x05663AA0, 0x056B3B98, 0x05703C60, 0x05753D00, 0x057A3D70, 0x057F3DC0, 0x05843DE0, + 0x05893DD0, 0x058E3DA0, 0x05933D40, 0x05983CB0, 0x059D3BF8, 0x05A23B18, 0x05A73A08, 0x05AC38D0, + 0x05B13768, 0x05B635D8, 0x05BB3418, 0x05C03228, 0x05C53010, 0x05CA2DD0, 0x05CF2B60, 0x05D428C0, + 0x05D925F8, 0x05DE2300, 0x05E31FD8, 0x05E81C88, 0x05ED1908, 0x05F21558, 0x05F71178, 0x05FC0D70, + 0x06010938, 0x060604D0, 0x060B0038, 0x060FFB78, 0x0614F688, 0x0619F160, 0x061EEC10, 0x0623E690, + 0x0628E0E8, 0x062DDB08, 0x0632D4F8, 0x0637CEB8, 0x063CC850, 0x0641C1B0, 0x0646BAE0, 0x064BB3E8, + 0x0650ACB8, 0x0655A558, 0x065A9DC8, 0x065F9608, 0x06648E18, 0x066985F8, 0x066E7DA0, 0x06737520, + 0x06786C68, 0x067D6380, 0x06825A68, 0x06875118, 0x068C4798, 0x06913DF0, 0x06963408, 0x069B29F8, + 0x06A01FB0, 0x06A51538, 0x06AA0A88, 0x06AEFFA8, 0x06B3F498, 0x06B8E950, 0x06BDDDD8, 0x06C2D228, + 0x06C7C648, 0x06CCBA38, 0x06D1ADF0, 0x06D6A170, 0x06DB94C0, 0x06E087D8, 0x06E57AC0, 0x06EA6D78, + 0x06EF5FF0, 0x06F45238, 0x06F94450, 0x06FE3630, 0x070327D8, 0x07081948, 0x070D0A88, 0x0711FB90, + 0x0716EC60, 0x071BDD00, 0x0720CD68, 0x0725BD98, 0x072AAD90, 0x072F9D58, 0x07348CE8, 0x07397C38, + 0x073E6B58, 0x07435A40, 0x074848F8, 0x074D3770, 0x075225B0, 0x075713C0, 0x075C0190, 0x0760EF30, + 0x0765DC98, 0x076AC9C0, 0x076FB6B8, 0x0774A370, 0x07798FF8, 0x077E7C40, 0x07836850, 0x07885430, + 0x078D3FD0, 0x07922B38, 0x07971668, 0x079C0158, 0x07A0EC18, 0x07A5D698, 0x07AAC0E0, 0x07AFAAF0, + 0x07B494C8, 0x07B97E60, 0x07BE67C0, 0x07C350E8, 0x07C839D8, 0x07CD2288, 0x07D20B00, 0x07D6F338, + 0x07DBDB38, 0x07E0C300, 0x07E5AA88, 0x07EA91D8, 0x07EF78F0, 0x07F45FC8, 0x07F94660, 0x07FE2CC8, + 0x080312F0, 0x0807F8D0, 0x080CDE80, 0x0811C3F0, 0x0816A920, 0x081B8E20, 0x082072D0, 0x08255750, + 0x082A3B90, 0x082F1FA0, 0x08340360, 0x0838E6F0, 0x083DCA30, 0x0842AD40, 0x08479010, 0x084C72A0, + 0x08515500, 0x08563710, 0x085B18F0, 0x085FFA80, 0x0864DBE0, 0x0869BD00, 0x086E9DE0, 0x08737E80, + 0x08785EE0, 0x087D3F00, 0x08821EE0, 0x0886FE90, 0x088BDDF0, 0x0890BD10, 0x08959BF0, 0x089A7AA0, + 0x089F5900, 0x08A43720, 0x08A91510, 0x08ADF2B0, 0x08B2D010, 0x08B7AD40, 0x08BC8A20, 0x08C166C0, + 0x08C64320, 0x08CB1F40, 0x08CFFB20, 0x08D4D6C0, 0x08D9B220, 0x08DE8D40, 0x08E36820, 0x08E842B0, + 0x08ED1D10, 0x08F1F720, 0x08F6D0F0, 0x08FBAA80, 0x090083D0, 0x09055CE0, 0x090A35B0, 0x090F0E30, + 0x0913E680, 0x0918BE80, 0x091D9640, 0x09226DC0, 0x092744F0, 0x092C1BF0, 0x0930F2A0, 0x0935C910, + 0x093A9F30, 0x093F7520, 0x09444AC0, 0x09492020, 0x094DF540, 0x0952CA10, 0x09579EB0, 0x095C7300, + 0x09614700, 0x09661AD0, 0x096AEE50, 0x096FC180, 0x09749480, 0x09796730, 0x097E39A0, 0x09830BC0, + 0x0987DDA0, 0x098CAF40, 0x099180A0, 0x099651B0, 0x099B2270, 0x099FF300, 0x09A4C340, 0x09A99330, + 0x09AE62E0, 0x09B33250, 0x09B80180, 0x09BCD050, 0x09C19EF0, 0x09C66D40, 0x09CB3B50, 0x09D00910, + 0x09D4D690, 0x09D9A3C0, 0x09DE70B0, 0x09E33D50, 0x09E809B0, 0x09ECD5C0, 0x09F1A190, 0x09F66D20, + 0x09FB3860, 0x0A000350, 0x0A04CE00, 0x0A099860, 0x0A0E6280, 0x0A132C50, 0x0A17F5E0, 0x0A1CBF20, + 0x0A218820, 0x0A2650D0, 0x0A2B1940, 0x0A2FE150, 0x0A34A930, 0x0A3970C0, 0x0A3E3800, 0x0A42FEF0, + 0x0A47C5A0, 0x0A4C8C00, 0x0A515220, 0x0A5617F0, 0x0A5ADD80, 0x0A5FA2B0, 0x0A6467A0, 0x0A692C50, + 0x0A6DF0B0, 0x0A72B4C0, 0x0A777880, 0x0A7C3C00, 0x0A80FF30, 0x0A85C220, 0x0A8A84B0, 0x0A8F4700, + 0x0A940900, 0x0A98CAC0, 0x0A9D8C30, 0x0AA24D50, 0x0AA70E20, 0x0AABCEB0, 0x0AB08EF0, 0x0AB54EE0, + 0x0ABA0E80, 0x0ABECDE0, 0x0AC38CE0, 0x0AC84BA0, 0x0ACD0A10, 0x0AD1C840, 0x0AD68610, 0x0ADB43A0, + 0x0AE000E0, 0x0AE4BDD0, 0x0AE97A80, 0x0AEE36D0, 0x0AF2F2E0, 0x0AF7AE90, 0x0AFC6A00, 0x0B012520, + 0x0B05E000, 0x0B0A9A80, 0x0B0F54B0, 0x0B140EA0, 0x0B18C840, 0x0B1D8180, 0x0B223A80, 0x0B26F330, + 0x0B2BAB90, 0x0B3063A0, 0x0B351B70, 0x0B39D2E0, 0x0B3E8A00, 0x0B4340E0, 0x0B47F760, 0x0B4CADA0, + 0x0B516380, 0x0B561920, 0x0B5ACE60, 0x0B5F8360, 0x0B643800, 0x0B68EC60, 0x0B6DA070, 0x0B725420, + 0x0B770790, 0x0B7BBAB0, 0x0B806D70, 0x0B851FF0, 0x0B89D210, 0x0B8E83F0, 0x0B933570, 0x0B97E6A0, + 0x0B9C9790, 0x0BA14820, 0x0BA5F860, 0x0BAAA850, 0x0BAF57F0, 0x0BB40740, 0x0BB8B640, 0x0BBD64F0, + 0x0BC21350, 0x0BC6C150, 0x0BCB6F10, 0x0BD01C70, 0x0BD4C980, 0x0BD97640, 0x0BDE22B0, 0x0BE2CED0, + 0x0BE77AA0, 0x0BEC2610, 0x0BF0D140, 0x0BF57C10, 0x0BFA2690, 0x0BFED0C0, 0x0C037A90, 0x0C082420, + 0x0C0CCD50, 0x0C117630, 0x0C161EC0, 0x0C1AC6F0, 0x0C1F6EE0, 0x0C241670, 0x0C28BDB0, 0x0C2D64A0, + 0x0C320B30, 0x0C36B180, 0x0C3B5770, 0x0C3FFD10, 0x0C44A250, 0x0C494740, 0x0C4DEBE0, 0x0C529030, + 0x0C573430, 0x0C5BD7D0, 0x0C607B20, 0x0C651E10, 0x0C69C0C0, 0x0C6E6310, 0x0C730500, 0x0C77A6B0, + 0x0C7C4800, 0x0C80E8F0, 0x0C8589A0, 0x0C8A29F0, 0x0C8EC9E0, 0x0C936990, 0x0C9808E0, 0x0C9CA7E0, + 0x0CA14680, 0x0CA5E4D0, 0x0CAA82C0, 0x0CAF2060, 0x0CB3BDB0, 0x0CB85AB0, 0x0CBCF750, 0x0CC19390, + 0x0CC62F80, 0x0CCACB20, 0x0CCF6670, 0x0CD40160, 0x0CD89BF0, 0x0CDD3630, 0x0CE1D020, 0x0CE669B0, + 0x0CEB02F0, 0x0CEF9BD0, 0x0CF43460, 0x0CF8CCA0, 0x0CFD6480, 0x0D01FC00, 0x0D069330, 0x0D0B2A10, + 0x0D0FC090, 0x0D1456B0, 0x0D18EC80, 0x0D1D8200, 0x0D221720, 0x0D26ABF0, 0x0D2B4060, 0x0D2FD470, + 0x0D346830, 0x0D38FBA0, 0x0D3D8EB0, 0x0D422160, 0x0D46B3C0, 0x0D4B45D0, 0x0D4FD770, 0x0D5468D0, + 0x0D58F9C0, 0x0D5D8A70, 0x0D621AB0, 0x0D66AAA0, 0x0D6B3A40, 0x0D6FC970, 0x0D745860, 0x0D78E6E0, + 0x0D7D7510, 0x0D8202F0, 0x0D869070, 0x0D8B1D90, 0x0D8FAA50, 0x0D9436C0, 0x0D98C2E0, 0x0D9D4EA0, + 0x0DA1DA00, 0x0DA66500, 0x0DAAEFB0, 0x0DAF7A00, 0x0DB40400, 0x0DB88DA0, 0x0DBD16E0, 0x0DC19FC0, + 0x0DC62850, 0x0DCAB090, 0x0DCF3860, 0x0DD3BFE0, 0x0DD84700, 0x0DDCCDD0, 0x0DE15430, 0x0DE5DA50, + 0x0DEA6000, 0x0DEEE560, 0x0DF36A60, 0x0DF7EF00, 0x0DFC7340, 0x0E00F730, 0x0E057AC0, 0x0E09FE00, + 0x0E0E80D0, 0x0E130350, 0x0E178570, 0x0E1C0740, 0x0E2088A0, 0x0E2509B0, 0x0E298A60, 0x0E2E0AB0, + 0x0E328AB0, 0x0E370A50, 0x0E3B8990, 0x0E400870, 0x0E4486F0, 0x0E490520, 0x0E4D82F0, 0x0E520060, + 0x0E567D70, 0x0E5AFA30, 0x0E5F7680, 0x0E63F280, 0x0E686E20, 0x0E6CE960, 0x0E716440, 0x0E75DED0, + 0x0E7A5900, 0x0E7ED2C0, 0x0E834C30, 0x0E87C550, 0x0E8C3E00, 0x0E90B650, 0x0E952E50, 0x0E99A5E0, + 0x0E9E1D20, 0x0EA29400, 0x0EA70A80, 0x0EAB80A0, 0x0EAFF670, 0x0EB46BD0, 0x0EB8E0E0, 0x0EBD5580, + 0x0EC1C9D0, 0x0EC63DC0, 0x0ECAB150, 0x0ECF2480, 0x0ED39750, 0x0ED809C0, 0x0EDC7BD0, 0x0EE0ED90, + 0x0EE55EE0, 0x0EE9CFE0, 0x0EEE4070, 0x0EF2B0B0, 0x0EF72080, 0x0EFB9000, 0x0EFFFF20, 0x0F046DE0, + 0x0F08DC40, 0x0F0D4A30, 0x0F11B7D0, 0x0F162510, 0x0F1A91F0, 0x0F1EFE70, 0x0F236A90, 0x0F27D650, + 0x0F2C41B0, 0x0F30ACB0, 0x0F351760, 0x0F3981A0, 0x0F3DEB80, 0x0F425500, 0x0F46BE20, 0x0F4B26E0, + 0x0F4F8F40, 0x0F53F740, 0x0F585EE0, 0x0F5CC620, 0x0F612D00, 0x0F659380, 0x0F69F9A0, 0x0F6E5F50, + 0x0F72C4B0, 0x0F7729B0, 0x0F7B8E50, 0x0F7FF280, 0x0F845660, 0x0F88B9D0, 0x0F8D1CF0, 0x0F917FA0, + 0x0F95E200, 0x0F9A43F0, 0x0F9EA580, 0x0FA306B0, 0x0FA76780, 0x0FABC7F0, 0x0FB02800, 0x0FB487B0, + 0x0FB8E700, 0x0FBD45E0, 0x0FC1A470, 0x0FC60290, 0x0FCA6050, 0x0FCEBDB0, 0x0FD31AB0, 0x0FD77750, + 0x0FDBD390, 0x0FE02F70, 0x0FE48AE0, 0x0FE8E600, 0x0FED40B0, 0x0FF19B00, 0x0FF5F4F0, 0x0FFA4E80, + 0x0FFEA7B0, 0x10030080, 0x100758E0, 0x100BB0E0, 0x10100880, 0x10145FC0, 0x1018B6A0, 0x101D0D20, + 0x10216340, 0x1025B8E0, 0x102A0E40, 0x102E6320, 0x1032B7C0, 0x10370BE0, 0x103B5FA0, 0x103FB300, + 0x10440600, 0x104858A0, 0x104CAAE0, 0x1050FCC0, 0x10554E40, 0x10599F40, 0x105DF000, 0x10624040, + 0x10669020, 0x106ADFA0, 0x106F2EC0, 0x10737D80, 0x1077CBE0, 0x107C19C0, 0x10806760, 0x1084B480, + 0x10890160, 0x108D4DC0, 0x109199C0, 0x1095E560, 0x109A30A0, 0x109E7B60, 0x10A2C5E0, 0x10A70FE0, + 0x10AB59A0, 0x10AFA2E0, 0x10B3EBC0, 0x10B83440, 0x10BC7C60, 0x10C0C400, 0x10C50B60, 0x10C95240, + 0x10CD98E0, 0x10D1DF00, 0x10D624C0, 0x10DA6A00, 0x10DEAF00, 0x10E2F3A0, 0x10E737C0, 0x10EB7B80, + 0x10EFBEE0, 0x10F401E0, 0x10F84480, 0x10FC86C0, 0x1100C880, 0x11050A00, 0x11094B00, 0x110D8BA0, + 0x1111CBE0, 0x11160BA0, 0x111A4B20, 0x111E8A20, 0x1122C8E0, 0x11270720, 0x112B4500, 0x112F8260, + 0x1133BF80, 0x1137FC20, 0x113C3860, 0x11407460, 0x1144AFC0, 0x1148EAE0, 0x114D25A0, 0x11515FE0, + 0x115599C0, 0x1159D340, 0x115E0C60, 0x11624520, 0x11667D60, 0x116AB540, 0x116EECE0, 0x11732400, + 0x11775AA0, 0x117B9100, 0x117FC6E0, 0x1183FC60, 0x11883180, 0x118C6640, 0x11909AA0, 0x1194CE80, + 0x11990200, 0x119D3520, 0x11A167E0, 0x11A59A40, 0x11A9CC20, 0x11ADFDC0, 0x11B22EE0, 0x11B65FA0, + 0x11BA8FE0, 0x11BEBFE0, 0x11C2EF60, 0x11C71E80, 0x11CB4D40, 0x11CF7B80, 0x11D3A980, 0x11D7D700, + 0x11DC0420, 0x11E030E0, 0x11E45D20, 0x11E88920, 0x11ECB4A0, 0x11F0DFC0, 0x11F50A80, 0x11F934C0, + 0x11FD5EC0, 0x12018840, 0x1205B160, 0x1209DA00, 0x120E0260, 0x12122A40, 0x121651C0, 0x121A78E0, + 0x121E9F80, 0x1222C5E0, 0x1226EBC0, 0x122B1120, 0x122F3640, 0x12335B00, 0x12377F40, 0x123BA320, + 0x123FC680, 0x1243E9A0, 0x12480C40, 0x124C2E80, 0x12505060, 0x125471E0, 0x125892E0, 0x125CB380, + 0x1260D3C0, 0x1264F3A0, 0x12691300, 0x126D3200, 0x127150A0, 0x12756EE0, 0x12798CA0, 0x127DAA00, + 0x1281C700, 0x1285E3A0, 0x1289FFE0, 0x128E1BA0, 0x12923700, 0x12965200, 0x129A6C80, 0x129E86A0, + 0x12A2A060, 0x12A6B9C0, 0x12AAD2C0, 0x12AEEB40, 0x12B30360, 0x12B71B20, 0x12BB3260, 0x12BF4940, + 0x12C35FC0, 0x12C775E0, 0x12CB8B80, 0x12CFA0E0, 0x12D3B5C0, 0x12D7CA20, 0x12DBDE40, 0x12DFF1E0, + 0x12E40520, 0x12E81800, 0x12EC2A60, 0x12F03C60, 0x12F44E00, 0x12F85F40, 0x12FC7000, 0x13008060, + 0x13049060, 0x1308A000, 0x130CAF20, 0x1310BDE0, 0x1314CC40, 0x1318DA20, 0x131CE7A0, 0x1320F4C0, + 0x13250180, 0x13290DE0, 0x132D19C0, 0x13312540, 0x13353040, 0x13393B00, 0x133D4540, 0x13414F20, + 0x13455880, 0x13496180, 0x134D6A20, 0x13517260, 0x13557A20, 0x135981A0, 0x135D88A0, 0x13618F20, + 0x13659540, 0x13699B20, 0x136DA060, 0x1371A560, 0x1375A9E0, 0x1379AE00, 0x137DB1C0, 0x1381B500, + 0x1385B7E0, 0x1389BA60, 0x138DBC60, 0x1391BE20, 0x1395BF60, 0x1399C020, 0x139DC0A0, 0x13A1C0A0, + 0x13A5C040, 0x13A9BF60, 0x13ADBE40, 0x13B1BCA0, 0x13B5BA80, 0x13B9B820, 0x13BDB540, 0x13C1B200, + 0x13C5AE40, 0x13C9AA20, 0x13CDA5A0, 0x13D1A0C0, 0x13D59B60, 0x13D995C0, 0x13DD8F80, 0x13E18900, + 0x13E58200, 0x13E97AA0, 0x13ED72E0, 0x13F16AA0, 0x13F56200, 0x13F95900, 0x13FD4F80, 0x140145C0, + 0x14053B60, 0x140930C0, 0x140D25A0, 0x14111A20, 0x14150E40, 0x141901E0, 0x141CF540, 0x1420E800, + 0x1424DA80, 0x1428CC80, 0x142CBE20, 0x1430AF60, 0x1434A020, 0x14389080, 0x143C8080, 0x14407000, + 0x14445F20, 0x14484DE0, 0x144C3C40, 0x14502A20, 0x145417A0, 0x145804C0, 0x145BF160, 0x145FDDA0, + 0x1463C980, 0x1467B4E0, 0x146B9FE0, 0x146F8A80, 0x147374C0, 0x14775E80, 0x147B47E0, 0x147F30E0, + 0x14831960, 0x14870180, 0x148AE940, 0x148ED080, 0x1492B760, 0x14969DE0, 0x149A8400, 0x149E69A0, + 0x14A24EE0, 0x14A633A0, 0x14AA1820, 0x14ADFC20, 0x14B1DFA0, 0x14B5C2E0, 0x14B9A5A0, 0x14BD8800, + 0x14C169E0, 0x14C54B60, 0x14C92C80, 0x14CD0D40, 0x14D0ED80, 0x14D4CD60, 0x14D8ACC0, 0x14DC8BE0, + 0x14E06A80, 0x14E448C0, 0x14E82680, 0x14EC03E0, 0x14EFE0E0, 0x14F3BD60, 0x14F799A0, 0x14FB7540, + 0x14FF50A0, 0x15032B80, 0x15070600, 0x150AE020, 0x150EB9C0, 0x15129300, 0x15166BE0, 0x151A4440, + 0x151E1C60, 0x1521F3E0, 0x1525CB20, 0x1529A1E0, 0x152D7840, 0x15314E20, 0x153523C0, 0x1538F8E0, + 0x153CCD80, 0x1540A1E0, 0x154475C0, 0x15484920, 0x154C1C40, 0x154FEEE0, 0x1553C120, 0x155792E0, + 0x155B6460, 0x155F3540, 0x156305E0, 0x1566D600, 0x156AA5C0, 0x156E7520, 0x15724400, 0x15761280, + 0x1579E0A0, 0x157DAE40, 0x15817B80, 0x15854860, 0x158914E0, 0x158CE0E0, 0x1590AC80, 0x159477A0, + 0x15984280, 0x159C0CE0, 0x159FD6C0, 0x15A3A060, 0x15A76980, 0x15AB3220, 0x15AEFA80, 0x15B2C260, + 0x15B689E0, 0x15BA50E0, 0x15BE1780, 0x15C1DDC0, 0x15C5A3A0, 0x15C96900, 0x15CD2E00, 0x15D0F2A0, + 0x15D4B6C0, 0x15D87A80, 0x15DC3DE0, 0x15E000C0, 0x15E3C340, 0x15E78560, 0x15EB4720, 0x15EF0860, + 0x15F2C940, 0x15F689C0, 0x15FA49C0, 0x15FE0960, 0x1601C8A0, 0x16058760, 0x160945C0, 0x160D03C0, + 0x1610C140, 0x16147E60, 0x16183B20, 0x161BF780, 0x161FB360, 0x16236EE0, 0x16272A00, 0x162AE4A0, + 0x162E9EE0, 0x163258C0, 0x16361220, 0x1639CB20, 0x163D83C0, 0x16413C00, 0x1644F3C0, 0x1648AB20, + 0x164C6220, 0x165018A0, 0x1653CEC0, 0x16578480, 0x165B39C0, 0x165EEEA0, 0x1662A320, 0x16665740, + 0x166A0AE0, 0x166DBE20, 0x16717100, 0x16752360, 0x1678D560, 0x167C8700, 0x16803820, 0x1683E8E0, + 0x16879940, 0x168B4940, 0x168EF8C0, 0x1692A7E0, 0x169656A0, 0x169A04E0, 0x169DB2C0, 0x16A16040, + 0x16A50D40, 0x16A8BA00, 0x16AC6620, 0x16B01200, 0x16B3BD60, 0x16B76860, 0x16BB1300, 0x16BEBD40, + 0x16C26700, 0x16C61060, 0x16C9B940, 0x16CD61C0, 0x16D109E0, 0x16D4B1A0, 0x16D858E0, 0x16DBFFE0, + 0x16DFA640, 0x16E34C60, 0x16E6F200, 0x16EA9740, 0x16EE3C20, 0x16F1E080, 0x16F58480, 0x16F92820, + 0x16FCCB60, 0x17006E20, 0x17041080, 0x1707B260, 0x170B5400, 0x170EF520, 0x171295E0, 0x17163620, + 0x1719D600, 0x171D7580, 0x172114A0, 0x1724B340, 0x17285180, 0x172BEF60, 0x172F8CE0, 0x173329E0, + 0x1736C680, 0x173A62C0, 0x173DFE80, 0x174199E0, 0x174534E0, 0x1748CF80, 0x174C69A0, 0x17500360, + 0x17539CC0, 0x175735A0, 0x175ACE20, 0x175E6640, 0x1761FE00, 0x17659540, 0x17692C20, 0x176CC2A0, + 0x177058C0, 0x1773EE60, 0x177783A0, 0x177B1880, 0x177EACE0, 0x178240E0, 0x1785D480, 0x178967C0, + 0x178CFA80, 0x17908CE0, 0x17941EE0, 0x1797B080, 0x179B41A0, 0x179ED260, 0x17A262C0, 0x17A5F2A0, + 0x17A98220, 0x17AD1140, 0x17B0A000, 0x17B42E40, 0x17B7BC40, 0x17BB49C0, 0x17BED6C0, 0x17C26380, + 0x17C5EFC0, 0x17C97B80, 0x17CD0700, 0x17D09200, 0x17D41CA0, 0x17D7A6E0, 0x17DB30C0, 0x17DEBA20, + 0x17E24320, 0x17E5CBC0, 0x17E953E0, 0x17ECDBC0, 0x17F06320, 0x17F3EA00, 0x17F770A0, 0x17FAF6C0, + 0x17FE7C80, 0x180201E0, 0x180586C0, 0x18090B40, 0x180C8F60, 0x18101320, 0x18139680, 0x18171960, + 0x181A9BE0, 0x181E1E00, 0x18219FA0, 0x182520E0, 0x1828A1C0, 0x182C2240, 0x182FA240, 0x18332200, + 0x1836A140, 0x183A2000, 0x183D9E80, 0x18411C80, 0x18449A20, 0x18481760, 0x184B9440, 0x184F10A0, + 0x18528CA0, 0x18560840, 0x18598360, 0x185CFE40, 0x186078A0, 0x1863F2A0, 0x18676C20, 0x186AE560, + 0x186E5E20, 0x1871D680, 0x18754E80, 0x1878C600, 0x187C3D20, 0x187FB3E0, 0x18832A40, 0x1886A040, + 0x188A15C0, 0x188D8AE0, 0x1890FFA0, 0x189473E0, 0x1897E7E0, 0x189B5B60, 0x189ECE80, 0x18A24140, + 0x18A5B380, 0x18A92560, 0x18AC96E0, 0x18B00800, 0x18B378C0, 0x18B6E900, 0x18BA58E0, 0x18BDC860, + 0x18C13780, 0x18C4A640, 0x18C81480, 0x18CB8260, 0x18CEEFE0, 0x18D25D00, 0x18D5C9A0, 0x18D935E0, + 0x18DCA1C0, 0x18E00D40, 0x18E37860, 0x18E6E300, 0x18EA4D40, 0x18EDB720, 0x18F120A0, 0x18F489A0, + 0x18F7F260, 0x18FB5AA0, 0x18FEC280, 0x190229E0, 0x19059100, 0x1908F7A0, 0x190C5DE0, 0x190FC3C0, + 0x19132940, 0x19168E40, 0x1919F2E0, 0x191D5740, 0x1920BB00, 0x19241E80, 0x192781A0, 0x192AE440, + 0x192E4680, 0x1931A860, 0x193509E0, 0x19386AE0, 0x193BCB80, 0x193F2BE0, 0x19428BA0, 0x1945EB20, + 0x19494A40, 0x194CA8E0, 0x19500720, 0x19536500, 0x1956C280, 0x195A1FA0, 0x195D7C40, 0x1960D880, + 0x19643460, 0x19678FE0, 0x196AEB00, 0x196E45A0, 0x1971A000, 0x1974F9E0, 0x19785360, 0x197BAC80, + 0x197F0520, 0x19825D80, 0x1985B560, 0x19890CE0, 0x198C6400, 0x198FBAC0, 0x19931100, 0x19966700, + 0x1999BC80, 0x199D11A0, 0x19A06660, 0x19A3BAC0, 0x19A70EA0, 0x19AA6240, 0x19ADB560, 0x19B10820, + 0x19B45A80, 0x19B7AC60, 0x19BAFE00, 0x19BE4F20, 0x19C1A000, 0x19C4F060, 0x19C84060, 0x19CB8FE0, + 0x19CEDF20, 0x19D22E00, 0x19D57C60, 0x19D8CA60, 0x19DC1800, 0x19DF6540, 0x19E2B200, 0x19E5FE80, + 0x19E94A80, 0x19EC9640, 0x19EFE180, 0x19F32C60, 0x19F676C0, 0x19F9C0E0, 0x19FD0A80, 0x1A0053E0, + 0x1A039CC0, 0x1A06E540, 0x1A0A2D60, 0x1A0D7520, 0x1A10BC60, 0x1A140360, 0x1A1749E0, 0x1A1A9000, + 0x1A1DD5C0, 0x1A211B20, 0x1A246020, 0x1A27A4C0, 0x1A2AE8E0, 0x1A2E2CC0, 0x1A317020, 0x1A34B320, + 0x1A37F5C0, 0x1A3B3800, 0x1A3E79E0, 0x1A41BB40, 0x1A44FC60, 0x1A483D00, 0x1A4B7D40, 0x1A4EBD40, + 0x1A51FCC0, 0x1A553BC0, 0x1A587A80, 0x1A5BB8E0, 0x1A5EF6C0, 0x1A623460, 0x1A657180, 0x1A68AE40, + 0x1A6BEAA0, 0x1A6F26A0, 0x1A726240, 0x1A759D80, 0x1A78D840, 0x1A7C12C0, 0x1A7F4CC0, 0x1A828660, + 0x1A85BFC0, 0x1A88F8A0, 0x1A8C3120, 0x1A8F6920, 0x1A92A0E0, 0x1A95D840, 0x1A990F20, 0x1A9C45C0, + 0x1A9F7BE0, 0x1AA2B1A0, 0x1AA5E700, 0x1AA91C20, 0x1AAC50A0, 0x1AAF84E0, 0x1AB2B8C0, 0x1AB5EC40, + 0x1AB91F40, 0x1ABC5200, 0x1ABF8440, 0x1AC2B620, 0x1AC5E7C0, 0x1AC918E0, 0x1ACC49A0, 0x1ACF7A00, + 0x1AD2A9E0, 0x1AD5D980, 0x1AD908C0, 0x1ADC37A0, 0x1ADF6600, 0x1AE29400, 0x1AE5C1C0, 0x1AE8EF00, + 0x1AEC1BE0, 0x1AEF4860, 0x1AF27480, 0x1AF5A040, 0x1AF8CBA0, 0x1AFBF6A0, 0x1AFF2140, 0x1B024B80, + 0x1B057540, 0x1B089EC0, 0x1B0BC7C0, 0x1B0EF080, 0x1B1218C0, 0x1B1540A0, 0x1B186840, 0x1B1B8F60, + 0x1B1EB620, 0x1B21DC80, 0x1B250280, 0x1B282820, 0x1B2B4D60, 0x1B2E7220, 0x1B3196A0, 0x1B34BAC0, + 0x1B37DE60, 0x1B3B01C0, 0x1B3E24C0, 0x1B414740, 0x1B446960, 0x1B478B40, 0x1B4AACA0, 0x1B4DCDA0, + 0x1B50EE60, 0x1B540EA0, 0x1B572E80, 0x1B5A4E00, 0x1B5D6D20, 0x1B608BE0, 0x1B63AA40, 0x1B66C840, + 0x1B69E5E0, 0x1B6D0320, 0x1B702000, 0x1B733C80, 0x1B765880, 0x1B797440, 0x1B7C8FA0, 0x1B7FAAA0, + 0x1B82C520, 0x1B85DF60, 0x1B88F940, 0x1B8C12A0, 0x1B8F2BC0, 0x1B924460, 0x1B955CC0, 0x1B9874A0, + 0x1B9B8C40, 0x1B9EA360, 0x1BA1BA20, 0x1BA4D0A0, 0x1BA7E6A0, 0x1BAAFC60, 0x1BAE11A0, 0x1BB12680, + 0x1BB43B20, 0x1BB74F40, 0x1BBA6300, 0x1BBD7680, 0x1BC08980, 0x1BC39C20, 0x1BC6AE60, 0x1BC9C060, + 0x1BCCD1E0, 0x1BCFE300, 0x1BD2F3E0, 0x1BD60440, 0x1BD91440, 0x1BDC23E0, 0x1BDF3340, 0x1BE24220, + 0x1BE550A0, 0x1BE85EC0, 0x1BEB6CA0, 0x1BEE7A00, 0x1BF18700, 0x1BF493C0, 0x1BF7A000, 0x1BFAABE0, + 0x1BFDB780, 0x1C00C2A0, 0x1C03CD60, 0x1C06D7E0, 0x1C09E1E0, 0x1C0CEBA0, 0x1C0FF4E0, 0x1C12FDE0, + 0x1C160660, 0x1C190EA0, 0x1C1C1660, 0x1C1F1DE0, 0x1C2224E0, 0x1C252BA0, 0x1C283200, 0x1C2B37E0, + 0x1C2E3D80, 0x1C3142C0, 0x1C3447A0, 0x1C374C00, 0x1C3A5020, 0x1C3D53E0, 0x1C405740, 0x1C435A40, + 0x1C465CE0, 0x1C495F20, 0x1C4C6100, 0x1C4F6280, 0x1C5263A0, 0x1C556480, 0x1C5864E0, 0x1C5B64E0, + 0x1C5E64A0, 0x1C6163E0, 0x1C6462C0, 0x1C676160, 0x1C6A5F80, 0x1C6D5D60, 0x1C705AE0, 0x1C7357E0, + 0x1C7654A0, 0x1C795100, 0x1C7C4D00, 0x1C7F48A0, 0x1C8243E0, 0x1C853EC0, 0x1C883940, 0x1C8B3360, + 0x1C8E2D40, 0x1C9126A0, 0x1C941FC0, 0x1C971860, 0x1C9A10C0, 0x1C9D08A0, 0x1CA00040, 0x1CA2F780, + 0x1CA5EE60, 0x1CA8E4C0, 0x1CABDAE0, 0x1CAED0C0, 0x1CB1C620, 0x1CB4BB20, 0x1CB7AFC0, 0x1CBAA420, + 0x1CBD9800, 0x1CC08BA0, 0x1CC37EC0, 0x1CC671A0, 0x1CC96420, 0x1CCC5640, 0x1CCF4800, 0x1CD23960, + 0x1CD52A60, 0x1CD81B20, 0x1CDB0B60, 0x1CDDFB60, 0x1CE0EAE0, 0x1CE3DA20, 0x1CE6C900, 0x1CE9B780, + 0x1CECA5A0, 0x1CEF9360, 0x1CF280C0, 0x1CF56DC0, 0x1CF85A80, 0x1CFB46C0, 0x1CFE32C0, 0x1D011E60, + 0x1D040980, 0x1D06F460, 0x1D09DF00, 0x1D0CC920, 0x1D0FB2E0, 0x1D129C40, 0x1D158560, 0x1D186E20, + 0x1D1B5680, 0x1D1E3E60, 0x1D212620, 0x1D240D60, 0x1D26F440, 0x1D29DAC0, 0x1D2CC100, 0x1D2FA6E0, + 0x1D328C40, 0x1D357160, 0x1D385620, 0x1D3B3AA0, 0x1D3E1EA0, 0x1D410260, 0x1D43E5A0, 0x1D46C8A0, + 0x1D49AB40, 0x1D4C8D80, 0x1D4F6F60, 0x1D5250E0, 0x1D553220, 0x1D5812E0, 0x1D5AF360, 0x1D5DD380, + 0x1D60B340, 0x1D6392A0, 0x1D6671C0, 0x1D695060, 0x1D6C2EC0, 0x1D6F0CC0, 0x1D71EA60, 0x1D74C7A0, + 0x1D77A480, 0x1D7A8120, 0x1D7D5D40, 0x1D803920, 0x1D8314A0, 0x1D85EFC0, 0x1D88CA80, 0x1D8BA500, + 0x1D8E7F00, 0x1D9158C0, 0x1D943220, 0x1D970B20, 0x1D99E3E0, 0x1D9CBC20, 0x1D9F9420, 0x1DA26BC0, + 0x1DA54300, 0x1DA819E0, 0x1DAAF060, 0x1DADC6A0, 0x1DB09C60, 0x1DB371E0, 0x1DB64700, 0x1DB91BE0, + 0x1DBBF040, 0x1DBEC460, 0x1DC19820, 0x1DC46B80, 0x1DC73E80, 0x1DCA1120, 0x1DCCE380, 0x1DCFB580, + 0x1DD28720, 0x1DD55860, 0x1DD82940, 0x1DDAF9E0, 0x1DDDCA20, 0x1DE09A00, 0x1DE36980, 0x1DE638A0, + 0x1DE90780, 0x1DEBD600, 0x1DEEA420, 0x1DF171E0, 0x1DF43F40, 0x1DF70C60, 0x1DF9D920, 0x1DFCA580, + 0x1DFF7180, 0x1E023D40, 0x1E0508A0, 0x1E07D3A0, 0x1E0A9E40, 0x1E0D6880, 0x1E103280, 0x1E12FC20, + 0x1E15C560, 0x1E188E40, 0x1E1B56E0, 0x1E1E1F00, 0x1E20E6E0, 0x1E23AE80, 0x1E2675A0, 0x1E293C80, + 0x1E2C0300, 0x1E2EC920, 0x1E318EE0, 0x1E345460, 0x1E371980, 0x1E39DE40, 0x1E3CA2A0, 0x1E3F66C0, + 0x1E422A80, 0x1E44EDE0, 0x1E47B0E0, 0x1E4A73A0, 0x1E4D3600, 0x1E4FF800, 0x1E52B9A0, 0x1E557B00, + 0x1E583C00, 0x1E5AFCA0, 0x1E5DBCE0, 0x1E607CE0, 0x1E633C80, 0x1E65FBC0, 0x1E68BAA0, 0x1E6B7940, + 0x1E6E3780, 0x1E70F560, 0x1E73B300, 0x1E767020, 0x1E792D00, 0x1E7BE9A0, 0x1E7EA5C0, 0x1E8161A0, + 0x1E841D20, 0x1E86D840, 0x1E899320, 0x1E8C4DA0, 0x1E8F07C0, 0x1E91C1A0, 0x1E947B00, 0x1E973440, + 0x1E99ED00, 0x1E9CA560, 0x1E9F5D80, 0x1EA21560, 0x1EA4CCC0, 0x1EA783E0, 0x1EAA3AA0, 0x1EACF100, + 0x1EAFA720, 0x1EB25CE0, 0x1EB51240, 0x1EB7C760, 0x1EBA7C20, 0x1EBD3080, 0x1EBFE480, 0x1EC29840, + 0x1EC54BA0, 0x1EC7FEA0, 0x1ECAB160, 0x1ECD63C0, 0x1ED015C0, 0x1ED2C780, 0x1ED578E0, 0x1ED829E0, + 0x1EDADA80, 0x1EDD8AE0, 0x1EE03AE0, 0x1EE2EAA0, 0x1EE59A00, 0x1EE84900, 0x1EEAF7A0, 0x1EEDA600, + 0x1EF05400, 0x1EF301A0, 0x1EF5AF00, 0x1EF85C00, 0x1EFB08C0, 0x1EFDB500, 0x1F006100, 0x1F030CC0, + 0x1F05B800, 0x1F086300, 0x1F0B0DC0, 0x1F0DB820, 0x1F106220, 0x1F130BC0, 0x1F15B520, 0x1F185E20, + 0x1F1B06C0, 0x1F1DAF20, 0x1F205720, 0x1F22FEE0, 0x1F25A620, 0x1F284D40, 0x1F2AF3E0, 0x1F2D9A40, + 0x1F304040, 0x1F32E600, 0x1F358B60, 0x1F383060, 0x1F3AD500, 0x1F3D7960, 0x1F401D80, 0x1F42C120, + 0x1F4564A0, 0x1F4807A0, 0x1F4AAA60, 0x1F4D4CC0, 0x1F4FEEE0, 0x1F529080, 0x1F553200, 0x1F57D300, + 0x1F5A73C0, 0x1F5D1440, 0x1F5FB460, 0x1F625420, 0x1F64F380, 0x1F6792A0, 0x1F6A3160, 0x1F6CCFE0, + 0x1F6F6E00, 0x1F720BE0, 0x1F74A940, 0x1F774680, 0x1F79E340, 0x1F7C7FC0, 0x1F7F1C00, 0x1F81B7C0, + 0x1F845340, 0x1F86EE80, 0x1F898960, 0x1F8C23E0, 0x1F8EBE20, 0x1F915800, 0x1F93F1A0, 0x1F968AE0, + 0x1F9923C0, 0x1F9BBC60, 0x1F9E54A0, 0x1FA0EC80, 0x1FA38420, 0x1FA61B80, 0x1FA8B280, 0x1FAB4920, + 0x1FADDF60, 0x1FB07560, 0x1FB30B20, 0x1FB5A080, 0x1FB83580, 0x1FBACA40, 0x1FBD5EA0, 0x1FBFF2A0, + 0x1FC28660, 0x1FC519E0, 0x1FC7ACE0, 0x1FCA3FC0, 0x1FCCD220, 0x1FCF6440, 0x1FD1F620, 0x1FD487A0, + 0x1FD718C0, 0x1FD9A9A0, 0x1FDC3A20, 0x1FDECA60, 0x1FE15A40, 0x1FE3E9E0, 0x1FE67920, 0x1FE90800, + 0x1FEB96A0, 0x1FEE24E0, 0x1FF0B2E0, 0x1FF34080, 0x1FF5CDE0, 0x1FF85AE0, 0x1FFAE7A0, 0x1FFD7400, + 0x20000000, +}; diff --git a/components/doom/prboom/tables.h b/components/doom/prboom/tables.h new file mode 100644 index 0000000..708e797 --- /dev/null +++ b/components/doom/prboom/tables.h @@ -0,0 +1,86 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Lookup tables. + * Do not try to look them up :-). + * In the order of appearance: + * + * int finetangent[4096] - Tangens LUT. + * Should work with BAM fairly well (12 of 16bit, + * effectively, by shifting). + * + * int finesine[10240] - Sine lookup. + * Guess what, serves as cosine, too. + * Remarkable thing is, how to use BAMs with this? + * + * int tantoangle[2049] - ArcTan LUT, + * maps tan(angle) to angle fast. Gotta search. + * + *-----------------------------------------------------------------------------*/ + +#ifndef __TABLES__ +#define __TABLES__ + +#include "m_fixed.h" + +#define FINEANGLES 8192 +#define FINEMASK (FINEANGLES-1) + +// 0x100000000 to 0x2000 +#define ANGLETOFINESHIFT 19 + +// Binary Angle Measument, BAM. +#define ANG45 0x20000000 +#define ANG90 0x40000000 +#define ANG180 0x80000000 +#define ANG270 0xc0000000 +#ifndef M_PI +#define M_PI 3.14159265358979323846 +#endif + +#define SLOPERANGE 2048 +#define SLOPEBITS 11 +#define DBITS (FRACBITS-SLOPEBITS) + +typedef unsigned angle_t; + +// Effective size is 10240. +extern const fixed_t finesine[5*FINEANGLES/4]; + +// Re-use data, is just PI/2 phase shift. +extern const fixed_t *finecosine; + +// Effective size is 4096. +extern const fixed_t finetangent[FINEANGLES/2]; + +// Effective size is 2049; +// The +1 size is to handle the case when x==y without additional checking. +extern const angle_t tantoangle[SLOPERANGE+1]; + +#endif diff --git a/components/doom/prboom/v_video.c b/components/doom/prboom/v_video.c new file mode 100644 index 0000000..5330133 --- /dev/null +++ b/components/doom/prboom/v_video.c @@ -0,0 +1,889 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Gamma correction LUT stuff. + * Color range translation support + * Functions to draw patches (by post) directly to screen. + * Functions to blit a block to the screen. + * + *----------------------------------------------------------------------------- + */ + +#include "doomdef.h" +#include "doomstat.h" +#include "r_main.h" +#include "r_draw.h" +#include "m_bbox.h" +#include "w_wad.h" /* needed for color translation lump lookup */ +#include "v_video.h" +#include "i_video.h" +#include "r_filter.h" +#include "lprintf.h" + +static const byte gammatbl[] = { + 0x02, 0x03, 0x03, 0x04, 0x04, 0x05, 0x05, 0x05, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, + 0x0A, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, + 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, + 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, + 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, + 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, + 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, + 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, + 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, + 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, + 0x09, 0x09, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x07, 0x07, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, +}; + +// Each screen is [SCREENWIDTH*SCREENHEIGHT]; +screeninfo_t screens[NUM_SCREENS]; + +int usegamma; + +typedef struct { + const char *name; + const byte *map; +} crdef_t; + +// killough 5/2/98: table-driven approach +static crdef_t crdefs[CR_LIMIT] = { + {"CRBRICK", NULL}, + {"CRTAN", NULL}, + {"CRGRAY", NULL}, + {"CRGREEN", NULL}, + {"CRBROWN", NULL}, + {"CRGOLD", NULL}, + {"CRRED", NULL}, + {"CRBLUE", NULL}, + {"CRORANGE", NULL}, + {"CRYELLOW", NULL}, + {"CRBLUE2", NULL}, +}; + +// +// V_CopyRect +// +// Copies a source rectangle in a screen buffer to a destination +// rectangle in another screen buffer. Source origin in srcx,srcy, +// destination origin in destx,desty, common size in width and height. +// Source buffer specfified by srcscrn, destination buffer by destscrn. +// +// Marks the destination rectangle on the screen dirty. +// +// No return. +// +static void FUNC_V_CopyRect(int srcx, int srcy, int srcscrn, int width, + int height, int destx, int desty, int destscrn, + enum patch_translation_e flags) +{ + byte *src; + byte *dest; + + if (flags & VPT_STRETCH) + { + srcx=srcx*SCREENWIDTH/320; + srcy=srcy*SCREENHEIGHT/200; + width=width*SCREENWIDTH/320; + height=height*SCREENHEIGHT/200; + destx=destx*SCREENWIDTH/320; + desty=desty*SCREENHEIGHT/200; + } + +#ifdef RANGECHECK + if (srcx<0 + ||srcx+width >SCREENWIDTH + || srcy<0 + || srcy+height>SCREENHEIGHT + ||destx<0||destx+width >SCREENWIDTH + || desty<0 + || desty+height>SCREENHEIGHT) + I_Error ("V_CopyRect: Bad arguments"); +#endif + + src = screens[srcscrn].data+screens[srcscrn].byte_pitch*srcy+srcx*V_GetPixelDepth(); + dest = screens[destscrn].data+screens[destscrn].byte_pitch*desty+destx*V_GetPixelDepth(); + + for ( ; height>0 ; height--) + { + memcpy (dest, src, width*V_GetPixelDepth()); + src += screens[srcscrn].byte_pitch; + dest += screens[destscrn].byte_pitch; + } +} + +/* + * V_DrawBackground tiles a 64x64 patch over the entire screen, providing the + * background for the Help and Setup screens, and plot text betwen levels. + * cphipps - used to have M_DrawBackground, but that was used the framebuffer + * directly, so this is my code from the equivalent function in f_finale.c + */ +static void FUNC_V_DrawBackground(const char* flatname, int scrn) +{ + /* erase the entire screen to a tiled background */ + const byte *src; + int x,y; + int width,height; + int lump; + + // killough 4/17/98: + src = W_CacheLumpNum(lump = firstflat + R_FlatNumForName(flatname)); + + /* V_DrawBlock(0, 0, scrn, 64, 64, src, 0); */ + width = height = 64; + if (V_GetMode() == VID_MODE8) { + byte *dest = screens[scrn].data; + + while (height--) { + memcpy (dest, src, width); + src += width; + dest += screens[scrn].byte_pitch; + } + } +#ifndef NOTRUECOLOR + else if (V_GetMode() == VID_MODE15) { + unsigned short *dest = (unsigned short *)screens[scrn].data; + + while (height--) { + int i; + for (i=0; itopoffset; + x -= patch->leftoffset; + + // CPhipps - auto-no-stretch if not high-res + if (flags & VPT_STRETCH) + if ((SCREENWIDTH==320) && (SCREENHEIGHT==200)) + flags &= ~VPT_STRETCH; + + // CPhipps - null translation pointer => no translation + if (!trans) + flags &= ~VPT_TRANS; + + if (V_GetMode() == VID_MODE8 && !(flags & VPT_STRETCH)) { + int col; + byte *desttop = screens[scrn].data+y*screens[scrn].byte_pitch+x*V_GetPixelDepth(); + unsigned int w = patch->width; + + if (y<0 || y+patch->height > ((flags & VPT_STRETCH) ? 200 : SCREENHEIGHT)) { + // killough 1/19/98: improved error message: + lprintf(LO_WARN, "V_DrawMemPatch8: Patch (%d,%d)-(%d,%d) exceeds LFB in vertical direction (horizontal is clipped)\n" + "Bad V_DrawMemPatch8 (flags=%u)", x, y, x+patch->width, y+patch->height, flags); + return; + } + + w--; // CPhipps - note: w = width-1 now, speeds up flipping + + for (col=0 ; (unsigned int)col<=w ; desttop++, col++, x++) { + int i; + const int colindex = (flags & VPT_FLIP) ? (w - col) : (col); + const rcolumn_t *column = R_GetPatchColumn(patch, colindex); + + if (x < 0) + continue; + if (x >= SCREENWIDTH) + break; + + // step through the posts in a column + for (i=0; inumPosts; i++) { + const rpost_t *post = &column->posts[i]; + // killough 2/21/98: Unrolled and performance-tuned + + const byte *source = column->pixels + post->topdelta; + byte *dest = desttop + post->topdelta*screens[scrn].byte_pitch; + int count = post->length; + + if (!(flags & VPT_TRANS)) { + if ((count-=4)>=0) + do { + register byte s0,s1; + s0 = source[0]; + s1 = source[1]; + dest[0] = s0; + dest[screens[scrn].byte_pitch] = s1; + dest += screens[scrn].byte_pitch*2; + s0 = source[2]; + s1 = source[3]; + source += 4; + dest[0] = s0; + dest[screens[scrn].byte_pitch] = s1; + dest += screens[scrn].byte_pitch*2; + } while ((count-=4)>=0); + if (count+=4) + do { + *dest = *source++; + dest += screens[scrn].byte_pitch; + } while (--count); + } else { + // CPhipps - merged translation code here + if ((count-=4)>=0) + do { + register byte s0,s1; + s0 = source[0]; + s1 = source[1]; + s0 = trans[s0]; + s1 = trans[s1]; + dest[0] = s0; + dest[screens[scrn].byte_pitch] = s1; + dest += screens[scrn].byte_pitch*2; + s0 = source[2]; + s1 = source[3]; + s0 = trans[s0]; + s1 = trans[s1]; + source += 4; + dest[0] = s0; + dest[screens[scrn].byte_pitch] = s1; + dest += screens[scrn].byte_pitch*2; + } while ((count-=4)>=0); + if (count+=4) + do { + *dest = trans[*source++]; + dest += screens[scrn].byte_pitch; + } while (--count); + } + } + } + } + else { + // CPhipps - move stretched patch drawing code here + // - reformat initialisers, move variables into inner blocks + + int col; + int w = (patch->width << 16) - 1; // CPhipps - -1 for faster flipping + int left, right, top, bottom; + int DX = (SCREENWIDTH<<16) / 320; + int DXI = (320<<16) / SCREENWIDTH; + int DY = (SCREENHEIGHT<<16) / 200; + int DYI = (200<<16) / SCREENHEIGHT; + R_DrawColumn_f colfunc; + draw_column_vars_t dcvars; + draw_vars_t olddrawvars = drawvars; + + R_SetDefaultDrawColumnVars(&dcvars); + + drawvars.byte_topleft = screens[scrn].data; + drawvars.short_topleft = (unsigned short *)screens[scrn].data; + drawvars.int_topleft = (unsigned int *)screens[scrn].data; + drawvars.byte_pitch = screens[scrn].byte_pitch; + drawvars.short_pitch = screens[scrn].short_pitch; + drawvars.int_pitch = screens[scrn].int_pitch; + + if (!(flags & VPT_STRETCH)) { + DX = 1 << 16; + DXI = 1 << 16; + DY = 1 << 16; + DYI = 1 << 16; + } + + if (flags & VPT_TRANS) { + colfunc = R_GetDrawColumnFunc(RDC_PIPELINE_TRANSLATED, drawvars.filterpatch, RDRAW_FILTER_NONE); + dcvars.translation = trans; + } else { + colfunc = R_GetDrawColumnFunc(RDC_PIPELINE_STANDARD, drawvars.filterpatch, RDRAW_FILTER_NONE); + } + + left = ( x * DX ) >> FRACBITS; + top = ( y * DY ) >> FRACBITS; + right = ( (x + patch->width) * DX ) >> FRACBITS; + bottom = ( (y + patch->height) * DY ) >> FRACBITS; + + dcvars.texheight = patch->height; + dcvars.iscale = DYI; + dcvars.drawingmasked = MAX(patch->width, patch->height) > 8; + dcvars.edgetype = drawvars.patch_edges; + + if (drawvars.filterpatch == RDRAW_FILTER_LINEAR) { + // bias the texture u coordinate + if (patch->isNotTileable) + col = -(FRACUNIT>>1); + else + col = (patch->width<>1); + } + else { + col = 0; + } + + for (dcvars.x=left; dcvars.x>16): (col>>16); + const rcolumn_t *column = R_GetPatchColumn(patch, colindex); + const rcolumn_t *prevcolumn = R_GetPatchColumn(patch, colindex-1); + const rcolumn_t *nextcolumn = R_GetPatchColumn(patch, colindex+1); + + // ignore this column if it's to the left of our clampRect + if (dcvars.x < 0) + continue; + if (dcvars.x >= SCREENWIDTH) + break; + + dcvars.texu = ((flags & VPT_FLIP) ? ((patch->width<width<numPosts; i++) { + const rpost_t *post = &column->posts[i]; + int yoffset = 0; + + dcvars.yl = (((y + post->topdelta) * DY)>>FRACBITS); + dcvars.yh = (((y + post->topdelta + post->length) * DY - (FRACUNIT>>1))>>FRACBITS); + dcvars.edgeslope = post->slope; + + if ((dcvars.yh < 0) || (dcvars.yh < top)) + continue; + if ((dcvars.yl >= SCREENHEIGHT) || (dcvars.yl >= bottom)) + continue; + + if (dcvars.yh >= bottom) { + dcvars.yh = bottom-1; + dcvars.edgeslope &= ~RDRAW_EDGESLOPE_BOT_MASK; + } + if (dcvars.yh >= SCREENHEIGHT) { + dcvars.yh = SCREENHEIGHT-1; + dcvars.edgeslope &= ~RDRAW_EDGESLOPE_BOT_MASK; + } + + if (dcvars.yl < 0) { + yoffset = 0-dcvars.yl; + dcvars.yl = 0; + dcvars.edgeslope &= ~RDRAW_EDGESLOPE_TOP_MASK; + } + if (dcvars.yl < top) { + yoffset = top-dcvars.yl; + dcvars.yl = top; + dcvars.edgeslope &= ~RDRAW_EDGESLOPE_TOP_MASK; + } + + dcvars.source = column->pixels + post->topdelta + yoffset; + dcvars.prevsource = prevcolumn ? prevcolumn->pixels + post->topdelta + yoffset: dcvars.source; + dcvars.nextsource = nextcolumn ? nextcolumn->pixels + post->topdelta + yoffset: dcvars.source; + + dcvars.texturemid = -((dcvars.yl-centery)*dcvars.iscale); + + colfunc(&dcvars); + } + } + + R_ResetColumnBuffer(); + drawvars = olddrawvars; + } +} + +// CPhipps - some simple, useful wrappers for that function, for drawing patches from wads + +static void FUNC_V_DrawNumPatch(int x, int y, int scrn, int lump, + int cm, enum patch_translation_e flags) +{ + V_DrawMemPatch(x, y, scrn, R_CachePatchNum(lump), cm, flags); + R_UnlockPatchNum(lump); +} + +#ifndef NOTRUECOLOR +void *V_Palette = NULL; +#endif + +// +// V_BuildPalette +// +void *V_BuildPalette(int paletteNum, int bitdepth) +{ + int pplump = W_GetNumForName("PLAYPAL"); + const byte *playpal = W_CacheLumpNum(pplump); + const byte *pal = playpal + MIN(paletteNum * 768, W_LumpLength(pplump) - 768); + + byte *palette = malloc(256 * ((bitdepth + 1) / 8)); + + for (int i = 0; i < 256; i++) + { + int r = *pal++; + int g = *pal++; + int b = *pal++; + + if (usegamma > 0) + { + r = MIN(r + gammatbl[r] * usegamma, 0xFF); + g = MIN(g + gammatbl[g] * usegamma, 0xFF); + b = MIN(b + gammatbl[b] * usegamma, 0xFF); + } + + if (bitdepth == 32) + { + ((uint32_t*)palette)[i] = ((r<<16) | (g<<8) | b); + } + else if (bitdepth == 24) + { + palette[i*3+0] = r; + palette[i*3+1] = g; + palette[i*3+2] = b; + } + else if (bitdepth == 16) + { + int nr = r >> 3, ng = g >> 2, nb = b >> 3; + ((uint16_t*)palette)[i] = ((nr<<11) | (ng<<5) | nb); + } + else if (bitdepth == 15) + { + int nr = r >> 3, ng = g >> 3, nb = b >> 3; + ((uint16_t*)palette)[i] = ((nr<<10) | (ng<<5) | nb); + } +#if 0 + This is kept for reference if we ever need to fix truecolor rendering. + float roundUpR = (r > dontRoundAbove) ? 0 : 0.5f; + float roundUpG = (g > dontRoundAbove) ? 0 : 0.5f; + float roundUpB = (b > dontRoundAbove) ? 0 : 0.5f; + + for (int w=0; wnot_on_heap) + if ((scrn->byte_pitch * scrn->height) > 0) + scrn->data = malloc(scrn->byte_pitch*scrn->height); +} + +// +// V_AllocScreens +// +void V_AllocScreens(void) { + int i; + + for (i=0; inot_on_heap) { + free(scrn->data); + scrn->data = NULL; + } +} + +// +// V_FreeScreens +// +void V_FreeScreens(void) { + int i; + + for (i=0; ia.x < 0 || fl->a.x >= SCREENWIDTH + || fl->a.y < 0 || fl->a.y >= SCREENHEIGHT + || fl->b.x < 0 || fl->b.x >= SCREENWIDTH + || fl->b.y < 0 || fl->b.y >= SCREENHEIGHT + ) + { + //jff 8/3/98 use logical output routine + lprintf(LO_DEBUG, "fuck %d \r", fuck++); + return; + } +#endif + +#define PUTDOT(xx,yy,cc) V_PlotPixel(0,xx,yy,(byte)cc) + + dx = fl->b.x - fl->a.x; + ax = 2 * (dx<0 ? -dx : dx); + sx = dx<0 ? -1 : 1; + + dy = fl->b.y - fl->a.y; + ay = 2 * (dy<0 ? -dy : dy); + sy = dy<0 ? -1 : 1; + + x = fl->a.x; + y = fl->a.y; + + if (ax > ay) + { + d = ay - ax/2; + while (1) + { + PUTDOT(x,y,color); + if (x == fl->b.x) return; + if (d>=0) + { + y += sy; + d -= ax; + } + x += sx; + d += ay; + } + } + else + { + d = ax - ay/2; + while (1) + { + PUTDOT(x, y, color); + if (y == fl->b.y) return; + if (d >= 0) + { + x += sx; + d -= ay; + } + y += sy; + d += ax; + } + } +} diff --git a/components/doom/prboom/v_video.h b/components/doom/prboom/v_video.h new file mode 100644 index 0000000..51bb5ab --- /dev/null +++ b/components/doom/prboom/v_video.h @@ -0,0 +1,192 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Gamma correction LUT. + * Color range translation support + * Functions to draw patches (by post) directly to screen. + * Functions to blit a block to the screen. + * + *-----------------------------------------------------------------------------*/ + +#ifndef __V_VIDEO__ +#define __V_VIDEO__ + +#include "doomtype.h" +#include "doomdef.h" +// Needed because we are refering to patches. +#include "r_data.h" + +// +// VIDEO +// + +#define CENTERY (SCREENHEIGHT/2) + +// Screen 0 is the screen updated by I_Update screen. +// Screen 1 is an extra buffer. + +// symbolic indices into color translation table pointer array +typedef enum +{ + CR_BRICK, //0 + CR_TAN, //1 + CR_GRAY, //2 + CR_GREEN, //3 + CR_BROWN, //4 + CR_GOLD, //5 + CR_RED, //6 + CR_BLUE, //7 + CR_ORANGE, //8 + CR_YELLOW, //9 + CR_BLUE2, //10 // proff + CR_LIMIT //11 //jff 2/27/98 added for range check +} crange_idx_e; +//jff 1/16/98 end palette color range additions + +#define CR_DEFAULT CR_RED /* default value for out of range colors */ + +typedef struct { + byte *data; // pointer to the screen content + boolean not_on_heap; // if set, no malloc or free is preformed and + // data never set to NULL. Used i.e. with SDL doublebuffer. + int width; // the width of the surface + int height; // the height of the surface, used when mallocing + int byte_pitch; // tha actual width of one line, used when mallocing + int short_pitch; // tha actual width of one line, used when mallocing + int int_pitch; // tha actual width of one line, used when mallocing +} screeninfo_t; + +#define NUM_SCREENS 6 +extern screeninfo_t screens[NUM_SCREENS]; +extern int usegamma; + +// Varying bit-depth support -POPE +// +// For bilinear filtering, each palette color is pre-weighted and put in a +// table for fast blending operations. These macros decide how many weights +// to create for each color. The lower the number, the lower the blend +// accuracy, which can produce very bad artifacts in texture filtering. +#define VID_NUMCOLORWEIGHTS 64 +#define VID_COLORWEIGHTMASK (VID_NUMCOLORWEIGHTS-1) +#define VID_COLORWEIGHTBITS 6 + +// Macros for converting from 8 bit color to 16 and 32 bit. Also +// contains the weighted versions of each palette color for filtering +// operations +extern void *V_Palette; + +#define VID_PAL15(color, weight) ((uint16_t *)V_Palette)[ (color)*VID_NUMCOLORWEIGHTS + (weight) ] +#define VID_PAL16(color, weight) ((uint16_t *)V_Palette)[ (color)*VID_NUMCOLORWEIGHTS + (weight) ] +#define VID_PAL32(color, weight) ((uint32_t *)V_Palette)[ (color)*VID_NUMCOLORWEIGHTS + (weight) ] + +// The available bit-depth modes +typedef enum { + VID_MODE8, +#ifndef NOTRUECOLOR + VID_MODE15, + VID_MODE16, + VID_MODE32, +#endif + VID_MODEMAX +} video_mode_t; + +extern video_mode_t default_videomode; +extern video_mode_t current_videomode; + +// Allocates buffer screens, call before R_Init. +void V_Init(int width, int height, video_mode_t mode); +void V_InitMode(video_mode_t mode); +void V_SetPalette(int pal); +void *V_BuildPalette(int paletteNum, int bitdepth); +video_mode_t V_GetMode(void); +int V_GetModePixelDepth(video_mode_t mode); +int V_GetNumPixelBits(void); +int V_GetPixelDepth(void); + +// V_CopyRect +typedef void (*V_CopyRect_f)(int srcx, int srcy, int srcscrn, + int width, int height, + int destx, int desty, int destscrn, + enum patch_translation_e flags); +extern V_CopyRect_f V_CopyRect; + +// V_FillRect +typedef void (*V_FillRect_f)(int scrn, int x, int y, + int width, int height, byte colour); +extern V_FillRect_f V_FillRect; + +// CPhipps - patch drawing +// Consolidated into the 3 really useful functions: + +// V_DrawNumPatch - Draws the patch from lump num +typedef void (*V_DrawNumPatch_f)(int x, int y, int scrn, + int lump, int cm, + enum patch_translation_e flags); +extern V_DrawNumPatch_f V_DrawNumPatch; + +// V_DrawNamePatch - Draws the patch from lump "name" +#define V_DrawNamePatch(x,y,s,n,t,f) V_DrawNumPatch(x,y,s,W_GetNumForName(n),t,f) + +/* cph - + * Functions to return width & height of a patch. + * Doesn't really belong here, but is often used in conjunction with + * this code. + */ +#define V_NamePatchWidth(name) R_NumPatchWidth(W_GetNumForName(name)) +#define V_NamePatchHeight(name) R_NumPatchHeight(W_GetNumForName(name)) + +/* cphipps 10/99: function to tile a flat over the screen */ +typedef void (*V_DrawBackground_f)(const char* flatname, int scrn); +extern V_DrawBackground_f V_DrawBackground; + +// CPhipps - function to plot a pixel + +// V_PlotPixel +typedef void (*V_PlotPixel_f)(int,int,int,byte); +extern V_PlotPixel_f V_PlotPixel; + +typedef struct +{ + int x, y; +} fpoint_t; + +typedef struct +{ + fpoint_t a, b; +} fline_t; + +// V_DrawLine +void V_DrawLine(fline_t* fl, int color); + +void V_AllocScreen(screeninfo_t *scrn); +void V_AllocScreens(); +void V_FreeScreen(screeninfo_t *scrn); +void V_FreeScreens(); + +#endif diff --git a/components/doom/prboom/version.c b/components/doom/prboom/version.c new file mode 100644 index 0000000..142017e --- /dev/null +++ b/components/doom/prboom/version.c @@ -0,0 +1,38 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Date stamp + * + *----------------------------------------------------------------------------- + */ + + +#include "version.h" + +const char version_date[] = __DATE__; diff --git a/components/doom/prboom/version.h b/components/doom/prboom/version.h new file mode 100644 index 0000000..f7ad161 --- /dev/null +++ b/components/doom/prboom/version.h @@ -0,0 +1,40 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Doom version indicators. + * + *-----------------------------------------------------------------------------*/ + + +#ifndef __DOOMVERSION__ +#define __DOOMVERSION__ + +extern const char version_date[]; + +#endif diff --git a/components/doom/prboom/w_wad.c b/components/doom/prboom/w_wad.c new file mode 100644 index 0000000..223dd77 --- /dev/null +++ b/components/doom/prboom/w_wad.c @@ -0,0 +1,482 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2001 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Handles WAD file header, directory, lump I/O. + * + *----------------------------------------------------------------------------- + */ + +// use config.h if autoconf made one -- josh +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "doomstat.h" +#include "d_net.h" +#include "doomtype.h" +#include "i_system.h" +#include "w_wad.h" +#include "lprintf.h" + +// +// GLOBALS +// + +// Opened WAD files +wadfile_info_t wadfiles[MAX_WAD_FILES]; +size_t numwadfiles = 0; + +// Location of each lump on disk. +lumpinfo_t *lumpinfo; +size_t numlumps; + +void ExtractFileBase (const char *path, char *dest) +{ + const char *src = path + strlen(path) - 1; + int length; + + // back up until a \ or the start + while (src != path && src[-1] != ':' // killough 3/22/98: allow c:filename + && *(src-1) != '\\' + && *(src-1) != '/') + { + src--; + } + + // copy up to eight characters + memset(dest,0,8); + length = 0; + + while ((*src) && (*src != '.') && (++length<9)) + { + *dest++ = toupper(*src); + src++; + } + /* cph - length check removed, just truncate at 8 chars. + * If there are 8 or more chars, we'll copy 8, and no zero termination + */ +} + +// +// 1/18/98 killough: adds a default extension to a path +// Note: Backslashes are treated specially, for MS-DOS. +// + +char *AddDefaultExtension(char *path, const char *ext) +{ + char *p = path; + while (*p++); + while (p-->path && *p!='/' && *p!='\\') + if (*p=='.') + return path; + if (*ext!='.') + strcat(path,"."); + return strcat(path,ext); +} + +// +// LUMP BASED ROUTINES. +// + +// +// W_AddFile +// All files are optional, but at least one file must be +// found (PWAD, if all required lumps are present). +// Files with a .wad extension are wadlink files +// with multiple lumps. +// Other files are single lumps with the base filename +// for the lump name. +// +// Reload hack removed by Lee Killough +// CPhipps - source is an enum +// +// proff - changed using pointer to wadfile_info_t +static void W_AddFile(wadfile_info_t *wadfile) +{ + size_t startlump = numlumps; + filelump_t *lumpindex, *fileinfo; + wadinfo_t header; + + // If we do not have the whole thing in memory then we open it from disk + if (!wadfile->data) + { + wadfile->handle = fopen(wadfile->name, "rb"); +#ifdef HAVE_NET + if (!wadfile->handle && D_NetGetWad(wadfile->name)) // CPhipps + wadfile->handle = fopen(wadfile->name, "rb"); +#endif + if (wadfile->handle) + { + fseek(wadfile->handle, 0, SEEK_END); + wadfile->size = ftell(wadfile->handle); + } + } + + if (!wadfile->handle && !wadfile->data) + I_Error("W_AddFile: couldn't open %s", wadfile->name); + + W_Read(&header, sizeof(header), 0, wadfile); + + if (strncmp(header.identification, "IWAD", 4) && strncmp(header.identification, "PWAD", 4)) + { + // Assume it's a single lump file + lumpindex = fileinfo = malloc(sizeof(filelump_t)); + fileinfo->size = wadfile->size; + fileinfo->filepos = 0; + ExtractFileBase(wadfile->name, fileinfo->name); + numlumps++; + } + else + { + // It's a proper WAD file + size_t wadlumps = LONG(header.numlumps); + size_t length = wadlumps * sizeof(filelump_t); + lumpindex = malloc(length); + W_Read(lumpindex, length, LONG(header.infotableofs), wadfile); + numlumps += wadlumps; + } + + // Append the new lumps to lumpinfo + lumpinfo = realloc(lumpinfo, numlumps * sizeof(lumpinfo_t)); + fileinfo = lumpindex; + + for (size_t i = startlump; i < numlumps; i++, fileinfo++) + { + lumpinfo_t *lump_p = &lumpinfo[i]; + lump_p->wadfile = wadfile; // killough 4/25/98 + lump_p->position = LONG(fileinfo->filepos); + lump_p->size = LONG(fileinfo->size); + lump_p->li_namespace = ns_global; // killough 4/17/98 + lump_p->locks = 0; + lump_p->ptr = NULL; + memcpy(lump_p->name, fileinfo->name, 8); + } + + free(lumpindex); + + lprintf(LO_INFO, " added %s:%s (%d lumps)\n", + wadfile->data ? "data" : "file", + wadfile->name, + numlumps - startlump); +} + +// jff 1/23/98 Create routines to reorder the master directory +// putting all flats into one marked block, and all sprites into another. +// This will allow loading of sprites and flats from a PWAD with no +// other changes to code, particularly fast hashes of the lumps. +// +// killough 1/24/98 modified routines to be a little faster and smaller + +static int IsMarker(const char *marker, const char *name) +{ + return !strncasecmp(name, marker, 8) || + (*name == *marker && !strncasecmp(name+1, marker, 7)); +} + +// killough 4/17/98: add namespace tags + +static void W_CoalesceMarkedResource(const char *start_marker, + const char *end_marker, int li_namespace) +{ + lumpinfo_t *marked = malloc(sizeof(*marked) * numlumps); + size_t i, num_marked = 0, num_unmarked = 0; + int is_marked = 0, mark_end = 0; + lumpinfo_t *lump = lumpinfo; + char start_marker_buf[10], end_marker_buf[10]; + + // just to make sure the memcpy below doesn't read out of bounds + start_marker = strncpy(start_marker_buf, start_marker, 8); + end_marker = strncpy(end_marker_buf, end_marker, 8); + + for (i=numlumps; i--; lump++) + if (IsMarker(start_marker, lump->name)) // start marker found + { // If this is the first start marker, add start marker to marked lumps + if (!num_marked) + { + memcpy(marked->name, start_marker, 8); + marked->size = 0; // killough 3/20/98: force size to be 0 + marked->li_namespace = ns_global; // killough 4/17/98 + marked->wadfile = NULL; + num_marked = 1; + } + is_marked = 1; // start marking lumps + } + else + if (IsMarker(end_marker, lump->name)) // end marker found + { + mark_end = 1; // add end marker below + is_marked = 0; // stop marking lumps + } + else + if (is_marked) // if we are marking lumps, + { // move lump to marked list + marked[num_marked] = *lump; + marked[num_marked++].li_namespace = li_namespace; // killough 4/17/98 + } + else + lumpinfo[num_unmarked++] = *lump; // else move down THIS list + + // Append marked list to end of unmarked list + memcpy(lumpinfo + num_unmarked, marked, num_marked * sizeof(*marked)); + + free(marked); // free marked list + + numlumps = num_unmarked + num_marked; // new total number of lumps + + if (mark_end) // add end marker + { + lumpinfo[numlumps].size = 0; // killough 3/20/98: force size to be 0 + lumpinfo[numlumps].wadfile = NULL; + lumpinfo[numlumps].li_namespace = ns_global; // killough 4/17/98 + memcpy(lumpinfo[numlumps++].name, end_marker, 8); + } +} + +// Hash function used for lump names. +// Must be mod'ed with table size. +// Can be used for any 8-character names. +// by Lee Killough + +unsigned W_LumpNameHash(const char *s) +{ + unsigned hash; + (void) ((hash = toupper(s[0]), s[1]) && + (hash = hash*3+toupper(s[1]), s[2]) && + (hash = hash*2+toupper(s[2]), s[3]) && + (hash = hash*2+toupper(s[3]), s[4]) && + (hash = hash*2+toupper(s[4]), s[5]) && + (hash = hash*2+toupper(s[5]), s[6]) && + (hash = hash*2+toupper(s[6]), + hash = hash*2+toupper(s[7])) + ); + return hash; +} + +// +// W_CheckNumForName +// Returns -1 if name not found. +// +// Rewritten by Lee Killough to use hash table for performance. Significantly +// cuts down on time -- increases Doom performance over 300%. This is the +// single most important optimization of the original Doom sources, because +// lump name lookup is used so often, and the original Doom used a sequential +// search. For large wads with > 1000 lumps this meant an average of over +// 500 were probed during every search. Now the average is under 2 probes per +// search. There is no significant benefit to packing the names into longwords +// with this new hashing algorithm, because the work to do the packing is +// just as much work as simply doing the string comparisons with the new +// algorithm, which minimizes the expected number of comparisons to under 2. +// +// killough 4/17/98: add namespace parameter to prevent collisions +// between different resources such as flats, sprites, colormaps +// + +int W_CheckNumForNameNs(register const char *name, register int li_namespace) +{ + // Hash function maps the name to one of possibly numlump chains. + // It has been tuned so that the average chain length never exceeds 2. + + // proff 2001/09/07 - check numlumps==0, this happens when called before WAD loaded + register int i = (numlumps==0)?(-1):(lumpinfo[W_LumpNameHash(name) % (unsigned) numlumps].index); + + // We search along the chain until end, looking for case-insensitive + // matches which also match a namespace tag. Separate hash tables are + // not used for each namespace, because the performance benefit is not + // worth the overhead, considering namespace collisions are rare in + // Doom wads. + + while (i >= 0 && (strncasecmp(lumpinfo[i].name, name, 8) || + lumpinfo[i].li_namespace != li_namespace)) + i = lumpinfo[i].next; + + // Return the matching lump, or -1 if none found. + + return i; +} + +// +// killough 1/31/98: Initialize lump hash table +// + +void W_HashLumps(void) +{ + for (size_t i = 0; i < numlumps; i++) + lumpinfo[i].index = -1; // mark slots empty + + // Insert nodes to the beginning of each chain, in first-to-last + // lump order, so that the last lump of a given name appears first + // in any chain, observing pwad ordering rules. killough + + for (size_t i = 0; i < numlumps; i++) + { // hash function: + size_t j = W_LumpNameHash(lumpinfo[i].name) % numlumps; + lumpinfo[i].next = lumpinfo[j].index; // Prepend to list + lumpinfo[j].index = i; + } +} + +// End of lump hashing -- killough 1/31/98 + + +// W_GetNumForName +// Calls W_CheckNumForName, but bombs out if not found. +// +int W_GetNumForName (const char* name) // killough -- const added +{ + int i = W_CheckNumForName(name); + if (i == -1) + I_Error("W_GetNumForName: %.8s not found", name); + return i; +} + + +// W_Init +// Loads each of the files in the wadfiles array. +// All files are optional, but at least one file +// must be found. +// Files with a .wad extension are idlink files +// with multiple lumps. +// Other files are single lumps with the base filename +// for the lump name. +// Lump names can appear multiple times. +// The name searcher looks backwards, so a later file +// does override all earlier ones. +// + +void W_Init(void) +{ + lumpinfo = NULL; + numlumps = 0; + + for (size_t i = 0; i < numwadfiles; i++) + W_AddFile(&wadfiles[i]); + + if (!numlumps) + I_Error ("W_Init: No files found"); + + W_CoalesceMarkedResource("S_START", "S_END", ns_sprites); + W_CoalesceMarkedResource("F_START", "F_END", ns_flats); + W_CoalesceMarkedResource("C_START", "C_END", ns_colormaps); + + W_HashLumps(); +} + +// +// W_Read +// Read arbitrary data from the WAD file +// +int W_Read(void *dest, size_t size, size_t offset, wadfile_info_t *wad) +{ + if (offset >= wad->size) + { + lprintf(LO_WARN, "W_Read: offset %d > %d\n", offset, wad->size); + } + else if (wad->data) + { + memcpy(dest, wad->data + offset, size); + return size; + } + else if (wad->handle) + { + fseek(wad->handle, offset, SEEK_SET); + fread(dest, size, 1, wad->handle); + return size; + } + return -1; +} + +// +// W_LumpLength +// Returns the buffer size needed to load the given lump. +// +int W_LumpLength(int lump) +{ + if ((unsigned)lump >= numlumps) + I_Error("W_LumpLength: index out of bounds"); + + return lumpinfo[lump].size; +} + +// +// W_ReadLump +// Loads the lump into the given buffer, +// which must be >= W_LumpLength(). +// +void W_ReadLump(void *dest, int lump) +{ + if ((unsigned)lump >= numlumps) + I_Error("W_ReadLump: index out of bounds"); + + lumpinfo_t *l = lumpinfo + lump; + if (l->wadfile) + { + W_Read(dest, l->size, l->position, l->wadfile); + } +} + +// +// W_CacheLumpNum +// +const void *W_CacheLumpNum(int lump) +{ + if ((unsigned)lump >= numlumps) + I_Error("W_CacheLumpNum: index out of bounds"); + + lumpinfo_t *l = &lumpinfo[lump]; + + if (!l->ptr) + { + // Bypass caching if we have the WAD mapped in memory + if (l->wadfile && l->wadfile->data) + return l->wadfile->data + l->position; + W_ReadLump(Z_Malloc(W_LumpLength(lump), PU_STATIC, &l->ptr), lump); + l->locks = 0; + } + + if (++l->locks == 1) + { + Z_ChangeTag(l->ptr, PU_STATIC); + l->locks = 1; + } + + return l->ptr; +} + +// +// W_UnlockLumpNum +// +void W_UnlockLumpNum(int lump) +{ + if ((unsigned)lump >= numlumps) + I_Error("W_UnlockLumpNum: index out of bounds"); + + lumpinfo_t *l = &lumpinfo[lump]; + if (l->ptr && l->locks && --l->locks == 0) + Z_ChangeTag(l->ptr, PU_CACHE); +} diff --git a/components/doom/prboom/w_wad.h b/components/doom/prboom/w_wad.h new file mode 100644 index 0000000..d9c6c31 --- /dev/null +++ b/components/doom/prboom/w_wad.h @@ -0,0 +1,115 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * WAD I/O functions. + * + *-----------------------------------------------------------------------------*/ + + +#ifndef __W_WAD__ +#define __W_WAD__ + +// +// WADFILE I/O related stuff. +// + +typedef struct +{ + char identification[4]; // Should be "IWAD" or "PWAD". + int numlumps; + int infotableofs; +} wadinfo_t; + +typedef struct +{ + int filepos; + int size; + char name[8]; +} filelump_t; + +typedef enum { + ns_global=0, + ns_sprites, + ns_flats, + ns_colormaps, + ns_prboom +} lump_ns_t; + +typedef struct +{ + const char* name; + const void *data; + size_t size; + void *handle; +} wadfile_info_t; + +typedef struct +{ + char name[8]; // lump name, uppercased + short li_namespace:5; // lump namespace + short locks:11; // ptr locks + short index, next; // Index in lumpinfo[] + size_t size; // lump size + size_t position; // position in wadfile + wadfile_info_t *wadfile;// source file + void *ptr; // data/cache pointer +} lumpinfo_t; + +#define MAX_WAD_FILES 8 + +extern wadfile_info_t wadfiles[MAX_WAD_FILES]; +extern size_t numwadfiles; +extern lumpinfo_t *lumpinfo; +extern size_t numlumps; + +void W_Init(void); +int W_CheckNumForNameNs(const char* name, int); +int W_GetNumForName(const char* name); +int W_LumpLength(int lump); +int W_Read(void *dest, size_t size, size_t offset, wadfile_info_t *wad); +void W_ReadLump(void *dest, int lump); +void W_HashLumps(void); +unsigned W_LumpNameHash(const char *s); + +void W_InitCache(void); +void W_DoneCache(void); +const void* W_CacheLumpNum(int lump); +void W_UnlockLumpNum(int lump); + +// CPhipps - convenience macros +#define W_CheckNumForName(name) W_CheckNumForNameNs(name, ns_global) +#define W_CacheLumpName(name) W_CacheLumpNum(W_GetNumForName(name)) +#define W_UnlockLumpName(name) W_UnlockLumpNum(W_GetNumForName(name)) +#define W_LockLumpName(name) W_CacheLumpName(name) +#define W_LockLumpNum(n) W_CacheLumpNum(n) + +char *AddDefaultExtension(char *, const char *); // killough 1/18/98 +void ExtractFileBase(const char *, char *); // killough + +#endif diff --git a/components/doom/prboom/wi_stuff.c b/components/doom/prboom/wi_stuff.c new file mode 100644 index 0000000..8cfc84b --- /dev/null +++ b/components/doom/prboom/wi_stuff.c @@ -0,0 +1,1935 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Intermission screens. + * + *----------------------------------------------------------------------------- + */ + +#include "doomstat.h" +#include "m_random.h" +#include "w_wad.h" +#include "g_game.h" +#include "r_main.h" +#include "v_video.h" +#include "wi_stuff.h" +#include "s_sound.h" +#include "sounds.h" +#include "lprintf.h" // jff 08/03/98 - declaration of lprintf +#include "r_draw.h" + +// Ty 03/17/98: flag that new par times have been loaded in d_deh +extern boolean deh_pars; + +// +// Data needed to add patches to full screen intermission pics. +// Patches are statistics messages, and animations. +// Loads of by-pixel layout and placement, offsets etc. +// + +// +// Different vetween registered DOOM (1994) and +// Ultimate DOOM - Final edition (retail, 1995?). +// This is supposedly ignored for commercial +// release (aka DOOM II), which had 34 maps +// in one episode. So there. +#define NUMEPISODES 4 +#define NUMMAPS 9 + + +// Not used +// in tics +//U #define PAUSELEN (TICRATE*2) +//U #define SCORESTEP 100 +//U #define ANIMPERIOD 32 +// pixel distance from "(YOU)" to "PLAYER N" +//U #define STARDIST 10 +//U #define WK 1 + + +// GLOBAL LOCATIONS +#define WI_TITLEY 2 +#define WI_SPACINGY 33 + +// SINGLE-PLAYER STUFF +#define SP_STATSX 50 +#define SP_STATSY 50 + +#define SP_TIMEX 8 +// proff/nicolas 09/20/98 -- changed for hi-res +#define SP_TIMEY 160 +//#define SP_TIMEY (SCREENHEIGHT-32) + + +// NET GAME STUFF +#define NG_STATSY 50 +#define NG_STATSX (32 + V_NamePatchWidth(star)/2 + 32*!dofrags) + +#define NG_SPACINGX 64 + + +// Used to display the frags matrix at endgame +// DEATHMATCH STUFF +#define DM_MATRIXX 42 +#define DM_MATRIXY 68 + +#define DM_SPACINGX 40 + +#define DM_TOTALSX 269 + +#define DM_KILLERSX 10 +#define DM_KILLERSY 100 +#define DM_VICTIMSX 5 +#define DM_VICTIMSY 50 + + +// These animation variables, structures, etc. are used for the +// DOOM/Ultimate DOOM intermission screen animations. This is +// totally different from any sprite or texture/flat animations +typedef enum +{ + ANIM_ALWAYS, // determined by patch entry + ANIM_RANDOM, // occasional + ANIM_LEVEL // continuous +} animenum_t; + +typedef struct +{ + int x; // x/y coordinate pair structure + int y; +} point_t; + + +// +// Animation. +// There is another anim_t used in p_spec. +// +typedef struct +{ + animenum_t type; + + // period in tics between animations + int period; + + // number of animation frames + int nanims; + + // location of animation + point_t loc; + + // ALWAYS: n/a, + // RANDOM: period deviation (<256), + // LEVEL: level + int data1; + + // ALWAYS: n/a, + // RANDOM: random base period, + // LEVEL: n/a + int data2; + + /* actual graphics for frames of animations + * cphipps - const + */ + patchnum_t p[3]; + + // following must be initialized to zero before use! + + // next value of bcnt (used in conjunction with period) + int nexttic; + + // last drawn animation frame + int lastdrawn; + + // next frame number to animate + int ctr; + + // used by RANDOM and LEVEL when animating + int state; +} anim_t; + + +static point_t lnodes[NUMEPISODES][NUMMAPS] = +{ + // Episode 0 World Map + { + { 185, 164 }, // location of level 0 (CJ) + { 148, 143 }, // location of level 1 (CJ) + { 69, 122 }, // location of level 2 (CJ) + { 209, 102 }, // location of level 3 (CJ) + { 116, 89 }, // location of level 4 (CJ) + { 166, 55 }, // location of level 5 (CJ) + { 71, 56 }, // location of level 6 (CJ) + { 135, 29 }, // location of level 7 (CJ) + { 71, 24 } // location of level 8 (CJ) + }, + + // Episode 1 World Map should go here + { + { 254, 25 }, // location of level 0 (CJ) + { 97, 50 }, // location of level 1 (CJ) + { 188, 64 }, // location of level 2 (CJ) + { 128, 78 }, // location of level 3 (CJ) + { 214, 92 }, // location of level 4 (CJ) + { 133, 130 }, // location of level 5 (CJ) + { 208, 136 }, // location of level 6 (CJ) + { 148, 140 }, // location of level 7 (CJ) + { 235, 158 } // location of level 8 (CJ) + }, + + // Episode 2 World Map should go here + { + { 156, 168 }, // location of level 0 (CJ) + { 48, 154 }, // location of level 1 (CJ) + { 174, 95 }, // location of level 2 (CJ) + { 265, 75 }, // location of level 3 (CJ) + { 130, 48 }, // location of level 4 (CJ) + { 279, 23 }, // location of level 5 (CJ) + { 198, 48 }, // location of level 6 (CJ) + { 140, 25 }, // location of level 7 (CJ) + { 281, 136 } // location of level 8 (CJ) + } +}; + + +// +// Animation locations for episode 0 (1). +// Using patches saves a lot of space, +// as they replace 320x200 full screen frames. +// +static anim_t epsd0animinfo[] = +{ + { ANIM_ALWAYS, TICRATE/3, 3, { 224, 104 } }, + { ANIM_ALWAYS, TICRATE/3, 3, { 184, 160 } }, + { ANIM_ALWAYS, TICRATE/3, 3, { 112, 136 } }, + { ANIM_ALWAYS, TICRATE/3, 3, { 72, 112 } }, + { ANIM_ALWAYS, TICRATE/3, 3, { 88, 96 } }, + { ANIM_ALWAYS, TICRATE/3, 3, { 64, 48 } }, + { ANIM_ALWAYS, TICRATE/3, 3, { 192, 40 } }, + { ANIM_ALWAYS, TICRATE/3, 3, { 136, 16 } }, + { ANIM_ALWAYS, TICRATE/3, 3, { 80, 16 } }, + { ANIM_ALWAYS, TICRATE/3, 3, { 64, 24 } } +}; + +static anim_t epsd1animinfo[] = +{ + { ANIM_LEVEL, TICRATE/3, 1, { 128, 136 }, 1 }, + { ANIM_LEVEL, TICRATE/3, 1, { 128, 136 }, 2 }, + { ANIM_LEVEL, TICRATE/3, 1, { 128, 136 }, 3 }, + { ANIM_LEVEL, TICRATE/3, 1, { 128, 136 }, 4 }, + { ANIM_LEVEL, TICRATE/3, 1, { 128, 136 }, 5 }, + { ANIM_LEVEL, TICRATE/3, 1, { 128, 136 }, 6 }, + { ANIM_LEVEL, TICRATE/3, 1, { 128, 136 }, 7 }, + { ANIM_LEVEL, TICRATE/3, 3, { 192, 144 }, 8 }, + { ANIM_LEVEL, TICRATE/3, 1, { 128, 136 }, 8 } +}; + +static anim_t epsd2animinfo[] = +{ + { ANIM_ALWAYS, TICRATE/3, 3, { 104, 168 } }, + { ANIM_ALWAYS, TICRATE/3, 3, { 40, 136 } }, + { ANIM_ALWAYS, TICRATE/3, 3, { 160, 96 } }, + { ANIM_ALWAYS, TICRATE/3, 3, { 104, 80 } }, + { ANIM_ALWAYS, TICRATE/3, 3, { 120, 32 } }, + { ANIM_ALWAYS, TICRATE/4, 3, { 40, 0 } } +}; + +static int NUMANIMS[NUMEPISODES] = +{ + sizeof(epsd0animinfo)/sizeof(anim_t), + sizeof(epsd1animinfo)/sizeof(anim_t), + sizeof(epsd2animinfo)/sizeof(anim_t) +}; + +static anim_t *anims[NUMEPISODES] = +{ + epsd0animinfo, + epsd1animinfo, + epsd2animinfo +}; + + +// +// GENERAL DATA +// + +// +// Locally used stuff. +// +#define FB 0 + + +// States for single-player +#define SP_KILLS 0 +#define SP_ITEMS 2 +#define SP_SECRET 4 +#define SP_FRAGS 6 +#define SP_TIME 8 +#define SP_PAR ST_TIME + +#define SP_PAUSE 1 + +// in seconds +#define SHOWNEXTLOCDELAY 4 +//#define SHOWLASTLOCDELAY SHOWNEXTLOCDELAY + + +// used to accelerate or skip a stage +int acceleratestage; // killough 3/28/98: made global + +// wbs->pnum +static int me; + + // specifies current state +static stateenum_t state; + +// contains information passed into intermission +static wbstartstruct_t* wbs; + +static wbplayerstruct_t* plrs; // wbs->plyr[] + +// used for general timing +static int cnt; + +// used for timing of background animation +static int bcnt; + +// signals to refresh everything for one frame +static int firstrefresh; + +static int cnt_time; +static int cnt_total_time; +static int cnt_par; +static int cnt_pause; + +// +// GRAPHICS +// + +// You Are Here graphic +static const char* yah[2] = { "WIURH0", "WIURH1" }; + +// splat +static const char* splat = "WISPLAT"; + +// %, : graphics +static const char percent[] = {"WIPCNT"}; +static const char colon[] = {"WICOLON"}; + +// 0-9 graphic +static patchnum_t num[10]; + +// minus sign +static const char wiminus[] = {"WIMINUS"}; + +// "Finished!" graphics +static const char finished[] = {"WIF"}; + +// "Entering" graphic +static const char entering[] = {"WIENTER"}; + +// "secret" +static const char sp_secret[] = {"WISCRT2"}; + +// "Kills", "Scrt", "Items", "Frags" +static const char kills[] = {"WIOSTK"}; +static const char secret[] = {"WIOSTS"}; +static const char items[] = {"WIOSTI"}; +static const char frags[] = {"WIFRGS"}; + +// Time sucks. +static const char time1[] = {"WITIME"}; +static const char par[] = {"WIPAR"}; +static const char sucks[] = {"WISUCKS"}; + +// "killers", "victims" +static const char killers[] = {"WIKILRS"}; +static const char victims[] = {"WIVCTMS"}; + +// "Total", your face, your dead face +static const char total[] = {"WIMSTT"}; +static const char star[] = {"STFST01"}; +static const char bstar[] = {"STFDEAD0"}; + +// "red P[1..MAXPLAYERS]" +static const char facebackp[] = {"STPB0"}; + +// +// Statistics +// +static short dm_frags[MAXPLAYERS][MAXPLAYERS]; // frags matrix +static short dm_totals[MAXPLAYERS]; // totals by player +static int dm_state; + +static short cnt_kills[MAXPLAYERS]; +static short cnt_items[MAXPLAYERS]; +static short cnt_secret[MAXPLAYERS]; +static short cnt_frags[MAXPLAYERS]; +static int dofrags; +static int ng_state; + +// +// CODE +// + +static void WI_endDeathmatchStats(void); +static void WI_endNetgameStats(void); +#define WI_endStats WI_endNetgameStats + +/* ==================================================================== + * WI_levelNameLump + * Purpore: Returns the name of the graphic lump containing the name of + * the given level. + * Args: Episode and level, and buffer (must by 9 chars) to write to + * Returns: void + */ +void WI_levelNameLump(int epis, int map, char* buf) +{ + if (gamemode == commercial) { + sprintf(buf, "CWILV%2.2d", map); + } else { + sprintf(buf, "WILV%d%d", epis, map); + } +} + +// ==================================================================== +// WI_slamBackground +// Purpose: Put the full-screen background up prior to patches +// Args: none +// Returns: void +// +static void WI_slamBackground(void) +{ + char name[9]; // limited to 8 characters + + if (gamemode == commercial || (gamemode == retail && wbs->epsd == 3)) + strcpy(name, "INTERPIC"); + else + sprintf(name, "WIMAP%d", wbs->epsd); + + // background + V_DrawNamePatch(0, 0, FB, name, CR_DEFAULT, VPT_STRETCH); +} + + +// ==================================================================== +// WI_Responder +// Purpose: Draw animations on intermission background screen +// Args: ev -- event pointer, not actually used here. +// Returns: False -- dummy routine +// +// The ticker is used to detect keys +// because of timing issues in netgames. +boolean WI_Responder(event_t* ev) +{ + return false; +} + + +// ==================================================================== +// WI_drawLF +// Purpose: Draw the "Finished" level name before showing stats +// Args: none +// Returns: void +// +void WI_drawLF(void) +{ + int y = WI_TITLEY; + char lname[9]; + + // draw + /* cph - get the graphic lump name and use it */ + WI_levelNameLump(wbs->epsd, wbs->last, lname); + // CPhipps - patch drawing updated + V_DrawNamePatch((320 - V_NamePatchWidth(lname))/2, y, + FB, lname, CR_DEFAULT, VPT_STRETCH); + + // draw "Finished!" + y += (5*V_NamePatchHeight(lname))/4; + + // CPhipps - patch drawing updated + V_DrawNamePatch((320 - V_NamePatchWidth(finished))/2, y, + FB, finished, CR_DEFAULT, VPT_STRETCH); +} + + +// ==================================================================== +// WI_drawEL +// Purpose: Draw introductory "Entering" and level name +// Args: none +// Returns: void +// +void WI_drawEL(void) +{ + int y = WI_TITLEY; + char lname[9]; + + /* cph - get the graphic lump name */ + WI_levelNameLump(wbs->epsd, wbs->next, lname); + + // draw "Entering" + // CPhipps - patch drawing updated + V_DrawNamePatch((320 - V_NamePatchWidth(entering))/2, + y, FB, entering, CR_DEFAULT, VPT_STRETCH); + + // draw level + y += (5*V_NamePatchHeight(lname))/4; + + // CPhipps - patch drawing updated + V_DrawNamePatch((320 - V_NamePatchWidth(lname))/2, y, FB, + lname, CR_DEFAULT, VPT_STRETCH); +} + + +/* ==================================================================== + * WI_drawOnLnode + * Purpose: Draw patches at a location based on episode/map + * Args: n -- index to map# within episode + * c[] -- array of names of patches to be drawn + * Returns: void + */ +void +WI_drawOnLnode // draw stuff at a location by episode/map# +( int n, + const char* const c[] ) +{ + int i; + boolean fits = false; + + i = 0; + do + { + int left; + int top; + int right; + int bottom; + const rpatch_t* patch = R_CachePatchName(c[i]); + + left = lnodes[wbs->epsd][n].x - patch->leftoffset; + top = lnodes[wbs->epsd][n].y - patch->topoffset; + right = left + patch->width; + bottom = top + patch->height; + R_UnlockPatchName(c[i]); + + if (left >= 0 + && right < 320 + && top >= 0 + && bottom < 200) + { + fits = true; + } + else + { + i++; + } + } while (!fits && i!=2); + + if (fits && i<2) + { + // CPhipps - patch drawing updated + V_DrawNamePatch(lnodes[wbs->epsd][n].x, lnodes[wbs->epsd][n].y, + FB, c[i], CR_DEFAULT, VPT_STRETCH); + } + else + { + // DEBUG + //jff 8/3/98 use logical output routine + lprintf(LO_DEBUG,"Could not place patch on level %d", n+1); + } +} + + +// ==================================================================== +// WI_initAnimatedBack +// Purpose: Initialize pointers and styles for background animation +// Args: none +// Returns: void +// +void WI_initAnimatedBack(void) +{ + int i; + anim_t* a; + + if (gamemode == commercial) // no animation for DOOM2 + return; + + if (wbs->epsd > 2) + return; + + for (i=0;iepsd];i++) + { + a = &anims[wbs->epsd][i]; + + // init variables + a->ctr = -1; + + // specify the next time to draw it + if (a->type == ANIM_ALWAYS) + a->nexttic = bcnt + 1 + (M_Random()%a->period); + else + if (a->type == ANIM_RANDOM) + a->nexttic = bcnt + 1 + a->data2+(M_Random()%a->data1); + else + if (a->type == ANIM_LEVEL) + a->nexttic = bcnt + 1; + } +} + + +// ==================================================================== +// WI_updateAnimatedBack +// Purpose: Figure out what animation we do on this iteration +// Args: none +// Returns: void +// +void WI_updateAnimatedBack(void) +{ + int i; + anim_t* a; + + if (gamemode == commercial) + return; + + if (wbs->epsd > 2) + return; + + for (i=0;iepsd];i++) + { + a = &anims[wbs->epsd][i]; + + if (bcnt == a->nexttic) + { + switch (a->type) + { + case ANIM_ALWAYS: + if (++a->ctr >= a->nanims) a->ctr = 0; + a->nexttic = bcnt + a->period; + break; + + case ANIM_RANDOM: + a->ctr++; + if (a->ctr == a->nanims) + { + a->ctr = -1; + a->nexttic = bcnt+a->data2+(M_Random()%a->data1); + } + else + a->nexttic = bcnt + a->period; + break; + + case ANIM_LEVEL: + // gawd-awful hack for level anims + if (!(state == StatCount && i == 7) + && wbs->next == a->data1) + { + a->ctr++; + if (a->ctr == a->nanims) a->ctr--; + a->nexttic = bcnt + a->period; + } + break; + } + } + } +} + + +// ==================================================================== +// WI_drawAnimatedBack +// Purpose: Actually do the animation (whew!) +// Args: none +// Returns: void +// +void WI_drawAnimatedBack(void) +{ + int i; + anim_t* a; + + if (gamemode==commercial) //jff 4/25/98 Someone forgot commercial an enum + return; + + if (wbs->epsd > 2) + return; + + for (i=0 ; iepsd] ; i++) + { + a = &anims[wbs->epsd][i]; + + if (a->ctr >= 0) + // CPhipps - patch drawing updated + V_DrawNumPatch(a->loc.x, a->loc.y, FB, a->p[a->ctr].lumpnum, CR_DEFAULT, VPT_STRETCH); + } +} + + +// ==================================================================== +// WI_drawNum +// Purpose: Draws a number. If digits > 0, then use that many digits +// minimum, otherwise only use as many as necessary +// Args: x, y -- location +// n -- the number to be drawn +// digits -- number of digits minimum or zero +// Returns: new x position after drawing (note we are going to the left) +// CPhipps - static +static int WI_drawNum (int x, int y, int n, int digits) +{ + int fontwidth = num[0].width; + int neg; + int temp; + + if (digits < 0) + { + if (!n) + { + // make variable-length zeros 1 digit long + digits = 1; + } + else + { + // figure out # of digits in # + digits = 0; + temp = n; + + while (temp) + { + temp /= 10; + digits++; + } + } + } + + neg = n < 0; + if (neg) + n = -n; + + // if non-number, do not draw it + if (n == 1994) + return 0; + + // draw the new number + while (digits--) + { + x -= fontwidth; + // CPhipps - patch drawing updated + V_DrawNumPatch(x, y, FB, num[ n % 10 ].lumpnum, CR_DEFAULT, VPT_STRETCH); + n /= 10; + } + + // draw a minus sign if necessary + if (neg) + // CPhipps - patch drawing updated + V_DrawNamePatch(x-=8, y, FB, wiminus, CR_DEFAULT, VPT_STRETCH); + + return x; +} + + +// ==================================================================== +// WI_drawPercent +// Purpose: Draws a percentage, really just a call to WI_drawNum +// after putting a percent sign out there +// Args: x, y -- location +// p -- the percentage value to be drawn, no negatives +// Returns: void +// CPhipps - static +static void WI_drawPercent(int x, int y, int p) +{ + if (p < 0) + return; + + // CPhipps - patch drawing updated + V_DrawNamePatch(x, y, FB, percent, CR_DEFAULT, VPT_STRETCH); + WI_drawNum(x, y, p, -1); +} + + +// ==================================================================== +// WI_drawTime +// Purpose: Draws the level completion time or par time, or "Sucks" +// if 1 hour or more +// Args: x, y -- location +// t -- the time value to be drawn +// Returns: void +// +// CPhipps - static +// - largely rewritten to display hours and use slightly better algorithm + +static void WI_drawTime(int x, int y, int t) +{ + int n; + + if (t<0) + return; + + if (t < 100*60*60) + for(;;) { + n = t % 60; + t /= 60; + x = WI_drawNum(x, y, n, (t || n>9) ? 2 : 1) - V_NamePatchWidth(colon); + + // draw + if (t) + // CPhipps - patch drawing updated + V_DrawNamePatch(x, y, FB, colon, CR_DEFAULT, VPT_STRETCH); + else break; + } + else // "sucks" (maybe should be "addicted", even I've never had a 100 hour game ;) + V_DrawNamePatch(x - V_NamePatchWidth(sucks), + y, FB, sucks, CR_DEFAULT, VPT_STRETCH); +} + + +// ==================================================================== +// WI_End +// Purpose: Unloads data structures (inverse of WI_Start) +// Args: none +// Returns: void +// +void WI_End(void) +{ + if (deathmatch) + WI_endDeathmatchStats(); + else if (netgame) + WI_endNetgameStats(); + else + WI_endStats(); +} + + +// ==================================================================== +// WI_initNoState +// Purpose: Clear state, ready for end of level activity +// Args: none +// Returns: void +// +void WI_initNoState(void) +{ + state = NoState; + acceleratestage = 0; + cnt = 10; +} + + +// ==================================================================== +// WI_drawTimeStats +// Purpose: Put the times on the screen +// Args: time, total time, par time, in seconds +// Returns: void +// +// cph - pulled from WI_drawStats below + +static void WI_drawTimeStats(int cnt_time, int cnt_total_time, int cnt_par) +{ + V_DrawNamePatch(SP_TIMEX, SP_TIMEY, FB, time1, CR_DEFAULT, VPT_STRETCH); + WI_drawTime(320/2 - SP_TIMEX, SP_TIMEY, cnt_time); + + V_DrawNamePatch(SP_TIMEX, (SP_TIMEY+200)/2, FB, total, CR_DEFAULT, VPT_STRETCH); + WI_drawTime(320/2 - SP_TIMEX, (SP_TIMEY+200)/2, cnt_total_time); + + // Ty 04/11/98: redid logic: should skip only if with pwad but + // without deh patch + // killough 2/22/98: skip drawing par times on pwads + // Ty 03/17/98: unless pars changed with deh patch + + if (!(modifiedgame && !deh_pars)) + { + if (wbs->epsd < 3) + { + V_DrawNamePatch(320/2 + SP_TIMEX, SP_TIMEY, FB, par, CR_DEFAULT, VPT_STRETCH); + WI_drawTime(320 - SP_TIMEX, SP_TIMEY, cnt_par); + } + } +} + +// ==================================================================== +// WI_updateNoState +// Purpose: Cycle until end of level activity is done +// Args: none +// Returns: void +// +void WI_updateNoState(void) +{ + + WI_updateAnimatedBack(); + + if (!--cnt) + G_WorldDone(); +} + +static boolean snl_pointeron = false; + + +// ==================================================================== +// WI_initShowNextLoc +// Purpose: Prepare to show the next level's location +// Args: none +// Returns: void +// +void WI_initShowNextLoc(void) +{ + if ((gamemode != commercial) && (gamemap == 8)) { + G_WorldDone(); + return; + } + + state = ShowNextLoc; + acceleratestage = 0; + + // e6y: That was pretty easy - only a HEX editor and luck + // There is no more desync on ddt-tas.zip\e4tux231.lmp + // --------- tasdoom.idb --------- + // .text:00031194 loc_31194: ; CODE XREF: WI_updateStats+3A9j + // .text:00031194 mov ds:state, 1 + // .text:0003119E mov ds:acceleratestage, 0 + // .text:000311A8 mov ds:cnt, 3Ch + // nowhere no hide + if (compatibility_level == tasdoom_compatibility) + cnt = 60; + else + cnt = SHOWNEXTLOCDELAY * TICRATE; + + WI_initAnimatedBack(); +} + + +// ==================================================================== +// WI_updateShowNextLoc +// Purpose: Prepare to show the next level's location +// Args: none +// Returns: void +// +void WI_updateShowNextLoc(void) +{ + WI_updateAnimatedBack(); + + if (!--cnt || acceleratestage) + WI_initNoState(); + else + snl_pointeron = (cnt & 31) < 20; +} + + +// ==================================================================== +// WI_drawShowNextLoc +// Purpose: Show the next level's location on animated backgrounds +// Args: none +// Returns: void +// +void WI_drawShowNextLoc(void) +{ + int i; + int last; + + WI_slamBackground(); + + // draw animated background + WI_drawAnimatedBack(); + + if ( gamemode != commercial) + { + if (wbs->epsd > 2) + { + WI_drawEL(); // "Entering..." if not E1 or E2 + return; + } + + last = (wbs->last == 8) ? wbs->next - 1 : wbs->last; + + // draw a splat on taken cities. + for (i=0 ; i<=last ; i++) + WI_drawOnLnode(i, &splat); + + // splat the secret level? + if (wbs->didsecret) + WI_drawOnLnode(8, &splat); + + // draw flashing ptr + if (snl_pointeron) + WI_drawOnLnode(wbs->next, yah); + } + + // draws which level you are entering.. + if ( (gamemode != commercial) + || wbs->next != 30) // check for MAP30 end game + WI_drawEL(); +} + +// ==================================================================== +// WI_drawNoState +// Purpose: Draw the pointer and next location +// Args: none +// Returns: void +// +void WI_drawNoState(void) +{ + snl_pointeron = true; + WI_drawShowNextLoc(); +} + +// ==================================================================== +// WI_fragSum +// Purpose: Calculate frags for this player based on the current totals +// of all the other players. Subtract self-frags. +// Args: playernum -- the player to be calculated +// Returns: the total frags for this player +// +int WI_fragSum(int playernum) +{ + int i; + int frags = 0; + + for (i=0 ; i 999) // Ty 03/17/98 3-digit frag count + dm_frags[i][j] = 999; + + if (dm_frags[i][j] < -999) + dm_frags[i][j] = -999; + + stillticking = true; + } + } + dm_totals[i] = WI_fragSum(i); + + if (dm_totals[i] > 999) + dm_totals[i] = 999; + + if (dm_totals[i] < -999) + dm_totals[i] = -999; // Ty 03/17/98 end 3-digit frag count + } + } + + if (!stillticking) + { + S_StartSound(0, sfx_barexp); + dm_state++; + } + } + else if (dm_state == 4) + { + if (acceleratestage) + { + S_StartSound(0, sfx_slop); + + if ( gamemode == commercial) + WI_initNoState(); + else + WI_initShowNextLoc(); + } + } + else if (dm_state & 1) + { + if (!--cnt_pause) + { + dm_state++; + cnt_pause = TICRATE; + } + } +} + + +// ==================================================================== +// WI_drawDeathmatchStats +// Purpose: Draw the stats on the screen in a matrix +// Args: none +// Returns: void +// +// proff/nicolas 09/20/98 -- changed for hi-res +// CPhipps - patch drawing updated +void WI_drawDeathmatchStats(void) +{ + int i; + int j; + int x; + int y; + int w; + + int halfface = V_NamePatchWidth(facebackp)/2; + + WI_slamBackground(); + + // draw animated background + WI_drawAnimatedBack(); + WI_drawLF(); + + // draw stat titles (top line) + V_DrawNamePatch(DM_TOTALSX-V_NamePatchWidth(total)/2, + DM_MATRIXY-WI_SPACINGY+10, FB, total, CR_DEFAULT, VPT_STRETCH); + + V_DrawNamePatch(DM_KILLERSX, DM_KILLERSY, FB, killers, CR_DEFAULT, VPT_STRETCH); + V_DrawNamePatch(DM_VICTIMSX, DM_VICTIMSY, FB, victims, CR_DEFAULT, VPT_STRETCH); + + // draw P? + x = DM_MATRIXX + DM_SPACINGX; + y = DM_MATRIXY; + + for (i=0 ; imaxkills; + cnt_items[i] = (plrs[i].sitems * 100) / wbs->maxitems; + + // killough 2/22/98: Make secrets = 100% if maxsecret = 0: + cnt_secret[i] = wbs->maxsecret ? + (plrs[i].ssecret * 100) / wbs->maxsecret : 100; + if (dofrags) + cnt_frags[i] = WI_fragSum(i); // we had frags + } + S_StartSound(0, sfx_barexp); // bang + ng_state = 10; + } + + if (ng_state == 2) + { + if (!(bcnt&3)) + S_StartSound(0, sfx_pistol); // pop + + stillticking = false; + + for (i=0 ; i= (plrs[i].skills * 100) / wbs->maxkills) + cnt_kills[i] = (plrs[i].skills * 100) / wbs->maxkills; + else + stillticking = true; // still got stuff to tally + } + + if (!stillticking) + { + S_StartSound(0, sfx_barexp); + ng_state++; + } + } + else if (ng_state == 4) + { + if (!(bcnt&3)) + S_StartSound(0, sfx_pistol); + + stillticking = false; + + for (i=0 ; i= (plrs[i].sitems * 100) / wbs->maxitems) + cnt_items[i] = (plrs[i].sitems * 100) / wbs->maxitems; + else + stillticking = true; + } + + if (!stillticking) + { + S_StartSound(0, sfx_barexp); + ng_state++; + } + } + else if (ng_state == 6) + { + if (!(bcnt&3)) + S_StartSound(0, sfx_pistol); + + stillticking = false; + + for (i=0 ; i= (wbs->maxsecret ? (plrs[i].ssecret * 100) / wbs->maxsecret : compatibility_level < lxdoom_1_compatibility ? 0 : 100)) + cnt_secret[i] = wbs->maxsecret ? (plrs[i].ssecret * 100) / wbs->maxsecret : 100; + else + stillticking = true; + } + + if (!stillticking) + { + S_StartSound(0, sfx_barexp); + ng_state += 1 + 2*!dofrags; + } + } + else if (ng_state == 8) + { + if (!(bcnt&3)) + S_StartSound(0, sfx_pistol); + + stillticking = false; + + for (i=0 ; i= (fsum = WI_fragSum(i))) + cnt_frags[i] = fsum; + else + stillticking = true; + } + + if (!stillticking) + { + S_StartSound(0, sfx_pldeth); + ng_state++; + } + } + else if (ng_state == 10) + { + if (acceleratestage) + { + S_StartSound(0, sfx_sgcock); + if ( gamemode == commercial ) + WI_initNoState(); + else + WI_initShowNextLoc(); + } + } + else if (ng_state & 1) + { + if (!--cnt_pause) + { + ng_state++; + cnt_pause = TICRATE; + } + } +} + + +// ==================================================================== +// WI_drawNetgameStats +// Purpose: Put the coop stats on the screen +// Args: none +// Returns: void +// +// proff/nicolas 09/20/98 -- changed for hi-res +// CPhipps - patch drawing updated +void WI_drawNetgameStats(void) +{ + int i; + int x; + int y; + int pwidth = V_NamePatchWidth(percent); + int fwidth = V_NamePatchWidth(facebackp); + + WI_slamBackground(); + + // draw animated background + WI_drawAnimatedBack(); + + WI_drawLF(); + + // draw stat titles (top line) + V_DrawNamePatch(NG_STATSX+NG_SPACINGX-V_NamePatchWidth(kills), + NG_STATSY, FB, kills, CR_DEFAULT, VPT_STRETCH); + + V_DrawNamePatch(NG_STATSX+2*NG_SPACINGX-V_NamePatchWidth(items), + NG_STATSY, FB, items, CR_DEFAULT, VPT_STRETCH); + + V_DrawNamePatch(NG_STATSX+3*NG_SPACINGX-V_NamePatchWidth(secret), + NG_STATSY, FB, secret, CR_DEFAULT, VPT_STRETCH); + + if (dofrags) + V_DrawNamePatch(NG_STATSX+4*NG_SPACINGX-V_NamePatchWidth(frags), + NG_STATSY, FB, frags, CR_DEFAULT, VPT_STRETCH); + + // draw stats + y = NG_STATSY + V_NamePatchHeight(kills); + + for (i=0 ; itotaltimes / TICRATE, wbs->partime / TICRATE); +} + +static int sp_state; + +// ==================================================================== +// WI_initStats +// Purpose: Get ready for single player stats +// Args: none +// Returns: void +// Comment: Seems like we could do all these stats in a more generic +// set of routines that weren't duplicated for dm, coop, sp +// +void WI_initStats(void) +{ + state = StatCount; + acceleratestage = 0; + sp_state = 1; + + cnt_kills[0] = cnt_items[0] = cnt_secret[0] = -1; + cnt_time = cnt_par = cnt_total_time = -1; + cnt_pause = TICRATE; + + WI_initAnimatedBack(); +} + +// ==================================================================== +// WI_updateStats +// Purpose: Calculate solo stats +// Args: none +// Returns: void +// +void WI_updateStats(void) +{ + WI_updateAnimatedBack(); + + if (acceleratestage && sp_state != 10) + { + acceleratestage = 0; + cnt_kills[0] = (plrs[me].skills * 100) / wbs->maxkills; + cnt_items[0] = (plrs[me].sitems * 100) / wbs->maxitems; + + // killough 2/22/98: Make secrets = 100% if maxsecret = 0: + cnt_secret[0] = (wbs->maxsecret ? + (plrs[me].ssecret * 100) / wbs->maxsecret : 100); + + cnt_total_time = wbs->totaltimes / TICRATE; + cnt_time = plrs[me].stime / TICRATE; + cnt_par = wbs->partime / TICRATE; + S_StartSound(0, sfx_barexp); + sp_state = 10; + } + + if (sp_state == 2) + { + cnt_kills[0] += 2; + + if (!(bcnt&3)) + S_StartSound(0, sfx_pistol); + + if (cnt_kills[0] >= (plrs[me].skills * 100) / wbs->maxkills) + { + cnt_kills[0] = (plrs[me].skills * 100) / wbs->maxkills; + S_StartSound(0, sfx_barexp); + sp_state++; + } + } + else if (sp_state == 4) + { + cnt_items[0] += 2; + + if (!(bcnt&3)) + S_StartSound(0, sfx_pistol); + + if (cnt_items[0] >= (plrs[me].sitems * 100) / wbs->maxitems) + { + cnt_items[0] = (plrs[me].sitems * 100) / wbs->maxitems; + S_StartSound(0, sfx_barexp); + sp_state++; + } + } + else if (sp_state == 6) + { + cnt_secret[0] += 2; + + if (!(bcnt&3)) + S_StartSound(0, sfx_pistol); + + // killough 2/22/98: Make secrets = 100% if maxsecret = 0: + if ((!wbs->maxsecret && compatibility_level < lxdoom_1_compatibility) || + cnt_secret[0] >= (wbs->maxsecret ? + (plrs[me].ssecret * 100) / wbs->maxsecret : 100)) + { + cnt_secret[0] = (wbs->maxsecret ? + (plrs[me].ssecret * 100) / wbs->maxsecret : 100); + S_StartSound(0, sfx_barexp); + sp_state++; + } + } + else if (sp_state == 8) + { + if (!(bcnt&3)) + S_StartSound(0, sfx_pistol); + + cnt_time += 3; + + if (cnt_time >= plrs[me].stime / TICRATE) + cnt_time = plrs[me].stime / TICRATE; + + cnt_total_time += 3; + + if (cnt_total_time >= wbs->totaltimes / TICRATE) + cnt_total_time = wbs->totaltimes / TICRATE; + + cnt_par += 3; + + if (cnt_par >= wbs->partime / TICRATE) + { + cnt_par = wbs->partime / TICRATE; + + if ((cnt_time >= plrs[me].stime / TICRATE) && (compatibility_level < lxdoom_1_compatibility || cnt_total_time >= wbs->totaltimes / TICRATE)) + { + S_StartSound(0, sfx_barexp); + sp_state++; + } + } + } + else if (sp_state == 10) + { + if (acceleratestage) + { + S_StartSound(0, sfx_sgcock); + + if (gamemode == commercial) + WI_initNoState(); + else + WI_initShowNextLoc(); + } + } + else if (sp_state & 1) + { + if (!--cnt_pause) + { + sp_state++; + cnt_pause = TICRATE; + } + } +} + +// ==================================================================== +// WI_drawStats +// Purpose: Put the solo stats on the screen +// Args: none +// Returns: void +// +// proff/nicolas 09/20/98 -- changed for hi-res +// CPhipps - patch drawing updated +void WI_drawStats(void) +{ + // line height + int lh; + + lh = (3*num[0].height)/2; + + WI_slamBackground(); + + // draw animated background + WI_drawAnimatedBack(); + + WI_drawLF(); + + V_DrawNamePatch(SP_STATSX, SP_STATSY, FB, kills, CR_DEFAULT, VPT_STRETCH); + WI_drawPercent(320 - SP_STATSX, SP_STATSY, cnt_kills[0]); + + V_DrawNamePatch(SP_STATSX, SP_STATSY+lh, FB, items, CR_DEFAULT, VPT_STRETCH); + WI_drawPercent(320 - SP_STATSX, SP_STATSY+lh, cnt_items[0]); + + V_DrawNamePatch(SP_STATSX, SP_STATSY+2*lh, FB, sp_secret, CR_DEFAULT, VPT_STRETCH); + WI_drawPercent(320 - SP_STATSX, SP_STATSY+2*lh, cnt_secret[0]); + + WI_drawTimeStats(cnt_time, cnt_total_time, cnt_par); +} + +// ==================================================================== +// WI_checkForAccelerate +// Purpose: See if the player has hit either the attack or use key +// or mouse button. If so we set acceleratestage to 1 and +// all those display routines above jump right to the end. +// Args: none +// Returns: void +// +void WI_checkForAccelerate(void) +{ + int i; + player_t *player; + + // check for button presses to skip delays + for (i=0, player = players ; icmd.buttons & BT_ATTACK) + { + if (!player->attackdown) + acceleratestage = 1; + player->attackdown = true; + } + else + player->attackdown = false; + + if (player->cmd.buttons & BT_USE) + { + if (!player->usedown) + acceleratestage = 1; + player->usedown = true; + } + else + player->usedown = false; + } + } +} + +// ==================================================================== +// WI_Ticker +// Purpose: Do various updates every gametic, for stats, animation, +// checking that intermission music is running, etc. +// Args: none +// Returns: void +// +void WI_Ticker(void) +{ + // counter for general background animation + bcnt++; + + if (bcnt == 1) + { + // intermission music + if ( gamemode == commercial ) + S_ChangeMusic(mus_dm2int, true); + else + S_ChangeMusic(mus_inter, true); + } + + WI_checkForAccelerate(); + + switch (state) + { + case StatCount: + if (deathmatch) WI_updateDeathmatchStats(); + else if (netgame) WI_updateNetgameStats(); + else WI_updateStats(); + break; + + case ShowNextLoc: + WI_updateShowNextLoc(); + break; + + case NoState: + WI_updateNoState(); + break; + } +} + +/* ==================================================================== + * WI_loadData + * Purpose: Initialize intermission data such as background graphics, + * patches, map names, etc. + * Args: none + * Returns: void + * + * CPhipps - modified for new wad lump handling. + * - no longer preload most graphics, other funcs can use + * them by name + */ + +void WI_loadData(void) +{ + int i; + int j; + char name[32]; // limited to 8 characters + anim_t* a; + + if (gamemode != commercial) + { + if (wbs->epsd < 3) + { + for (j=0;jepsd];j++) + { + a = &anims[wbs->epsd][j]; + for (i=0;inanims;i++) + { + // MONDO HACK! + if (wbs->epsd != 1 || j != 8) + { + // animations + sprintf(name, "WIA%d%.2d%.2d", wbs->epsd, j, i); + R_SetPatchNum(&a->p[i], name); + } + else + { + // HACK ALERT! + a->p[i] = anims[1][4].p[i]; + } + } + } + } + } + + for (i=0;i<10;i++) + { + // numbers 0-9 + sprintf(name, "WINUM%d", i); + R_SetPatchNum(&num[i], name); + } +} + + +// ==================================================================== +// WI_Drawer +// Purpose: Call the appropriate stats drawing routine depending on +// what kind of game is being played (DM, coop, solo) +// Args: none +// Returns: void +// +void WI_Drawer (void) +{ + switch (state) + { + case StatCount: + if (deathmatch) + WI_drawDeathmatchStats(); + else if (netgame) + WI_drawNetgameStats(); + else + WI_drawStats(); + break; + + case ShowNextLoc: + WI_drawShowNextLoc(); + break; + + case NoState: + WI_drawNoState(); + break; + } +} + + +// ==================================================================== +// WI_initVariables +// Purpose: Initialize the intermission information structure +// Note: wbstartstruct_t is defined in d_player.h +// Args: wbstartstruct -- pointer to the structure with the data +// Returns: void +// +void WI_initVariables(wbstartstruct_t* wbstartstruct) +{ + + wbs = wbstartstruct; + +#ifdef RANGECHECKING + if (gamemode != commercial) + { + if ( gamemode == retail ) + RNGCHECK(wbs->epsd, 0, 3); + else + RNGCHECK(wbs->epsd, 0, 2); + } + else + { + RNGCHECK(wbs->last, 0, 8); + RNGCHECK(wbs->next, 0, 8); + } + RNGCHECK(wbs->pnum, 0, MAXPLAYERS); + RNGCHECK(wbs->pnum, 0, MAXPLAYERS); +#endif + + acceleratestage = 0; + cnt = bcnt = 0; + firstrefresh = 1; + me = wbs->pnum; + plrs = wbs->plyr; + + if (!wbs->maxkills) + wbs->maxkills = 1; // probably only useful in MAP30 + + if (!wbs->maxitems) + wbs->maxitems = 1; + + if ( gamemode != retail ) + if (wbs->epsd > 2) + wbs->epsd -= 3; +} + +// ==================================================================== +// WI_Start +// Purpose: Call the various init routines +// Note: wbstartstruct_t is defined in d_player.h +// Args: wbstartstruct -- pointer to the structure with the +// intermission data +// Returns: void +// +void WI_Start(wbstartstruct_t* wbstartstruct) +{ + WI_initVariables(wbstartstruct); + WI_loadData(); + + if (deathmatch) + WI_initDeathmatchStats(); + else if (netgame) + WI_initNetgameStats(); + else + WI_initStats(); +} diff --git a/components/doom/prboom/wi_stuff.h b/components/doom/prboom/wi_stuff.h new file mode 100644 index 0000000..c3363c8 --- /dev/null +++ b/components/doom/prboom/wi_stuff.h @@ -0,0 +1,64 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Intermission screens. + * + *-----------------------------------------------------------------------------*/ + +#ifndef __WI_STUFF__ +#define __WI_STUFF__ + +//#include "v_video.h" + +#include "doomdef.h" + +// States for the intermission + +typedef enum +{ + NoState = -1, + StatCount, + ShowNextLoc + +} stateenum_t; + +// Called by main loop, animate the intermission. +void WI_Ticker (void); + +// Called by main loop, +// draws the intermission directly into the screen buffer. +void WI_Drawer (void); + +// Setup for an intermission screen. +void WI_Start(wbstartstruct_t* wbstartstruct); + +// Release intermission screen memory +void WI_End(void); + +#endif diff --git a/components/doom/prboom/z_zone.c b/components/doom/prboom/z_zone.c new file mode 100644 index 0000000..0b3fdae --- /dev/null +++ b/components/doom/prboom/z_zone.c @@ -0,0 +1,463 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Zone Memory Allocation. Neat. + * + * Neat enough to be rewritten by Lee Killough... + * + * Must not have been real neat :) + * + * Made faster and more general, and added wrappers for all of Doom's + * memory allocation functions, including malloc() and similar functions. + * Added line and file numbers, in case of error. Added performance + * statistics and tunables. + *----------------------------------------------------------------------------- + */ + + +// use config.h if autoconf made one -- josh +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include + +#include "doomstat.h" +#include "lprintf.h" +#include "z_zone.h" + +#define CHUNK_SIZE 4 // Minimum chunk size at which blocks are allocated +#define ZONEID 0x931d4a11 // signature for block header + +typedef struct memblock +{ + uint32_t zoneid; + uint32_t tag: 10; + uint32_t size:22; + + struct memblock *next,*prev; + void **user; + +#ifdef INSTRUMENTED + const char *file; + int line; +#endif + +} memblock_t; + +/* size of block header + * cph - base on sizeof(memblock_t), which can be larger than CHUNK_SIZE on + * 64bit architectures */ +static const size_t HEADER_SIZE = (sizeof(memblock_t)+CHUNK_SIZE-1) & ~(CHUNK_SIZE-1); + +static memblock_t *blockbytag[PU_MAX]; + +#ifdef INSTRUMENTED + +// statistics for evaluating performance +static int active_memory = 0; +static int purgable_memory = 0; + +static void Z_DrawStats(void) // Print allocation statistics +{ + if (gamestate != GS_LEVEL) + return; + + unsigned long total_memory = active_memory + purgable_memory; + double s = 100.0 / total_memory; + + doom_printf("%-5i\t%6.01f%%\tstatic\n" + "%-5i\t%6.01f%%\tpurgable\n" + "%-5li\t\ttotal\n", + active_memory, + active_memory*s, + purgable_memory, + purgable_memory*s, + total_memory + ); +} + +#ifdef HEAPDUMP + +#ifndef HEAPDUMP_DIR +#define HEAPDUMP_DIR "." +#endif + +void W_PrintLump(FILE* fp, void* p); + +void Z_DumpMemory(void) +{ + static int dump; + char buf[PATH_MAX + 1]; + FILE* fp; + size_t total_cache = 0, total_free = 0, total_malloc = 0; + int tag; + + sprintf(buf, "%s/memdump.%d", HEAPDUMP_DIR, dump++); + fp = fopen(buf, "w"); + for (tag = PU_FREE; tag < PU_MAX; tag++) + { + memblock_t* end_block, *block; + block = blockbytag[tag]; + if (!block) + continue; + end_block = block->prev; + while (1) + { + switch (block->tag) { + case PU_FREE: + fprintf(fp, "free %d\n", block->size); + total_free += block->size; + break; + case PU_CACHE: + fprintf(fp, "cache %s:%d:%d\n", block->file, block->line, block->size); + total_cache += block->size; + break; + case PU_LEVEL: + fprintf(fp, "level %s:%d:%d\n", block->file, block->line, block->size); + total_malloc += block->size; + break; + default: + fprintf(fp, "malloc %s:%d:%d", block->file, block->line, block->size); + total_malloc += block->size; + if (block->file) + if (strstr(block->file,"w_memcache.c")) + W_PrintLump(fp, (char*)block + HEADER_SIZE); + fputc('\n', fp); + break; + } + if (block == end_block) + break; + block=block->next; + } + } + fprintf(fp, "malloc %d, cache %d, free %d, total %d\n", + total_malloc, total_cache, total_free, + total_malloc + total_cache + total_free); + fclose(fp); +} +#endif +#endif + +void Z_Close(void) +{ +#ifdef INSTRUMENTED + Z_DumpMemory(); +#endif + // Release everything + Z_FreeTags(PU_FREE, PU_MAX); +} + +void Z_Init(void) +{ + // Nothing to do +} + +void *(Z_Malloc)(size_t size, int tag, void **user DA(const char *file, int line)) +{ + memblock_t *block = NULL; + +#ifdef INSTRUMENTED +#ifdef CHECKHEAP + Z_CheckHeap(); +#endif + + if (tag >= PU_PURGELEVEL && !user) + I_Error ("Z_Malloc: An owner is required for purgable blocks" +#ifdef INSTRUMENTED + "Source: %s:%d", file, line +#endif + ); +#endif + + if (!size) + return user ? *user = NULL : NULL; // malloc(0) returns NULL + + size = (size+CHUNK_SIZE-1) & ~(CHUNK_SIZE-1); // round to chunk size + + while (!(block = (malloc)(size + HEADER_SIZE))) { + if (!blockbytag[PU_CACHE]) + I_Error ("Z_Malloc: Failure trying to allocate %lu bytes" +#ifdef INSTRUMENTED + "\nSource: %s:%d" +#endif + ,(unsigned long) size +#ifdef INSTRUMENTED + , file, line +#endif + ); + // RG: Don't nuke the whole cache at once! + (Z_FreeTags)(PU_CACHE, PU_CACHE, 2); + } + + if (!blockbytag[tag]) + { + blockbytag[tag] = block; + block->next = block->prev = block; + } + else + { + blockbytag[tag]->prev->next = block; + block->prev = blockbytag[tag]->prev; + block->next = blockbytag[tag]; + blockbytag[tag]->prev = block; + } + + block->size = size; + +#ifdef INSTRUMENTED + if (tag >= PU_PURGELEVEL) + purgable_memory += block->size; + else + active_memory += block->size; +#endif + +#ifdef INSTRUMENTED + block->file = file; + block->line = line; +#endif + + block->zoneid = ZONEID; // signature required in block header + block->tag = tag; // tag + block->user = user; // user + block = (memblock_t *)((char *) block + HEADER_SIZE); + if (user) // if there is a user + *user = block; // set user to point to new block + +#ifdef INSTRUMENTED + Z_DrawStats(); // print memory allocation stats + // scramble memory -- weed out any bugs + memset(block, gametic & 0xff, size); +#endif + + return block; +} + +void (Z_Free)(void *p DA(const char *file, int line)) +{ + memblock_t *block = (memblock_t *)((char *) p - HEADER_SIZE); + +#ifdef INSTRUMENTED +#ifdef CHECKHEAP + Z_CheckHeap(); +#endif +#endif + + if (!p) + return; + + if (block->zoneid != ZONEID) + I_Error("Z_Free: freed a pointer without ZONEID" +#ifdef INSTRUMENTED + "\nSource: %s:%d" + "\nSource of malloc: %s:%d" + , file, line, block->file, block->line +#endif + ); + block->zoneid = 0; // Nullify id so another free fails + + if (block->user) // Nullify user if one exists + *block->user = NULL; + + if (block == block->next) + blockbytag[block->tag] = NULL; + else + if (blockbytag[block->tag] == block) + blockbytag[block->tag] = block->next; + block->prev->next = block->next; + block->next->prev = block->prev; + +#ifdef INSTRUMENTED + if (block->tag >= PU_PURGELEVEL) + purgable_memory -= block->size; + else + active_memory -= block->size; + + /* scramble memory -- weed out any bugs */ + memset(block, gametic & 0xff, block->size + HEADER_SIZE); +#endif + + (free)(block); + +#ifdef INSTRUMENTED + Z_DrawStats(); // print memory allocation stats +#endif +} + +void (Z_FreeTags)(int lowtag, int hightag, int max DA(const char *file, int line)) +{ +#ifdef HEAPDUMP + Z_DumpMemory(); +#endif + + lowtag = MAX(lowtag, PU_FREE+1); + hightag = MIN(hightag, PU_MAX-1); + + for (;lowtag <= hightag; hightag--) + { + if (!blockbytag[hightag]) + continue; + memblock_t *block = blockbytag[hightag]; + memblock_t *end_block = block->prev; + while (max--) + { + memblock_t *next = block->next; +#ifdef INSTRUMENTED + (Z_Free)((char *) block + HEADER_SIZE, file, line); +#else + (Z_Free)((char *) block + HEADER_SIZE); +#endif + if (block == end_block) + break; + block = next; // Advance to next block + } + } +} + +void (Z_ChangeTag)(void *ptr, int tag DA(const char *file, int line)) +{ + memblock_t *block = (memblock_t *)((char *) ptr - HEADER_SIZE); + + if (!ptr || tag == block->tag) + return; + +#ifdef INSTRUMENTED +#ifdef CHECKHEAP + Z_CheckHeap(); +#endif + + if (tag >= PU_PURGELEVEL && !block->user) + I_Error ("Z_ChangeTag: an owner is required for purgable blocks\n" +#ifdef INSTRUMENTED + "Source: %s:%d" + "\nSource of malloc: %s:%d" + , file, line, block->file, block->line +#endif + ); +#endif + + if (block->zoneid != ZONEID) + I_Error ("Z_ChangeTag: freed a pointer without ZONEID" +#ifdef INSTRUMENTED + "\nSource: %s:%d" + "\nSource of malloc: %s:%d" + , file, line, block->file, block->line +#endif + ); + + if (block == block->next) + blockbytag[block->tag] = NULL; + else + if (blockbytag[block->tag] == block) + blockbytag[block->tag] = block->next; + block->prev->next = block->next; + block->next->prev = block->prev; + + if (!blockbytag[tag]) + { + blockbytag[tag] = block; + block->next = block->prev = block; + } + else + { + blockbytag[tag]->prev->next = block; + block->prev = blockbytag[tag]->prev; + block->next = blockbytag[tag]; + blockbytag[tag]->prev = block; + } + +#ifdef INSTRUMENTED + if (block->tag < PU_PURGELEVEL && tag >= PU_PURGELEVEL) + { + active_memory -= block->size; + purgable_memory += block->size; + } + else + if (block->tag >= PU_PURGELEVEL && tag < PU_PURGELEVEL) + { + active_memory += block->size; + purgable_memory -= block->size; + } +#endif + + block->tag = tag; +} + +void *(Z_Realloc)(void *ptr, size_t n, int tag, void **user DA(const char *file, int line)) +{ + void *p = (Z_Malloc)(n, tag, user DA(file, line)); + if (ptr) + { + memblock_t *block = (memblock_t *)((char *) ptr - HEADER_SIZE); + memcpy(p, ptr, n <= block->size ? n : block->size); + (Z_Free)(ptr DA(file, line)); + if (user) // in case Z_Free nullified same user + *user=p; + } + return p; +} + +void *(Z_Calloc)(size_t n1, size_t n2, int tag, void **user DA(const char *file, int line)) +{ + return (n1*=n2) ? memset((Z_Malloc)(n1, tag, user DA(file, line)), 0, n1) : NULL; +} + +char *(Z_Strdup)(const char *s, int tag, void **user DA(const char *file, int line)) +{ + size_t len = strlen(s) + 1; + return memcpy((Z_Malloc)(len, tag, user DA(file, line)), s, len); +} + +void (Z_CheckHeap)(DAC(const char *file, int line)) +{ +#if 0 + memblock_t *block; // Start at base of zone mem + if (block) + do { // Consistency check (last node treated special) + if ((block->next != zone && + (memblock_t *)((char *) block+HEADER_SIZE+block->size) != block->next) + || block->next->prev != block || block->prev->next != block) + I_Error("Z_CheckHeap: Block size does not touch the next block\n" +#ifdef INSTRUMENTED + "Source: %s:%d" + "\nSource of offending block: %s:%d" + , file, line, block->file, block->line +#endif + ); +//#ifdef INSTRUMENTED +// shouldn't be needed anymore, was just for testing +#if 0 + if (((int)block->file < 0x00001000) && (block->file != NULL) && (block->tag != 0)) { + block->file = NULL; + } +#endif + } while ((block=block->next) != zone); +#endif +} diff --git a/components/doom/prboom/z_zone.h b/components/doom/prboom/z_zone.h new file mode 100644 index 0000000..e4dd87a --- /dev/null +++ b/components/doom/prboom/z_zone.h @@ -0,0 +1,123 @@ +/* Emacs style mode select -*- C++ -*- + *----------------------------------------------------------------------------- + * + * + * PrBoom: a Doom port merged with LxDoom and LSDLDoom + * based on BOOM, a modified and improved DOOM engine + * Copyright (C) 1999 by + * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman + * Copyright (C) 1999-2000 by + * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze + * Copyright 2005, 2006 by + * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * DESCRIPTION: + * Zone Memory Allocation, perhaps NeXT ObjectiveC inspired. + * Remark: this was the only stuff that, according + * to John Carmack, might have been useful for + * Quake. + * + * Rewritten by Lee Killough, though, since it was not efficient enough. + * + *---------------------------------------------------------------------*/ + +#ifndef __Z_ZONE__ +#define __Z_ZONE__ + +#ifndef __GNUC__ +#define __attribute__(x) +#endif + +// Include system definitions so that prototypes become +// active before macro replacements below are in effect. + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif +#include +#include +#include +#include + +// ZONE MEMORY +// PU - purge tags. +enum { + PU_FREE = 0, + PU_STATIC, + PU_SOUND, + PU_MUSIC, + PU_LEVEL, + PU_LEVSPEC, + PU_CACHE, + PU_MAX, + PU_PURGELEVEL = PU_CACHE, /* First purgable tag's level */ +}; + +#ifdef INSTRUMENTED +#define DA(x,y) ,x,y +#define DAC(x,y) x,y +#else +#define DA(x,y) +#define DAC(x,y) +#endif + +void (Z_Init)(void); +void (Z_Close)(void); +void (Z_CheckHeap)(DAC(const char *,int)); // killough 3/22/98: add file/line info +void (Z_ChangeTag)(void *ptr, int tag DA(const char *, int)); +void (Z_FreeTags)(int lowtag, int hightag, int max DA(const char *, int)); +void (Z_Free)(void *ptr DA(const char *, int)); +void *(Z_Malloc)(size_t size, int tag, void **ptr DA(const char *, int)); +void *(Z_Calloc)(size_t n, size_t n2, int tag, void **user DA(const char *, int)); +void *(Z_Realloc)(void *p, size_t n, int tag, void **user DA(const char *, int)); +char *(Z_Strdup)(const char *s, int tag, void **user DA(const char *, int)); + +#ifdef INSTRUMENTED +/* cph - save space if not debugging, don't require file + * and line to memory calls */ +#define Z_Free(a) (Z_Free) (a, __FILE__,__LINE__) +#define Z_FreeTags(a,b) (Z_FreeTags) (a,b,-1, __FILE__,__LINE__) +#define Z_ChangeTag(a,b) (Z_ChangeTag)(a,b, __FILE__,__LINE__) +#define Z_Malloc(a,b,c) (Z_Malloc) (a,b,c, __FILE__,__LINE__) +#define Z_Strdup(a,b,c) (Z_Strdup) (a,b,c, __FILE__,__LINE__) +#define Z_Calloc(a,b,c,d) (Z_Calloc) (a,b,c,d,__FILE__,__LINE__) +#define Z_Realloc(a,b,c,d) (Z_Realloc) (a,b,c,d,__FILE__,__LINE__) +#define Z_CheckHeap() (Z_CheckHeap)(__FILE__,__LINE__) +#else +#define Z_FreeTags(a,b) (Z_FreeTags) (a,b,-1) +#endif + +/* cphipps 2001/11/18 - + * If we're using memory mapped file access to WADs, we won't need to maintain + * our own heap. So we *could* let "normal" malloc users use the libc malloc + * directly, for efficiency. Except we do need a wrapper to handle out of memory + * errors... damn, ok, we'll leave it for now. + */ +#undef malloc +#undef free +#undef realloc +#undef calloc +#undef strdup + +#define malloc(n) Z_Malloc(n,PU_STATIC,0) +#define free(p) Z_Free(p) +#define realloc(p,n) Z_Realloc(p,n,PU_STATIC,0) +#define calloc(n1,n2) Z_Calloc(n1,n2,PU_STATIC,0) +#define strdup(s) Z_Strdup(s,PU_STATIC,0) + +#endif diff --git a/components/doom/src/doom.cpp b/components/doom/src/doom.cpp new file mode 100644 index 0000000..ceaba3b --- /dev/null +++ b/components/doom/src/doom.cpp @@ -0,0 +1,167 @@ +#include "doom.hpp" +#include "box-emu.hpp" +#include "statistics.hpp" +#include "esp_log.h" + +// prboom includes +extern "C" { +#include "prboom/d_main.h" +#include "prboom/i_system.h" +#include "prboom/i_video.h" +#include "prboom/i_sound.h" +#include "prboom/doomdef.h" +#include "prboom/doomtype.h" +#include "prboom/v_video.h" +#include "prboom/w_wad.h" +#include "prboom/g_game.h" +} + +static const char* TAG = "DOOM"; + +static bool initialized = false; +static bool unlock = false; +static int frame_counter = 0; + +// Video mode settings +static std::atomic scaled = false; +static std::atomic filled = true; + +void set_doom_video_original() { + scaled = false; + filled = false; + BoxEmu::get().native_size(320, 200); +} + +void set_doom_video_fit() { + scaled = true; + filled = false; + BoxEmu::get().native_size(320, 200); +} + +void set_doom_video_fill() { + scaled = false; + filled = true; + BoxEmu::get().native_size(320, 200); +} + +void init_doom(const std::string& wad_filename, uint8_t *wad_data, size_t wad_data_size) { + if (!initialized) { + // Initialize system interface + if (!I_StartDisplay()) { + ESP_LOGE(TAG, "Failed to initialize display"); + return; + } + + // Initialize graphics + I_InitGraphics(); + + // Set native size and palette + BoxEmu::get().native_size(320, 200); + BoxEmu::get().palette(nullptr); + + // Set audio sample rate + BoxEmu::get().audio_sample_rate(44100); + + // Initialize sound + I_InitSound(); + + initialized = true; + } + + // Load WAD file + if (!D_AddFile(wad_filename.c_str())) { + ESP_LOGE(TAG, "Failed to load WAD file"); + return; + } + + // Initialize game + D_DoomMainSetup(); + D_DoomMain(); + + frame_counter = 0; + reset_frame_time(); +} + +void run_doom_rom() { + auto start = esp_timer_get_time(); + + // Handle input + auto state = BoxEmu::get().gamepad_state(); + + // Map gamepad to Doom controls + if (state.up) I_HandleKey(KEY_UPARROW); + if (state.down) I_HandleKey(KEY_DOWNARROW); + if (state.left) I_HandleKey(KEY_LEFTARROW); + if (state.right) I_HandleKey(KEY_RIGHTARROW); + if (state.a) I_HandleKey(KEY_FIRE); + if (state.b) I_HandleKey(KEY_USE); + + // Run one frame + if ((frame_counter % 2) == 0) { + // Start frame + I_StartFrame(); + + // Update game state + D_DoomLoop(); + + // Finish frame + I_FinishUpdate(); + + // Push frame to display + BoxEmu::get().push_frame((uint8_t*)I_VideoBuffer); + } + + // Update frame counter + frame_counter++; + + // Handle timing + auto end = esp_timer_get_time(); + uint64_t elapsed = end - start; + update_frame_time(elapsed); + static constexpr uint64_t max_frame_time = 1000000 / 60; + if (!unlock && elapsed < max_frame_time) { + auto sleep_time = (max_frame_time - elapsed) / 1e3; + std::this_thread::sleep_for(sleep_time * std::chrono::milliseconds(1)); + } +} + +void load_doom(std::string_view save_path) { + if (save_path.size()) { + G_LoadGame(save_path.data()); + } +} + +void save_doom(std::string_view save_path) { + if (save_path.size()) { + G_SaveGame(save_path.data()); + } +} + +std::vector get_doom_video_buffer() { + std::vector frame(320 * 200 * 2); + memcpy(frame.data(), I_VideoBuffer, frame.size()); + return frame; +} + +void start_doom_tasks() { + doom_resume_video_task(); + doom_resume_audio_task(); +} + +void stop_doom_tasks() { + doom_pause_video_task(); + doom_pause_audio_task(); +} + +void deinit_doom() { + if (initialized) { + // Shutdown graphics + I_ShutdownGraphics(); + + // End display + I_EndDisplay(); + + initialized = false; + } + BoxEmu::get().audio_sample_rate(48000); +} From ba77ff3104347c63365a3359d6517380dcd5e4de Mon Sep 17 00:00:00 2001 From: William Emfinger Date: Sat, 29 Mar 2025 15:28:17 -0500 Subject: [PATCH 02/39] wip --- components/doom/src/doom.cpp | 445 ++++++++++++++++++++++++++++++++++- 1 file changed, 437 insertions(+), 8 deletions(-) diff --git a/components/doom/src/doom.cpp b/components/doom/src/doom.cpp index ceaba3b..de3cc4a 100644 --- a/components/doom/src/doom.cpp +++ b/components/doom/src/doom.cpp @@ -26,6 +26,436 @@ static int frame_counter = 0; static std::atomic scaled = false; static std::atomic filled = true; +///////////////////////////////////////////// +// Copied from retro-go/prboom-go/main/main.c +///////////////////////////////////////////// + +// 22050 reduces perf by almost 15% but 11025 sounds awful on the G32... +#ifdef RG_TARGET_MRGC_G32 +#define AUDIO_SAMPLE_RATE 22050 +#else +#define AUDIO_SAMPLE_RATE 11025 +#endif + +#define AUDIO_BUFFER_LENGTH (AUDIO_SAMPLE_RATE / TICRATE + 1) +#define NUM_MIX_CHANNELS 8 + +static rg_surface_t *update; +static rg_app_t *app; + +// Expected variables by doom +int snd_card = 1, mus_card = 1; +int snd_samplerate = AUDIO_SAMPLE_RATE; +int current_palette = 0; + +typedef struct { + uint16_t unused1; + uint16_t samplerate; + uint16_t length; + uint16_t unused2; + byte samples[]; +} doom_sfx_t; + +typedef struct { + const doom_sfx_t *sfx; + size_t pos; + float factor; + int starttic; +} channel_t; + +static channel_t channels[NUM_MIX_CHANNELS]; +static const doom_sfx_t *sfx[NUMSFX]; +static rg_audio_sample_t mixbuffer[AUDIO_BUFFER_LENGTH]; +static const music_player_t *music_player = &opl_synth_player; +static bool musicPlaying = false; + +static const struct {int mask; int *key;} keymap[] = { + {RG_KEY_UP, &key_up}, + {RG_KEY_DOWN, &key_down}, + {RG_KEY_LEFT, &key_left}, + {RG_KEY_RIGHT, &key_right}, + {RG_KEY_A, &key_fire}, + {RG_KEY_A, &key_enter}, + {RG_KEY_B, &key_speed}, + {RG_KEY_B, &key_strafe}, + {RG_KEY_B, &key_backspace}, + {RG_KEY_MENU, &key_escape}, + {RG_KEY_OPTION, &key_map}, + {RG_KEY_START, &key_use}, + {RG_KEY_SELECT, &key_weapontoggle}, +}; + +static const char *SETTING_GAMMA = "Gamma"; + + +static rg_gui_event_t gamma_update_cb(rg_gui_option_t *option, rg_gui_event_t event) +{ + int gamma = usegamma; + int max = 9; + + if (event == RG_DIALOG_PREV) + gamma = gamma > 0 ? gamma - 1 : max; + + if (event == RG_DIALOG_NEXT) + gamma = gamma < max ? gamma + 1 : 0; + + if (gamma != usegamma) + { + usegamma = gamma; + rg_settings_set_number(NS_APP, SETTING_GAMMA, gamma); + I_SetPalette(current_palette); + return RG_DIALOG_REDRAW; + } + + sprintf(option->value, "%d/%d", gamma, max); + + return RG_DIALOG_VOID; +} + + +void I_StartFrame(void) +{ + // +} + +void I_UpdateNoBlit(void) +{ + // +} + +void I_FinishUpdate(void) +{ + rg_display_submit(update, 0); + rg_display_sync(true); // Wait for update->buffer to be released +} + +bool I_StartDisplay(void) +{ + return true; +} + +void I_EndDisplay(void) +{ + // +} + +void I_SetPalette(int pal) +{ + uint16_t *palette = V_BuildPalette(pal, 16); + for (int i = 0; i < 256; i++) + update->palette[i] = palette[i] << 8 | palette[i] >> 8; + Z_Free(palette); + current_palette = pal; +} + +void I_InitGraphics(void) +{ + // set first three to standard values + for (int i = 0; i < 3; i++) + { + screens[i].width = SCREENWIDTH; + screens[i].height = SCREENHEIGHT; + screens[i].byte_pitch = SCREENWIDTH; + } + + // Main screen uses internal ram for speed + screens[0].data = update->data; + screens[0].not_on_heap = true; + + // statusbar + screens[4].width = SCREENWIDTH; + screens[4].height = (ST_SCALED_HEIGHT + 1); + screens[4].byte_pitch = SCREENWIDTH; +} + +int I_GetTimeMS(void) +{ + return rg_system_timer() / 1000; +} + +int I_GetTime(void) +{ + return I_GetTimeMS() * TICRATE * realtic_clock_rate / 100000; +} + +void I_uSleep(unsigned long usecs) +{ + rg_usleep(usecs); +} + +void I_SafeExit(int rc) +{ + rg_system_exit(); +} + +const char *I_DoomExeDir(void) +{ + return RG_BASE_PATH_ROMS "/doom"; +} + +void I_UpdateSoundParams(int handle, int volume, int seperation, int pitch) +{ +} + +int I_StartSound(int sfxid, int channel, int vol, int sep, int pitch, int priority) +{ + int oldest = gametic; + int slot = 0; + + // Unknown sound + if (!sfx[sfxid]) + return -1; + + // These sound are played only once at a time. Stop any running ones. + if (sfxid == sfx_sawup || sfxid == sfx_sawidl || sfxid == sfx_sawful + || sfxid == sfx_sawhit || sfxid == sfx_stnmov || sfxid == sfx_pistol) + { + for (int i = 0; i < NUM_MIX_CHANNELS; i++) + { + if (channels[i].sfx == sfx[sfxid]) + channels[i].sfx = NULL; + } + } + + // Find available channel or steal the oldest + for (int i = 0; i < NUM_MIX_CHANNELS; i++) + { + if (channels[i].sfx == NULL) + { + slot = i; + break; + } + else if (channels[i].starttic < oldest) + { + slot = i; + oldest = channels[i].starttic; + } + } + + channel_t *chan = &channels[slot]; + chan->sfx = sfx[sfxid]; + chan->factor = (float)chan->sfx->samplerate / AUDIO_SAMPLE_RATE; + chan->pos = 0; + + return slot; +} + +void I_StopSound(int handle) +{ + if (handle < NUM_MIX_CHANNELS) + channels[handle].sfx = NULL; +} + +bool I_SoundIsPlaying(int handle) +{ + // return (handle < NUM_MIX_CHANNELS && channels[handle].sfx); + return false; +} + +bool I_AnySoundStillPlaying(void) +{ + for (int i = 0; i < NUM_MIX_CHANNELS; i++) + if (channels[i].sfx) + return true; + return false; +} + +static void soundTask(void *arg) +{ + while (1) + { + int16_t *audioBuffer = (int16_t *)mixbuffer; + int16_t *audioBufferEnd = audioBuffer + AUDIO_BUFFER_LENGTH * 2; + int16_t stream[2]; + + while (audioBuffer < audioBufferEnd) + { + int totalSample = 0; + int totalSources = 0; + int sample; + + if (snd_SfxVolume > 0) + { + for (int i = 0; i < NUM_MIX_CHANNELS; i++) + { + channel_t *chan = &channels[i]; + if (!chan->sfx) + continue; + + size_t pos = (size_t)(chan->pos++ * chan->factor); + + if (pos >= chan->sfx->length) + { + chan->sfx = NULL; + } + else if ((sample = chan->sfx->samples[pos])) + { + totalSample += sample - 127; + totalSources++; + } + } + + totalSample <<= 7; + totalSample /= (16 - snd_SfxVolume); + } + + if (musicPlaying && snd_MusicVolume > 0) + { + music_player->render(&stream, 1); // It returns 2 (stereo) 16bits values per sample + sample = stream[0]; // [0] and [1] are the same value + if (sample > 0) + { + totalSample += sample / (16 - snd_MusicVolume); + if (totalSources == 0) + totalSources = 1; + } + } + + if (totalSources > 0) + totalSample /= totalSources; + + if (totalSample > 32767) + totalSample = 32767; + else if (totalSample < -32768) + totalSample = -32768; + + *audioBuffer++ = totalSample; + *audioBuffer++ = totalSample; + } + + rg_audio_submit(mixbuffer, AUDIO_BUFFER_LENGTH); + } +} + +void I_InitSound(void) +{ + for (int i = 1; i < NUMSFX; i++) + { + if (S_sfx[i].lumpnum != -1) + sfx[i] = W_CacheLumpNum(S_sfx[i].lumpnum); + } + + music_player->init(snd_samplerate); + music_player->setvolume(snd_MusicVolume); + + rg_task_create("doom_sound", &soundTask, NULL, 2048, RG_TASK_PRIORITY_2, 1); +} + +void I_ShutdownSound(void) +{ + music_player->shutdown(); +} + +void I_PlaySong(int handle, int looping) +{ + music_player->play((void *)handle, looping); + musicPlaying = true; +} + +void I_PauseSong(int handle) +{ + music_player->pause(); + musicPlaying = false; +} + +void I_ResumeSong(int handle) +{ + music_player->resume(); + musicPlaying = true; +} + +void I_StopSong(int handle) +{ + music_player->stop(); + musicPlaying = false; +} + +void I_UnRegisterSong(int handle) +{ + music_player->unregistersong((void *)handle); +} + +int I_RegisterSong(const void *data, size_t len) +{ + uint8_t *mid = NULL; + size_t midlen; + int handle = 0; + + if (mus2mid(data, len, &mid, &midlen, 64) == 0) + handle = (int)music_player->registersong(mid, midlen); + else + handle = (int)music_player->registersong(data, len); + + free(mid); + + return handle; +} + +void I_SetMusicVolume(int volume) +{ + music_player->setvolume(volume); +} + +void I_StartTic(void) +{ + static int64_t last_time = 0; + static int32_t prev_joystick = 0x0000; + static int32_t rg_menu_delay = 0; + uint32_t joystick = rg_input_read_gamepad(); + uint32_t changed = prev_joystick ^ joystick; + event_t event = {0}; + + // Long press on menu will open retro-go's menu if needed, instead of DOOM's. + // This is still needed to quit (DOOM 2) and for the debug menu. We'll unify that mess soon... + if (joystick & (RG_KEY_MENU|RG_KEY_OPTION)) + { + if (joystick & RG_KEY_OPTION) + { + Z_FreeTags(PU_CACHE, PU_CACHE); // At this point the heap is usually full. Let's reclaim some! + rg_gui_options_menu(); + changed = 0; + } + else if (rg_menu_delay++ == TICRATE / 2) + { + Z_FreeTags(PU_CACHE, PU_CACHE); // At this point the heap is usually full. Let's reclaim some! + rg_gui_game_menu(); + } + realtic_clock_rate = app->speed * 100; + R_InitInterpolation(); + } + else + { + rg_menu_delay = 0; + } + + if (changed) + { + for (int i = 0; i < RG_COUNT(keymap); i++) + { + if (changed & keymap[i].mask) + { + event.type = (joystick & keymap[i].mask) ? ev_keydown : ev_keyup; + event.data1 = *keymap[i].key; + D_PostEvent(&event); + } + } + } + + rg_system_tick(rg_system_timer() - last_time); + last_time = rg_system_timer(); + prev_joystick = joystick; +} + +void I_Init(void) +{ + // snd_channels = NUM_MIX_CHANNELS; + // snd_samplerate = AUDIO_SAMPLE_RATE; + // snd_MusicVolume = 15; + // snd_SfxVolume = 15; + // usegamma = rg_settings_get_number(NS_APP, SETTING_GAMMA, 0); +} + + void set_doom_video_original() { scaled = false; filled = false; @@ -75,7 +505,6 @@ void init_doom(const std::string& wad_filename, uint8_t *wad_data, size_t wad_da } // Initialize game - D_DoomMainSetup(); D_DoomMain(); frame_counter = 0; @@ -88,13 +517,13 @@ void run_doom_rom() { // Handle input auto state = BoxEmu::get().gamepad_state(); - // Map gamepad to Doom controls - if (state.up) I_HandleKey(KEY_UPARROW); - if (state.down) I_HandleKey(KEY_DOWNARROW); - if (state.left) I_HandleKey(KEY_LEFTARROW); - if (state.right) I_HandleKey(KEY_RIGHTARROW); - if (state.a) I_HandleKey(KEY_FIRE); - if (state.b) I_HandleKey(KEY_USE); + // // Map gamepad to Doom controls + // if (state.up) I_HandleKey(KEY_UPARROW); + // if (state.down) I_HandleKey(KEY_DOWNARROW); + // if (state.left) I_HandleKey(KEY_LEFTARROW); + // if (state.right) I_HandleKey(KEY_RIGHTARROW); + // if (state.a) I_HandleKey(KEY_FIRE); + // if (state.b) I_HandleKey(KEY_USE); // Run one frame if ((frame_counter % 2) == 0) { From bb2c089faeb405b670986604502f4d0ef7d9b8fc Mon Sep 17 00:00:00 2001 From: William Emfinger Date: Mon, 14 Apr 2025 08:13:37 -0500 Subject: [PATCH 03/39] add doom which compiles --- boxart/doom_boxart.jpg | Bin 0 -> 5835 bytes boxart/source/doom_boxart.jpg | Bin 0 -> 1027865 bytes components/doom/CMakeLists.txt | 5 +- components/doom/data/doom1.wad | Bin 0 -> 4196020 bytes components/doom/data/prboom.wad | Bin 0 -> 143312 bytes components/doom/include/doom.hpp | 12 - components/doom/linker.lf | 8 + components/doom/prboom/d_main.c | 14 +- components/doom/prboom/d_main.h | 1 + components/doom/prboom/lprintf.c | 15 - components/doom/prboom/m_argv.c | 2 +- components/doom/prboom/m_argv.h | 2 +- components/doom/src/doom.cpp | 510 ++++++++++++++++--------------- main/cart.hpp | 12 +- main/carts.hpp | 8 + main/doom_cart.hpp | 20 +- 16 files changed, 312 insertions(+), 297 deletions(-) create mode 100644 boxart/doom_boxart.jpg create mode 100644 boxart/source/doom_boxart.jpg create mode 100644 components/doom/data/doom1.wad create mode 100644 components/doom/data/prboom.wad create mode 100644 components/doom/linker.lf diff --git a/boxart/doom_boxart.jpg b/boxart/doom_boxart.jpg new file mode 100644 index 0000000000000000000000000000000000000000..693e1437b505a9b77b6f3a52512aefded4f44df4 GIT binary patch literal 5835 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 literal 0 HcmV?d00001 diff --git a/boxart/source/doom_boxart.jpg b/boxart/source/doom_boxart.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4224ee7438a32b0f52c208b55f866397c8ccfd4e GIT binary patch literal 1027865 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≈6`i3bpTB6)kv+qu5Cnt7bps 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

    YA z{Q{P|P|;D`jqR07Pt+Mh4B`IM#hSYquVIRQ;x%SUn#V8 zna$Pc&G573ljwFle<51N-r#%{n8#dJ-2R!*oWWBDzIT^cuyil!yD{{S>b z$}emztrsk1=QWZ?!uH%G(qR^H;%8I_NH4lGWX5(ww9P054g_2qk0jyNSQ@LR(p~iW zHy6@5-(LYY;r-#{R+JTto)$>M;c&VPn5&cy(?C5?)ubkv0l9Ee`alBLRjMQobWJC7 zby%b7DJmw+0d!98;|ODGghn`AWi^aIJGVzr*`Sfo%)^H?*siNa?Jv?C+FI@y=h?5> zul{SDARiTwgQhVbn<(`sBhe6r5-e`BwL-|)THk`_wXV!Iwtv5$gOy9N ztm5oOmPhwTpP5!ezOunLH{@fn^AgJ)V|8VcUj(XcH^M7O2XvYSQ7&TFDQ}LxXc5dW zVyp~{rAY~Dfw*!TE>E;E{{Z4n&pO*rC;h9ga2GdR*JxX9Z?oi#{USmC0I_J(aWL_| zOBE3gJC#}N&Pvdky+W%Xw`^N|aN}};B~w^D&|fW;Anqxy zd3mi6$70;*vmtc6>=2IxSR17IKyAuuYH2E-97US6!W3tm$BmDwe+zKZwP2=XO#!3S zsly9nZwp7kSpyp?o=WIijgSohTauW@ET4rdby=M4j7o*h$;I~kQUjWN9g3?gKwkj{ zXiSYZMNSHAWLHK!(70SUEXgU!aRqe`jgmIc!po_rF}rMaPeT;!!hJj1>&8e|=$|uv zvZesN%9{~hKTDKX`ja5*gTgu_dT^71aO<|y4b57wbUvo z;H!IQ5rHV?2I%8D>_qX|Q?o8}t6$NhE3=IFafQxlG@_6>#98k*I9rj)c7PU5MM;MU zQZ2NNiXc4D8hI2z;1)2PLjp3SGyX_?R&IGHik39zuBtufH zZ9NojY#{ibYXZ8;+IVYAOWVZ3_IV}&v9vLb4R1geyi@Yy$6)NR5Ya~zA}$-WV<8t# zp0h%n$wK}*Vs7epZSLrFk9>mYJ(u%0NjOzpI-VwYBkIu}{(_TzW7(zLDlvhwG) zR>~))mC(-Jp4HR#f3?i5oAq|0(NA8{fPI+n_TMsp-<*c{RePdlVfMbFe}`iEtlWrfeI(m~ke@Q=g=sYPD} zY%P`thqb{+j=Jd67kwDoPKbJyB>%5FBP13TD6Z`h3NkPquSoG-bBQ%z3Hm%KK?dgU}i3TUEk%wTHsO$r~T_O6=Z z;xb?N1?pQBo5ZKoMe1ET9Bia9%|si2l5%ab=RnMn<)5V;NS#iOfu|6&y>Rn8e3ut4 zsK>{`=!kbvRleBQivH8rP7T^0z~4sUbFP$&FIlC+qlqD~lUyBko*Fc#5uPiRJqWk; zTx=YPS=vN%z7XfS(Q+4B`g|;=YnaWiebD6LG<0$DXfRu%PZw*Cl5w@uZ-TI~)NvD4 zx>h=xk`mbXjoi_fWeP1azE^l@rT4bWzKx7vvl!O;A`*F$Sas5Jrp$VXZK3nG;+W%P{{Wqo zP5CZM5RPB9Y%Ubv^KtQg|ayqZJ2KrE%ut%d(~%|or53TR?OTZm{f2ddyl<3 zGZ!N?v~gd#b^P3->$F_c0y>4JVrhNUof`nSKIGlvnlQyxIdzRbeN-fM86^E2k3yQV zpSsi>=6en|LbJoJE$=DnyFwcz9RRbK$2HB!H`#QQl_I8{ufARK!4mfUC2T`SD$@?M2~nYAGEeQ4Nsu|0JtrJZT?Fqv`ypCs=@t^zH45a-iKlLqkv}0 zXBJUlwUfHRb)RRdfGLmEk=F_h78d+d$(scx0(Vh{5u(5FQ4P4R6)B(IRR#=zpA#I>W$pSzkuVGnOIirH7y_qB2akw_q(y~-RN1E#I3n^b z_$m`WiQ$8qwKJ^Ts+8?ARB;`G0j$x9p^<<(DcG6o#Gb!s*UqYP-U1FC08Q}r8i+}RU(lPa;{?+9T-FnC9yZ-zc7Sm9hNK>?KLDSl?V9x6vY@!ID9tJj zXmb?6JXTtyX=RwtM0Sg11|fB6tKI5J=`qUik^)d-ntU)~s0X)XObCS?QTARN=J}mfQj`&qVr8qWLtr zUU*EAx!w`?r+kf)l(;(L*HrYkQ^sbEz=soe0yhgqTv=7g)Y8h@ifH9!%U(EwJDcIP zu(SIuBVR`)JF;Mqx7@d#9h+`_Rw?>q&^B@Kvxl|SE&ZrkS7$)bA|ubD<)w^{*Svv~ zOgVY3vV;K<9%{7?=)ZvPZ(Y4sJ!B%DUNAfd;I{a0{zx;z*&}mYE)Feanl6issLzCg z+ww;Y2RI8ih|tRDdIPJ2jhT0Q zl~5$=q~L|%ZgH||H~?!!z6dvT^0lXyR=q4XZUU~A6x|bKR$)CCE82s>tZ1$qwxjqi z&cUH@U9GDJv>I#>FwapF_`8-1xSmbtx@Hb$4e(pms~M+ika;X|$xBnHe!17fA5d&!rEXaW<$k4hT&xo(IKze5jGBo* zOhMDrLrG4`dU)F$OdKt1MSw&lB6+60#uisC#!=38Q6|_aT||-3Wf2Kp`wh^X@Y|cF zk>Q|{MVABGF4@abQ0*r|`r4D>l5yE@XTIdmLhX0K^GV@sm{07r~{BDL6TEIWGi zT#GcS{dTRj+U%vkAFHO>tyc7%5-I{}CUKsv{wGTFb9Jf5%IMxz1yDC*)1}x}IkCpp zM$p!QU;x=nNqm#>Rgao(GS_uk`F)x;(QLb-8=aM0P6@W&^*2f^uW3|Bk-tO<=VUA| zdxJxFH&pcvQaU)z&E9qaa(o@kh}Zw4gM=PQK5pNoKgTdb9JW%XC4@=kWx8Hb{DsdU<}^K z@X1kGKXFRKbGbxOsVXN+VfW(3Vf$#CTuio}tmy z#c78F{{U~7hP|X5g#3A2Su$f%Mh>Au_?yN>*mfgjnA^i8?S;_3cj>R; zcr#Kvb|12VSEola4OJ(KBe>|g38|x*mJb^!oHeqr;aZG|8ycW!QdE{4MR zUv`^WB6z~bmW>#vEq4pBLcdQ{!ftk1CQ&H|XLCgb?Qet=et{xUH%4}J(2+D@>{EOq zVA~SOT5iX*+Q<1U%{ECRi^bu-Y_(eU$N~ITd2kbru1=S;-LrEl8>VYyM?TTieVILa z72I4nTpNYs^)&I+Mq41_=vBQRwHk+J%Oa`btJ8)$zA@x{x-8i+sdE#PsnIp+f$DB* zgN3%=q7I#@QtH%0)9N(ZjW>A%^RaI*yC*jm-EsQwWgcdI zeu{gVo!=Gg**}3>@#KzPCBq#Izh)h29pO}^e+voORd%HLCVVwfx*CQa7ct_*6ai6wFNju&%Jk8LBLne!pT)B1S(k#*s(g;IC+}M{ zx>Gxr)K^GZ8OvBbr!3tjmN4U6SBhwJ{v*@gwZ4=!Q2M6s4Y)7tj!0KzV^&o+yAji~ zx{130vS*g!#ay2;*x;3Aou-aPeIgl8`KRN-c@NG+*&m-guSD zsDO>HX~FYU+S|IynG4hm4Qrlx1x9(h$sAUdK@{43zSI1cArCIVRETKl&Aj&HRb5S; z%~P7)k?4ty;l~QaT{|b3JmpI$$c3(UY*v*Md}WU25nD}w7~g_DEezszyhd$&swpG>Hp zLjLev`5-$*nEO&U?nI_dp+86ZtLZgoQOR)};==t#-+J^~r|^S)*PX+pm?dnjlFwqztIbnjMgA))g_{x&H21(OE~cO`lH!3= zU2HVn-2$iGK3^QJ!R2+Y9y$pL(mt*DKUNWe3>+;&E)5(lvJjVtbmHihT*O8|8C58I z;~Ske5qfj?6-biU7f7WxgDyyp_;{o_!Tg znk@eS99*6e;g}EzI9vAxrLG)JJA$$5w3kHVH6BLhKj4Y$yi?qg?!5q$GX7gcHRbTn>c(eYop zdCNzUM=U;?6L$DFUsf9JiVLbc%G!PtjNd9D?UUOr4(8RDsnOKUJQC4N86<8PCc(%d zjTX+V8^#JvIJe+|PWN{$5BBYpTjv`kGQ$TGg(3$H-D?1Z2m_+d)a$^KEjA}!qN96# zmUBMzDh^MAo1w%mtujd93@$ckBXF(hy5^(VcLq!ySEb&^H+(*xNU*t)wXwGr7DoZ6 z1P24itCLTLh2%oiK&R_JmDhh|Dw9}B%X zF5|QPsHE1IVQ?^3uzh3_Zaq4Mk2apUk46lbTzN+67k8>-`NEyAk@HMN?|s%c8Z(eX zo*1fPd=(M0NS-X_I9wE7WDZ_w4Rq1+%WaV{Ul-JeiSK^kE_jDtxdVq_n zYSj9VV>KGOH;1s(yc}hw*$1Irh+MB|yB8LtO;Y_bcTm*M!r5BGXy*R_6Mqo8ICT)4 zN?|Dg?2W(B%`gN0%ke2W$LTHvtlr9MY@woWXZ1$?6Huikfs$Z6av-Z=&J(yl2I<+O zQa9k`8WED@UhKN}C=oeX4*?*OLkRO_T9;N})~YnQooBJFbZ7R#+6ODQj^9-WlSanfRGmd!!O4~|U&)n6p;z{{ zW>speeI}OE#T6aw=?5b3Rozq5MM+M`DdTK$F}y8nMT1d=h5}-+X3r_{@L`nPpCa8h z{%OYcDPy5ZNTCa-z{yX6oGufz-L^2f^g2_)kYV%N4f1a!{8(i-NVq~%brWZ_eX6C< z;xV?<);M?}2X8acdCb*y8iiY{E9CDaJ2ULGbR3liJ=09-C3$?VH*?%_O0k<*<#h4l zjwMU8v!>E0a{DDwBb>v2X{lnfc%AZ5b9kHw;*G>ZLqci2DiqIa7)rvcn~lf#t2Na? zxU?UN%$58_X~h9~BmwT;=saPj>8G3n-9|W`cCygZw9_4?oL&5yc`d3tRkIYNH7=a# z?JWKla%$FOZ34{}0~;v;#f`nlfvGt%6rwO{ow{;P2G&bIlC!y3R78v>wlbw|NdR_L zWsPE<+|%0$0o6+-4P_EJsgP}j5ywa8jM&caQGZEqA zkM2s82Ps)|yuSBDZ0v64%Qe$Ejj$O(e2;$r05l$5k+Y#=n&EJ7?^fV=+UuL6tTD;J z<94m4mlpA{*YZfo28u@1PHU_crd$wK1XZPvv#_;csSaq{?^)*-5uhGNH6tyoN~&iA znuLL8;S*OdQD@nB;C8!_+Foo=aYsS~l~- z8G3m@$ypjM)7NMYWj?og={=TKv9}}qL3b3ja8^LspplX>;_Y)y!CZWdWU)FaSRTg< zIizl|BbL9h6(XvTzN1Bv{{UG9?qEGfkwN9hFI+PYY&FU~SakeT5zSQ6by`hgiIr5+ zhq1%n51PH_g_==ohGlAq@Pas8E)L;w+RtWcsAqPe+4I8VnQ3p~fB1ib?FH}TqD}Ht z$2SICXSJR`s%q@i<)mi=;H!p9OAMmKf0Fd=HT~rjC&(gJ=^B2c{X=~EDq=roLOv_j zTrrMo%lkym=Uu8BUDv;;Tl_j!+BRt)XusH6e)CqUp4ek751Ib}CFmqwa@~Wb;L|3Y z?<|)01=Zl6Pc@HSJ=ve|D?7Q7IN0sxscRLYgGZ~XC;KRz?|rbY=Jp|SAEb)!qV`?T zHvDx`wSW$TC**@o4fzyBqsHcUc;`9UCnXk&fKB6hz~yBIQ@zKCuz}_lj8|+Sp?bF} zRE=11{Fmc%S{TNQ4@G*Jz{v5@W>dS2fze-~%#t2UEZMp|8X)*?oub>M({W^;?iO(z ztkq*|PLYu}jqbBYRhuPStE4Q1@WeNFR2@cVNh26`&opWVv_pGyPK-9j#mU$?;Sj>d zG<~shy{Uw7x6yd@c(oPno+0jDy%8oBe}pW0$8kmtQs^zmEz@S#DT(~uE8_dEQ!*T< zZX>9cf&ooGb10L4D;2>yJ!zO4gI(&-y%)6OiWogg**iuqoIm71Yo{RY=5?a z{-VeZms&UasGaEbwIoF3A#gdRZc<-Gyk;Z6T)Q7bzoWtzcdG+`)zW*Mx(muM3XgeG zJ(rR0M5exq^8Wyn1h-rpX^$53Lws8Ehx(as{LNd&O2hu#g%9apYG)sMC6Rpq@xQa0 zlTOv1Zuk%VP5vk+Nz^&QNBsW)=DNP>L+w1DdP1C??u*V~`3EQZs=Oa$f7YbUBD|16 z1O8>!3Vupr5IKAmexgM35zcC{R69d(oU@IjUxfLmtcAu(P6=MlD242Cve4HfAF3({ z9EZ#*^#h7Z1J*ym6lHNOE@%rNcy48p-l&2Xe%rqFX|Z8BWw4jHbAe#y~!2M_(lX4OC2W=#J81<6NWT2Q>7n6h8Cu%%;&US2 zS=e|Z;ccv~G2^X85Z3rBtYCD%I+39*R`^U<7G~9-^$oQ@cp8SBy1fdW=S18#!lDht|_uG z&;vz)Pr|LcDk_LrsarP*h{~A2R7n|Kp*%Vy8w;tXUW0?L zon$VjOFRAvZnmCqdvr~d=_o;SPi{pkCbEPU6NHnGH3%evK|iXZ2y_X@M1o2XardVQ zh12Y)u_O}aok9(6Ns5w*=%}(KMM#dRt(+??lYG~!ev5Ob){pnC{{XdlOLxNcKha_S zi(U`yx8znWcj0BO&qrnNWOnDD#RY>HMra<3%}cR_v%_+{zqWNBMeQu4GmD9hJNYkB zUQ_x&$7s#Jx@y&;=Oqus_LNzyxVFrPK5k4as$_Q`9}T%IhCH_+S&pFJE2psx-r3hs zP4tLEws$dQqQ>)F#+6tbF9ALmE|w?UVRLiGY=euiz!cyU{z)`+QwcT^9v*|>fmqY@ zcmDu|S`GWqD%2+t(i4%j9vNL;!3P3C|uSt?Ls?Yipf20)x;Aqvy{!#o={HX$N*lZ1x zTbTK*6WR*HpVW1pm_v7HH84CKpQy)K0tg*@2d`L+w_Kbf&L4kZFZ_#;?dmSBT&VkGPh`=jYL3psuzCL1Y6#^T0jJ5 z<#U1!MtyQBxoFu8O@++<*f^7aC9=sX+A$no^`GFAlbR>Nsg4yFScOZ!tk^amP9l+- zveyiQ?tfZaYn*loQLT|HpHjsyPyF+(+V!)Pi00P8=&T8LH^v{3=< z54jXl$8Cb9YPB!14LAJHC~luxJ2H%UaXAu=laoobj4tB9R++&YTuHDSu5x`(RnzHY zs;zAlbkUC!n<2lrbGpl;k6i8H0ginJj18S9+Ly?6`6fpMpD&?unq8Nxdq-8O*BvXf zaQD?4KBW5*{{WX&(DrAt6xtDeOwTo1jJNM99y;<1Ur5oYbUGnRLkMF&(K&OEQhBTS zRXnOIYz(uTkgv?9x>x2CbLz780QXIUvSMvz0_$ZGM527RK&YvXo)^nA+Q`^AoZ@T( z&enTDL7`GQqPAes_E<9Kc>(6U@}{p+?VU$^SKdGam(TCI$Op!G_c4L?PNu)y8{am4aBK4n^KSx*Zgg^grw!$86uu(D#^|0=h&ibRFJk97#hZlSOo{o z#e^40a)S9cvI?_QV31e63%obF3!Zr>hk(-KutuUARD#VrVP_kSkm=`^QO4oI)3VEJ zB&@CDd9*F|M^&kN3l2$=RHzto?3<({*nHD*5NvXXercTW!Ng5~OGtAeQ^4q5$Ly?n zN~x(_d#72BIcesNS2?IQZWul)wXKdzse=~S+c^5H>Q8De7q)kC28O@MMeM!^KxOY> za;~tF06VM6NXD5#z=A@vM^<2v2{Oavr6f&|X5gx>j#gmgbx4v-)sG`bOwJd^9K&{% zD5bU*6&-u&UK;$yehXR7Y=BJ}xIGqW!j16Cq>V8tI4PaN;6bq+3Z)f5wXQz&emjmJ zv$)XK6Hb=5v(<*PO_PcT8_7=N;d1n?545y8X)3r~-g^=>`$2o$nYMDghxD^2eXVJfW7_V^kG$LPU5yOoDX6nbliJQZ zPl(cXep-Wv%>EJRv8rVubvol&PeDse!C>3%&2hC(CQEW&lNvEe+W{l)QE2Im@@EVl z(L;(SO(0`;D@J14XnUq${i2!+U^N=RSlW2ap=QIWRB0>aqNoza>saJ+C{+%-va1q; z$ac|9Ppeb+kdWC&w9Bljm>n4)jI3HZnJMZR_}p4=$gZ+U1g#F4t;oI+DOxD!oZSBa zH3HJKq!5RjGYSO8G8%-wO014o$H8J%+D$d#;nG>5CQKaHaE==$@8WNW%t=0IS|JTX zhHA3V@EY7&>M+r;{jjp?Pu94!oTAZB!t&Q2iWZ1$vW_9U(Su-Zt}pLYL-^ldaptU+ zhK!U1Eyq&En>H}4vaS4@0?vu;2IW~2vt>-QT>50YlkrSyWj|};tBD$RQw|3q4Fngz zl=Jwf6G^uc7ZBM$5bCaru)=A7XsL;0{jZ9y9h646T}mZ}5>K#tm~}zOH}|M8@2Kt z_JHPH4C&lHCY!YKR0ENtt;EN}9-~Tb$NN^~S2GdP(C&ka% zE11=2WT35*o>6BsmeKg^ zs?=1MJB5kJeCLI@3iUk$BLJMc(QAYf<(&MPTj3NSqfaRaPCc+#9{3PwkCWS6&cLab*O%%D3FkRR4l<~mE3o~z3 zWDcrqr)-X}e+!kbQL7eRy^v!$1BEc_Tomq&@VK?&#SD{tq)rD%9z`S<1n44JoLxC-@3e*~mFJ-|YdHucVEvn znA&k6;so2G(WjGyhKv2lGh7eGzF94AO_Nk;mKmJMqaG1^1LT&GHB0Ebx0g1eFAIS_ z*H5`#Yn*a06yc0Ee(-L0^Gn_7rax~sX;I5BcHZ;awrmxL)PQg&Sh8kOoSuw%4;*`~ZSTDXpt5;7QUjy3X1zcwFPRu!_ zON`p)=u$lF5G2t@L7?`@@yOZ@a0uo;7F2=Ylh=?dwQGcp4r8tkMVFKCvF&ptU~@># z(KPPR*Y<8^v~kqw+~OwgkNiCFm6HOWF*9V-{KWM#2Q=0rAO%xQ)ai9sG}oZ?Bxe&DMWQlEt!Mrr)Rd$&qc*H zI{gZ*v>LCCpX@3@@Vs>OUYKw9D%I3f`h_#;s-hA^?nmeDTQO>@(=LYN%HYms2a8x_ zAnH1Y(PH6Yysz8y+&cSVlH2L^C z5S(YqEI5dxA;kBN_K#J7`5jMI=HxNl*3-?&cQCRwCUFiSf(qM=sSelhIPjrYRF`WS z8=mX3DxvPV3ZpA6hweG5mGimofy_BJ1kK zxSF(!wjukyT!`4~yJ+a*q-*K4*5+y5yU*;m)BM+Wr|FcMO&cj`A`!&iLv!cvT#S>B zF8d}-+ZNT?S3>OV4ueixOxHeV=2_%7e21wkV#)xN{#dwN{F0R2vlF+=9X59f{L_KW z0*ORJN!=&8k;Y#mgILjWPAs$ajc$uXrthks;y%o6_MCi|oA!gWwYsIFoc9#RJD>PSp}4S5Cq~a`J5c>q@=$4#80lMn`lt4XFx9}#BV6*xt{KIA^H*O`)=|tr z0fE1V;;2%_=`QntS56q#IPi9K`gM&_YMwhb=*Iywapm#5U+-16g2Zv4M?6=%25UzWiB62xlY|uNOBH_wo_S3 z!*s3D4U&l2F>fHJZe=~WDP$pTiC8HRc1WpYA!D*)4fFC-^-;325F?s_2a+iY1Yr^= zkDny%aT^r966<8h&7fKokuqlZhE*9UUkkW^yH)INrY!6do~K~+WI8D2xFdz$N{rOf z#c~G|dV;p+g2v!sQh$XQR%AvTW&?zbt=Ob2V6vpy403qb3p%SM?Q?u3DVIKz->s&5tf{9`%DJxcMr3ieMTB3(n{-)MRs@^H)97aGYvt#twDpqQe2I>+XC|<_^<~Ui+IRq$|7g(p_xLB7Axg(gQnya(ggtanq+AfNWx*_Nq-2t! zHpP@4EsLU94b&V5HJ(ugFa#aBdZq+q6z;Ik;)TVWCC9O`Jje96V>X@s7yb*($5rV+ zrFUMZPXqQJ&&)46iYG{Mx1#krE-<4+Rg#X$Oma6`RMbosF3P$oAvPQU`;%prCTUnC z(S*mk*lH_8mcI($WDz%JG<%VRY_+%t+?Ml%w9Ln&ZA_9itZlE%h1Wq7TTU45?5b17 z!GJyr^8vNW&66(RyuGGfYx{>a?b)Shf*lhcG6=e(sI*Aa69wGmb4_cTO4y|KnT1mJ zCJ)GFG?tNTU&%-4*110=a5ung5@oMr@kmn*bay?Co4xGxah>9EXT@(ltC8$P+%r~F z6Vc#&7h>VfbF->!M_gb)huii9#7p2G!!{oUx)zJMSs)T`lDL76P z(PUWXY-X9%jh@X@eHTEbV}+bs#C_{ieAx~b_i(kMzyJcB`YcnH`MC>|xi&qsn=d=< z?y*WWs(m^~H;y>C>~_1hA8=lY=DvCDjc4mV(^pk-U8Yjj=j^uwF$%|2*Dt_V4;$iE_8YyI&qk*A!R5qKj&dpkP9`W95c7hHF?%|TD zP|~&tc;A;I%T*_M*qMOuC7OKnXiT{z?PQ!IF60#23;nOTS7ZT)h~)Ju)MO3!Np6C( zGggm*k;(=dY*8tI1P(+aYH|0p60~n?gbF!3*duTofSVU^C@!P^q+8K?)f>2|V0T#B zehbO#h3UZS=DkNoc#}e*e^^=aSoNO7WYu(wm%hTueABwv`KEV1tB)fYf!ZN>VYt3Z z=A9ocz00WW0K5@f_KN3Aadp$vOZL&y!R$pBMay&(7~HGRVCaDMb33g{V~U;HV;CHf z%W_JIXgEc<5CwrZb}h*tglrRV+hulD0N@*sntl#J8-!b6n#x&J3xk?Lp%C>@aRYS| z1(_P~AF3)%zRIM0V@*G~_$#{O+xn`a{{XYqQKmdm>BRDA9|f)-j8gZSftGE86NYYV zt&wIb&lbu;W|Q#NExA$vfR_jxHh$t z!hft9bL^GoEnb=WE4irD1@XewlUw*%7iXt3_eBGlLv8Ge+g*8?1`rG{Dg7XVdr0Dc zx^LpWS-USR{U8hWkpBR}Z{oFR_?YZ{oSRyu!F-hMZ$&N=FuImHiNxnd;CY4B==H*) z%y9wWZPjwj1BF|pmDKeNm7BER)h9F*;zhyUH>gqrsvIuwSjV*C!uz6g@?5cmfZE74 z4ZJVM**yG_f{ehHJae)rdx2&JE_5~n%oJ9%3RVHoAyC-pu@CWl)rWtpx7@YQuMJB#K~V?EI2_O1 zgoO9lrOx2pE>};EN|{68?ea?($@r$Y=o8RM*PzCL_%Cv!a(_`Ui{RD zpUqP!m^}Xg6+R(r6f3D;7YIsadFE?s7{c%z;7A^bjd-@}I=BA-G^5VqPmos`bI}zO zu)@TW6M@JkXer3H%F1kKV0ol41=LB+lz;?g$`mW|RW&_Umr12F)W3gafcTzz0EMaQ zvCuh?M;oduWj2bQF?TriJnXG#eT;myP1Uvc3F`Nb53v_dBV^dcC35Io@+g^FS7z(G zTU8#XuJJ{uu-*zm_PozLuSbd~>EUEiFfuj{7PX@d2!`prlCtJ={)}z6*ppmr62Bm# zY(T%wAfjBZQ+n^{qD{!Q$&1>?l1+fk)zJrWwbvuse%M2#JW*0KRO%9YF*M=6ZvG1^ zw7t5LdY5SZo%-6N;gX~e1b&>ZI;@>5NsfbxSsrGpeq@>XE+8FysvvURH0M<3BCh30<2-t~aY`3Xv(^m^Mz1(;90aaSl!X}v6oQ3yUyc7404+QhDR|Itxvo)Yt zH(&+=dWwqR%T0omI;N|<0|Njpni?Tb36^37h4P6V96Ed*{ab(oX5CaKePTNfDGW4T7`8Hz@>+Uskp&3iuzbAUcSedh;fyjifYIcq-v;2M@AyYc z9vbDA3&7a{@9LYqZMVV%vVb?gy;@diTnW-Yj6-a6y8NW|8 zd^$R|+X3r5qT`cB-dHEu_@Tr==KV+qr|!$#9+9;(kUt zg?1{Z76w1WI;xZ-B}~tgPO>gfZltQGuBUAD(>6%mkmi(EGZC=U^nO~c8Y!~px@bTmn8oH9HnjQ zvv-wKIAn1iYL1^x-b!SDu+!0c7^5pJ(o+gre);~}wjCCITh2*Zb#rkWjkyJjQv2N9 z6F?NCHz+4{HyoyGOPm18P(_VCoYYjbTf#Epwk4m6M-Y4?11Jmvij#zYX#LeQQNx4H zODw(KG@BEWs(m%0Qr81uQ%`ov(l#RK6EglF5dzs|)q%5k8aPhsRWxnxTUky^p>_!7 z(z5u7Ia(Ao<^t%PZxontLdaH@*eD!DuDY{O(#Z=Cv-VX&tq{8e&)(|WXLGkd6_m#j zu~wM%P9!v=eekR?*0C!wkFq;t>Vd?TXm`C7#N8DUB9N1iRY6&Mzvh>H(Nhm7jVB7I zveRWKjgaoEH5s@3g$pe~!(1IHSmVhWSW&59K49FXAZzJl4|C75^@1T1dT)4H=uhO`UK0q*7V z9E#o2>X|(|OGqvorkRX0OB2Q8orDmEXbe)OdBil&o<^~Q2b$D%D5UTV`Kt|tQq1_j zWZ6Qc+()XxH_aZ0Pa0NN;_6S{qFy?oNdE5Rm08o5Ut8%0OLAH>yKn*uWjia5;VoTq*2^ z%OR1nkP2L|m^SLHBuHO%Ca8hW@KVn|lAD7?*yTFacMgiGkPHs*HF7 z!C8s<$_XOks637=*-k0Nt~Ww^uGL%;B)Chf4$WrCe3Tlx$y?pg)1T=z7-_e%Ik{F9 zEs3S`JAyWgmn$8gfX?YPT7mVGVjzCRe7^J!DJ{&YGoYY>lyuR+&6+i*YSW9~R#wS?nztM`VJ@O7@oFT4IVp#2X))C75@zrB_$I@+e}e5s6Y|Q@hdi;q z0)*ThqsZAiWF(9otU}MPHyhb{2WfjB^!_^CFt#eq-5EA)zrd~*JtJ7us(yscI&mva zpT^!6x76&rIC4g7ayk*q8LK(DZ^e(2?E5GBKc2nu*J{l%Qu|GWi#ktUfpy)T>@60K z=2cbj)mCl^9th9wkHvLl-6K=2+v$OuCTrp(B8oU7Y;iHHjiSM=76C}zE2Mna9o)HM z2>E_0R^$=@8>C2UO~|*JB@&0VmIr7%QB9&Vx@D%UaPY!KJ@cjhHm9e9NNFqpD3+QtGO=_q8wfafXj2l;=Iw z4G%Ya&dH=b+?O|eg*_cSk-gK@8@%i=L{1vvjtY~h) zEchIF-z0{DcbubVY(YGh;Z{Mt@*Mi3T_@s z5QVvHmAa|&@=b1v6hMqwF#$}DiLHeQK#pG&i0Y+oiZ(lhMG&_%#3|V9n2uptOc@;$ zVNA5_n1o4`K`nxnxfHBXrU2Kz=o8a6M%-?XZi&OWa!!oOF=S(-xNt$ekA&H6%>!j^ zmQ6(~qa+m7$#y8_b8vF4GC*y0MVA98pxa`VI1P-A7D@rKolP7S(OLc%{g;i^COmAc z$1oeL?KJHUq}4MzN-v-i>XvagliDs1;Kp8FY`T^kxA9mytZ-CSQnU}RYxtVsxC>$lIE9b2IxEe}OiUFPK^)S(vX~x; zfwIRzv`*p8EpWR|78ao&&>eR(ikaVQ_Ey#Mnnto%oX4~|jus%M;-1DXakO$1v4y-* zkXly0gW8(y4Z(rNqL%(BoPD40u6I|ZsL^L}jqWt^dp=%EEt;f)K+-RMYpt?5A^aI- zj?baAy z6`*D^ZN=!hT8%4*E0iKwS~q3ps=DJpg0U&xReAfC6^w}))akX0H?xn4$4ZM)t!~e5WHjnnzI9 z_;2NfT*x@_zpAaF>L*asj~%<{jhqKWR{~@{t1O|l(;XRFHoG%d^nTLQg6|B?b3OdN zOVQjdh2$o8Qq)q_wB{K@wqCZ^wn*6{P1@#y7EMHWvj(kt)PcBMs#SEc)V?P?e`f9= zuQ>8KLU6j}w%0;ap@8`*4CH*&M#@6R%igL4Gxh54)w&IBUB}f#NcH5tdX$&=j^`zM z_vt>k!P(fU8f@yBKqL2CllU(lnZbhRb?H1V6%F5I(Or!)PSy?Xx*8fGOZATS&J`^R zn~Hw*;MLm!Y^yA z&3aB6>NXR*mRhzq0Ot9A7<#Cy`#6qd34ggcD2oo&1hbc*w^uPY6k7X=QrY!tzWcd)cZ~U07Vxh zcNzF3dWFJ~jKEizY5&ZI47RDDttz5ww{pE&Pg1Q=a`)J>X*otp$wn1>_u04nj zX5nd4A7xiGp_coVqaD;tdH!hk6=i-7Nvr_Muw(K~z&WY7mIH?<6*I+69~_3=Jk`?9 ztDM%R?<+V5vcYe9ZYb}S0XgkNrPdC3BmV%Xs7?{Vr$19bdX|K9_L2|OZ<|`dR(n;#Fsr$j%EFnp zMQ}IrUZ2<(1KG((?9T6yUTMM2dPnH{8XZvSKHu_$Ik|%|YCWezF8zJ#x%Bue69dr% zo?nXdzap1Fh&js2*V%mzuNy~wyw7GW$&Lp;cCy*J z>S>|w;|&~1uVh28w>1p&R2dg- zl^Y(4TjTLeag_oh;s99{l6TX#F|xf^FpZWQtXU@Ru5aRU(TX1?Jw{qo9S- z>S3M4^P0SEOxN;Ar?=+GC!C?TNj;N#s6i#|8zSyjgBk!vR0dY-aSVF^5eV z43qw(J87)@6$i)>{F31tsRF^02i&4yNh5znsciHEg8l=;W4hA5Y`Og|t{AF2hMO64 zZ#B7p&DK1zsS6A)cje}zA@H9>gMw!t3HhOqV6zWT&YH{hcm2rD7LLlkm~W>t{ayb6 zaaLV!6LqS6g#p+I+bTxkI|qi|Nyxu1f>_%rR^RCF2d70@nPX3vRbsagIDQJWM(q~) zCN78+n+z;{QNT@05?|G@Ollw}UH}o9>-6boferr7D<=L9-WZPvTY@>cw z_@&V(d-PExb4|t1WtFXK^jak^eN`q;u^V#do`51zw@5V`FIHATMNImNi5nbIi@nb{ z0eOzE+8s}}GQN*WFQn3e;gWX?IzjyUC0{LfY3FRZi7?T$-a1B~i;pt2Vc>=~#S=p# zZomsC#EXPhd?*9PtP^r*o zq%Nq^CE$6>>D+u0e*(7TnhIF2BiS1p)Y(&^*6B3|$|;^*-P+`fUi}lI+UN_jJ}AFf zww|rdF-uPJ9|0K!YRM;nSq`q3jmCI9Gg~>syo#vF%dQ+aTsaV_@;)lV$oEGHAYJ^j zxouXn=zL6PilzMeE`nNu_jfS(r9AmHXV!LeiWf-93#w0w9Zc$LPT#X_)tYL0$rxs?EQ&Fb(aC9)+YqsXq|$`M zTO*lAsIR2boAhc(`}&iB8ZbRoDYY7nLPJeK^>7S2LAh7xwD_pS!*27tj_4%ov9Q5q zSaiwjrfp85{w{5d3^i+g9x)hTumEyS9ClLT7RpPLX4qp<=*^domBgPEel>MRjS+_wS071lhCHvxjVeMz^gd0Vi`+04{q*%LI3 zBS7cmgJm8bi%yD&mWRAs$!WSUt0hj!W%Bb^*ufh^TBO#7fY2>vE)=IBwjp&Px?t1E z5v}Th$QH+F^F$oBOdI5;0!*1`apa^jkO{yy$Or=!xum6UB>XB68646q>ZikOr{S?y zKn{or;x=|iq9+w3Gagq4 zYC%@h;FMf-vOD9uc%sPYs73>Tb26+$E2B0aHIjJt^mL;==pd5D+akv^;GLC}vKVS( z$a7BVJT_s(Fy&5W$qr6Jkr$E)s*&giw-D6!ZluoP9cyB6Ew{97xL$GD=67^;HBQ}E zt(+Q39Ntaprxd?M?4KXnmmhlQX>rxFkEw!(2e&5aYTzP2?{f0Rm0FiaB zACipM^Hdu9Wfig?$wCpL*A2=be=w-FUaDeHs3PxrIVm!74pku_QV$=Jg~TMwrl6cA zZAN!g`^#ZBdIB1to3p6VwFg5`(R>^&daXj$QGpr@Y3V*nq?7+_c3Eg$s;_qF4vC7q#OnhLFE>R5*hPuY0oZ&igYWO2^} z#(Sr6WAn{hs;Z=~r(l_fkL;1Ved3CGT~B%E@elRMhyL{;e0X5877@ zci6WRXS|APaOoX#;gR|1sK)u}>TE9d6MOVl00Gaq!%*1%<4>rW_Bb{lC23H(BN~DU zHEmj2hrjA$akt>Dn#yiM_;GtrLCtf?@tq+-M}a?a54Zxtuc1R zF{=>Hh8dXVlfW80g19DRG;&VihT`2%B|)^sjfyTix!kOtc^M^hH0GPK28YRS+9^~> za?2ESjh2?x1C8<$=Ur@Rdi7^#oY>|rsMG%UMm)Tg7@PnAY^<~cgOHIvcxH)XjFmId zXzL)arH-PWM#&S!+Cs5~=Gt@XbQ*_L&<^^M=JQgM{{XqZYrNBSI&D&%O-}ocZ8&pJ zLN{1)VM~;AGhuLl!Ep6YY^NaXqqct(os=Sp4>bH`LioCm7bI5E3EXnYNR#<07v>Vb zF}fYBvR6CdB*NEO8vg)jsWcjHDNhvc{>~tB@8pgc+?^n!7TqHKexpgH(>i*&glrv7 z{y}-ZzuNkZUy2HHV5Qp!#Qy+Qg{o@xTD4iItdooO8TMK{f~Syd7fTMFFy;1i^!h}- zQXWYzEX##mjd0>Bz=_W{I39{JS&eehyWt%b3M$7Sbk1=eA%xWx!Z2DaTy_eyl>#Qa zfLxM?PQVG4LwBDv=wZHCGs(454qRb?o!)s}Q*4ffrN=HP^2wW#o|jhi{U!CT6G}K@ zzdy9LLmG;1)q@b$RB<9G*?jdv#Q9(x^bpvjG(~mN)GB!mJiXp<$(J*E_(lY1x zMJTt+2G$LfxOpjt;^iwWlAB|cXpNGxm5$$ndmt=`8M2+TbpBx=2+E?y0>k+ywlbyW zo0Y<%#<%9_tWI#IZli2$p+sz$^w~<@w@gB^5g|3Qr_RbG9h4}69Mf44f}?D!D293@ zK(@+uOj~tegCnA1Igg4Zxu2R`JeAo%xOpXSAc9|SR6_gK$s42Kncy>+0`MM<{ zh+C>>K*<|tWfU}9A0*+V8+th$;PGVf+v(LU^@ zDk$+5nWxmBDxr-`qX{0-ZgOPmc6nSG9uq1+K*b9Y6jO%o~Ez|GD{>Z-sS3~g(D z=IG6LMUnjvj4!hLU(FMVRgLD^QJSfdG?GwNg!nCYfte=3RG(6FiDVgf?Q&U?RY_L! zlGyqqMp_%fIVQ&s%QDV)(PoK_j-k>@{wZC|@>G5l9xV(+ zhaJuT06U_ND`1PXb254pO3N3!pGD8n=?#s+@;iuypypk>=bC;#27tEX^v7xz;#q}^ zW&jAUr;ckmt}#s0c1XjJRvx3Qvrn)rc_*T`MX1GB0DMol_=HsI%BwqV54G+OWd^R` z$+l$QW=~#)bx)8SgYUZXw>B!s%oDcv<~b`A9i*%5%&eu<%jckXhAF_indE&IS?QDJ z26^M#$=hoT6X_Ljot+UM1><0lSEy^c)DUPARK|GQD|lEz--&rkrt#q5`6ub1)LAjg zi|lq4$PWAS-tuf^3Tyn}wKO(o5~=+v4s$p+InD0L{zPdqYs9Kv_}aJmT?M4r2<`c9h2 z8T9Ib^@sZ~M&4@7?*QMglFO1?nCx5vs_{Zw_%BE7t!LA_HAf*gb6LReR^fS+l3w8M zy8i&t?Pt{1P`LXq60}>9!CCV{@ru<(<9|nF{)k5Q#nE4!C?6%npJp}D4pvB9W8je) z7Rp4}Wk{BfC;cea_nPHBDB1|Px90Ei3x|S*^(4&y0PNa!Jj&YbRL4{8b$o%=XM5d` zM&TAH$ft@J+rt|-zHWV2s=&OwQA6><-y=}d7>)7;uob2b>9WY|T%lA|!%EI49wW#! zDxXT4vSyd~A_Le~?VA!s$_bw~s^g<-76s!eY+TYHvSNVWoI_z4{kCC_MZ_tZh$gpc{Io>6$*e{`&V z%g6ml(nj(;{8RBdg9gG%%QnOAvh2GM{{ZSYx0`2h`7TnV4BI~C)AlIaOQ{_vKOmK> zcZG@1?K*RPtemJ^@<<+B*9Jy2Gg%joKQdN87|Pbw$l-_%rDiu}y9cn@i`alUm%u@E zcgg4Et`W@*!^t+rSyZyfZf;7lTkb-0MXnJdSONf0BPwq;&*FmT+aH2zER96M7-W#_ z(S6q)GmMfKlXC2>-C}!193cMyXmjYWrWTli$#2s}qhd2RbVAtvN-iA2pDX?eh`%MK z#Fgp=;&}2>r^Ph`jt6+r^G_puBqyh7G&EjS0DRP&;E?R;ZOJ!w3MGbYklNhWI?do+ z4YIrbz_!{oSUCFs0RI34E*{q={Fi;$R`BT6By*ep0Kp2T{Vc_*_L~z7?UH~->dd1z z{8e{gE(7dLNE~5O)y=ee!hgAc{i^Bc7IwVu9R|7I?j7=4uzS$>c8?hi0>v|rR72Bs z4h|<+FGzJG3kjxEmrUtM!ssJqg_TMeLnE+S4FG5GS#wU=(ZLO?w#n%jWso#2@Q&1Sb5DGzwFNuoaA@1nZ_!bZB}&P5Gsufy(d!Dx+@a7h7~mjooIX*4ql~vT?Tigk6&WN4-W@h}&|ith*XnLmElK zrNm};5yJ;GH_B=yBkToUuBZXsGXt7@F`4I1Q1`Qr zgDY*Z*dm;^`cSAxf2o+d>^ISBe3(k}%dbw>oBdBz5BFtxxQN()1+z;pLpi$GB{XYi z@>BXHWd5sZ=SEFsB+3wE{$)8z%E&h~tz`a*TdJZ6bSZkLNCgNmw>18V!175^1!U;~ z%|DW&#v9MlgmQMJx^IqK^9c_oKW9C<+xY@Zs73N>02D|l@ zGnfe_gnU!9kN0TPgXNfUNCRwsXre>O%Q3900_GRn(IV;gF}vKs=3>+cAc!89!yf?z?8b_BbGg=T3@e;4%LIa_AxL6-05d zj?-!$S^&5krDw$DR7lFZI>wQE6s0za#GXr-{{Ts9K*p6)nqJXWx(Nd`ih@f>8Cm0k zX_3trG_2{dk^9`d%Cjx3N8-7<4MS3=qlz!pl9JK6kSiaowK5O&ZNK}(*<+QGGe<_& zjsev_3H4ZGRn>4mR*(H;j;X4VjWNIa!7s~@-RQfh52`AiKlW`sRa%P8Vo1n3Y(#&? zRGTie8^S1JXdmxxnHV}RdN&+e1%kxX>}n{$H~Qe2$69s_Fpv3_SJUdU>U1&940kf! zmUc0e*h0CnbDf@vOJL9y#@OcgSTVm;k7`Jr{{Y^iiv3l%{aVB6Fj(9h3eB(q7P@O0=BUghrDR2dr z>dkx`jQ}4nr7;B8_Kmq6n`eza~X*M&EbUF7Fox{_n_HO{?uY#m8ru-|v7*2t6xRm`3JPZkU`V;^?B|`MQY_A;|+MWxy2|$zZr%(DuexRXa)07%D5=cwZ>?A^a{8!VY~5 zjBM5IS8OReKM!;Wp1wi#RP8zSJpf#U6m=C7{XbNbzpQp_eVF`!+X_*3QU+7Z>ZxBn zeEE{8#_kUCLZXtdOpsA(PwyG*#Zmi1q4Q6usMJlE@$Kx=^VvU{NQ_)<)FyM95{*ca zDxFqisD@#qgJVU|RmGr+FmUsM&PF#S6ha+sr3Q53u9(Saq6&>9|1y z1CqUjfTm?I_{<$gloLjVBci;=vS|2*52}oj41%f?Bo4a{6B^tz9!-XXQjQ|if~@fZEOuFO)izvg z;H)-WZjn56&C!~YF}3)OGYi@5KX4OQzxpPhL=Pb1jjqVoY0u*2ot9RbWT==_NN>V8 zTXoUVTkPZbgQjXs0~uk-WzOI;)n2HR&*HLbU&sK{KrFv5y&Q(hQ@C*us}^xP2(lZv zsnf;YNC4R;MV2X}5X5CZ<(X3{d&ycA^9b4^Z$*&fcOYevMy6*J!^Iw5&EWQ?PD7&s!n{i@^0U*4VJ!3d!C2Ne~Qm%`dk|a#l9~IV|jqhj}>>d@I z1)Q~L+r>uqlp!-2;>9~nmV>CvvZM3^z15P+ps6cjgq0(wKG@2ZLXb8@Yn0zbGk(cK z?qqHYN)}mVk4I~jMltuW1z2QH=zio3FyZ`^!}x(itT zh>eZP78$R)AaNrI91Z~yx3}|DOD0@-C=m0Kq;IfI-OBtmr|wioGF10$?LK{0j;ByV zm;vOd)6rB3TK6*m-z7&@lnREn{FS3T`DbI<$;Cw*;dXiMfi)DZneA(KJr;LnYP-6Y z0&ETn>neb3!NX(C237Jedx_4SKA@fKirN`li>*@Tl`vXH78$k#v&osvj##>*wyp8t zs}3wxrfUtrx>`ngWM!!9TI&LSDB@t@d;C@egt6BI{pm+sSZqoyfNy5`eo_)xtmvy7 zAidGVqRO^WdyCDNkVO*Mtl=$@8!*`miF=JUOaidU`K)m_Qi|F6{t0dcsnN9AZ~kdX zO9bu6vFa9dbMz|gQ;Z9ww9wdQY4B30(`1NT0_OQD1&23XR8J1UQJ+nMsifP1_S_*% z>EPFVNaZeXa-6lUz_BYvuS%YmE*wn#ptH+3c1D@k$C5KvnO3Tqk7bK*=BhzcE}I*v z>RI%f7w;RlZ(mK(CSh$E3}X){+*}1&r5$6JW=@-lK0qHE!MW9 zPngR}?ht*ZA7$R5LZX5VX^xXmXo9p0$x2Qg=G63~F>-Roax+&sjv=Qiu$l61RBIuU z8ke$G7ColU4i+H%5aV|Vu}s*K1I%o;T1abmD`JKKT+ShTEUI8+sBM=+O3o2;g_|p` z4VYtmmjlQ)zRD8QvTqx29HVEmbl_hqwx?C}csLpTte6?uXGyogsq`~-2`V`0iQ;U2 z7eDrtsmFJBHvnK*sx-_I#u_hvWnPB-JS5>Vs7o{{=5c2WkF=uq3aZGc8U2)2l5bv3 zL3E6#h0-2em8~)^;uk&nmQ%*#=lqhT$0Fp7cDMmxtIwxXR2#Z59C?79ugXrJhjgSZ zzy&=iqpCB@E1we@O`V%6x^!;5)iUO4hnF8A$SK#=i6d<@4c#fR^yY~f7q?6zc9C$0 z$$6XMT!516ehPz4?Pa3}C7NRyqY<#e4M%%S{{W^@N!--5X2-(u(2jRfVE|goJ6Nvn zqh&N^^G$|?xJKB$ySQgppmx5SS8%1MwLNg&Cm(Cgy;n)T%gAad**!dQKf^RY80KfR z)75l(7i*@Z45QY_AYrvl*#7{Cek$jMcM}d>GhD>(UA>OQ3jQl3+K8rzNeqm84nvyj zf`-S3)E4wvWgbk;QDXVRKw8&K=QXX#1E1%T;5$p((8oTDNON56pHsLW;r=O+#VNW) zXc$szW62+@4Ci=X{QP-s1TlZs)k% zl7vn7T`V{jG>GUWJ0Qu~y6$>9KG^awFU zB+>}uX?u@Ay4@>9Z7W2zJ}G$)OTk~W~0g$3X$k_CV5S!Ib+>=>LENdi1l ?SlbF&1_PRV6ySAF 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

  • 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 z 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�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

    k@zv7`pZOJhf%AL8Ux7?u!{&!LW>3XRF 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

    R*NX4y&dLhOx__~Eb`h#587VbRPO(70x zW9&iQays6c`bWBGGa1};T5&ZeObNLpKAYMY>U+p!94=|cn#tDcnJI7uWI6rZrR~F& zN~*U>f_^KbiwaV-b93rm+F&JqN~+>Xx|@yE30(wn|NqKuerlN#V6~QcwJ%Ap6lD)t)JGt5aFl}Wvdz<~gpoA!T35Srx$=hD z9Y{}dF*OLR30Ym==If%ai;5yhSzXuW>t;FnOxYpH%Xf#GZX$B0-11H%Kajd-oZ1hD z`6Wb)9HSO;2ybB-P^t!G4cQ6OIF%y80R6(&!A*f<_l_r_hMn+n*=vM994sXb3u0gaw)ZWlVzP`7*|PO^JTkV6|S<2d6l*jFKHTi3~viop0UtQ$K7O+!s~=i zJ+hCn6UKMHPqc7Uu==jB$lA&VOx~AXRY_j+Oz27QuII8^hthP%!sFtI*(W4;Ik|Ds ztriW!(WZVuR9f8I%~^!-y4lZ~%NI<^G;trL9W-&$YH_z8**x3s{8yLM&Kr`Bb z>D`p9U>9>4-Z$Nq^VL};%d3IzMZ!%gDO5`56LO;yK{qKn+oAC}*lN^QWuEpnVL;Th zn*s1Z`ZLM7R%52NN}M2)Y?~fP*%%(}rNuz-uqx8bU4gP1vgFi2PWQo=y>? zfzHZ1p*wdlB0G#JGM?uFUy6?TR~t+kEP>2?Fj<-@KyJv5r)bTVi)rpMkz*rkiR6QQ zj`C=tTp?w^wUsx{=Q`x6RZZSJhTtGIw>CzEOZXhPzZX-EB1lsa=GIprr@6UNx(X1s zJv~1W00pZQA~uXBf;Pt6**oP87bz{-vN2I4`2=m^D-O1_%IgD#I@+@Pv>XMTN!=VF zMr`@-gf1dVlLl^7Kqny@HjX#TI&?KM$Nc#IGqDX;j*h&P$Ovo2N|xOPz94 z#OCn=;7CJjIGl^Y$R`-B$(Efx0hO+GEBJY|JqJ>nhHAb#3TY|e;T{LSh~J)ah25JV z$%ADQ2PZ_MIV$B0rk=7X1}xxJ7`>%sxXO}NsJv3z(>+otM3FW3+$vR!4+JW@6;Yo| zj^{1#tqCmQb-|L^HjiJ0tdLCQYbkC{7DK6=W#I$hy85U%ju5G|#_@5uU2BGFMr^um z(lKdtqVacOH1t9zSY>pMi@LxTS@jW%@g31Djj}yDj7)JCRAw^5=&rTxWPs|9#cU$% zHy<;3;I-*d{kOM`^G{Wh06+Xi3RJspSR@sOOOsMDb(WDdQjSK-ES~Hcy0xmrWu$ezp_PYCQE_9q<#nPQq4DUmsL0Qu zO6Pr+lDKGlLsL%jFT~sIO6fa6Ro!WFH=Fz`fpN(zewz|;c5}6PTx6*1VC`^qgseW| zx&1}Y&k05V7f$j9 z62~M}kaR<~5eP1FZWDYWuo^45ywipwh{;nCtK1I4w|1l$kH7+O-a$>p`DK3WrYu&( zcTL>&Rk*(_q*|B-Y0+E!keu5TN!AGD>_mO~chu zdq!yHu2V#0k&JFhHb850WzlwDPc>SDUR!p@os#oUWLqDD6O__BjV_c@Y4Jt|K+3Y? zfAdq}vjEu&Lt$mW?pAsj@TjdjtO~`flf`AFQzwLlhf^ioR@@M?Hl}qFyWDnAx?=8m zOb<1-j!Sk}h@IBW3+zC;#ffRsI?n-T$}%TqM*By8i;UFjyUx8g9pVtFrnysY?Pc5KtVvqwbPZq)p4D>gch4iCi>>3lgT9yWI&GW4|$iZV&rWJz4( zFB#2|rK#^(VzZ=gis_i+KxTY!LZ+$nIOhcb6Kj<2XyQm2aZ%6 zo{B)*2qD0y;ugAH8dQQ4(E>+uQ**i$7aXfd8OVy5ZzRn`7TplEgc?5~KMz$T$D$F5 z3c~5_gxKbvlAw^`OnIn;?I>8p6{6_vXIrSk+pElg@Zl~}qh2^zCJfm8)%t4(1yHcG zqrm$+2~*_`Q98{$_yixdaO;sqag_nF-a2&$&`6J;uUW-YUWX750HJF|}jeGzX-8jEAt;r>* z$Vd{T4^;%=Q9)YkWe`b(08`yn7MXH6PbFcs4;vgT*0~Tp1C5Q2MvX?*ot%voQ`q3> z-dgUUtZ^qLF)14qsbWmi4NQ^R>7A*PA|t8sH}<)%x|*^osG9hm918LV&vm0gtWQHA zbZ^H(RxH{i`H9oh_>FNh)i2RNo{OH-dr?hN8p&KElg)23R>;s=;6dkg%$_+x@^&%h zjMc@H3Sgbeje=Wjlp8EF^MrQwRhXJ~H@K6Oi^))N<`#&mF;63yk}4NZeu%{jWZSW(?n&V)B*!ZLouWNQ_ zL=wD=AO@4S$sRW1$xM7KkaLeTNW+VO0Xtit~Ll@8pc;YUXgw4pn|ChD7?x+Lz- z6(_$qT^J(eIt*mZ)SE9~nxyFz4A$8*XdZ1Etech5gqIe-#bdIk&03Co^W7>~#=|*g zT#PK)+HbPazYxN!J1#Dy9TO+18OH|c!>p$ESltNSY3#=M3M8_A_^QOHarIMSUSmb! zHh-FNFIAo;Qxf$m_7=03#HC0}=BSBO#GY!l2j>@i)gdolUP_mEHc#HF*b>TU34l`* zbSp2vvXH6DuPil~)$fh25hI(3Ea;{WHw#jZkW}HX;c`@>kmzJ`Bp#w<3KbE_Pa%#* zmXNBtT$HVY9zt`wj1UUId|%RC=Cz+C@D+^)lA5Qqlq{?P&^k~a)3NnV$LTqm$GKV3 z_CkTx9h#quA+o#W_^#VRp=~an$l5S&Q1rbinr(KeNgFsR-0ziWWq0vLpK2H^0V61p0gfnX`w94@hQ8hy!8;e+PzQq&=h`d51v!NBkL ztQSRLae%k=R>u?#WL^+W$mFq}LUh_=G~7g>S!Z1QmX3-DtdRLE`D6f+uV}IZB(A?S z2^we28MjjVFoBPH<@FgnMRYZiS~9sUMo$xyS0XV)&z4I%$UWw6g)F`zgdcNmY1>U{ zmsGDap}KREn<}w3qN3g0M#q`JSE146er1;5 zx&mJduw}MAfOPKUpj=MtU7AD<+>`G`{aFV5KNUA1Jm{ErJE$9uOL6*SJ6Ml;t1g-c zuvPCtM=V*8=h)b)l@Dv!T1Cf8ElKF!-?M);mr)DbbHY<$A+(vw>RJ;gbDsmaUD0xt zx_w0~gh?BK>ufJUnT`hG0#GD`hp;-`Lh516(aqH96uLa)h1(SZ(z}DD(Nsxp>@@i! zf1&V5F2@mduk}$!JMVZ$4Xt67R-*x; z>2hYQPzu{Iw?dL`Nu-kaLAB0RBsNT9OO8~S%bck-s%;roz)Hz90fa%aVPKxyeztz??q+^K=dW^5sF^iC|0PH~k)8yluQ6PtP{`F;w^9PFZe z)UY=BDE@a=L9cDpNy>74$}T*vi6RZf`3eqo?h_Yzp*{B7@47ULCSFGB9DMI|2T5(z z9VM@H#S)7mPN=Px+}3Y<`MN@J)gHiGHQOjCq2TY8lG=>jSdO3^AeJ&FUnikaK4?vl z6!#b1C83cVrgm^rBwoce!B8|s!xmK~W&Z%lTO?ZOFBb@q*t4C~p}`~Mx%nGs;dT{} z@y6>eR;7iK5LUcW9TjDA+y4NP8=7r#$rub-E*pXq(<)ITPU0Wy=DM!SR(%&zbY$7G zi)^_F&7E$GR+dA=$A?+WH&;GUi!M7oUD&bsqQv3EE^N8lO=+{!29bA$*rKwocN^Zo zEH%l`o;o_YqipmuM03W+HrMiBFxRlhRWxUIJh$S$jH0Z2qqCegUJtC&cYUC*jEiv2 z>|4!l)8wHs$8L-$=-)Bg!C7T1V>Sx)gIi!SpzB22yLGF3X1L>uK#Wabxm4zu17@ku zIeU*qP1~c2`w^2T!Xo#V8Ae}d9w@n$ayZW*hZTnVE3rt@EE1;8SmK1% zIjG>YDMS{$(so`$`IX-I5MBFSSm5TCYea=%Lgk_(=n9}zv zvBK6g6S{;ESX`@3Wy&_iLKZY}+}&G_&DbQ!z-p6#Xuc3PW{9dLWbo%@MyjWk)GBIi zfK>-Sh}@!#1m?|LAvxDK{8Vg~>Fk-&kFrc{_EzEnqUy775m-+&EYXQqCAK(mSSv;R z5!|Y@(eWFo)=&0F%>`Md&ZA{|nu7ORlB!dab8?!=sZoM*+{Us&r)4nTB{s2JWhhw| zu@$j-B1awn0Lfj30lHkIYK9V*(F=vjVFwBH@>?CnhDH{BQ`*zQ-O#6FrHw@uWPO-I zt_KzZE1F%pn;Hfa4BK}yEsabp`ynW*9KA}7yv(}Tp@1;A-lUBz@{n*wZCdk2UG z$kt=2?mah!=iQHQ(1a#OD`F8FY>Q77g~(HoUv-r;sJUicLoad`MN>{z+~f=o${~!jg83IiNzhw`pAMKq19+)or^-0dtj&vyGOV4CU$~QzWDx$f3B6lW|)s zSD?$lKvc+rdm2MerV5(8Dpy=u8Ww^?`2_owTj(m%)h-Bhu^IZI}qih|I zDB>3CxhkeQms50S*>Ss9WJU71-qTYa<&`ZSD9<3T1LlVAqm%6<#F(M!o!2|v7i298 z=^s5qp8TM(xm}1Yu{l|u`Pog)Eg4c}h`KdHadb8eCa1uM9!9ZKjk&T`0HQ~3D=KWb zz$U=~#_m=~xKV5+1&!DQMoJ@M3c!p6#k`cGvpk;iml0+bED>fZ<(pmQA@W?a!&Dl)dkY*gEImo>Be5yC<;z^Fonxg!?zOxTN! zlWfhjgIZ5jVmM2(Lc2>tam4MF$f<+f!qJqe<)cu|N+^_K3_KK7C%m}%t0o@EZrim5;jC1On_-Fv2& zSB9aM2FJ{*W?3`XhRAX}?5|G$2ZnlvR#O89bAd)j+EOk`6>`>@Ero(hlgZ zfx0a<=z-p9pmHl*fy8Vk6u6Yv=A+8#Ar8V0s(C^MOcg<*cjTJ>X@M$2+bUt9z$bMu z)5$v;IioS7@(?yU5U_j()=_H>?ys^ScTQmdVFu$$!aW>!Bh_ugPvNr6p=dH#?zf}B z3oco5ZNm-|8|^-{S?$%s@z@7F2s(Lnhmp)8jbvJ;6&HbeAGRZwb0 zrp`gZTlyzxrl6Uvk;U+w5KhaM;!|XnO38*ZRLvN562~h{_R30_s-SGKkXqr@Spydf z%=bo7oy0q6{3gYO`IMK~l=?$Zp&j|28aH_!@Vz~o;Ypj|!%@JX3!3&bB zYw2nXZrhPtBQ3}*PwaV*5L8THOLS*V??H3Gb;>xJcr5}N+p2Xlh6`O*tJDNwfO4_s zs(hyD@PlSt+0=S0R90NrWm0uPy}}!Vh`JeR+R5rE9K4z2$Cjn`!Bpgx?m0gdXS#E@ z3QeGvL*ZkOxiLv29QR1iH#?*lNw8axc7Cp6IAJ3FS4pMzESCq={m3V(gcoFnmUDd^ zOd4fHL9-%p_bdMZ=*FO1e&Ng2=(LJzRshBUZzXrRV8Cy|VV8(X_(u3>V3(<$8&RXx zQ{lBuQ4X9K)~(T`t#$qesa?ZBeGvm`YJ+cKKXQXX0dx+xbv)vn_ zacLGIdKA$B+kxTexgBPlLm`k2)_hsqpC?BynlO#T$8*i>tWz|*C07mNa?q!bhC7h8 zwqlGOm1UELODQs2D$|?JY@GNleri!Sa$I{`D{iRC6^gM8wkYyO9xgsgu7YVu$#hrb zq1>yljJFBtsh?3WV;gc+?xAZHx6jky3zg@% zHv<7?mP>pcJX&QH>NDA=Q`0vL&sCLMIPVKtf#kF`8qmg;H05ADsEOpQ3uR+5av)d8gyr z7UqgQLZ5WORR5YYDgJ8WIea_QWCDoGlj{*Ju_e5G`9B# zlGUx!cpP67d?++=@XNt$jP9Me81hEXTI~IJ)%3__IH+LmwcP;M#aJQG}N6? z_bfj~BGS0+YMg=Cx->o_`}M7E-(Lj|l#q#hdZ3BtQl;MV5=XLX5HIhNs@b+XMh z>Lw*%Yv&TwW7z`BGI!aw{8g7@9M*kPz-|$vp^h}Dqf;%Lf`0X*pvmBIR2y%)G(>IqEb>F5T44(rj1280 zts@U$b(XtH!po~19ipan&yF(HBD)P8RUxxQmEiHR$cA1Pf>DiEMV3)^CV1OsiIfg% z4ykK%b(Z>*dxEPvb9)l0L6oo>?yGN9GgQK{-8tq|d*ip_i(u7(8wPebUg#1>6r#r} zkA3Qpm~Jm*N;DG3K&o_>Je~(E_vun_k!!7P{Pj)Waw*Zs&|56Q8XTSH5H?ycQoaV* zxm+>=ETCio6U!zXF{BB^k0nl^vA~A_tWPh6V%1cZyCobGW2qvoW}O_ziH))HSkh9y zo%iL{Z%0$bf_^DX#!A~QP?JVXxMMC+jY}|&eBe202Vc=a>z_1!t=@bP>`G&>rw_bR#BI3-NG` zL>D5JXud}!b5E0w0pzMwWD=iDe+%Ck^;&A+VUwwvZXledvSOpf`MS((OyUc#fQcIk zH{_@EdnphaEV}2F2p$;Q1PLZCJE%R#SI!mCGMOT7qC%5FDq=omU4gd15TZxL8O;b} zBC&FX1M(=WZO&9fQJC8*Y`ky?(O{gvqK(eMIBzn8N(r(;Pr3QUNVv?9!GjmSxjseXjI(t;y_8nxZI}UJdq?OZpeV8WZ-8gt%=V#R@k*0 zBEZw_Y_vzw*+>j|ao-BFDIDUh$4c%d#s%->kv4}yEf=&p9`a7~kAm#zsk}gu=&0#b z9nCviY_5)$4iRz}J3d2ZIMOZC#lq08v;Zs+;$^T=z_$MYCC!r@hZ_yHPi~0;$vEhQ zvAuq2yp*t+Sq4259h018HM*!+#Ps;6o$Q?SA0->&=#dDNH#>WLN|89S6WlqbBv}Wz z099!uQkC}EQVvoWtE`X_y5%YBEJl7SW}2)PjI6nE(W4$j z%}yl6!30Thf5k5IqRmE>7`Y6a;X{k6elN|{P{cw;hYML?YI=FOk%QHATi~d^Aokh9 z=%FpFWL+F50S>YGCk+6ugHqDKypa!3u-rIKM$24fW4lEn-WrP@XzV-^08Z$2HV$j^ zf{jqaX1oN}WtuulDVYRKYTJ@`c35w9&F;Dw*U2(ZiU#Z5Lds-c3Bzx?dS+&HtZb#V6ze4}cK|9d!_7M);&%~O zA&S5do6(ggCQ3L-usbV^gfu3Nw%Hos3zW9aQH>%7&27#C%&e;WEmN(m0_|y8ZgFwB zOoU9ivsVa3#m40;Cg*h^o6(Q4$C8^_beP+#QN?~p8y$`o4Uv*=6}aiIlgSn+xmj5Z z4HqeGn&XauJhm9G&11^)=aQ~hObfV2B|~zKC`M^pp_H1`?P)tBv4tCAqYEI$BeE;( zrpVQ(;<{6jsu;+{9#!a=2FeVI*+hH9ZMjQs%}O+ZR#Y|^h`)(ox>ENS5{+3omP4E> zpj_ED5u+Ado1FyWC0d3ni=e|1bH9?(h9Uq2E0YX3|DN^iIUy zY8QjET(Ik-=(DfkbF79DAYFq%f z;HbFVtxy?}fg{9=80dyYopeT&Y#1Qz9%z8%6egd&6mFEwF$&aXj3F>z7e`<`lB5|h z-bkPo7LH{Q3|t`j0%S-85P7H4ZpTdzLvW-)u(}*>?llHKlf{p!Dl%kT7b>#Sx%%er zS3@|#3mUbTX$kmvIeLijbMHAry^$ruh(RT8M=6sBp6JoJSHCqjo~H`RMzu7yu`6zp zakc&{mySy-^!0oW$w$xdg#M4+sTr8d2Znx)a@k& zk)79B{)tvNT$X+6P3)Cm8!(?IBlF|-59w$0az-~PMA8c1tk7#IT1)BO!_*6`mQ%R8 zz-1Qn!1ARR$`eN;)OKc$ZGZ>WQ9Ya#rtOKc zj+Rc2tsyef?)f~)w2~a~pScyZ?{01IUX>j^75F8k4L{*WI!2#6Y$6KYulOR+*U9G0 z??Y{ydM=Bzw5)W7X)|uCUbnMNY)*6n_}O56DcXJFa4jmHP3wX1#j*O1wo3ToZJA)G zRBC&GS1~TGUCmZ~dy0|AA>L$B(7RC=-B*)RbA}4%q^xm56^CQ(Lvz|ihzapIxhl)C&BPU$ z-Ia{V3m=1zRizZ1Rw|~7gXGhR%WF+--F1NjvIpY2O*Ot7j*AvVZGoBFDv;P9rU&#BQxQt#;NSLD2$I*|9qV#1j&TV*w4#R1*U9 z7jJZTga=(VCTWnrB_MBw1Ll>{3nc6)Ug^nED$z`0mld#>l>&WHA#5{BJ31<{yQ;Lp zhCyRtIV2A>+>>qZOCE_1ibHh^^-~9$rWyz=q}|k7hzI7#80ex+Cg|~Y)j?Qjp~&-5!f{1BzR%#++O%O*r_^@mmcmK3>gOx(W)A9Lg9zien?9 zLmVfKoDRtFy7|f&7Zy^7Y@uT0TaD)SR#@|ONvAgm%sE5RnsBoCcymi0IGXLj3y$p{ zVjEG#SEjUaZs@;)>RR$ju@lHPPQ#t!c8+$VOB{-s;j__6Pb;I5g|8SOga=1qmF)W0 zXQ?%)OSnXJBWHlT$5zqmbjpWAJY*5EkxeC$>uUA0@WM#55JyBb2iZADMYa>FsIclEH zRL6I~@gsV3SXGeE5#W4oW4yxjU`_CvNFtfGmNvY3g`ygY?6)R)OQ{R8<8=?CG;&^( zK7&CvL|iAy3NFvk!0s*%B0p(qTD3-bV{GDR^g4>S0Lbh**>p6Wi;ILhq5j|(OBiHL z;bTKU=o7i*;UZe8OQJ12eoUylH>SaBLL7Y6#%c7i`w*}XL~>2+kit~5N&JmiqP_&k zB5p%K_aXoXAfv<*FSk1-u#yNivYq;%7wnLepisIFNaylHc0nHn0Q0#^h}y)WOd2z_ z3Ml7{wd@2RCC5Kaevzs&b`Pm>vGQH)g6lr6m9xU=+%68wPCV7XE*Hr{R)Y{cj&@w8 zy5M8r+=9B8_=E-r`*C@4T(+*xIS5)XaUr=mfsIW8dAU~VEesYM)yg_sN5n_LP}E#q zC5FptmB_;=ZHb*6W?62PK>EYvv?*!$V|;~FnY*Vca%G$;6+t6B)!J$Jg^H#EG%P$o zgi=64T$h~2oO3Iq(R8N44*;}4OTT>f_}`qWS|*-qr4vbr+wol-vbBw{!o`;-J5kuv zVdHZJGn&C*vFmFC0Sz`qtg8W}51PQLn7!Fk974~MxIkx>(mbJobk@2fTg_-(9O|*! z)Ibxpr({6YO^u8QdUH#jRP3BK=xkz$nmMAh4U-1?DcFPzbWr1TM(>Zg3~q?aosa}{ zJ(o7sV+Pw5-pFpl_$~vpM~792o@>33_&JYq=W2c6NpfK79M%m+F1KsRE;m?pBf@`z ztR~nmNs&@*vd?+V)#{Uyv))%y9T@VyNRqkva->U=gRzT>51AGGCC1TvyHgA*BV_uS-LjiB9#;I!GoxT-~R>P1}F+N3S zj|LpMa%kJc;1MK@nJiJ@ip6c+!O7WjF49G7U28zj|Z9Ec1hO}Q~ zK!guOK<VU%27#!T0QZ&Ah zIhAUjtZcc%Qe2NuJA;u*914bek=g0;vPnZpv0FkRuyC;RTxAtON}i9B$#iw(r>ry(LVqEN==|4I+d(X8|LH-HV?^ zNwX%eCzl#sn)-b$KATL~DcTy=kG)xSYZ}tq+>VQxZoBl^Uldn~t!><1Q0coxrcYko zIw?t!=Y%_l!cP0B?VLx2w`|s`ne`62!$&1m&S*9WbyAvn`={WKimLj?G}xq9Bk|+4 z!72A8Vro-x0<@*Ai-3~wuyq;PEJOp9aa^0Q!TgzW&BW^uxpcY>{)=c-eS6@=@VCjnzh*QEROikgv!k2w_Rrk9xMF1`IE}vYmp%sLlbFS|1WRPs7EVn<& zQkGGanzLf4q2zxhUC+K0Unimqq_z`OM9N_cx+oWOLNcMcVbvOdmy~%;!VEHZRSa?J znev1OI2`m(jCeB6cFu&j9P&`O>VZc%mYf^pVH@sQWfqyLITakgdCZ{8AmppMW5}p+ z7cQ>T&AAeBxl&^ZDKVGbSYs4rMm8q0!uV1r7W`EBY!F}OtFg5}-DDy%rfy1b%Vj}r zSj}%$FCeBEPE>}sf}lqjNP9O-4PVEoD|`+V)L~EDXq(Km_QjiBP6;0XbzbIS$dUO^BeB9#s+EREjn?yLUhBLsOgVX7tPf* zK+PDnPso)(%lWc^nB5l9d(DWdEoGxkTf<>>&a!S~qsLKV2}3AYamhz#Pg%q_ zS44pGTzx%n4S_3Wp0qd&tXXhZM*KPNhHMA&Q){}FO|t`RqcPc8Wg0fc*<=&3Q@?c>7rob2 zx7i*>o83S*+lAIf7OaR0Kz?qf8_`XyQpln~p-eSQFmm}KwmxWE8yFC4N+HJTVZ0+` z2^@p5wL~SDFkMpw$o?m6qciy5!iy6L$0U6UcP0`j_?>=A`x#+tCV~(ZuIx7GTOSBe zD`MqPtgH?2wGz6kfEKpb^;r*bakjtuZ@{ChT&S1AO2es|rBxll zMWj94vOsnjY9!3!7*`ie!x4$M~HX9_3|?V+F%NLk_+afwlolpcq~*nQ@-k}^x?SPyfcS0_{$zPHXc8B7=I(Z~)P=l?N zFyO2jAtVfV@iZV9TOLLgyNe*yWwz?B!ixfG8o`r=%4;yisML`g1&1&y^ zb`T?pvBhF?v}1M2ra07>CpP^Q0&IlsBEv3S9IflWqNgdg7MSEUI|?s0 z7FC+^(xm5-nvu_xgK+d$DPC=2vc!%BT7qjhT~yZv!d#sdC@$e4bS#`wX|m4mvenM% zlD0=QT_3cyz1|nUMi$#%Jx?GKr zi7#QdPEQkVnqg>3O-wt+5zo~vk6o9v?ah|6aIz>oGdYLmwVQi_7HplHG4vY$0GpyT z*$fOR4DOJ}25ID+cwOqE(uyoakbxpW*}{-HvK9DGH9jCkf~pkJX^$RXa7d$E~`vns*E^W2H6TMmiwy=f8Xe>NvCMdJZY+DnD&FRRXStc zBwt%k`$KW+xratZ>)wl5EPN6)Ij$D5%Hw-Q*pT+Vr%oB%$Jfzx^!m&6%;Rb_Rm=}G za6==SzdbAAk<5EbTn&gJRdZKPGP9W|(O801Y>MXDK%*8y$%s?Ji5$wHNb|aXRK+;z zRgilkMD7xXlBSDX7uz`mSlMjpn(aj#jUnW>pb%%1%sCnx>5yvq}!rJ)=j| z*}AfaamG2JIG%S>Hwp(kt1O8(OmVV%9!UoC zva-hXO5BQ{3FZ@U9qnakgiiNAH6BYNd} zhnjyrYQbaP{LtRgeAL19OhK}MnHrQOwy0q7H`)NMV!f@FX7Fa~xRrtJEhBZxYE%Z2 zpi1BD+VI8(txUVc58OankqMKtVfwtKTW1|2(BXr@s z(Fnzga5}0kh=%eBSx?jElY*d#SRQI@3O=Zji<_!tn|cA^)gV4=y^#1nlHfFx-RclO z_m_C@?AJR`y+t%))(g1VV^s@+wyKAS{{RJ#R1Jv=VmBq}Fe--RtmmFHd5l`gbBAa#pEQ>p^q$<1dFV?sdw30o=XCkP7NF4JImTVd1bKU-ILSU<6k zo6quC`i8$Pby1Q@cx~*9+&9rw)O9M3(dv#cu(FyT3@rOCZ}C%Rj>}$G-1Hbx?T-dH zW0q&Vf%+JUay6A9iM;Iy}b(H=;ku(4q(^?+h}g!t9v%$Z&bYMxDef%m8ZgP zxjjT##>=g#zX>IB+K3!PtH2^_g9-bn0;eyuP_LVXzu?RASdHCP*j<1>6`aQ_kh>O0 znl$2OiyhTijOOZ;PP(-n!3!*rwg!wuoZV%1loO@#kFenFmW*z&RQ0y;=~Is`h$HR^ zt`2ftRiZJ%4eYl&Ev5Y_{{XFO+j0KMq+{3Ixf)0vSy>b#XFA0BFHB^S)4<4MvslLP zfSsGu8bV_kWPF+qsA$h6T3YK1g`YK10>G^4s>$ZEC^l<`1@d30)Cs^VK5EiV{{R(E zN$!d10v{+n;ix=$j@_$ye`r-4;2(3MD~WWeVLo?IodewNV({ zL0zk)Ynx)RHA*(Uu5&k9F;2TMYOz|ha~C(lJVzP%p}nQAva?AMnpQ^MWodmJbe)|x zfl4E%GdOsix1zs1$}Iv2TN`-}ik#A1l265BleTrSEwLjkiky;MsYv{)?srsCM9CpJ z=nr{QBq)Y)CnF^0S96Z)1;nc^fZFy!F%WVSV$hbrl1dY|R(LJAQFM3nM_@RQK{<+2 z!?TvJeBPmBwlW{YIU{kq%~OhemYYX1E>(z`eo9S=S!8xvTRAX*qh*3KMUrb&h_YRp z6i7JOSRgwmbY}uocr#^oQwAH+5s_bXMz9R0Rb)^i>kI`DGj$@HZOWkPhZY+l$lwK& zzDs|auICbRtsyxwR|6MZ;WA2XVRiyB3z2}n$gFL$iyS2Gtg@UDvI$Jnj|*jX$o-lX znAsz;;*7`u*eflkBqT~^*kK1019S65?i*|D6xmGjP-^AwSX+FcyJH+wQC6YskHRvk zlf>+%d#-L!?oP?cQI2!A6u1Lmq}Dn|T&TktbF#Fchp0l`2ME~+X{;_s!CQ@?fRd~> zD>B$YnWff^qr~hbISp~6Q$V8=PU@Eo3^wbrg@9OoDV2+yIQ>DJ@(FpmdpEWNs zpnCoY!bC~7ETBz=%8~Q=C_CTxA_!+2A3szVy-CM=D$+a68bJ|}>V)#xTKGkpO9HcJ zn{jmbM5#IjJgYK!Pc&KO-zz>@3E6GO11#naSvOT*C&$S=j=BS#oUKV1=ON3`oc?Kx zxu_CR3T#exf0~CDQYR`ZFhjNHbWZlluySJlS5#VM=2Tl3SLy4ENXo$P2 z)s2j(?Wt=+t#k2Ou}mB<#k%0>tBV{mx9F?GfXG<#;W`*Id^4pF!i%02Xyy+9-A&KF zRu>v)TNAOK<8G>rOG#-b!qK`tML>zWl*2BF7@h-jFv z!YqXwEQ!V#+niY`@@~gICvq?y?Ptuu(HJL-58_NnQ>>y;&RcJUTcY{pP4h%=`neD(g9U9npPyT65_2@ z&BRE$&m@;wTq0>~EFj4s9F@sUnZh|GO%Hb!`JqhjX&A_&q^CAO2gPEiD}oT->4*tF zOHm$*X9Mnu*;NI_54+Kl8(c1bOlH-$29g# z+gjYz>=7XnDbxZX{ z+J0}r4Uk&W)lM;yJj{_g>VDM9`J)mr0eq0VN?E(;TJUZN-FYl7 z0DxDd=u;Uq=)v3zEE=3@Jfowf$tm#7ro3)ZJHV=OX6bR_%Ns`hg_l0qRc4sAw--)a zPRKK~$kGCd6}Eu4QELy0-xY1TtUK|AlKn79Zd_82Nn>4?5{qgthHXP!$(%zC)wa8t zS#;3H1{y51T5)s^AV~xc=A_qkK)6oV9%_ZSmV=NgU*IJClHxYHuT*at0a_xDCIp;Q z)|VZEERM5mqYfPMaBiLXIr%Ln*s4WYAB&YjX*u#%YF)#Ai#AvDB{~RJM?@r%Q9dCIQ!swm~=m6`H1wb=P24aQNX0H6V6+u<5E_>_|*BW%#1d!d!Dz6R)erC-wK11 zcpP~UmfzHX%~UK}!;6H0pN@**tN%uDzD) z>6$qp7#csxADLo&ieYKuE~VnKtnp_p+8SOhJlK2IJyQ&FkmM1S%7;!HVt^@wVuloj z(F#GBa;-w_s%S4*Aus(p5NJcBkt^<6J%J2_FJ)LG+>2m2BMy5}4%g1dO;rmY-YuyAz9T`{_I z(MIW%Cd8a3P8AUgs$!&|RTeK)f@J852+0dg?yf;!EDjE1%TJM16Z1nTC)jbDk4I;w zcGjwz&712QKK0ybeW#+YXbqQz$Lx~4S)_ukLo?%WEpZ2})(rXxPnE&H4!UvTT%PpV zn)cnf2hBb6aJ;8U?L~bXn$q(mf3oBGE7G(rL7L=kbPRVF+5~L4`LuJ!bfKz@k$sVu zD^Y3E%WE|K%X?4Ko70b`iU?=%D=q0g&U5C8lbD*$vef2pWkNT;FCa+7m-a4p}vH zFQ?xib6q@=f;00}=KQz&8qRO=~QQ4834tHdZdxBmb&BI(&j6*zQU zQ9N1ARq6ayP4()xdqG8L{*u9BJ*9z4;oosCrZ>7aT;*gnXK_vd`K*%8Ct+w;yNYKJ zflE&MiJKc6a!S(=Ol-w9x>R4#bg!jVcaLw?x65_cOhjzqZV;$xn@3943tyTQRKVN? zgCyMLXG;z(k)t0`c_fRhH-cWZs~vY0o4`x(wBq3k$=N7ky_L4aIVi;21!bU-aEY>` z6a>N)JF6UpbVlRL;HC6ek#H4n4Mh}0U~ZyY$zF9cha?BaLAT(mb(Z2)x0-tm{{RIt z)ZR$NvH%^^5T*IqMM99?h_H;|3<65C5abm|Bxq4$Xx-4R@H>hS?nHH56)~|F>br_p z@zAu3`zr>1$tB63Q*I)6Sye4IA!}4D%7)xsFB!T%)10ktO30Ss)?3xAIV%!o_=@V` zd>qYGc`CU?sgQ4#0uI?vFtR6nt$iVu$>y?vxv^WCb9h=3vc3&kRdcg;FJ~yj8z4kQ zf;igOT;_ThbTzuFbxgQdcR-!DYN+-Umj(>hALM`zRjQ`gl}h$Gx8AoylydT_k!mBA zekXWVY);7CUWwSUUPLmL*=I|YdR(eyYP?Yy9eskcQrrUcrH_t7@bf&CJ}IZFWfdsmmG0pLmDj^h7iV9d?S|9DCDNqs@pgn^A8KGZWmoZd%Eb3Glk6P&wRCYGRfk5pLZLsg|89M8~QkN zNX+gvQ zRVJ%39%v>%8KV=GxZE*iLMLDRmB_P_vdJ6Z%h9+HfvUJ2GJc#T5sm=aQq|?*(&y?} zQj+9z=)s`0P{TOf9oJ4OIDj|Za`av;J)rbfX{*N%1CH3;Xq-0+#WfaeOD*sf38b=v z>YCwe{8dS+8gdF4<25{q5`4M0;DqTFcgzr-FxfdkOtTh@mr*ZOOs*-r!?)m=v5I*M zoOeznJykCBg&`?du&wO5-t|)NeAOQCr|(s5Eo7qbm#I(Q+nS&yI|TjjHCqE&O(xWG zx{KuwZHZI_yp)Wmk{zWymS*ZP2Ft|ViqP!+FnvdOc50_uc$ybSrUg|tDD@KY8?5PM!dy|Ixz1E(YR{CnFWofZv!-Ba-gEZ!PrFZE5l*Z#q=QZ4cHw%W!F6kkv5VuV^R9P}a2Qs^cN;2i&oFt_-YMZPPq5NVrND2UXPTdL!wc z=P|w&&ON*?v0E|ZQd}BbC=U-b+$fg9YY#8I8B}D3A~mHTrHd^Vb5upLi<}ZJ0YICT zNU;*62Qr~?l#9Z!Y$12%>Ll|*GIUTf6)BYFkYei~zD`JG_c&21(h)qrLzfe}LpTYB zRfu8-#O;D1NjAj|IgsZ8SrN5_0Fy~}8-R+&aO9=RM!a~*MBYVRWJ8APyiMXN;OLPi zZpRW#01c7bWD#I2LPho$OMIFxgUe9ZVkL9+Ga02WJke_EjE*22Do%Gq>~N!>pEdA? zIVy3s=HG&gK`Qk$99yH4p)gj$(?jI6ql`Cg{ScsFZWXb(S!W}qjvNwogm)X+Ei#zY zRrikeS+az#@CI`$cTc76Y1rFmnp~w(E=uHTQnJCJI^EPz*z-;Fb9Vypvz8)sRQ1`60O7O5s79K~c?=&f`BXhd*N?D9mpnlTtG-<8ENkKT&fR`~jZr0I# z6SP%L0?m;3jrXip$IW*iqzY~}P}j6?c%AbfisPEqr9VlQ5w=BA$kDd>MBv5M zS*1X)!kNS{DZdK4i7v{pB&cG-_gtw4hNlM!iTvFVvO(BUeEbc@=n_f>FsVsD5wbYO z#ZM;Eb4*_Bm00I0E|c?gGV+{}l2Won1lUm*I7MVd+o%s@S_#=&iX!Zgr4#{Njeraw zl#Lki5snZ7Ck}j+z{-_?N^H`ikTTE~eSJ>|;AzUaQ!t7$d8`RuWRST0(;%$PsLM-g zB2CTI*fN=ozDlzj2PD_QiZN`QZRV`8*2zKu1Xi?^rfkNjFnW+GEocEf?VAJ!lt{YG zS(OrTKEYX@ZNR_YsauKHM+9fjJK#+hM~*wDV+QK%F`{mTW5;YH5p8dhzZ75v2&1;a zSZKEY05pj^IxvRR0{ z4f#?#mX7WguyPhuY9t^N_^Z;8*4bxB$4dJ&Uh9OrJycPhDK5$_B`b;VBpBoty*`-8 zo5wAQ=$cRk?47t|aoJ8+SSk}ckXI&h&YjsM9C-?SBD}87$_+VDdCih(PNOTACCF8_ z8*HgY?Ul9^xf*e@+fK;rHo~hJM`_ALjWH~=qqOo>T5N2N*JA$widan+T1Bi80p_c< z*upbURcK6+H)T*K==HYQl6=+6s@e^Q zm6lBDTryOOCZmWZR9mPJ>UUBwzh)mC{4=^Xr$1pMG2 z+c!jUx`66a5r%HqSetW|Vx7EFk0coIE)|M$8sh8hfQxlj zW65ayB&~RLxTO}AoGx6uO_4Z~r-?I8JyfD~PnIcL;BY7dat>EM$)3Y@n;%tf3g;7N zBs?v2Y=){b?C!KC2{iYMbLz15x^oo8z;o!eyDd19mR9+xYgFCjFCb)PWK!Fbj*E|( ziqXg4HcIx{F%~vR9&2gLu#GlW7<#I}qOksMg`u#O7g;5}6}Y4zg0oudWm|;a!6r!Q zV4a(=$;Qi+V0i^r07PIN%COU6bIZ+Tk=2JmjkpgTt1j1BV4MoS_9V*YQYZgc+wko@k9DngGTuhz{03 z%VFEU@lzQHEOHIO?wRcl3d%)RKG;?oLA8}>7+P-B?2_3kQ5r8YLJG3U zEU2-;!r>XNwm%fMgiZ#8avo(`V}abPwmkAyd&p~bD~uZiN)fp$Nk{%dZNQ1Qy2M>kcbSr_tnLxqs} ztM&AfQPoKV%`K6RAc7SV7k)0$=cgAJOpbO^P0x}_%0t~mo1~XDMTs~}oGU1C<`jVH zm<2EtAnhEAG;O&Fn8HoM^j^gFEwx-ahM>=@8DwXlnMlo+IMuQEvC40Pk7auqSFF90 zN(?l-+(upKy_Za)qtR$vO-R7Tx1F+8UivCn!x#fV7#k{**YTSNE-q~DXHy=ZgLCzO zF0e*zZS%!-%(9?ySRab965qYCOh3-lgllGt?|2dk{6}F5s+7y>n-jziGz8%>!G9hLh?F9Bqm8n88=-{ zi>5Z30W5>-96D^WJ3pqrqFr? zmGJ~+(e@I85qX~J9rp#Gdo880xTk6(bsL;t??ioNf>z|rt>u(IpDlBS#Vt*)jre@jxo4bLP)kWEWRaE;)lhJ;vh*!LMW{sP zOy5J%ahisoB`ky-vyodc<-QrExAJD3D0=+S9MU#X;lArYNKF}5qi-Z8H=4H_d?Tl# zT$tEIG&nZT+`Any!P8w+6?TmW-B7)5T7>-K5mEPuS#xgsY{#$s2ict zk66pM3l5={C3JNSyGU4-QRM#s1-}H0`kZ#G%6K8JW*}`s( zfmB`kPz}mqQXR4QDpg1NC~(0ARgPj5*_OXQHG z+%WhV@hag9kevCpL=ztB$*y_%t(O+j(7M~I*c;^Ck<#lG2jiAw?fw&>Jc6qLQQ>h#>IGut_{c|mx>ZOqLd0TTj@De!%&uJ2H>Cv0}M3t@dhPoaT)2a!>)JQ)`(?L)t)8Uf)v*NL} zA}mvARd=PDna3=3$D$2;vOre_ObM8BpB7L_vLwWZ5P(mb+Kf-IjXr4XJrz)M{MCrh zL=qc}y%E`5h5c509c5*Xw?&>v-Hn&p{%bQ{oHm8*zFmc7(>69-n_JCux}9gzr2u;a zWg!b=Cz6m#XK+%1{vX^+#x}f(xmh>)NU@6*YzD0L z-_gFM-%v?J_guz!o9MeLpbH4H@@~M@ntggEU&A0RE7v9$Z>r_$6-kRqq;eXiJ7wYy z0?W?zY7AYiXe)LUm8u2)y16T;#KLS77x4CuvNP7%inJV&WkCWN)*5waf#kzG|Q z1;osH5geNsUGn&vMeN+p%B=com@8pdk6P*PzC>QiWx^PiYhmy(NE2!KjRt<{j z07`H_HdAX=6+^MTRhBmP9F$^exg2=H2}sk67|dmnnH|v?5h(140qTi=NB84aEHm4K6>E@l5$g7I0f4y2#FT~ zG{xAVWyo4g@H7Fstxp||%DoJHZ@EdFjd&qth$FLZd82>;x|3PqvW-FR;UuijmUNQa z5vW>fbtZ%Cw=1cEq`Mn>E`LLdh9}JJ+`39pU@n!NiHo*rQ?k~!73jyBs{pfA#tUw_ z(_yf!ADbeNPl6j1!dnHC3R`7B8*Zn6xmXN)^B7S(ke8~B{5M31B6%n}`+%i&0(qlB zpk&xx0!MkG$Z&Zoa=Z(KX$8?k3uEFoQmAl- zJ`uTAnHXp%@L5%I7tBdios~cw?k_b0E~EidYcGU$HZZa*VI^9QFcUF=WU0DP#-L`H z#Y8pQ#@wnEHAUBJa1iFGFF4r%oU2h6lO^zm1o2&I($qc>2tO5?#+N(*uDEbnsz?}L zXHP+?2Y}LYwiz&Ua90Nu&W+%Lx;;9y%FqeVs>zoh$~xLi_vvP}OGAJmR4lMojhx#d zaNH62Eaz2n29@`1MKL&$w;rn|XA;s5>g$~7Dwy%GJrz3k@Kn5yW!VX_Gi8k#@{-va z@wh9r(dOcfj~fuUr`($r()NCG`d$O}O_5DnGc%>_0|jqo=L0T=(hqXrBC%*8dKEDf zQ^`#8;gO}kcwT)2401jv4-*_(iayaWRVppU-e{J_RO1(I!cHAfn$b>PWARmv9Iebh zH&q-ga+wi15S;8~SC(4?l=42p_f%(-qHJPh$vPTYu1-~FJIyh5(*b|-PD+eYm5X&I zw)sl~DRJV#Mp8wH<8S1vO<>psT9`T8tr+7c0WM6_jsj~jWLA$QHpWIueXx~gl&Fp^ zggGS ztW%CGB7hsq;DNJDanTk>%%cX|bq*^gG9enN1TGC0Rppw>FL^i!4>_?`kTRJU9wLbx zXLTr{zDl^(v^L*@y8%aVCPr?r!yU3zB7~K8IKWGkjac!~INAnMmO&gv$C94H;bv-; z7H0rEpi0=;%WO=kq%un95_eDoDFJmhwP;5%yJVW)WlsQHq)mnuX{5!1y0WDzAyGde z^HjOqqCDL~$%}&|<++k*&DU|*=!0OAQa3hSINf?@WvE{knH!!h#4fSxr?v-6!!hp3 zW}%JJn*oJlC>aB8J+7#r1`C`ZOCa5HV0t*jX=Ef=suMezQ8@cDCxwjPYFpK)Pw3Zb$>}aE0oO;nfJDMtKg; zXJmN?TFs{DMD7vkY(HF;%`Co8A# zK~+o5lX0GRR$rD{FSxN>-mye!-e!n>Te%KPZ;z@{2Fn>^#lcL3sewFv97COQqEA4s zYIIJbn45i3*x6DJ2W^)|6xE}Zn$xBY_W@LtlC8=@rzy>Xd`^B=Rgm>nq<1A^U_ew} zRpRA(5L4F5dN{WzTcU)rx!L zW=%#tlVguANQ@|9Nu?N+S!uexNtXql!nA0;pp`z3mYMQxN3gfaDv3L)XTP9IJ%R?H zNu-c@6_4cX#qb+Nh)1Uh54S1eC0qx^f5lhP-Xzl@1CX&tIC%=E*)XuJJk-HLZoy1! zlFdjUJk;8GAp)cgw?bHUyP6W-0=(1tJp!afQ6xalEmQM5I!761*FRb^J=iEuM!mRVanm@q~v zkSeOzImarG(i~06L7s34B&vq7g9X6~g`2jdZN*W2)uv6cy62f%+u;0F$g3NHe~Pz^ zTZ%UuDc!-4l6$w%VmN`$QvG0ZCHY$Z$x zH&eGIRtZUQV~>fus~lhp-{PsGM_~aLOkNq1s!LxKBIVx|l~GweQQ?om-m2k^u#_7v zYC5z~Ftw+N{F)azPohhx)f&pnwWQ&f-D*Ke9B<=z<9|}F@!Msx56fH!zmW;aAT=bP4*{~=t)BwfR?J-GjcFu-vPk$OE9PXGGZn+27 zhd6+D=(>FzAE2?vp6OW-6G<)&fiDgMgta6M&|H2Bw9o0uE8t9EMtX~#{wka2^YQ|tiwCFEwP1c{f~bhPmpboO7G4`;Mz zYBe3~g3w3h?H-GBS*H;-p}P!ObMnm1Jkgd_1D}-TRFlnGlHAocmDt-E2SC$&dao{N~p4Kx85$>EZV5K*D+Ut+is%=jo1#aq<9vffcxcypE zVsN@<7+Vvl$+j%rqMwIOg5R=<^s+guIy$0gVF2tboz(>~;^fa9^%QPW>SmU(NDdAh zwWqI&X52UuR}A`t)lHg%*^VWCN5~S?qoS5U#BQsXa|<|b*d z+^bQX*=9pHzUtS~SoAqN6EJMuQvmU=@ulPm@wHFkQuT zEpH22Hb>Ja;`(!@02g|s@7kHFSocyiv`rXO!q>gGd0WCD+zpdJEYJYQsw0ZSIko_} zKu5pLnBbBiMX(Uv&>|E!TG>iwh=V;)pOO5L9E3(~We{arn7hcx{1yz9)4=xz1H!su zFX`%{VQa8LY$vo-)tt*=o#w{s

    %{A#D8}qmo_737%joB?r?3{!1HDw0;KrOQn^( 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 PO+M6Tp;EUp{PKu^OvbxzRAk}G|Js1t0 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

    2c>ay}*lPKx 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

    mHH+%1s#$?NE0BluxC`JbI)QhKO59_6*AWWB zKXg^?Sf|jbg10*w_X^D2;@SdusUuoJ-56(tLH_ITT?2KlNEFu)!kZ`B8|NJ8R6zzY zJe`A9Px*;f4BANOy2sH1U4ND6bF4NF&(%Kot6oz#-kIRUYJ-WgWEs^7Kh;!@^Ncpe z805FQOw0i-h(0Wb*F4G-uN!WRHDWcTbyawH2;wR#ufYf)jMl_zCOVUxC}=dcoW?Y} zCR#JjnCwJA3yS5CXK7soeFz~8gJUVa*h0suPEA;xMkU!T8n{uP&$w*Kfd6ZK!6NGu?^77jhBa)xw~~Kr6&b z5Umc@Ofn93M9rGI0-Rw|fI0>0EJU6t@=S#NE1v)Ax`9vT;a$+mKr6190Gr%MbqH&D zp_o(egCFE7cwP>{2Xnl-*g4c8AIv4#&nd32s?O+iV?2HnuF(;<(Mbo z>dNXeTuXziE2CR$#57{2Q>MQFw%N zq!X^*2pVP@))LAePE?@oc=ZftrZX5h%S0l%L6r+*?HLRj*=dvS=rXL=WoU0O+QSzJ zNt+Iv?^^#rKH8{ z_J=)sP(HiSb=!9Ts~wCx;SR8okJW^+$6k{Rw+w74!W;@?{{cSBYmah{b_T;YV@0w^ z6d=u4dsD5Z&2nZKKKKz|gJhnKZmDsc)G0d z)gI@}aSB1BXRtVSP>O1bfQUA@_E=|@Q3N05Smi;p;j6p|trM-N_88|VgUb2vE=lDI zYaeW*&32A9O5s-=H6|;X%i&+V6duN-2%|OgoRe@p#L-?=5`ye3WHPyOY zQOz07e9*#DW&>L)n^s5~=Q-UeF=Fr&Um!Ll*I@58hHGnJOR>yznsc(T0)FJX;hDW# z^BSbZ+GwXbr+{Xoe`VM|>IQ%FE81wMIHwu~@I@cR8d=a%)m(u!K-YP)a~k?L5c^dv z$s1b=T72lArjl-#G*2&}({ML0VDGgSA8pp)V)m z?2*AW3B0g%6TzlL4MYr}O_O|hm0 zwUxED<2Zu+tYa<_P0&3aV@2T-=R8LuJTtV@VohP(;TIX_t8z?RfI2ykU3V_*pYSw* z_Ikslx1@=l3}Q_y(C)_C3!J6SoVrTvhj){@0CP}R3HlO2xXf9OXQ`5=a?DRE2kwAk zjYM-`&qRGdYm(0evd$R1ciVL~Y??}Id*gafBzxo9jNqNRck_m(VuTku7dfT1GzW3T zH&@}CceJ*usj4Z8zF+EG=9JeKU|uJZ^O}1%mts$V^HkPe;=opmB!PPlW)0+F*UgjV zD{C)ymdW<$xmCAgOPXDG0qoc+(L!&`dB~%Y__QT2cHQ}~r;F9b8c<3UKue{pwy-XS zcMcoRZdW>2;ocu?D1|LY6mJJrC|A%(w8FY8oQv@+B^t|;bHs*5(bx^V6g1)vk36N$ zB}QdU?}pyQ3(A$@qeK{?!1sZxook#hP#EJ!X=U^gq(Q)!cC7X?<64J&;%-O|Mx9)j zE%U@`FU5J(Wi=b|o?4Y0+=RP+^#XXnmF4R$cS_OTV2t0!Ult z!LD0SUjdofcnZJSxy9*S->tDoltb@=(r~wK?1mkQaQzL&txkEJkmDdA$MU*Lph~*y zC8Ex4c;|{he-QTvj5no4@XjdkYW!)r2rWq6l!H@;oiipFVnW1*zo zX58aM>%)yv;-xWy?>XT_A@UEO-sjwp_o^7yi7>7ey9w_O34uJZx{A67oClp)T@kK7 zJY}kKlqZHfcjNqLS{ZPMOO`Yhq0Z8}BHGWwGws7pxwED&+_aqffHjrIriAvTKzqo! z7w;WHwr4kqCgRTqEsS@9mCh;}2hb`|CzqodcU+vvLu9#ALBp*+GBIA5IV zjG;Y&`6X$jSpnKzI9EK}5Wzhzo{Tg{nh?h>5oCez5$91S(qK2mlkuczVHyyw_(;RU z#$)(C5dkkYXmN~g80DC@+9@{#)k5t_TBIS|B3cB>tu!8Y;=~!=10rZIj_)C1@EcFW z6Kk9&KnsJHP&*C0#E@sT@g%;ZAb&ChJ%dOSrJ+6Tt>N)j^j)G;G9`LLuc@=R9F-K>5M+T?2ES;!KM)JmWlxZ+Q`1W4Jm& zqj-d_Kg6Cgo`pO`1GvOBhBQ#lCXDbo=Xs37+0gr423}--pvnZ%bwSC&_XhrjN`f!;314WapZZ$c@{E@p?|oKA&u&aE82RTr5=W?V|adv zOCAVOo=8Is=dwr8o()!X|1|9xobfJXIrKt~O$3N#u*P^1Ye*RV3*q|Xc^z(H+C%XB zhwB&PUXJw>vckGaG#k61*Tc_X2=b%%VtUpej2&&x6KOaSz6K+hSu{VRt>xG&jat!` zYpX-Z^SgM(D8=5>mC0s9Pelq2 zNYk?%Cr)S?>yXE%pq{%(EHCoX|GN3wzqDlodZ1zx*fZ7JNwM+&t*FHRPz=krg3i+#-!=v zhmRdSK#Z9=b^M|I$N(n@N(|pP+qiC{WWmlTH3db`8zoV>hVXT|IoFzlaw>u{?fu!5 z(ot@xtw5lD`b*DsvF5q}t5_S?>C1TOO&u~&^Q}{vV5b?Pd9$gqP9vu&r8reQ2bA`a zBg(*;1Js(>d9=AdrKk%!_Z`aUnOGsOg>+>mqRi$iAJs;)H!i4UT61++B`Lj8rfsx& zt?wTd-n3=tYV16w^8V1D+eyb8mFYaD#ECA`PSHK(H6(p)7;mAuR%QCd=Aa-gWpG+b+bXtMZN<9GW<8ChphRVV+N85tZEe!ojMCQ5W)ys*WQl^J z<;J7U&n{RYI`GCEq@u*-9b>s%dwG=QvvPrcCU290dO~Sml{f8AJ7v@Uv{N?iPdjDP z`9@D(G^T#Msj9itp{Fq^(Nr?v`$F3&D7m$_Ge;!aB=k z0{06yzV&Th8(%+FX(@@c6g-P;#v9k>OG^o+r9cNDO>LpH6nvXaQ>Gv-WpG+bI4z|x zEu|-jSn?=Xicf!@g%{>43uHGY3~#r!ttmC4!#pXr<^x zK^aYnrlqWDqwtm0AGJ_zCD0I8Jn1*Rz2lgP0`$#Cj_37eytQ#)>n{r(t`aa@{C{lSgCcaf~=45w}#MuFcfc@#?0 zQqq<2qPC7}V*B0M*GblT6yo3jw$h!}1LlB70rr*LQ`|8+zyEZ6r|o=SC?)2jZ%pxp z;aebbcPL(eR#hOGyoXx)D}Se7I|g&{l=1ZL0z4^Iha<_jk2WYLPvG40{SAN_&&TlTd z)r)PT#r||mJWmV*Zrk~|b#Ij8B`B&?QH775JOEWVlme{|GDrbO8tb2*31a#w4{e=vlzv|G7 zvR~Of=6$1!t9fXk^^0V(ORB8G9u?{x^x;gFsOT|Rz95HJtkCG$m%Ho)X0HMcy`ss}7J13s0>}$TllMtAWL{-axb@V)h-EPzJcN6{9O;!HX5l_n%nSx(ppT67`3|WlQYOzmrqKOw&78 z)$M&>$7xc+iulE%Obmz3;JevN@YPKF#@k+uXzhUo?JxYBLzug`R1I8`f#lynWqcnMD z>M0>Y!Pxh!2X;kf^ADFbTy*!m`SuY~#D7A zWBb7H9ur5$agPpx;mhTXqmPgb`(v0JVKCesC)p*F(?sxH+&H$fx56y$?MocsgHFR= zyVH?`2kx|{kBxPhdK!-#zbC^xnZxgj_`=hLJ0ZJo8)B!awv7JCpHRNf?;07r-|QXp z=E*Xx#`ScrUWz}g!z;SxW<8|VVZ7{MLwVR=T-H+5`#)=e z|D}rmRhhwXA9qIy=XpZ6em<=iro`g|58*o<)~4;7!^z|dNce;K$14d3g^62pYjWy^ z;i88>fBT57@noBXpY0R#j&Na> zFrh2aCgBUFgJGYq>HtjYWJ{Zb?-xCM`N8-(m@BQT+or_9#?W9W6eCUU=CN{0th?)p zK9`saL*cOfYfs$VE}ul}@S^djPVeSUgl!o7;U-uJ!F+ztE@+?$E-Eh zT5Fy4y!E>EzV)&7nf0ahwe_vF(fYyq$@;~rvVOPfttKmp!;3wxELXNG*A;N(yS8*~ zU87xvt^-{Y zT}7^Gu432Wt|MJDU9((AyN+=k=Q`eXqHCUOzUySyX|A(fOI#Pbu5#Vty3=)!>t5IW zt_NKYyH>hZyB>8t?t0R-*7b}l=6crkg6kF68?Fl1+pc$A@4G5pAGtnpeddb0zI1)# z+UWYh^|R|YSGB9o)!=G!wYZWn547BFx7VHJ&UJ6;-rBvrySqE&-qF2_ySKZKyRUms zcY(XVd!T!7_kQl7?&0n+?(y!)?y2r#_mS?1`zZHp_p$Cd?i1W|-6y$A+^4utcc1A# z+r7}e$nCh#cQ17>cVFbb#C@6jO7}JHGI!K{hx;M-YWEuVbMDvO@3=p3f8_qe{h2%N z{?h%m`&;)$_Ydx$+*R%xccZ)6-3ljxE|16K^W=NFdA9R(_k=vVcy{;fKWk~ z;~D2E@*M0r+;gO7re}`l49_{9MV=*|rJm)Ut36TA-JW|r4|vKwk9yX6HhA9meCGMe zv(fXD=T}do$K&;T^SoPlxAJ!L?&|I5-OoGJJKB4YcZT;E?;P)3@2TF!-V40Ty%&2g z^-G74xxReg*1qk0-F>}$yZZ+E z_VW$#g?(duQ+$W`BEI8&C;I03=KD_eo#VUEcZKg--}Sy*eE0cQ`JVKx_f`5n^L^#} z5r#djK3A4E%b(RHt9#bYS-WNR&FY^uIBUPGp;^PT#$**{9hfyCYf{#-MY_S&wI}%X&HM?W_;7KF|6->$j|$th%g3Rx_M_d;ETX(BIX+ zoqq>^4}VYpj{aT!d;0tP2m6Ql$NITi+y15gi~N`Rukc^v zFZ18%zr`Q*-|4@{f4~1>|0@4u{-^!x{OkSC`CszC?tjbwp+D~b+W(#Z7k`bv$!}zP zv$M1Fvb$t=&E6(^yX@}Sy|Q=B-aWft_K@tt>}lCYWFMD(eD)dH=Vm+E=Vf1zy)66E z?5nb`&Auu7_UwDIAIe^p{bcrY*)L_kk^NrwhuNQJf0g}B_IKGoW&fJ}TXuc6nUj~Z zZBDP8J~;(B`{#_v8Ix0(b70PdoJl!TbBc40$eERMOwPQV({mQ*EX}zn=Zc)`bD}v9 z=RB6PCg;hVwK=hz=W|}n*^u*E&YL;!e&%>5;|F1InaIkz=e z>oHFFf1@UFfuSYFg7qgFgY+iFe7ku;JCo?ffEDs0`mhW2hIpA44fBO7AOr|6}TpF zL*SOcoq>A;4+d5So(Mc0SQl6ycrNfl;HALJfmZ{s2i^+27x*~vW#GHO_kkY+KL>sd z{1&JV)CU@2Uh4^F2Lr(^f?b2#2X_qa5$qq_H#j^vDmW%s7(6gIAvh^m6r2*A7Cbmu z96T&|L~uqh58Hq7X~j6ULCwHcysWs;Jv~7 zgAWED4z3KY4n7)uJorTLso>MWb;0$)=YlT;Ukbh)d^Pxb@Xg>`!FPi11uKIe2fqk@ z6Z}5-Q}CByO|UVT3|jfw`MLRl{QUea^S8?Hn!io{cKJKx_sH*=zhnN+`Mc)tmcM)c z9{GFa_sbuUKPZ2n{C)HH&p#l4SpM+*k@=(Z$L5dAAD=%le{%jo`BU?!=O2=PX#U~( zN8-ao5})b+%6~(AYEgaz9~WG*Bt8`&PH94XDQSPDzW<55JK+3Ws%HoF`zh{$G0th>Ucd??lN1A?B5TPgb1Iw@&_>JTiA)?1N_ETOrl&!INMXJ{tEB zPnd+CFrPA?HlH=0GoLqKkSR}@Yt40L%v^7NB3pGsqYjIk*iJlYJ_E{nnahvVT%2`H zb^O&nQW^bU_pC(q@gy}Kn*K*2_mKNWd7qZttyR2J%3tB}c#B73mUSGS0*{ydKTiJ6 zhUcAQk=l`;5{XXgl-7~nF@B_Y+aNr};86436;?i!z7@i4WbA3hyY9o5qKnvGQUdrw z*+s_woW!Z#S#8|SZi`X+AMw7#cv|w?@%Kn^lsH<<7PjEjDKf|5f;=0O=hMmX_DWjq zRR7jEL42HyZH0J9avj1+*E_@FX%M_*oQqk<^DBtdUBqrUGk1}>7;}$G2gMffEVEd~ z^AV@CKi}tw#l4=1=Xol5lyx+o>reQ@{*%}C3yi37n?d#(RFdqp&WEi?RHDW5cZvKZ z>PlmkvD$bL%wGZf?od`mAX*&t~X>sxptF%eAgHP z8T7Gsm%P4f9ANgf_K@)%(SMFnZu;M9B%yX-m_w~$R#@g~Hd>5UV}Lc#8f5Klar$s; zgreBZKecvG5boobyX z(~BX~dDi7JKCja+&#rlRhvL`**mbQi?lta{Z7wj*GR}r4uH~?NxyvA1l@&7mY*^vZ z2rLEd2IEHKCgWy|!<~|LuCWOI#?D8|EfOy_Y+&NrhTYqFGIo;junhT^M&uaynO^`O z>E*@~#ul=lG&)ZiYmIz!3v)}ei@BA#wM?fps*OAlQ#b=L3VTag^XR-|yl1>`d|-TN z)MK26nPGE;Im+y9?I!#F4pI*=hnmBYI?~)#rhQ_3YJ7$>j_QqFEKd0pi0b{+_#Ck> z;G>GrMjYN^ns^m7_p|o5hFAw+^eBB#YcH$7>Sy)023VU?_OV7{L>J0@Bh~LH8J=Sn zTH~yC+|uqIkZ;tlsKYcbwu&y(rr;jQ)p>rxr#Umi(nx8r~EMSmfD%#n@H z1F+X28l}-F(ijr0)VRX9(zwdF8un(_!gh@E^fGoa`e2-CG_Qlr*!37wN`C`B{D{W! z`DzsBOMDW1GE@4ql7o}s<>^$ME_*sWJ)MbhJPY2Q&Q-LCm?e(I=$TT1JsWVjCJou7YVxA|{I*v4rG1d2_@s;t7j8XWl zjOpL+BqC2+KNt;$%XDMxs7!<5Ha(`-^qKpc`^uC(t$nP)7RM>aC~LG#A7@R$7ls8g zu19IAHO-oiGzVWDDDQOn?SW!TtqZM-@de^ie1W(^(w50@5|`l$)G3s&iSx{Q$=DmR-j{G* z9LFAqjtQM8_!Rt3lGoFhV3|TSPy2iH9~-}_$Vco1hlJ}kPL-OO#wZO!gx51D%|MsNu{dQm-d#XOvaOR?VY zORzUiYWG=LQYyQ_?-=2s@O|W!DMJOF|NendiBbK?_*nL5IMO~gYGnMY4!_?SKN`P4 z8#K=hn*GetvfUqyUy+h90!S+`$H=sV;WPKc2#=91jIqYbkbg%5oog+UDUHV2<`fkt zZl_xZ%XIyFh_y^&qILYgGrWhNf-#~r@)Wrn#_VK;-$V+fzlqcIJ`}Z*A02Lhr&FTQ z=upVxME+{mVGLdnFRF1_gcFF%#cKGdqFjsNEA1wnrTTzaiL_-h?Yy?Jxfmzt-Yk87 zM#XK=9=St}50$(Wr{rD^uWA(E9iH8aF)EjeD{z+W)kwWgTrYOAc9uQtBlZ#div46B z%DpGPC=%WuV>JxrC~Yrn_v|k{0E|>AVVuv;qx73mjq%Dd{bsi0?glDc=v(9XgXai0Qd=2CG z5mG59VG3V_Z`)U8Y!$rFoo`+ssjF~W=u&vbr5u;wBwY%}iwTf^DbDe|QR2R0lsFKn zB>k(9S_bL&vUcpmHF>}o4bKHsp2CB0>ORH&W{#{||BjPrj9Dl{{=HS!#J^PLaV5LQ zW%}cg8>N!WC|s?6Kak;j_zL=g^&!5560PI^Pa!kHt69y^%0X*JP_%S3`ZzdqI zM#;xVqS~whZby`hrS%AW$G$2?z*{M$(dnwAj6xZ|L5xML!Wbm$m;h6r-@e{OyNu47@l{%0cp%V)UOSGtL|@YZwa&=@?69ofWg5wO*3_JlKqw*W)|! zjYwOM)D0^25VP1k)I7|bWgcZ7ZO%4tl<9|=hnq*3N18LtW8nXje2;Sa409&@MV4e`yNPg)l&LiUEIk(2$y$rx zEp>`H)tuHg7MwoKoG!;=uE}^Vyrj-Y{3h#BS?&z;Oml&GmgJxWUSCf&PcvV!-mu=Z z-clp+j`a=p0lvdd0CD(^^=_wLP#XPjm;X27JLn6_ypTJE^kaA8Gli-7ME32!_ zGZ}K9CbqORE<(Hu(AJVl9yAUSekFr<2{ah#IzaN}qd zKiW9Pc-??sY0I?Svh6pp6+*SVgw%cD&D^qFigKZOG2~ofexM}19KO_FM@mO-DIT!8 zTOnCT(Avh@7N`es&&_&9d0B2z>o!Tf4LeYjdb{W+{nA#I`hcFzA##mf>&WcTtVB?nbMbl$`%4<@O8CA*~WfL+PKC6o=sKq+*Q3NtQVn@gs~Qfsc}PA7wmatb^R1hfVs6_^eAk;9u;nN)&^~ za!Oq-e_2W_qZ>^vp^p8&S?0Uhd|Zb7yV3k!qH=Si3_Irkqc}@sTb$+C4-%o=d*YnF z0-*gR8fXksF(2eXQrJqSdki1?e!Ps&L3n~O*O;f!iHJQTwnfW<<5!PCD*x5~34Ya!p>Rw2p@Q?mO zdNR*8I46_xZiBP@_EYlO8j{-^X9Cjsek@BjWVf}D#YHC z@vF@1A)i~!TP3=+O+FjUm(6CY#cIW_G}Xc~qS%Y(tEO;K>`wD8S?VtHA@gBKhtj?_ zzcIg)F_HPW8SY~_aXMOOncdUMTY#l0_atV?>6r-SE$&7 z=>1pbuM(|9@4rR=e>Q(XN|j6_IdE)Ocuprz=Y3`Rj^DYRjS^8D!2JmJkUTgczaqH|G1%wB zmk6iDo8qlF*M#yl*%-M>C}EX0#qk{fflP~=91AtaQ6J?CHAlf8QG-o77HJ8hEDYgA zQ7cY!5g&sZZ;gBK)f=($=2#2!SJYGiD)pnZk+iHSW;e!Ftf-ONptSO4Tg6J6gDO_q ztnNgBek@k8<}a+P{nLbet4?r)I9L+%n# zsOG3ADq~&|v0|S64N41Rqi+vT14t`{$3fyH>W!ms2HGg~Qh$ll5N!&}8379?8S~(D zr&1Y%2}zSc&uPanDncmXMof4@knX1_8}t-_<#!M(_Y|q|E%%VZ)kjFP@pVav@4c3& za^vg<@j228JmqaM8dXZOJv4$8EA^DBSVdb}*aHqV6*1zu$Ww|K&4^%Itil~Z8qKD1 zSA{1JG62tw5!6Ssy}VIadB&3@tHucWL9s}4Ii9+n%!aUAL*6_?ULVbI_x>_gVnqZ= zG5|m5BFR@zk*g@V2kP@cubTS?U(AiAkOrlNnyMgY*_xbT#2=^-81Y=*7(q)CP@t+)aI>e#G1bGKMTJ8zsI%S_E^PIQ59qWQiK1m_@T#O2e!|35tcx za*UfyOID$S6f2RV?-PhwLF9V^J&!b!>`4YTu8(C%%fpot#Fb2Klwf9)G~g4xu}Z}% zn#wIogACkN#$j^)2~SML!k(y#6?saMUtndxNgGC3&>YW!7xpU5PPuNlt2~tE!3b8V z>!Yfr95Y+;(h|pbP+7Yr>N!l-QrafJQYllCWNBl8l4;0Iv-2%4c`mPN;n6~CG6wsP zwpfv(lBe)EN|40Ecn4((#XY!g#ZO3!y4zzBNSD&$p7t2^lH^k2DN(U1vjTl1?j!CX zxR>+FvJILME}THB=UPc~M9wp-7~~|*-I8h1 zrie+S@50HCLdBv@Q8^=IT6+w$UFK^Hqiz~iyHQ{SpTsB>wFG@E-J+HfCEZXmg7t;+ zg_2RMu@sAV!jfuHX(x$(rDa-H|ANUVm4wls!`-yCTCN~TYwnNk^*m)=Mg#Y z3%nI7R^kaF##g+KVck$^6>YJqwph@ssRbQkWw#7=?VnuDS0u{rxkEz#wgY`N-Jp&VWcS*ZV{NV6bm(lRV|Sutst#5bL3h= z5(*_lavj1-lZ;47BGwuOFEqZ9WE@nA#aknY$u**-Jeg;_R%s)lNmCUh7a}YICzDP?%#lo!xidxiIu3};Ak8wWR zs%YU@3{ugtm?|5$Y!wT+!n$TxNX4R1H{ufUwph7Up=yb^HTMyB4D*z@DshqgC}z8( zDpm#EOx3PYj%$mkVa!F2*@9Linbu6J3dL|fFjf$X#XMoiDnO&qy`Kaa?R(X!uE*ou7n(c~Ve5q#KxABkvl1Woo z3K@8latXIWCJ^1NIVWyhNz(jbL^@zl<|G?8{JDWF%wnc_fO3ROAukY=3>ESL1+Wfr z&MY89cogyj1yLi@vVllzgHaAp7ihIG$^{~g5Jse}L)tEkNIz#=XcsXG0=c2@!YChT z2WW#aB0Z2E;GWTzKp|+9F(SQ~UhuNcXe%JnHDRVthOrfmzfy9gIizP~ft1E>&tb&U1|8iOzOjP?SeT_;8bKz+qnh57+a zz)maEXlG>T1Xe#!>80`x* z8eC71vz+8L4f_gA8v@#N=o&FP0BA=sU7?{s^evld!+?sh55Xu5bSUlvjD`ap4qY5Z zBY=(&M=CTD=t#6kCoN!?A80)ENI2(cpnag9z-SE6G{`JR<|H{sptry@+Jz$B6-Kl- zH5*h$(KMjB(4Am39f&k07#$3B60|B99RgH>U3o^dn|nO8GZ-BTM7kV|Xh(;% zIv5=ebQ<>Z8Ig|HDbN^TbR-bzelVH=M0y~MW&)8;2%`wlSGz;i#Xp1m93g{eh zwn9e(Erfmu(`Eym3k?!R#{eyWt^%WDfoPYU(Q!bFg{{yWAR9Z~OgkRPfo1}u6M&Y8 z^AtJ}h<4JMHW%muynQp82ecIW4~$L%S_b_HHmE0UmHF6}XWGf2odoIfye6%f;TSPS zq+xLp{NHlUGm!HV?7%ZR6Nq-`87%;!-Fil60hMB}n9@71|1a!T)L7~M!H(-C2X*LjP6)qJRs66V01pv9nc72 zbO8`)hcH?SM0z5OmI0B*2&3gdq+P=3LZAnrslezWAkryebTQDrctd4$2~asS9~fN< zvwsd=++b7&^q7dLoYza*T6Im6)YqXszQRfBkAoLRBz4jUVMIC{ zgYiDAP{LvFnS1x^d%TQ4D=fIIvJG%(Y`06l|b)cHw2ceGF|UMo$2Jg8gqsPXc`eeFYw| zr+`RzfzetZ(gNX}PXm!o1Jj-X`a*oE&^jR6Z)aKzi1vILtp}q0cSg?weIveA=s6(T ztK=4*2cmsUMlS%-9wws~fqoD_D)bT%?b@YC;49JV!7Dk@~k-s`daiCV=SLh2M+Sy~;mq4`3$LK2{+VNxbH4vWh75WB<_6V8w zEfDP&GWrgP_6`|s1lq#bQlamGw#0rK(|!P=y){NZ0?}R(qo06i_k_{UK(v#>=ocW` zWnuIy5bZ@Vssf^&Jx0F)(atBM-+^csluuA?$ccZUDCJ^oHGR*>_U0y~mpuLPw)NG}lr~>SHatpLCM?0a6 zyg>c28_LKBGyprJTuTBi6@_~jJ2Pm`!&;iCkg|-9=LHB|A>;gpEC5&jlc26U$5bZw>!_Fkrx&rM5 zxr~zc6`Du=Kx0HRhjdl=4n%XM8|F3BXm)hNe?}pUaue1%Ml>J3#cImsNDtD2ZYsC8 z3)+MBi@L&h1$rI#94<#={t4D{Mtz_=Il@?>a`r{ehs8)$%N{`YLQ{tq;if2A`J)5IRS{Y9T-gnnqe$eIVS~bW9jc1tNVDz8Klf7##w1oNY0T|r~bO|)t z7~Ldu9&O-6H2jg34e7=)?N-nZ!`vPvX=ERDxN)gkiO5pw9OE)o3)$*i25W+WGAG&g zkYxcQvhq0#b|TyY*#eQx2qUsAxe_^Z@MY2^9yA^Tx(qbh(t;1C1M4jS1d_At|2MWD|D_Y{eLn&JszA%dG<v>u2g#pRv_B8w&k523yB>EBzB*olzUKt=meI@5_ACRH5$S#24(W4yucH={KBG5) z$g+pgn?Mi1QiM?j5ZQhnAxHBqST52y@wNGm@h<9kP$9C5dI;86+#Xq4+<;Nr9`oKO z$mU|Dah#e;NI!2!YJ&L@HJ_C9L)`W~c2f7&}$|x?&tyClZh4CdQ zk0?ZT0XL%@^GQ}aWOK*mzC$^(0AsWfXdU1RGke#Ps93(b2b7!X2cX~0*XQMOlt-r?Mg;1K%_m$bEy^RdFWm; zEeZ52^a>dX=)utJ;+zK1b3pv%l&sWVKrM{O>S-2qUb&nHIcXj;@&b_#G9w=l%}PdD zK(D|ikC9)Ndqs^Oj%hISVOz|jl56If^u3E^O%^yO;L9b`@?pbwh5RyR>}}&6g|-8tdC#=%f!+Yk zCC6n4SSh`YIvMpaLul_^HMXQ(^cGs+K9COB<*-0tK6gef6~>inY3Q$TEU2{NWO->6PF|V zkvf!PM3yAq!hVtaFav#v8(%0i6X<+Xp_0(Q(yn+rs?u#Dyb(Tc<9 zBp|YpWi%g%)*nVCKuNT~eLop?Fv4t6h-@&-Hgvjq25M|pG_uxknN13vWuA>5xlQih zIp#uGa(Wi-Bk@WZES_WZBHwQ>t(&^xX-JPMI!Hd%MNu=gv(P3Fz!`Ql);Uf%-UqbiUX@(QXH#wU67(EPhuF+G~LRzyu%{>)uCD55h zFGV8_)L!NyRm*Ci!{l2Hm=>goyTmwLm3tIuN3)wkj{%VeF}L?P&@Se#3atU^Z9bxM zJ^{3wd5J<#0$m~csGLs$d7+ccGFuBo`pI<8f+^3>=nHLLrac4N_OQuhv<_&Ev8_Te zpgZx*$GofuddP?>^ehmaTfwyFfVzsERO`3sNBdD|D1?b&xhw~m7kzRgx$a8|E zktX)`7)eI2!uG?5(>!=Ckp<0J*!g1Go3Ig~^97jp7OVmu#Cr+1{tntZ68o^UGPnil zz>~!v(cI#F&>Z6sRVP{KEHMsNh;*9|$G$JuN!r0Hj6GE!K1I1bq03G(^N7!Y_A>8P z?R^e3%_sop^cRQTaX+)aLSI5_ya1SKq&MH+oT}DV(josIU(ZL$a%6|mDt1)wTx5CB z3*UvA_7gO-;i^~VB(3wXFTZKol`^boFCodKQR3B=QlkD(VN_9X3 zp##X@m&oRF5UligH6`oIy-|`;li6%uimy1(0>fX6*$V5vfhLzD)s#WNjL14_Z`8wx zETS$o_EyMkc`ULC&zqK!Hs~M4X+5WJ#W<+*ot6>+*5)4>Di);h9 z4`dIRWq1`LD?z^)qWZTbkPkcaoU;p1$UH#J@~walFawH4wrwHPkKU55Nmp32Wr+hI z2|{F5G!!R4OrWld?X2ysVP;sN9bmB)#_11CBipUvI1PePPpg;J8+s+o^^Vp~)^zBj zFxuJL#iDN;oO4&Jx78J+z_i`0KGv4Fa&qt{Wr^LbzSa?l@i^>Z?P(njEd@q<;hcyO zICmmPa@G$gMvTPS6pZLZkkPPPXEX?BgV0k8BRZLYo>~~~i&G}Zj*=0bL^0l+pwIz0 zlY*XMm_}!gOf;`X>xV&Z!*R;Ubz(fEL};Wn$~w@zUeQKdW2~D+p`wko3azo`Es8eI zI?%dZj8-%{r(%?OhoViiCRz805sEe$CzF(kNoq6?!Wd05uT>*91!%H)lR{I0ZWNPM z&S^k*LHnA=eL7H)dAG_*Huwjbw<&Z8P*fbGaux#>N-0r~4#l}Aqoq6v(fKGNq$CK@ zxfHKU7x=y{mYB|t~w$(a$Ieex8( z7&5vHsGpdjXmldV4D&)oD+Rj1n5k%20L?TXSF|gEj)8pz*K!q5#9XClR|CxvvlQ(b zpjqZ@HDcES;j4q9kxlVY=2NO%8PG)IXhpjo=xFmORqh6$`;FO(b|cVi%p`98CZKF_ zjH2BPbd33cs`C~gvMuMFWU<~&9A}P_^Nj3Cw-LwUilfzrEFzCHSE)M59&#!y(zzU+ zqc8_g|BUD~g>A&~3f%*Ayt!1hw*rVP*E#3CKts&A3f%`Z4^LrCyC3L8SW`2iGX&KKtTljNfx6X(xs~6!EDt<1fa|E^l;&QK} z+#)=)GkOEa#v2l&H-YL6N1+NJdMjeuTR@JvNTIiZrsI4Zro98S1c+OwlL^i?mnho% zl6Iy-9{{~2&Qm?A1j5^tlJ18ehkzH=Vz1eZj8mrd29QKfm$WHZ2*v&E`i&e6_W<(a7SHb$4 z5m|*^4GU66t*{Rz%R)xNWw@?2uU5!(S+46$;)VWPF1M=;7Kn^IF0boZQKk@%t96kb zD%1Qp0h!(i8Rg(KWU^Uil!ud%Z!*`bI)gYR`FYrLGi?i;n0zzrIT>}q>B+aizLU|` zI7#^myh$?ZhEtWv)|Jt=IAJ-8_fbaMujdR}Fw{t0Pd z1^(MLr!D&@+D$uxx<_ZE9Q~=&CQlj-mxTXrYGXm`KR1QLITB2055W4p| zRfnnNtmoC4vaHUl!+$;X^o;GEmXX@Itn7E;^s$=v&QzVM!_?Q&gmKeG4?vr=lhH0$ zU8bE{n1ZThC5yI=i7wkt?e&+->UK?8wXRWz?bO~GYli=w3|tM$NIfbe6~xVI)?CR) z;LWI0Ck!7&4;;LMq$vx*Z*koIJ5;+PDd$aqGvQPSxSRgBnWFF5Oecf+aWXRyXIWojNBYHB-%Ae2qsnd&!CQq5xKMhxzscI&rDf>^T>b?+2Evx^dc9@&`E}2cr9ceqnwQ6`+rmtkDhh^DQRRL z!OYamGd6SC)YQyZ%72O~zgc8nH~I;sGpXs(y3{x+~Fm7j9cmE|6#qjJsZ zsNCOl)XZgholI9YbIqBlnQP{!uXOG5GebHmKl7)frheYYyw>Ttk$UFn@uhd1ph!2q zximG>&W+5YpW*EZv+m#h-AvE+4DI$4IE#z^v}|-J%VwtjkMv0MsN2U11b%nE~7)ebMsgBkN)#z zdB=oyH8$_jsLA-2H)Z&E+LuaAMW2gOUxQROGc|q9dd*?3MvNOvl?~Lg(qZa$HI;eR zWog~OBGxu$sr%cxtVTN2Jvu+FG^j@x{7ov!ifh(9>vnaRx?N4>c6HfJ`9T>($v&F z(z5cUl$Dl-KP{DJUDn^ElAKf5+?gxg-%aOaYMym}xn^Bfr|K{@&zj0*|K9j!t~vA5 z$kLRO)Li{EeAF4y$Uw*#QQqZBMrmk781^ANCd5>Vz zw~5YAZhF*p%>|u$^w%_h3jV~kpl7!Zb-R;0wX0KgSR|>sj1D#RpOl>_Yu;48y5@s2 zw)d#<=Ca%)-Os6NM_F^lRLyhA+*zk}teJV%d3C5~-HeoS&P=7%47~K? zvTa_jHXSnWx4rR@tmf*X|=4;*5L;8&x zH)R^A^ry?{kgk|fV@LNR&C9<^)$Jagvg|*h{u8b`m(^0&{ng=2$+Mo5I@DB_#@{P@ z5^4^&$ysxwYtGy*&8xp#HX?hZ+tJ}a83kQ-cE*~Ss%51^-TqivR?An1ntCj#Vb&za z{FP<<4QzX-?VFaR(QoHU zm(d|zznfoWn)j3CbAisQ!**(_vU-e8Ot4mH6HcGuJGsxF%9x-I=L!1P2KCQ=vcI zKOK^_>}jXWI&nfuYUZ+;shw-qd3C!wER^kP>FZEanX7bVxktK;4m+3CNQe5$;VVU_ z>QF!R%}Xf_{T7p&nz?MpcEfGj{yJ5+&s=Sqs;S(ro+&z2hkPH@Xw&de_)(&LSAMtJ zlq$R1w&%5}BwbQh{O^?|D}&7M-J8!z8t?Y60UFWuOMTG1Pn1k=%B!Z*8-06TovObC zj!a9XuUn(jQXzw)QGb*A$2BuoBaT0gE}j0Hu2-FT-jvEbrz_i;=QL%>n!m$+SIcbY zPW|1qEOR9_n_(BCLtU2M!rDhczBLsMZ@c4l=1P~*b#yNK=csxm?98(+`{$^;bmDo_ zvi~~jKjAq;Sv+COsrz4w5#v#1`w&&<7dcj-%C`lW}y2?RnPdgx2jP;;q<>e3`g zo25uVkbodT+NCH#DM4BQm7xd$MI$OiM7b&m7BC`U*mmFVInRAUcG;|y-|zju|Ig>0 zd?x2Sr_Gr&^(l9D`}s!_ueKYO8;0d>J1lpbVYyom%iU^N?v|f}JG|xLy&Aqo!$%_w z>+|rfkhNew#||F*19b;;hu0nG)nMJs^8CsjSl_|AndSNE4vger-OTd*bO*N4VBO5} z{B#Gl{$SnA^89oM_PW8kndSNE4jlV~bu-KPjv|NooVSVfoW^fkKDHiZ?VHc3Im~s3 zFE^V-bDbQ18r|Hh!A}u~FLz*#K8tSdV-C&t&ojre;tupVx18@MHyv{P4&>$$G&s-m zje+$Y-1-AsAul(F16R7ixt^+xpYFhD4A#w}F+bgbu^L)8k5yi?9IifW ztOi=nb@H(>^eD?q8ex|6t6VpS!!lX3Gm_*)FAn~(C%hvW{_ z-D%ve`zs|cH-|&(=G?5@ohBZ8+K$|cHjP@_agTyhXcJDT;Htq^HG(zMBRMra}9>hldSdsYF=EiZ4}{3?g}NLgXN-0k-`z|Knl$kM#J z!*lh1KeOEUn&o4^4qnO1&3(;bUc&IYS&ed?91hgYzi`f}In2uaXnxLOmUEZHt1)vU zms9h;GM2Y|!*TzoPpGs0#s2EhA=~I9ZV7(wYYy`#uK!I}P3Jl}{N$ED{&dT98T;p9 zcX;l{Bbm3^!RUTg?jghKD)-~{&7aNaxcs!-d`u1;zj-8?V^zSOA%5Jlj==+W+G9T4 z?f2cQWA9z}lcC?I{5Nj)JnP6IYh-Q2-g{`S?yfZw2Mwt^kem0E9Om^N{&{Tnjv&{` z;V0AG&%7F}^T~9xvGCb+vsM^hH=k8J4&8#e z<)epe!Q93`U0rc>?aOt~A5u5xo;@TtkIn%DxPvX9W8A?p$}OKetZv4gpRUe1AJt%R zxdXX*c{z-tr)cC?In2L}KU&H|aQFM-D68_(|3w$oxt0g_f~@uP@&>PE%c$!A-MWok zNnXQM2Gl60=5S@>=IuK;8jBCh{rtMQ7ekkua|c7+GknxWIoI|KyjfntxTl_Q_)%vZ ze!>YkH-`gTKd0t!>Cdg3TgqYH`_?zhIW>nlcfA2z{RTrhxzxG?xH&b4`i;~_(a0_4 z+<}&JY7Pf_HCT5bH`mGGM#Gjnkeln|uzi5;r>pP48vVbgJ1`obuG}mddUw3vuDi^A zBb7&E_&eM&HWU7z(A7rztmUe1zPrp}Uf(Y&bMF0EKKJC@p?8e=x-j(EpO^dbee6ef z6CzXQ&h2@5`5Kz-8FFe4_2nqP0=4tK|C{doen&9Y>YG~}40ki`{B(!*D!0+lZJdmr zQ**fUu;peu#=Q2qP7eQX&>igiz+F&YlN_Fv#kmoyPpA7;)75^YUkc zIon5aXF0gs1Bcbk?g$2tpS;|G<0z-*aNym<;JsPbu;mWiiw@R}!|D#Stn=h3UJT@3 zU2M8GBDv+ssX1&KVEKPi_xR6I?&r~M{v73g9$kGxp--lGF8HbA{P}hB_SBv;3P1Ae zN#<34HMo7Va&zur-Iif>vsnFa=uQ~6+^lcRuiVe0d%>{fX5(mn<$fOBfo=3r3E30o zfo=5ZxC7g0u$x>*~2Hr=d^KAUa}e_8UQ z5t&CL-$9)-?3we~lLTACc;cAr=5XNbJ-EInSbzRJx_LQ+VP-j}4qh$w%iD<`^Ofg> zCYbFubDbRKwg#@SgLkS25BYt29?9&B-`r9T2XgJcmkBcG=FnNJ^73++bG7|Gu9M%r z4Slyb{FBe&xw++mcbd63!*lcd@Ju(C9enpRwB@{n3|h~b=Sf`79r`QfoZC4dR%T zTXhWZYG`i$TtDaLaIYbCb8cq&^XTT5a+up1y4?Rgu0@tz{^3K`H|J(gwsT)|n7=>z zEZmPQ>(lGpVh(f5L-)G82md$jf3sZqc)5-5zt0@Om?@(Je9{Nm&z>X<>b^H4!z>!(nFV< z_ne`1^YT9ncX-P>t8in&8_S{IJlf8N9map>eiY|C3Tl}?-J!alma8)ZfBkHagC!23 z`w@32%Q^RuVReUox|PQ{`?XzOlN{=5slRFcEZk3K`3SAh+#Z{ko9liSZtnB&x_b^? z?toupYxH@zt6Q9NOSxCP(dMz^4l>ZIeBYjP z2kNQ~J)fzkMMy4*06@+f>d-I0<$v+n09_w(s~9-rg? zq56IvpKwfY$$I|TL*a>rr;)*f{P`^ zl{UL5&8gT<4w~U7P%gua?&=f?Pla$G!33+nD zRw_jwo016rqUEGsGY{}i%60zdU!XLg`iH-%FBGbMu^_-Qu-sSWx>`tm;;Vf%S0;<$ z$)&!@^Pzc?T97-L%wL(X4rO;`)MjL64h19EA3Xv?m3^oMTEwf<;1)}<%bYu&YarAKoB*Btw+mMi^b z^vXT4A31Uv8O<}Xskyx#EsNB!6M8kjMHUhIMq4jEqqkh24xA1>LYoe+)(yX>S`Xct zMWW>jG|f>$x8~rI<(gExH79tQD=u_v7N0C97kVs9gkM3wf}LoY*6oe1){AU!@BzFG z9>8n86`|?iPaLeUFty{Co1Q(I5^;F1#zEq=+ zg45S3*4Jnsr@7*VT%pg^=yMex`=Qh)(my8BKVpxRVxQDwU#-8LOp8jje@1;4F`Pwg zr}xEr2iH>>JF|PGNf~mHTU@D)d@?D&670pMU^!q{ zn#+YMHml6csh`|eVaAeD(0KJvmeiN(HFE5)k*6RtyELo6wW(6CmZsD@OLOWonv%3M zr~0&}Y0$^@Pe3=8Cdu?tVz$&QE;MOQGNP%iKD(*4K3T?LudK6Ny<$0Wo%$=H5e_b} z?g-Hl-zte&zLR=%mZlXtsaq#?n}}R$j)e|#Y7WKJ++OUk99Vy%R9sbRmZMByK99t* z+E;C!N}f(mmdoH}Xk~bsV^gIsFpuDEPb80MmYyl(&=PuLOQkQiRQp1U^p=~YSDHhg zX2lb^3a&XdSHL5=N>1b&S>Tl|BacoE8;M*cM{-Hra+&a&>fmPEXU>v-LW}6^Gwbbr<@y-LSPOX!{c{4jgLwRDSYtX^V_MxbTECNZrqi|8r@7hv!O!lO zLVJBO>(R`@1lG4$f6FBq$9g5&$J{s{+-&L@$P-yBT6*UcW-uvY>Bc4ff z?AIKdp*2fABBPmTpcm@b7Iy4^s(?%}F#p}!pCsveVe3X>9SN?Dy+|8#eCU>9&F1uS zAuxXj=KP8966n<=>O`zRlRzyj)+Re+kyGiuSp_Dr;e6ZL8Q?R%0y< z^~m}eSUW4MyVxWaE%g0R4D_Ese`?eHfco4AkA4{H*N~&ev8BRTs4xyX=wBW5uhc7y z-PjWPr6rOBdm?11J9TYN^ta$5^Dq6PDbXje+|0Gk%k;|NmNtG3nbu-r3{c}jwOC`n zUGtsA)*`!g|8sV<%1On<9A7DwOJw%Y$v=h8*}zNtlV6aW`pEKQZIRNXdb^uL&ra-< zg0J{-%#k8QKz`&Otyk(3XzzAyb8={|sn0gwO=*hsv}w{&m?6^&$IEddX&*F2PLSi} zjTiSd{6slPR@h)a!;h7dk;#6Ibh4ZxQqA5OhB3_lYMkwdMlQxs1JHR$*p z4m12zt*<=iGW%yz?x9xJx8zz`@ovf>?e6#R?{9d$+1bP2;ul=}2E(s~Bk?A~Z$W0E zD{nyeGP%{?=B0cRCQGu1-`#(3&-G^WI{7y7rwr2VepmngN!Ou!ne6I!^9%0tZL_nR zzYgxrhVSZc_aD4-o$2n5jHGEszgA9iz0d8ZF3ZX8Iw?Ig&hV4m$xhONhVSmLg?m$@ zTy*2jhVO`!{4LD}K@N zlO1&p2b#>6)lNFd@NHyUi5so0ZpwDD4KdHY3fYzjW${rueJ1X0GRLV5r$B1j29BgJ zTOT-9`*3*PY@Q+C@xOTUP?HJBoY#>(zu!RueO3Jv*^SsP^viF1z4)$Q9zS0P3$nah z0YBeR5m~{l2>UOFujp37=Qj;s&V83ysl3QaZe?WNGJIus2l4-_;ZyyR*!ewpkR{!n zw8~1 z)%Sb;dE#&*^dR5&zaUn(fRB)0$V^0UHQkwV7j1f*;m^xYfj1fcQ~4RXHyi$f{2aV$ z_|LJF*%2gOfWEYqb+;cwxr$a~jN2UFEQE58-wIlZ9AqoEHGVdMi)`+;K)zu37H&)A zi-vFM?ja^BFLJNn40&zFAe*_nDc6dUt=%TjnoVY7r~SH5#bpz>F?RY5-_+ep%&iOH z=Zny8H~Ne6D}4Tr;lES=a_Y!^T=4tgN$~YBE!N$8mTtZ zB4+1oIg2&oaHFruoy{9R_^07(xiwwsq1lG7?bdQ{y!bD}N4Rxd&#vzpzK&bht+2tr z4PV!-jlK5_FSrrz^-+u;(*6Fo#86{9LVhc+5W~An=2iI}ZE=s`ugI&=mofi;Z{um2 z(f=Up;ph8?ujkgs{|^jb-)%tM|6}+D8k0E3@D1IA^nr!V&MU&$P4^moBZqzY(C`O6 zZDBHjQt?L^tE7kg4)Xdb>wsO%>@!ia`DZaVQO=dGzI3FD$d7eijQB*_-?h`nCRm)$ zg(LA~!_Si_3r#&*MZmgbnaRf(-X-Tl_>$r0%ftT8(f%6eQD-{~sD ze~1q&UVgO=;K$`Le7MHw(`B6d;9A;-G|uhgHolj*lO9E8#TPDDR34XyWvv6QH2g8H zR=oTgv-2=gH!c1xqdzRuWv2tbZule6*Z$3AhChn#%~yWQH zx__imm&IwX1E~AD=EDJw^)u?&U~GEYl)Fg1c*M8+yR7c_$bs$=dE+V_pM1;j9;98? zG5iaT^)S#ENf!!hX&7y>9p#Bx&ZZrYP;vR9J4Y_xg}zJrg1Zo# zqpjQ(J$7U>lfO__qF;?Md?mjk@!!($6%?0E8}yZt+1&7z{R+rz(XfMV+S2fc{RNWs zvHkeVZx_mi2OO)#f;}js7d^#f9`%2O@&j^J{wROKpZiq=>@n;=V0cY*AEz=Ruge?s zVePL1_802)u;G7^8gL1#*JJ+A$f)iJ`7;_4h#l!Ql}Yy*-XlN6XI;Z|b!ILMi`$s3 zsm-{A;U&jfnzk}OSMby~ZDI9&P1l^TmEn`L?y^cj?X2uC!RNB!m-tJ;S2g@nkDa)h z;U)KVwXgW8iqgMnHO!Yj#6hnzToyRoBbbp=4SJ=18QB)U*pT>k9P&P!k(U0^mTi8!%NlYZn`OHFqSRH_|V`$^7G zOgP`&Kos-s}XKEs44$lX+WMbHY6)^MwBgarhzhiu^;~2L8xol4ngY`HK8q zo}gTn5&4(Ai_Iqte^*!^;**9y>HmhEN5P}~4Gm!~(DZ>Ym&a!e|Bo=2hi46+V{`Tl z!#@<(&-9$(?}@GnPaFP}|0}v*!Oyb%Ro9>L2^P2au`1ywCi7Q$65q63!5d`KQ-;5X zhEz|mHvNmdiJj?2@76vk?8!(y+9%WE7KdJ4OC$RaQlIo=pM44GP2E4HM+|>Uo+5_o zkI3SVF%e%i`Vu@f$o7*W%j(`w#~Z25VLL5m@~gNqkQkBHaI2zAJCPPw`LLLci#Ep| zQd&*EUsi{HqSd#bR+ac0lV8+fFR<>C7IP}A>zv4H4tZKo)9McY(}`C1R<|1TlNvbw z1lDHKs!C7VPO6KYc#@U1x?2Mo?FYoc^&_*W(d$mA<6@aVj;pw|*%aUB-gtKzqlNWb2QF@SAG)ufvW&@lH@xIq zfXs=cvwSx`mu$SBQ7qU@R!}w(1{DF$-j)Q&TAt7 zaZUKPvEeVfSxzdiTDw23GD#-qJ89ftozW1AL3w^f$&8gJc;i>&WA zz|KB~Z{Rf^%=M(@{Q*GcO40%TCkiy7~yo98`0?+u8r3~+P z7s6lK@C*HO;L8~P6JbtG-!_}i3iD{X-tZa1JQ{B>{25`cO>0>UpYu9js_s}~OWo56 zx>ylqVxHEt`R6{rH!)}Jkrvt8?FIgX`F574Et0pkJ6p$>6wHUc+}YH(X!tXNyv|vq zy&dI7<`L4f>StKX?C<5UpPsOo{KmaR7yq5fyyWQTkv>hjL=FPyK8kdRJJhZCHup26 zgWMsmb@MX}KhzxwJiUQ`9Y0So{Oj&A;HidRrZVX?!;i!cZEZems_kO^hu<%GYjgAe z>oTL!j=B?LPnxvf;J?>>nYLq#oayOT?kI~4_k9?q~hT<$KFe?Ce-CT;33$KSJ!ez3dTy)b>E`F{{H%oTLpF2c{_tzL(@udz4S)chIm4#WOthHoV=_!Sme z%VcizTT#qO&=2AXANMrzWTRg$+$V)o4F9>m4EhS@&pL{SJtu+nf|XlQAJQ1J ze}t>JF|Y7khIFJm!u_+G=P#sJ-7k>;li`1MuOt74;qN=vgdk?~b@x8?^@hLZYRLTA zWS;gPAmgA1`M|vfP1jNO^NOc>!wxpZTYq@XAs-8df1ozQ0wzDp{TBT9CjW|KT!udw z{yX)dtajB;L+82z{I6?7Lgn{(WU&~=RwS=ckr1zlrw##;u+ zT0&aJ&p~EG!#{M(Vsj(Im-Vdqk^68`o5#m6((na5Yjxn>l{81o64o}-Z?&wbdjfVu zT9>q-`ST&q;3ceQ_yT?=Hdi*8U#cBhh1`m7*iWNOW{lq)`?`LJ%=Fa5e+L}wG3a}v!AN0ZTOOY zDKF&_hA-uHPp9KVcU((ie_g{DRGYDE_+nZYStDV$i^1t?fgvS1fLGV|V5zX8aIrQSc4S(1D62GQ?b(`*6 zN=HlS?>c1Tdxrnpy@fn|l=N4%lRh;0HX82Jkd2Hz(tGYrY;TJ`MqPT*O*gCe{e4#|3|}r<8?luJ(xV+ zaDPFUO!|fY4SGsX@)yTE6pLo(DtQTbx{Amz-Av?PHu<0WUxLp9=dG{1im8h6NxH#5 zfr-s*u6{zEgfd0RGR3nN#8F0nk}F9Y8~&1ixnV!b_5KEAHf_jYCr%MHdcFTP@}q6; zy}@6P{HBIKL1_{;GyG*gt6?X}Z~c|nSqD2ou2bE(iP`+Ne+Bu`hTrU~$ZutM)nAAG ztqs4ze*=7k*}P6=!q$erqUD-ykSqPo$ZToySNh*#XC0HdS<4Mu8eUbIxRv48_-`Sz zk;#9{KaZ}ixx$Kj6Ed3{ev`ij-7O5C;-AFzjT^eiq%92pmdeD94F9(JESnhqg8MmP z(#(9N<2U}w@Si(i;+php?E~Q@>nFd^cBIvm{!8~F^0X!CMfVG281tl=4qAHI zbTRoI^aWIv-PvOFr9(_+8`TY$n+&f~S?kROu!ZO+O(y?4kErQJzmU9&&Ff8QTP;g2 zHC;aE;jxIBl!c{;ZnNnwB8w997Q)~KQjDD_Y?Zkj}8Bcdm0Fj^pxW1hYdP036C58j3Xv& zR`lX&)s0UW&eJ#?QBCd^g|@BPkOHG#iS{NrIO?G$S_0pe)c@sd_j~+5N=?dDZZhSb zYxrb$8g=QmdY$IahTdcNL7uh^jAzm~uWk4fK+4O?phxk8WQ}>P{2YPMupBnxL ze`td~k+Vyn_X_nPp4IT-D(Zf&)$uC#4QS^z=*Y`iMnBLaUwO{# zyrwqePl}bREfXV#WF)qsY8NPx* zul&I9#~pnkJYe#zItJ5$=I12$XZA%WG-M`W^M1qI<#oT%)UsAf9(L26lr*3|U_-MS?>&kM-Fn&nKcR?6k*A z41dc%fF1R7F}I|!|4mn!{F16GUuf8Y9=~Y#QdpIArTMvr$7Z<7@V|QI74vfkthC9i zH$H6g|L_+R|KsubckW_sN10~+FQaxU#EbMd&pc}WSD7=Hp)G>xe$6o_nJ&*%{hIi; zo6+C)Yxv)-^f2W7Pb_%fCsV=|cBGdB=Yl z+H7)=5gG@+22p<=5ZcaU_`b!DppE`z^iB2e1ccR9M1JoX2R1(>IoC1%;?Y*G=r+ZN zV+=pj)zH(iqa!pTbAjRKIOdW#*=(Na7~kOtqkq+DU(m6mQIK4Q>tx9Znu(DS3#G$gY;paM?S0EJy!|If7IDuW?iG2R}&f`)k}E3fF*FWQzO1zjnd5jQ%b6 zANtQlhEH+O($@_Cz)wN`Tlid&3!UV3KZ?DI&R1KxV?6VK{MqWeoE(cR{gQO7*YfFqq)W8ic%s=HDTfh< zUmE=|j}PfZ!!L5r+;bP{oGx;Q z#wRitlcs20!Z)p~5B+!C(YJnxo!#Xgcdx7Tt1Z4I^Yp2l(owo^4D1g` z3kkLpYcT0(PhFDEBh*N4loj7TOHmo?Z*P2`MkKl7+aZ(Lp06RYZz1#>wy}-x(-xO| z`WXMx^jxeVHbZB z^}5CITjW;0$vM~Lck(?AdHR^_1pii(xml{npJOun_*;PAH+og}@lw9a@Lect!NsRo zOm_A=@qOd9hVSb~ zgquxfn(M^2t}AN)WdG-j-ZT7U&s-AUH+&D*Pi$3}?_>QQ?!Lmmjs9(Sy?gdd_MN0@ z4*7Jm$=v94KgfJRddMZ0bYEipR*n7x$38dSV)*@z{c`-S;S+@Ya{7tMe~I7Iy}#@;X8!^8C*9t#$sRU* z$M6T8?z`_W{2?tjPBs7US9-d&A%p#(^RLK#S}rSyUOeEi6YntmOPm=bfw_Qm4CQjC zX5~(hFUbejK4bnIBl{q;yUBE@Okz$U?PK4Q?q&D{wG*E*`8^q9lISa>{dArQn;Tx& z8~(VLI4MI_8_!x<`^dh?uso2z z-NE4^A2{L@eq!{a^#Mivjo}qf`$l~R$5&5sIPhh| z5BJ!SS%&YyJ|x@cu$y&z(srv^x$o0&v;E2Teoyxp-~O=foCzKBmEJ?gy$)w$DAu4AF#(gCstG1?(t4C8@f#-pg5R2N+psG;$kwuxaaCp~_P8QjC@Q|NE@ONz z{ArVQJ@@YR9!h0)rmXc%W*3!D8yG%T?ZhqUhx)d3H~Hu%dXmOkne4Mk8`!xj?9oZ<3;iyRG<+?t7C)MOKj~2Y+bU@X!*`d%C}u~)_t(D{ z9`TQK7*Z5$_1#VBfqPog?)G(E<>j0HGUoOT48Pic6Z(dR zU#584prCR4roMBG8ybGKJ{Jw`hL;N1Nh=|ru#cU%rqM6+mm{;j*|}Vw&BnD1|Awa@ zg%O5d;jf~sbsKc#Wi8XaTY);m4(|U$)CgW)e?Poj%a%WQ2pJ{cW0>cZ2U*NhJ%M%R$ zqWl!7S-)i98<6w@W3Vh;?u)eJ5tOGE_{PELD)}=vW6k@F-cq0}qff>D1>COu!02BP zbnSb6!Or=V^`%Bxl$(yQesaG10`?i(q=N)p_hh8=-NEwpDeTEeU*Jm8ktTmIQWDs+ zk`4s#Ss*A1b}&91)sQ(*-v1))N*agM*VfrqQ6vsw-?E+Ihrqe;5bYCc=U{#_a<%Cm zqJ21RZ!(7=BjH%{`B3fivC^=4h+OpQH%)$Xe(lBmn#u3vcchK(F_}JpKf05kN4a0` ztL*s(J;C!$O4!|G-c%X8$3M>94@bg7M&HHVCdExxv~q8iv3xJRlHp_BF0|cP!*}wx zV)|C|;WnXMxy|q$*{4am$MEmV&ctm6li$_dg`X=MzO&mEI+=8;I}LbfgRXsH2g8q5 znTS4Vf+GfrvPru-Xkl0ShSHU`qtVBzOx(%vV;y$FE+(^!!{0R4@C6IsXS`p4<_>b2 zI~|$BO#XYqw>d`FFD_2O&UmArs(3iWbWd}qLO;~-)79s6nBk|W9T{) zo3c=02ktwrAufB#4z$ZczhrEacJ#Lqx7!T=uG}FjoYLA%2bdmAjY!7Iplt;aAHwd^_UBW>0?Kl>LrLY@Ka`d&>VQqb!I}zHxMn6vNhusZ7 zLFs8P!;g0-0QWKZ6V+zi*KmE(Uf_9qk>`{pp7s@a-dE(khvPYw=ebo;Rs~;^yp}Yv zHWpc@iZT+N(ZDg#w*uc9JOFnj??T>A45J4{3PWyoDlX0@X&iu}gRaj#tB&buVHAp2eNozU(g-wo{^WbOxlm^>Z) z5%Q1FeFFFtv}ci-!SxGV|APE0^j{{w0{(mGe}w;Mp31)kKAZe5*Y5#8B=?}tK@ohb zS`fZk=G*B4UncX8%XxmMQsg_*f-FT$mj$+wSAf1UxeRYLvVN1bu503V7zKVc;`pYh z$S+BX{3@u(uX~!g?=3RF71<>g=)0aT<(v4eSxF8iSD+v5TI5)GCxf2`oQTd@@XiNb z4DB1}Tm@b4i>~E*3fDJqtK6wtZe4WYHtS#bvQ5GOCLSCG_GcLo zg?toQe}ixWGAClE(=RHg`)0oPEAXC?{zSf#d=2?J_%{M?C4U$G_kec;?*l%7-Ra~< z!GDOo1bhPc6Y?|Q&%*mD`32;E0elhKuYt3GuaN&h{u8o)A-@UzE#&?N{xe0d0d|lya2tgL7&9+Wx&hHS3Yda{YVcYv{j$%$wxDlm7|*-_Sk)p9AbA_midQ#21TFD0*oI zUx2(|k+I43qQF+Jmjo_FUY5K(^p$|C09OO9L0%jEb-CV<+zvj9yeaf8fLoKdgT51a z7ihZ{n`94Y`;xyvJ_!0@&AXoR;(7veRgG#A2i2uUo1rC>R6~T4J9U`Xgs!5Qs(>{K9@$ zRyi{#vzh7D8ZyL7^tb-4(oBmlou$aMf7X}y?e^b%WQ{w6Ys#wXw0m`H2<{R%%>8oNsSXaw7jPZ z6<_Pyv0rVbzFOa+aj~dp2mMhd)W^BR=S;V9hDSoaz1|uZkE&P0rs^g1l$YQw%o?d@ zB_vMe5KeH~k-9%s$ao9!jY8@R4C88DilNa)$_w=Z-%9Y4MSMwh@fFUAN!^KW6H|BS zSt2eOtKBs!P^$-g3Efpr1E_H(KuR3|y&x z=vkb1i+Y{_U+k$boGH+zC;JpQU!Z5%*cKz_3t*F(qwHgMjT2*%58bhQxww3+bw^*u zB>(#ww#tRbbRK$Eh%3S?Q@=`G^@8bTGWzZ?=-CC<4qBe-sZ8iun)~-a-6J-II4Vtw z8E+}xy@s9|=TZnGeH`ZOb4(A=T^sW?Fj)}8{c#cw6UT1IO1cb;L2-3GoEJr0&zg{#HYW7P9? zq%46pRa#l&(i3}Dku_rIjjmRY^uZ+M-WpelPkTe}T5)asOcL-#ZK{7NBgm{7SLL(0 z3b78>=L58wuX;-DT_>&^BUcp>$k-n8>ZQvaA-Xdnu ztc^0>@;sxEKG8ZjfhY85g`r#eT6w~w=TM~j(vpPzH{&(Y-etzc`f-D(=TlAKUH&A_ zubI;~u|L)IysAq7W^qiM-WTgLIBg@=r5^jHb8b!<-o*Y*lJOkdab{$KXNKYrngDlNMfH*^IH97cVjGIx1Hv36(9)E2Gm06EH`V7uC5&CDj zPThL-LnV%|Bp7tDM#>O2uPbJhV)LwZtduu}ZQFg~B z<3QU-BT6|6Rc3qHN%TCKR=8#Jb2>AF%1rOwPIl((F?@%||9whJim7exnQGlNT0whg zm9ttZJ&Fb9*gfK&%<~aX%DM`0o=b(Rz?m-6vsc_3o>9>RqNi68xGVQyk@M8F{h;XC zYFtImS&Q8raUbS#Y{5}pfL8{p?LA~))}uF>$Y{Ynp1cvdF7P|tX~bB|cz+_nH`CgoIms?@!mGu)~@ zUx;6f)t*X!&Ga%}1)Esz*;mHJN{@0X%C+(os{TH_Z;-5wXx*rD6;}~j>^U$V#5|8A zb*S)vgl4ci_8c4!!DfV7qb;CnthKJl92yT}-2{gVhuA_jnb>2`_P7dl?JruM@-mqN zcy31d^mt1eEAvcc_UFD>>!+u@=s3vwgx00nGnS`#oaX~C8c%zm%7pIez1#APE?^~5 zp4eQR^Fn=Hp6gY*Q>j87QYn_eIr*w;aD1$=pQx6!e!|H-IS+}R!{qQ7I2TL%k;+St zUR6thx*r*jB4(;r;X!OHMb@uOCiWZ=q0QA(n|c*hzjwSGj-LUWfzLog6L_yecs)nQ zV;D!FsX`qZG*0sx(FCpcNcj@wwKSEfUJK_4MQCkJEykM=kBxfXR)E*m;Bi(OXFav| z9xca3J@+Y@O-_tLkN-{oC^<$n5~`>ERl3y|F_|NHFQ#W{2@&Q0B4z6p=WC7WJt3YL z#|+@vm7c-Xd#s#fyqQ{_o<~P{nSSU!J|4#&j4NysjiTw8`;8dWp zp2;UXT`SElmAN-)ZOY*3@hegE%s!b-yR)n9Ezjkh#&2*YP@`Gc?8J90S^X5A5ht?G z>cr2oOfKp9TkNo!CUYKFNAH>OtIVyOL`Qi@n4UCY0iK?bRK>~+Y+{jf%=AhOo)yoI zv#~O*9{Qyz6sx^@C3-ez-#PKzsFHJ->2vv{YK@Vd$L zOT8PPC5l6$DfLN%hfF+2f}R(qZEHNe!Z!2r1@Xd&Y*VzcqIzmmVeHqlEF$NX ziLPSwlc@8!!BD>_el2ocjLfcyI98Fr28cxc;y5V=sN*!&4f#wa)Vt(-RZ<>SyhtyeMB| z_9DtUw_1#`22|eJe8U#B#dI&HyliaJ4x!#DlbA!w&582L&5=1oI3=*$tnl*qji^^v zUJKB8napMJQuM0Ll*iAMGMYkR{C!=nV6B=0Z*o0xYS{$VzbVZl^gO?w$??i4J;-rx zO(rkBnT+)4@6z;)J#5xHoAo?2z0z~{D&5z_Z$&+aZ;sZz87j0)rqX?NyaK(B<`(ME z!3lZFi>6=c{$`xaeBFV~GJ2u8(merQCUaH1Qr8lAsjhWSAL>bFCYGyjr~qn6kl z7@J%*DV!Sb)cc2~04wP^qR^xzjM2N}J@7)amY3;;hD@k`hiBz_6&rp=9q(qFJGgj<&IR=O zV1BAC^;d1*8>eBDD{N*o{H1=Xf2Z6RMbADoo9d_XRF5Y_+z+CU&D5x$);;6hF5j2w z^YkU|{;Z!(jYs9P}llt!B*?(2f9A!Tk zDM#BzWuVn>(QoZ~6Y;DWFMTMSY^XAvbjUl)ptCUbgQ9a!Lxy>fZ>A#a?Id`jGnMhA zm_7{kLpjH#R;m^gEdJ-*!)jBtSS>1iFg_IZN*HN5FCkNHlI92GVR*>}Vy3iOiD>dn zPT_+xJ=RLe;ipeLLoyyPmTIMk(_6Z&DO?oxa;M4IZF%bj7Pif9*3KOS?{#c%g zdX8vBZDNyfhUg3=Rc1!hQ}J=p^F@WV0BtBiN3`*tj7h>=n~5E-UBL^@PsAtKn@Fib zL`By>{KQk0X-@G;-Lo|(SOF?{Qz9k`pN%u3>I;20&E<)nVcGPwJO>YX^st3ZY?w@H zdP;s`w02m@;zFz&GC$&X`JJVz7wTT+*;*%irfK|+v=eWhk3Wr}6x~bgZNvu`v0CFh zZfK>S$6v(GQrS-^VF}^&*pA4FDH|Ur5W;5 zd}*cqs`XaRPj1I%E6<$OmznXGF%**1_EVU={vQm!7=MK?(+U-MwZgPQm6L`e&#bEW z`|J3d7>lVO*i6tuAr>pZSgaObiZ92c=iCZ$F;GthF z{z85!Ld-hRtMZ-4Y|5+oWaYgQe@A)2tDi`7W~g4_X+es=kAH|&p6hk+Z!+(CjEK~Ap@+PsKT6#;LMsb$$gyI_!b}5s2UH)Qyo@h!LnNH%V zGReo%pW~avI+dnVUdrRy;QgL=!R_E$ULOC{oaw#FnMXRN)#fzq3&bon2W!WlarRJT zbcmF(8C)#sT#)ge)$^K4foFfu*HgcqW1C$m{AZj^pSYAa9-FczC(gH(QWQP!R!VQn zzhcmNg}pwOv=8VNeO5~E#(&39h!V6H>Jvt_2~VM(bv1>Z{WzX*&SFiUQkq?o`Yg^T zAJOzd{7>W_nVR$W0`P`Yletov5l!#Mf8i%Mbx-}FUrImbRC3dAdN00fXOzEHA1g_p zWR_Z*C)F#!)}}e}!=anbsqe(KcG`+;5H`5ad z!iX@N@JvR}pwhF0|6Z?A_p+0cUSSoReX$=sp|&LSI`Kt$0#DDt(zDcO@GhiH?<-5Q zn*uU|%)jMB>Ze+vKe#+*D$~+DTe?LhJFHK@^{js;)6)D8>5;^_*|AO?TqkRJ;*D5j zf0gRo=yaue(l(NybBN993S*t4gSsNTpyQz-pUd<~zu8Q9gJtl@7t5VaVWF$o1;y#y zlX$nMwB)99U6E2(Q&)v|_tALMjW?b5amsV9xvOTL3AWHNy{RU{t9f9R-ZHZueCE6Q zq%yoj)9Cp!?GXGN@D8phm*_6owGh5ksY97J{pxAE(>f%+Sy-T}#K~6ETqku7UU?mQ z1#ERqZs9ILGHTyNK4L4EY3XVPhsyqz|B=?KNSVPe(zR%pfWw)~)6xPm3%JF)I)Jpr z-12h$7Pp|TTGl3so*2=n@_)tETx-|jUBM^z*rII&HTyqG&FT4XN$ZpGT+|sGOXGk` zb}fb8IG)YFW$z8q!o!TWMAxEt5+UMmEoHLBBp0qSL^@L zC$Rk$va> z%2G9+zORh^wLWO|<+_%~rs_>G9ym4=yvcmMvb3XT+OuE&@7F$5=33#3T`P4(u4>xP z*l%b*DdVy7R_I!m^7x0JiFQ(+VhUI8TBS?>Zj8<^N>zEiQeVnltI~Iss&62amhqIf zyj!hH+aN)wj%F)@smLs-ml#?0zJVywVcUkGRd#v%JkD#iS^kU zH?4+HFpn$L_Sm3n1b(Js8Jnr7=fcxQnT)L8wT`Rs_lg8x zCSa?==$cim7Awp@BfCb?U$7yn9pMH3+7UcvqV}%!T!p_qr0qVTl-pF9shonlJ~4}> zh|R?%JfQf|aqX9aU&rj`AXXd34vNS{`zg*N|5kokcfv8#&@R*Jhy3 zs;BkbtZPh{darTG^oW}AYMduO(&^t~nnB&MMBQ`VR8GwurKMAcvijMGbtbbmXEFz# z4+ix3zbVus_tP2NqH9amfY2n=CpDpoFF9}XuF*P=Hz#d(?kQA{E7RY)Ya8?udO`Pm zO{%9*Wwz?t3_Ud9MZJg7`T>;}y0$|vnoaJ9q2;_liE`Xc5E!_yt&R4y1^OU9$KC&AvH%|cW(6wWi{+*Sq4jFGsQ{->2M8CD$ zsVn+O9TIg2O_8yMx2C^+*EZOk0*~i?@J7H>+X3pfZs#sE;MFKEG=V#X0Xw^NjqQpe z#DiT*vmlfBi&Uv3#CO-O-As>qm|j3n*x#wlc6=8a+(+dF#!A_E0s0Q~mxL|RI$PaC zrsucfyG!i_I>wUqiR3exF>>bd+U2O37?b_2Ni3R3U z{+dWceg;>efY`f;|sl#zoH<88La&?;i*ptbnWdT8mu+^Wf3h$d6R*y)Novv z_*4kQB^IU7N*sd95SIhH4(e*vkbo zT$0aud$|4S^D4(bc$BKJ0IVO}bx4vPFbF*hl4Qd?V)@9|SKJ z%Gk{P%w!_x9UpA<(>995K)WZ8XI7U3+#$^N(bfmXJ9AdzN_ole><)Eh;;V59>>ZTG zcsJgf?l5{tXr?s12jc!=YzzI`WP16g99hOgv9Y#vOKIdeH`ZDVSjaV7)v za-athF1SjLCe85rkHJZ(CNGjYB;llXe5(JmwR-(%PPciMFPrc6GhdD>@?waC}xrZal{#`$Q>JV-f* z-ZYRiX`Vhhu$*~0d3~zt0HblzJiYg$SQq%pY=j#;f~Sd&;E?y;ykFCIvX&b+Urr}u zJTEziRds-LbNj(uPOdX2 zZv|`9Q5%cooR4(!*3LO;piX}lIiu$4jGfCdYlzQm z=*-K>X7rqsm2BlSJjgj8*Qwg+VQMn3Y3}vpMmZmOo%PXCjdgAU@5NPi-hN$c=uDOU z_TQ<43eFu1+I#sm2LEy$D~JB3I?d3lb2;<&cpVF~;7~)_C-$=07wXRReK$7Visfw{FAR?|^=%n{l{#;kF7v8p30V{;%6r}O>ibX0WPbhh zv6Na=q&VqU8=XG8y*1brHc-gT`PYZrp1+d&(|ecvW?TOD1>A#~P+O$6+7xR})adi) zth{j8C5}1gl>aQopQ;*Y;4@z>IBVAm0m{=9`>`*4T&vg>Q@4#~nb)|pSx&OX6bX|3Gb9pj-z>^G z_C4D^^jhz#q57jY>0ib8t1q8XAGzG?i#dPywu`ax3OAhlSkD!IUG=<{j<*)F_YbxA zULh*s%n+YE?-zP^Ar_TUGYYz8{?w`E_NE`IQfK$u-&m!5!B#ZS|4J%%EI+%9<)jTX zW#M-(l#7>GaT(#g^IrG9N?%#UI{Uz)!!5;&os@+UbVmKYK8}Q1@SmHX=OSksX;hxu zW}%jjId$HEvKiC9vPaW_K`%aS`hVE_4lpT-t?jDnp0vBOECK?8Fa#CzB8Z5AMnO?f zS40I&W5&E@j5JCHWyL@+jhGNY7bE5|TrbAEW<=37-K$>1nn)Ywf6qBx;4aOGaPRm3 z-~YHgO`W$+sH)S|)ji#(ss={tZtsVhsG!?!6>>5ES)2bU`D~v@a&-~>9Ks3uq3>h4 z9a0-(dHxHZ{v+4?yExj2g$`G`MJKen^vZ^5>HU3lR8`W?q)YCv$^A0g-NU#UN7YQ+ z8&}XD|GocN?q9k1MQ&W}+~Z#h>$ho!KHT`vzW^tQhPbQn4a7S$m*_YDghU9bza;&HBc?lFQKoDHSgBe zb$tF>d;`YXH@=H6yiNZq3vzvP`&V}H{PxC~7}ulYSafq1UCi{hTc@(?s;G4HZv(G% zSHE_cb^K~|r}fI$PNse_yfSQD?)DrFaTu-J_g_A%@49{Eh|hi$uaw2S+;w~Xv)RJ< zil8cc>ebV}-)*#iVc-?azka>nnK`|0)7mSq<*QdTG@}!wFNk$;G={jcAHEoc-2mM9 zU3=8DiPuah8F#5v#Z&K%`Fq8fzAtsF%ZXRY)6rD4d0nS9C&+hpQQhnR)ofvL;FXH@ zGk2f(ec#a&ZB?%NGD}riweS2FgA>#>c1rOHwQqDZ>cA_PQ&spLRFc}bdr-^F$N$P< z`tZbewz(M3@h|I)`fBf7j84$rsy6mIttz_CU-pt|9aXn@NoLv)+2gT@UuV^DM%@%t zC3VGlv5v-TzmA4d{)*e5Q)MNogZnOd3-hI8o~rwFWoz`6LswT9ccc{`HmlCv^DMgU z#J6J?|B_PF6aLlfVx380v|V^-Om)L;yZ4G!n7pp%{5q!XUdlTc1J@6lHz>dqF-}eTM0sRmEQtD*% z72FOhIy|w8hIfBxO+Bul_PBy3zcCtp#Zy<&#oQIQi?XwEXKtqUQ4Q#}DR^bfdA~IK zXf%D4_~MI>P|hZ9xOsG$LS@xv9Wf68L);x7*VCN>Ua7B(^}~~m!JV1M1!8aNpQkUn zoG<3ySDf%$vv?}(1Z_YWi&o9VoX*X$lK*V1bU(+;HTRoJ^N4xOEHY1;r_HnGMeJL7bMA8H zIS)FIIE$QToEMyzo!6WDA%}Ax7cmtc6PUQ zcXRh}2e^aXL);+O5ZSVs0cFDTowBiX$bF z%_40g9V6RBwvX%_*(K65(mS$Oq<`eV$dJg0$gz==BBw{rjGPlWKXOszGJKaF7nu;5 z6qy>iHc}Cp9=RbhJ2D3`aSI{~BacQNk31Q9Hu7TR<;dd5tC2S%??yh1d>Z*Y@>S%U z$oG+-A}b;)8jBW2lhJ0;=Ft|>w$YB!t)e?byGMIR``|lq|LA_v1EL2<4~rfV9UeU< zdQ$YXXnFL4=q1rBqvNAfqtl}^qO+nmM{kYZ9=$U-#NZZyieSV9}piLKO{aRJ~Vzr zd{}%${P_6D_<8YB@hjrv<5S`l@#*my@l1Sf{E_&x@#o_&#b1fP8GkGOPJC(nllT|$ zf5yLwe;2Qb{~BK&Um35B=i-S(^F%7qEwNLgM`E|c?uoq;`y~!Z3`rcG7@jyPaa`iW z#K^>1iSrYeCq^f(N{mZPOiW2!lbDv6p13J-OCpn)mspT^F!500@x)V!XA{}P3yHra zUQ4{0csucK;{C*jiDik;65k}gOZ=Evp2#Jl1w{qL1(7fdUdUNEy@cEKG5_ZB={ z@OVMC;H83>3l7oJ*pc42wpMTM6Z`h^n;rxadSIHT~E z!aEA@Dx6oipm1T~!-bC)K3@1l;WLFV6jl{3E&R0b%fhb&@Cz`N)|OM zYFX5#Xp5ruMIDM#MV*Vf7VTKnqo`L=@1j0Mdlq>`1BwO~4K6yQXh_kKMI(xiFFLiT zyl7O>6-9p0xT48L(~7Puy1wYfq8UZAif%5twP;S!yrKt+DvKT}da~%XqPL4aC|XwZ z&!V4-YKu%VmP{sFBsWjCO?F6jNp?%_lc{pX7k#0m;G1gOg>+A;}|? zM?(z5FXiQHkxJDLok!rF2Zv zll9$*gOGOKj4n&dqm$FwAv)!B;`B7^4@bLi?}{CvcE=7; zdtmpC^Gu3)lhro58zP2CezKyuR5!3~+OIo3zAQJ>=9=w)(>Bf`!dlLpjR<p$*#&XIZ(X>nk475CHen;rYZOL$5_t2Ciwq0eR$xh+c;+^ zTlu{_(X=D|66~W+^s|Wke_t)o;-P2Zqc@Oq7VA~PFC_C1e1mycUB!7Pz#H$X9W{22 z1m`sD(L(7ACFxX9+i8j(quk%Oc{i;8IT)+(y~y&tutplu)N0xziKO?(Dy1(4G~szz zJN-lE+>dl=Kve}4N!Y{s;95O{%eDE_&_^u&`;=xFe2i7kC~qld6nw0j>9bk#-@G&N z4`{z&>j7#%NuRK$%#lIMx6|9}k*s@+IuR}29xFGKa( z?de@ruQhmow!1%8>3tEaSd-2?>>l%SKohQF&C|6_DUVjadx!JS!aDzNGc`jWYffg0 zB;nX1N`Z=bWor=UN_%mdoxm-ycxf4|&%@4Rpf=NzNX zVZCj!(w(JjIh1b4Qk{{~zBvzb?K<=RIK=IwI;%&q$GXtJ|Nl(3`i^;*d2ivFow(FK z+OLG@nOI|+)~P-gcp2x+W_+BfW;6|Z5|CWeW10E{yNZ9s`JZ4{aoS^?WWGVW6WHUL z=%2B+9ksojE&K@Fg7c44Y53qre8aLSzB2!0^qKi0pqi;O^cVP*@-^qvYKA0zCUyi6zof7uz+22S_@>odrLdm* zQH*0)>3!Xsw2$@IOnnWXBm#f@f)(Y6`!jQBP1R$u z(rXQN>V8EZ!<-{|1y+l?Va?Vf;TvoH5_n`b%Uyyw=9gj4^el5PexnhePzq7Qd+0s& zUYcSQGn{|98ml@Ye{bCv(TS9QN05Jox)Qt@W+r~)&F8!s{J-_)MC^P(mOnF}<5wP0 z&9I8z<3L28p%1`sKB3lnlyC|B`H(&gI~9o+Cz~lOHyLaG5pMhV(4=^RZ8IQg;QH|l>#iU2ayTQn90-~?)Z-rJa%i>pNAz&c6`$nu2v&;JF6&`pywnpfrVDkF=?4%`wo0vrSBmuJ zoHHMDRV(3_l}hk%%$1#woZr^?W*b$8RoZ{=n~Skl#F4|V0zx?;}$ATtK<4afsy`2V$DDpm)YBeARA zbo3_5EryRO5nV`hAy$@L2rn%L-cV27q2{PNv5;Sc>v)Hv88H#`BC?mkYM%=fruQQ^ ziCGGiw*WJKS0jgLn%#UaQ-@)_(cxGN<37wkzMpf3sKbFtY8&`%2vdYE<~XVwWgN5qF@4TDNySg&mtn<|*uiMX5dRWa?JTVW*rk zk=~B=e_QDb@vi4NwtAPk06P$00+eN34*uQn*<7^?qSY_P?lBi&hh^H~n=A~)N+Yxa z?=JdD#)qrZ)frd`lX%;J>cypRqt0Gai;Lhr;$EZ%>B0I?eGB#@evosvOeuNO?emVQChrlDfZvKJjf#s9n$(wNz9=g+p_w3y*KhE zat`g2Mmc*i+RM;hVBaxKmZh%{MJ?~Dx6)hdXU+3?+edkHjN%%Q4{Q#lyXn?W8>c-> zwdVh~#=6Ot+8*oU?~HZykLPl>!YaW#VU^%MY;P-2WT7?I-|LP&1BjOYX+2)=uW zf5x)xSoq~zyz?YII_^}>uxD}$rzN+o7<4PV`y|e6?6bbLCJ#A|i*@LuL4MSUF`xFp z(4b53wsbSjY3jRk)p@G7-d(qKwg^0UF4nQ#!fD6S7r>7~m8$+&C+q@vu>*5DVBPF} zkwdlU!2h=iQp#z^IW5gc$r-Ci)i#5@OI!W)lh9cW1={NC~yq2ZjWs^kcn@ z%la6PK@C$F=_pgy zKeN;}PIqS)rw2>U!ur0uJAIhmk>AOa)@l0sHU6TV94N0JcA`2dpa*geC zw_|<>?B<#>olIxb#dHO42l!$abA`Fmj5atFP0U90PKJ?GM1zwhezu_ODJ*kQYY^Ju@|_w)z2s>uGX zPOre1+d6wVdj`Jj=4^}aINP(=w&edkKKodM5Iu$T_68-s+Z*eCi|=TMi#PN_=AWQ1 z2O`PKH|YN>Sn3k~pS0}J37*@QE$(1;o zZ}6BZiKOuz^9$say9l9Rxk{JvNTbTl1Qd$I-^a+y=oG9FH_a5;ORdSv=t_K*CApfF z9?Br9Vs#eO6NOQtz$FUv0wQ9i94j{j_8PLF>YqILpW(Dw^*fduY3d) zoQHcT)yh@0UIFDr@yXhA9#Kz1&NDu!1b(@Bc!GHZ_KH;r&JpDmfl3FIuRZ2ALtX~0 zd=l;OHTi|)DmCSiZaH&_s>H9IN7M(XeMzJg-%8$LssdC4C}pbA->F5)(6@7;XoVZ1 ze5Vp}ePG#lJk&XX9;2}Sg_Hq`eM;ej)j_%021})LLZOTX@*jJ=0iI#s*DyuxP3bi9 z-a={ROzAj!Hgu&1r7r1G+m!2rBA-^`dp704yG{o0#+INR6>F%plR{13ifMQhm>Iq*Bo=DDH{)wl4k3$Lw0_ zr_hb4i1b($q5Ay--`6;m0p)Stld$Kxq(SGc+^u#dfWo!qW|2qzz>88Zrt_xiJouFB z#}w<#$0xy(3>#ZSSZY8U|pQXTJjok zOWe|cn|0CwxLb zMmWErG@!DoJfKQ3-(0v#)qwgq)*59fTpxX)k*=i?gs*PQ*B8pu9@apkyi^_a7j9c! zIW&mMtgOM+^B$bk#%SNSbI3GbPaXtddgV#hZ z!`>htRI|s4Dpwi!iYS$Eo;lr2Q-+g(^pXl5nbsB z6w=NCQ6FUxmBkZ9u_h{w6%vH&=ct!ZoY#|1Y@F59*-83S044?ac((Q#F8=5cWVNw6l-!x zo@Yt}Ds3_Wl`-@C?P}Qc&{ftM}lrF>h?SnED*6!%AH>+V(ZLemzkQbS3i|$21C5*OlS^OO#h%3W}aUz4{8s2}K%2 z`E@qWXM2)oHOlK0yg|PlT1fBf)94a1+ouMv8GCCCAaAWx7BL{HFyB0vbd z3Q!a%fp=cQivbnl%nOPG#c>Z3L|<=`XtSUKpk{dgET|Bu1Yd~+6#+HJbuK6gv>Cpx z2`UC^fj5}Yv?_?+uG0HgLAwC$09#_S2hfgc z+kn>-XeYd<70F$JO7TWkP%ohFc)KrXH=u6V<3dnxpsgV}mg~7YuIpXU20?pZ2e=-1 z+uN0Sd*S`T&Z=ji*B5#_f-909-beLBJq6J_J^K2;CF}Lao2XtmGg97u&})xq0pZa; zuM{~TyaSlmD`+3Z*z5|fv~~~>)lMV_15xb+9Rx(R6Lc`p-iSpIbO=yiSldM}jCuV=$sk1f2*( zu_l5}0;0W_1)U5;yDtkm1&F>c3OW^tzL^Q4sIVc}TS3riKnJ0o(jxjkbTH~Eh*qjU z1oaejHojJtp`L=uvE$#NsHY%$^E(9f6m$W00i@lf1<`l8q43Mz?6Xn$2HYDSmeMap z>EvNSmjRK71ziqwB=%i6hV|$RIr&?7qrp2GRt5Pid350UF+fK_PtLZ~tSARj{fhZb6&;+0p5ceWzA`nH1iOoqsr=Wepn+!yIbqksTL{WHxrn27Y z!N^B3RA=BDoLHF#-Wjkdqay7Vd?vV}HyymQfCXI-bT-a~Ac|f)4(CG9jX>w%`BczN zK=hSDN|*seXGVB4f#}Q#Zx#@p89}pw=x;y}MDf)$=2Z63c8Glq2eqbH(y{o$?BX7wI1Y0tV!uT4Nl5O3xDT=N6wr8#n1Y@L8izOqLC*k9 z#5Z|C&jL-rcTutO9MELMGYHB8O+oacpyz?6swn|_0caAU@`U#y5cMuWFEMX2>e&wU zq}b6Zy#FR4iXfyINGbglNLC=aPtdE3rs3<;FooSB5m`u)fG)0F2a$Adatx(N{sWQ} zAtt=O-UEpC5cCz$0{n_L6m@gY3t(ccfSLQ%ZU5wmO5k3bJYPk1#zv+%{&1qZuzB7P}@^B{<# zamH}TWaT$Vo`|R>so8R%NASEXJ%l259>wn_xvNq13dKZ=EtAg4By^C0BL0bS-!HSGh6d{CF=Yi;tBC6g~ zkwCH|Bq@GY^in_+ODm`o5XIFB>I_7Yrh>WvQKYG$u0RxlDrhSpibxc+HPGRRNffjV z5XEN->IOtnn}W6lD#Dc|XgeT^W0YENkJTieU3g*ac4+zIHP;ECkUh}ZoW zt~){9vAW}zi2W1PL-*8l4GP*-_tM|u`V_RA?hSf#WQ^o!Ev59)+}gB8#0>&A#O4Vsi87c+ zU-Wt+22IdOKopO*1M^PSr*KT8wBb}e5^;SoEmz!Wkc>i7(CI+mA%<4a89)?ID>f<0 z5>tHwbQVw%VgZFm(L|V}5+I5prdVX*QIu43&|;HfJWBLt0q;B@g}7YdoexAS`HJ2J ztk*(ItuNFU>E94pD7=fo+Z<;?&?unkh#M3{-z!^V1xZ1d0%^p=3AzkudpuLiJ>YVE zg?=2Px0FC%&lh3z7UU!1;&VjKiQZMv+X8F%$`x=mqP5%U7D4Ibz-zC!L_JA%Jm$vG zh$DIv!Rw$q251scN1Y1LWS|sADv_MRR@w!gmZCgdXc|yw zeQHpb3ZO2!E9$ZZ>O%8SC`L-q^_a&((LiGJMo4Z2NkKOO(cBTK3q|2?i}h>;%><$- zc|o&)Xf}nQ*+4sDm0CeJ18tAl6M}95D#a)!=vE*an*`kk)C03v1lS5IKoqYi=rN$d`k(+k4n&cQ!dnDH@t=a80HX0u(33!A zh;S726cCMmf}RE%f=E(9&j8U_D2QScDN0w+b3imQ3d#aebhDu6fhhi2&p;ir69V)G5XD0X?@gc+^+^Hx2hd4+n*db-(HJU{Zvma6PYux9Ks2HX?;W6#`m_MO z3v`-3JwWdPovzOa(EC6XnJs!B0G+8%4$u;yoiR5=cpn0tjeESHr9kKC@&J7VRIbwj z`WWaqL>-FcGN5x2$tLI%p!4-P0iw8#^AOP{ylS8e5#c82Ga!m}lkx0x{RKweiv#qf z{tD>AVAS|0OI{qHe*q!(G_dkD(8cgOO~YD@A{jAJL-Pp*#Z27L=q@OM*rU;i zRTRGzA`-_}*9WCjROI#glAxZ&;L&VGIk(LaJ?Uc>pXfDb-t__642b4AO08P}-Gtd$ zf?5L2#N9+tE1+3=c7P}rbGCjoD6ch81mB=Uk|Hu^>)}ey7)4~>jM+ZIqsYTsF&juw zd!VZ^S5VNFK(}E=s-O-)x9d!RIs#?%9RW%K(R@6S>;!ZtW;F`x40IP}I|}LobT{Il z1$6})i}Nl|T@)R64`%oYZyWIL#SA||-GJs|o}?g(0-J*wq=G1#?mj&)@b31Aqq`4h zUc5_jViUm=L{Vb*V+N4uQB++g)iro3p-996%p4TnF5u1AEdvks04m08KjHNRTA-r= zZ&#p|>VbgQ3+Ms8JmBpHv?XHBMXxu|gP8Fkb=e)LQkMpjeSlJGVIa8&&_c|n5y?G) z9?~5GNs7^a5IpHidz-#yA#4irOh0oyzel0BD*Kpy%?)_3;_^F|{$_xA81u5EF8jgC zW|(gwXn&wbG(9cSAH{vPz?>C92LL4yH81Euphq$HM9?6h0>slx&l+qFGLPYDRM5eQ z`K35}sTsxmF4FM;4Kas-_kHkeIuuq45xXun4+m<6xxs>t0D1yDa|k*T2;biWL=pT? zVy6t@(X5g2cq=BQkH9RXr|>&Vct?Zxy?Q#3q&Zg<@h-e$fu7M%1?V`SXZ3Y~UK;2I z^<2QCNOg*w7d?t|q?ma@6#w|Vejz|70nwa9;hhXbGx!9Z0`wAQDGH+bcr;^C&`6+{ z^^HO4rvXu{zO?9c%%1%_N*8pdIm;|Y>4MJ2EZkR6x}b7%u6Y%u3p&r7Z(c*`f@n_1 z>nL3i%~*H?r3)H`*&c7A^!Dg41&Zb|{2jALq-K|+E{pLrAm|F9S1?yc(3L>1>Q@3Z z8t66sYJhy8*Y#^Cf!^1RF;}6y*8|?w;Jt|`QL!=>s10H-1&sruh)Y4^fvWUd0h$2x zmYxxKX(G@}^>)CU1VoXpqBj}nU44BZNpn5kLu9A$DE|L_M0yIk2IvFCcM7@|XbIwC z1<`zi4-q3Ph~mDN>JI~S9neRJsTJOIpxNr908#Y$ySjDY-5bn}=6(D=5?|kBW|;TT zT0t|-Eb{?cD`>X4*(^b81<|~i57Amdw_!HhQcdqa=`Vwsksl$3SI`{H#+t3(!Dve7 z?=H+udR>1U)a4%3g(A+Sp7#PxQ=bHAF3=}>df=t|fUZMqsYuQP`czj0y!(M>sOo?> zABf^iMREbqXQ-K=2Y_1Q_oj3iPEuJK#MA6vK0olt(klzQU7;phZAq5Wg$v382;LUxAmNG*20d2Ns`E ztUbjB3wjo_oxZ_)2SHiPaiJ*Tu3X{^SObS5hQ;Pfuu0LwGD80i=zGl47v9T2KOovz z(BE0|hrr5WtfR9F;;)7GDtHvFE$B6%8qBQ{L^0%Z)K6O8>Ch|!is=^g55%4Rj9QF@Ibz4fCe0`R4H43!_aP)HT3XOjAc`&* z^byc1L`@6&7>J_G1uX-rN7T8XPkfpd2Eq1yuv#w|Ia)W8VGty*Fm@D$@|u z>`Tn<)xc8Ee_~FrHg^QQ;A`j^V6piP&}!`j=vyEM&vwH5H_!@1bKk&M&Ucu{gXMez zM6);PNl$n*?=EU$0iqQuVz44STAd?qz7NhOt*cKLmYZ6;Pc{1iaNi z3G^T7FSU#cjP$HJ%!Bz>7Z~9+fLCCC4g8V=D#UYUPp&myLOBV{tPw=Bi;7HPfM}jk zat)%HMn#yHBa$?mq!>@6f@oezvo)xQ=9u7#RCqMEq{K7}PzmNI(aaucAI(&vIX!|} z0JX%tA3-z+YBS7$64VN)6=nkoqB&75!IP&vniDodw+MJ`!Q0%-3|hMd5X~TxGu;j| zpW0vskszA8QKQ-hdbEy2Yx6_U3uqmVEim^;%A*xK+G0+PAX>+x9p)g7VGnizYLEFy zf@r0RE%7`oh-QYgH66^2EV;F_jYBgu1ko&rjwnG8&4;*0rA$kfqN+u7PUL2Gvh zk7kjGB+crfc@cv402;2g3(%fG+hP8Q@MvxfJsk_$8;Isn2g@xxzcbJ&Md{L_1Dpe$ol&}= zLC#=jCzLMeAm?CbTXRc*4spty?wBn<=vvY2WTkJKXs1)9S+n3 zdLnrQ&@Lt#)bmK7dsNSWHw>sJ&YwsQ2YOKL8t_H{?TYg!yrY2bz;6=i$wxcKIBj*W zK=N4ddSRs#kvtA)H>?#SC=EpG#t1qdXm_lLLMwJ-Z4Bo`rw`VX5#CAQ?P2x|(8)l1 znY{ya3J^W-i{z<5eGT@zV=E(_(;RyG7vAaM^)vef=nNqGEg-xzfoT4kptFGb<9C;! zvw`-+?*u{T01d$GBthjsTVV#ApmTxtGkXQ-JfJ?PnVi4#oeNNx-2-%?bCJ{6>>o&8 z49S70wOAPibbuKcpi6)bGzSFeQlS0Kpa5M4G{_tnT&b4>?QRAKyeoj{w};rg66hdv zaDYYw(JzrP>?I$FW+IB@7$EvxBIqihLvdCFT@Cb(9ulCjK=hkM+BXjC)E#DS4*J9d z@P?Yh1IdXjc|>qcPXao^3=MdbfeyzEcqw5D(2=kySN~K-M+7BY<6P@x)UZHu8hFF; zWG;FYKs3i!^sWOs3Nz*fO$Qobjt=y$2Rhmu6QCP_j=`@Yv2r8OFz88(Zo-~LN5Q6` zna(WdSaV!(cbe_o>>Ovh2c_Qvy|eUjL3y_VrOnyFUF|mJogLg8Z+9|I+8i5Lxx<;` z?5fj2>32f%cymHf-d)b!&I#tk0Nvx<>zs(0Wm1>9&V9~F=J){3bMAMBs*{a;N0{#{ zaA-{vK@VWXz*EeC;MaVmv(P!!jD+5PI8P5b4?DExj-W@JM}ekbd^rld$DGHVYc=r* zEpncK-n4-Cr1O+BU6U2!J&n}}`>Qj8Hav?qoMHMRpZ=Z$+Ebkw@UlQ>n!N(v^FV#n zSpn|_ptH;#0q;d1Pn{j`UIIGX^b2@@13Jf)qjdVJ@UruFr;jcVJinNEM+KgL1?XI? zM39iY#hFPy8**Z_Trl_SSu zcDG3W)A^S(4m02deT_9GX@{ zK=k*s^NTZ?>q6*P=Qq@4O2Aw0tZ=4qU5K~RS%vawd29Mx?bJF`xjaI3PCd%ICg3$V zIp-QKk9f+}?pSkez%#DnUTdZW$aN#`G;R?IM%|dZOjqFgqX?q7n{X@e9zeWX;Nrb7 z){ziY2t=!Lh-8tQbf?4D!Yc-E8RiMg_|goBW(o_h1n36n39mU@xiLVS0nr*4BH04y zCd`u-$(D?+N3E%5t=!FB`fV(zHP-PQjo-$i*A|j9@NPrU7C_}#w?i}o;_`9xgK*ZvZ=Kpx;EFQ|GT-P&|=#X zo7xujL-fx2x%(habN$?XX^HFgTJDc1>-BRF0&o4?gY$Cx<+Z#|-dgROw?+N)dgCC( zGHz&{?OrC<-_ozF*KMv%`!#BBQ{Bc~t7FrB^6EC`S{V_qjGJoJu92S{iAV%W<%NXYPSQQ(NwSp}Mw3`E_Yb+1NTy4b`=Eo)XHn zbsmIwrR$b!>m06Yx%to0V1911KC-FR6>nICoskCY0tZ{Ea9>%j_<7@W2dO>LUaM;@ z+O%fa9!JD!*$nkQ?PBzv8io$czX{U+^_$U{RR&X=UQDk3)Z4d^K;i) z{`0lUZ@DqomSa;}yYLoS?ty$3tffDvJE&2=`m?%Jur0UgwIH>!b!?gr3Vl|wwg#eB z@%5hlA)!wrR`;;bCmG8f8u}DuxrgVi)e)gjUsm@>J_}9TX}QDlau3UEd1&5R9iF#E zN96U!k$F8Sb+#>N`n)lOTV%OS+kIFgZd2XH+@`ui^Xdw>sgA{m=hYRim2H|Hkylr^ zO?51mvv0l8w7ubd!|LYub9m3Oy2H6|*m7-Zxd(8IENaS?GibRswReE<(c3;zT-C_( zT3vZI6RwrDsg(-XwcKk%E!(<>kA(TT_MQ@MxiQyTvZ<|Ac)6B)Emn74|J`bMXp6|t z`w!`kxmfgPE!ouiEZkT5b#03-Q>hTkwq?UH!meBHS}vF&wL+co+%7HRS^(KP+cdnr zmU|f)UPotbor!DPXLW2E?kmf^EOZpLwyp?mujO8e`9JH{%5q0jrPislui zO?Bn`TCUZxX=BSxbsJl@IyUti)vBqkaP1khIyMzQ+jG)XSI*J;>bzF>@Sy{Cu@-Hb zUsuiol^dojXK;Pxj#3_4Y|F8!ZA1Qkb@?XglA~>THeFk8zFLL%NqbhpuYGIzVk&mM zsHs%Cea zTCarH*>a^;R>!868(u5R4Q~xtp7L_Mu#BW6Qi;nMc^vqSgKXkJ}=zH~xFv z4e_M)x=rm_3D>pU&YRpKTVB(56ye^m<+kE-|99ztZ*ZA^nE$3OQ@hmLO-aX|CnU6}oY{G;XXNpRC3FclJNv9$r><$dIACT*a2T&ON9_ z1Il*!T}i^Vmy_Pqc8;tzoNqdg?4DQ}*&0X`9&~oiLIyIEbcO0CB{9HLl>nk_> z3^p$JzoEM!?Ok8Fo1(iR?X|79=^yyH(fPGHHvRo|RF3;SUsZVYke$q_DF1a7GG6UJY$^D*w>5nylmBa}^k+MoHGR4c ze}1;!kYCp8(+&UKZFL(z^V?k8A{yJ<$bA8C5-iuIGV)v0G(9x0uku@_H>vBEXG_R$ zIb7Ga=s(Y;YoC7ch1V)S*Y?Tq@p&!R4e^HU?V?NN;1nsFT3_WK>&_xKuhD7x74Hn@ zT1!n+(QTS*+q*Gbeq)7KRi}rR`xlqoV*UM>H~#X*Usnnb6u3X(-u>6OA0f8zuMz2g>xksx)Y*P)(*eT{7)nnw7hrB-J}#YgD{E70;{sx? zW7%>qWUke*spX!#0lHS!ruOMeEZbb0uH||mwX)@(o438;wX)a#e}OCCaJz4+qtGkS^g&?YNuQ)@$X?f1x`0|wEQ zrS4YhMD~V7P18$4xpXbiukwxI+Pa6AyD40I9Ze3cv;9RMehu39O7f=2T59^HDBQC3 zS-53uYn<{?FDq+P%bgTn=l{#k-e>=pYsIZc-?yptO8Dq)x#8opwGpmsx%pePAzZcu zzu45)Di-Q1%Pk1y(pyD}i`p2jEnmvD{rAtk7u_#(7KweEC*O~33v6nyqd($?%}@CQ z%Xrh9=PS>e_s{v>*YypZRbj^~*%!;U#HO}IvWJ$!86yI*L(vfTZdYsXZZTJC0fb%kqnY`WpP>&AOq8}#)dKX+X}i*C=J z;a@H`fV+X;fNULYYTFzB9mjIz>yp*6spW34E}}_T_jgex;oq&SW%=f1b!=+68=`Av zZ7Oxo`!x;Ut->vf?)tu4+3P6W8~M47E!(lK>HOdPQTO4qurdD@{yt>=x`T5hAN${Dn%X)2bjj!mspc+9rthFi8a!uy8hhM#@Ql@e?@HnrUFGibTw$@R}q z$$u8;d-mFX)U@32vtY~3?~RhYmfPj!ZjqPUHZQkzUT%lH-27u*{uVXQYx%#|-thTH z_8e`9H>|8pZ7&FKk>%ze>%x6yb;YtR&!(0e?kmd`%T~vxmK)x4ELSXB9h+Kic)zk- zv21m0YPsQO!E(j2)v>ANhMyzL70Xt~rj{GtpDkA`TOFHP?v|lF)^fuwTN|aJx*NtV z3fB#OTWu6Kc#F6m-GJLZyxc#*wa!86 zyCJ$()~41*xUT(DBjs8hn_6A2)H+vLV_hq2Q)?q!*K+f>cSCfoC7asv!*%7_@7a^y zi>+_m*f?(fayNx*{oFaU&epP=UyE#Ny%K)*EmtgC9h+J%7rV~cx7a^;R>!86yD7T#E`HrQTg#hLu2{Bp zwW+n7zs~t}b>2GX*Uew9ShjVw>4w#LQ*}$%8AWCMQ0nB+_F67||IM$PpS$ka|Gnk4 zv#xEf^#+x@uCC?&ah=!IwIzsU>wTMA%jvx3p1@qIW79vQYh`U}?>J)F=Grtr*Oq^L zXr2G3xV9Xd+PdfWq}18!*z|u&*Ot??T#1CS+@@*QMt=UE)7^X%%5AJ`TVz+&+q;qF z4dYUuLlc{ROvk233$`6e#_&*TR(SP-dc^%TdN6qYc-L}we4#fCo?Iu zR@N(%^XiIaE88>`%j+w5Lf&%o*E!siwtTU?zH-OqEmthBPdB{R*>c6Q)wQ`c&98fA z-Zxa??~!at;g;>4ZeuL3)g@=y7TA=_MSkOv@Xv9>Mlh(&}y$H`H=dkLLGe<8uF;Zn!tBjr`~6|4nZGYvF$r*N$deqBjRo z_aXh7xa;f=$C)WVux5^?Q=aUB4%Pr;B^2wP@4)_t5i0Epr?G@Y_Uw zUEx|wwl+51kXmhut}Vx=)|Qk@^L`FHVE;9%u2`vaL%m_S=kas<#_E#kjnz$Uf^I2v z?U&U*7l(X6qdf)wCv{O}T0?oCAqVe&u)V|Cv#=p^J=Uk&g$zqHC!PVDT5j+wTW)XW{-w)qP=EP~{1DPNkjs7KcijB_Sv+ZVY-%n4rTcq7|K+Ozf2v=_ z*Yw4v{feG(*Y@A0T>Oyv9oP0nD@D5NAKT?F$+94=u1)jb2Wbvre#`4xw0B9W^ZIqW zgS&oRDmOoOV=YUq*c%|N7i=0{E6d#!-Ta;me}W=U(s~7d%w4}XNH?QPl+xK;MyHjR z^Kg{vl<`%y%2K|XtE=(FCX4SfS)`@fbE?5>gItB96vsduX&j?)RKSYD(FR8;j)6GR zI7Z>9&}Dq2jE^!D*#b}D@Km+VG^9)#N2Z}#ryEL41ya?J*4g?DaN5oAk#Q>;GH$w| z+|AZkyQ(1-@pEZi&T=)7t#Hec=c$bGRLYbgEmJkHn>E=6<)m_SlsMUj5+~hIWm36v zU?12A&f=&9UG8{FIawS_RNSdiB~DzII4K;xag^c6Dj&R2;FW_18#sF7D8u1_m)12X zx56n?)i}~_naaAT6OJ^FYR8A1uT>;#RK(NZ=?dsn)8S?{>Y%gWmpF@cHFk^7m4;DYdn6HouB-4r@*GG8luzX$ z#|O?5r@qF(mrg~!!r?nUQXgqKjx?tVsd79%z^|hN{;H(|GPSXIH5RcoA5UK)92uD80}Rkd`KK(54OSC!&O8MVrDD{D*L zEXv5DtjgLla2c2u-?B*MbTs97QRP%cl#_{+IHMv1 z;WL~s9E)MGI#S`(;J}$uGtEj>YD#pq_He*Hjo^SK&yR40st` zp*?4%@^JP`k(N4DI4f1$8!CabI4W`N`EH3W!!g%|T^D-pVp9WaZJZ@0?UXnfr;VfB zHclFc=gvi%cDgxpos_B3o|{Dv8s?0`QEjrQ0Uf@h93Op)4)Aj+Tt9Spk!;S3_^v`Z z3cAQ~vy_WNp&m-5-E2;|nH>6T&NGyjD9@x+wUbiHEk&Qm8ozEPuJ>%tNBa~XzNUX! zJralFe--eo{ClHYEYl5Xo=3mN^y9)5=Ry2>R1U51zI7mx&h^)E+x4V9HpSWcy)sp zuWBg8Q4-JA&y9JI@fv*avT=AUj{2jne%!~Q4D?MlItp!@iDRxV!BGm@i;coD67)#q zRig}eIKC)XmWV4ak;yHIr*kTi&UuM}NCzVA&4)^)kfxBA%2mhx20F5dEDn^9ylkR6 zSAw>dpnYC63xB1Q7yTMz*IXQGRm!PaNk zJRIqWk0S+KZ7Ni?TY+m5V_~FB`H>2xBIPKnJU1+w;UgRIb3XD)qaGi`Q#fyQ_>sjZ ze=+LeBTcKXRW*(@^{O6O3-6)J_m9DC*hRjMg zU8^E~UAY0zjI4{B%G!xKUF&PuG#CSMWK30U+Q24w-Atyojqz*aM%ASv9*&t9FK1%h z^y<z3oH&ElMRI47R*Ov>?aWoAuw0H8m^gs4}G(OKVp4Myhmnh0@*%9|wHCvfL>LzXoZ|N+0LcM>^1jJPtpSUExQn zSHPz$vUIp#uka#S_Ink|r=t>es6<+Uv;t{4(sJ}z)GwMcS=`Zl&_2_^7^9Y8j9P>- zN<|b#;l;*}pgo|6A;qB;#&bpEc+RW$a;bX7hgY9%@RX-8n)2bJ-&CXjD5NPI9`e&T zC{0B?^eIo3<51CZ+&9W`-|%ylIX{=l)#NI2Db)=}s-Y(5*ZU|3w(EyA`1RcyQVrc2 zy5-Uh6}fCf21g|hTm_I>0-0>Rf)r664j*Bb9ZFBGq+Ok&^mFk(I!y`jwFy@E6s! zfzD#!#gTY@o9N=Yx!})5Uq(56;Jlz;SMY&zg}e&buR#6$m7UO^(2kX@kX9Lgg^&K5 z#!>E^zTyb#pH3EiF^lo0W@Xy=^$|RS__+3b-1mL+D6Xf6YEL#Nqn}(_+tyr-XNhe6 ziUuG3vu0(=Rd`;=u2SyF=u4N@p5ngGJ}!?uRJ(=yaNT2(jQX`9+fahBVI+=f9BJHl z(s*7>nYr+zuQMivXSNEBI_R%(kIvvgJ>42SZMD=2_sv7`RHfXV)DP&>exw8SWBt0@ z!=(5r4mP5`b2-L5kMG%4+NEn&?}PiPk8#b9{1bh&0mm@hi+W?+&tfc2<$R36qY|(c z$+`;9Y-xG|LmgDab6{Dgka{TjNq3fU&CpS4qtwI7H4(Ghh~q)yf-tj<@=jp7*pwKR zy@2VP&8$HFJXKOvPgiJB)T)=cQvg2RK^lWoWV82S$=>+sf zvTni@LHBH?i%2(nZa^0zJ%{N+gR-*aY^Rvyy>ppPlDvN&(+N`m+0$9Rz(6;97Uvfk zl;xexbRp^b=P(_CA9^o6p6Oa$r&V?+>)v8+4eD8mu)5tbiLC!zkurCpU(N;YSc4(2It?eZ$tVfxlMhq?}z+8oF6ye zqui63zTMP&N*&P<{OVZ1a1K`++){>9|3CvZu04#;npRJp}ZnYL&hN z?K+I}Z^e06*%Kh|={e?3&`&9?s?=niL)I{snSf_a<=?|~o2Vxt|6Zmi>B&gvGJT(( zhq7K{`ZjYPQfiB*=23n8Q`pWVvXi}6lh8a38Sgcw?<1S)b;?!~$&UX9)Ajmx=u&%? zYS8u2J%Z`w`ZvAeokN%gh5Rz6SLmCA{;5L=d$od2u-1u}z~{zWebeK6An=2w(+ zCeww~XS}nRPEw!o%9*}T%~LA-FjYa_Y3>6}{wdXS)KB`$Ap=?FC;cj|I_ z4CtRw)&YDjejyn(i1Y6Cr^1H#x9QD=P16gK{`VDPAh-H@RyHE#`QOI4cmmhWr z)3>NOs@+-hxjrlOO2{9|@+&dEJXS|2C$trLz3n znXXV%k!F~lMyoSql`-x>vH7LvbjqOa=u<0#lx>7AfyPjbAO0@v#BKG-0Rf#q} z!Sn+p<3Gvt0`(B&pJw@oaPLvsXPADN%FRB@^gQ#RlKRY6532hy4ou~;?nk~-Q&FFj zkw4$)%zVzDsovI~O=-#WM|!FLa9_Sq`nH3&=C;g0zw15wZZ2!7 z{!pt_dzSf7&rtV%)0OF&YN@{BsI6H3E#yCSPm4fii7x2Yj_D=(E&bKcU6`JsKGgS| z)|KU}kU#H{%>tPZbh{n5VEO}Hg=@1j({Je|`pfgWu>5^yUf_RU{R1-lJ<&Xne^0x; z+A{r~{)g^d*NN#W{ed1jsx#}}YyN@rNPW8vbl=mRF7L$oGt~^W+ZK1T&u6G=$n3ZN7;q2MHl|okzro*qxH9CrQ0h93KCB+#YoU`t-Lu!Q&3Wop6DojG&i_a+ zFjAI6uYxbRUky^74Eh-NE2ZuQQrL42zs)v>P=5BkKnDKtmN0z;>G~hC%s}&iX}8(mIR5}M z(7d?w%S<0=aG&x1&h-8U_mk{mrUx0^bNpAB)<&6v`A0Er3{dtMrf)S-=$-&NtD`1n zdUQRJ^JB)C4`U|qM@@gT^r`bu98nCl7)jD{V0QF!X zj~`9+?8MI%I0dEwePaac-l^_F@ie}`|LP9aZpTNNzDv!4Jl$KB%IW*j2ZpnJPD9s+ zUsxW`B-!CyZiB8wTSiD7V5$9rM_CuSL4F41YLnRED3;OY4p=yv?cAYmS6^<1GVr(1 z+^Om&(U`RlYIe7(P0;wFKv5sZ_=UfR4C>6|aFw2-r=mXed_z}33U!{$Hs_d!P%e+v zkhli*#B&V(uF=;b#q%8gra~LNm&fF5$c{IU>1#>ezn|&T%;~WCGuxb^PXql6*Z*__ zJK0|Y8u{MOOrK_8)BA+-HUL(@%M&)S)Z^F{S|*V(zB!&HuTIz{ybUD2NEAD^$6v&-;(NYsB^os@SKXj*Y)4@)pteM z{>!NI@!g|r^9}vFPW_7CD)@T|GAfPV8~A%ozobXpIAmE`;v zA@kdj_zi%+SM`g!{WZ8g@%IvBhHvh&{A>DEz2ApLoc{u3z8r$<6MwJh7xerICb09W zZkKde{#E^oKJv9f&Y!5pt9D78OZ<(;Q%XI) zCpiB($S4ob_xO8OKZk1s*FXNUkipX-%l}=(~Wngd1^fJ6xSJ`e3=~fv0zR7OO^!4Tj z@ONVRMspMTLwBZcGS{Pz^8lK`vusDE&ok#6 zzs6zud~*TvU8XNUoySazFg?{wgq_YzUt!KeIn9~&&16$JaZ9Ero2$$#cXwcVyuq_% zsuR-_%{6%M(S_-2@I~ymi@P#C)?8}}zut=JYt1y++?wfWX1w{W^)^h81Ks}nHi66{ zQ!sKXZu>OoDt~LH$3u7djBNsXf^m;%%kmRYXLs{0n4StdD$|K&CQ{w9odfxCrrlX> zn4SQc$op-XzRFx}>b_~kx>uXArtZGYnVy0+Dz78Uj3pnYQvp5Be7RX`mRSUOsb^a? z7Itd4-JE5{A^)rCt(o@C81vObEm(dGY!0}jCDW7PpMv<7EOQlnyLhV(0X@d-x2h%6 zS3|z`v{p<{G?UCz>tLhZf=a_Q%FvtDvN;BHb+MN1GYQ+m-1V z<{Z$ym@YRnVP`j{&!zs8HB4V&u7p3EF?}BTr}CR~xiihVW}6#(bN*4f55|NGc|0j6 zn_iB`lRo$+r+mdS=a{2#*=weEH+^8A?#=Xe$bly-q5Wc^f=Rf$-a7l<@=ib&302?;`}GfV6#)rtDq;V!R8?I zkS{~&{RA=%fNKG+p(yLOi>p|s%p7Wd zJMte)cQ*LFc+e%k%)#8T4~ZZ)Nraon?AI zvlr;+neJ@5pq{v{@Yj{>d()WiV!A@6g6XZuj=GNP34g1v=qEY;Xw3a`GfA7{OxAiX(+w6_D-~QG^OnauEsowqxru&(F&<~$vdUraH z{)=3$R&8;g>drRX>RzbxgDlg_>;}4$>3z(;sQ*(;?`!&lewyk22KKyXm~N?xQNvbT z%L4qqS6&s{oUdCd<-NspvBLX+?AuH)&{2&4_zi|XHh^0v{Y6y_|GP{-W$>wJ5_Q89 zksDX{$0D2`S5$tS=_HklPkHp$lFIj*F-eoxF*q_jyi>Nu?IUMrP0^CJ(9(_A?`ikq$;w8@2Y!mcTei>5e%rPjew#e4j_n_t^ve6W<-THV;(c2 zVzs(v-EmEsyk-ZuwFBUb;q#Es;h0rJVpj4^!q>Oc8?f%_j#UgpZB}-tEp2b z)u~hA-oD|~8oD&d`Hwp!-WrwuYDV(U^bz-!IPSLSh~8BA&-QL|t}Qs)Y!mg)S2$O9=T9@DAt#&XZqEmHUhZxi})vBKlc zk>p(pAL(rbf49P$${R^hs5&<^gMlY%U60Cr!jOAs+z5>XX%l$E{xBA8)>2 zfjT$_i=J?z!kh4Q{ts7*O{nv>GW83#1lj}Z;f*G#{-I_KuI+~^&zjt;HTg9a9%;zk zdI}FSqtHpea;#xSn#BDh6&_`Vnz|Zj9D{*PG(_Q{@YkO^O7)L2ta)m`jI&AZ^HfxFC+8It*AOzgv*$f6yIOqNY*2nW#B^A0*-zn>sC_!m5k_ES@Hda z$E{q!gL4BFzp^0@WsVsj#$ZT)aEz647;d2a8wgLdp~3@YtU4J7oVE3hW5yZBV_pfK zuYsD(8|Gbj8nj&{^Cq~o!f!&sX7$Ot<~`tVpz+JjtYnQFqdY6wm4U}9yt2i9w}HX~ z?JDHs6kf%yYWM$oLxoqhtj)T%@O#7?$UK$xByU!>=rm)su2n2}H%{S!qCeb3WmgiN z(WVMdl=H9P|^+OERCqxtZgofV!aJmH?o zzoXe2J(Cqb33%W|+bg`I*$Mt#6yDnG2>)c|--&3y+)GjXHUc}T&%oWx|6LWHM2Y(_ z%HM2QC!#5e-&SCUE{}oyRnIQmr!dhzir-#fC-xb*#l}4p-cDr0eUyJ!L%XAW6~Ddkg!@+T zf}5`RgN4T(sqnsXos}DfO>)&F^^0xoSn>{YzeCVKkJ0Zk-uSKU9c=2R9|crvp7IVw z&(Xk7k|nIFt^BbQP5VfzTf)`MuM!f9!XTSMXd ztgIOyDqLg5mxC3qwfDjQfx>ewb%mcOJiuGgyL`gwI!;#fR`s@j{~U!^^;TnS@cWZv zHIM6Pcb>w3^SE}7egnKZ_*Gfw&((fe(OVhZnaZ=WH_&_PZGN|K4D`6}R(`HPsB60e z&QbmqyaC=<8_rUm7rYfJ`VTW-nJ-PpU$nWVgVGgGDLYVyxqO1BgcZHNdsjSlx)M6f zis*2v=S#T0+R!S`0CaZzWtQ^%ow{QFE6fVsm#`Nq{GXe)`o|jQ`Q5zqc&-layyUZ+ZA9C}VsczKWC6Zz8= zzQSHfUociUX4{wWp^OP;r#IWiJnwNw{TasXYk~%Pp8LS8`y9`k7r0?5=L7D=nZMDN zw-o-Hd6DOj|5Erx^LI00ueTNcyLrWXXJh6($Cb7}za_ah!Lf|j58FLg+DRx!=F_>uX_KW9i4P=BizWkMcUc_@Tgbu4oUQcixvN|p-oYj z!k>yx*R47~5S`I?ihp0);#h+?J`~${SxhSX$h=yq3*TCPe}%)=d7ym<*O%6%oHhIiB`bCl5(YW_5cA;O2_g zTdv`XYQM2q7phn)5=Ndg98Aj^I_VlKW6#uc6 z^?PH5-!@-!KN(#r%Q?httbOqbJkQ>|iNbH1*O@!4*Bo!i^;;ciy7yC`l=1(yP<@{@~cslkEP}$c#=DO-!-MnR(>p9jkj(-`M>t89nrQHhN zeU<+VdnV6$uT%Iedj@tst?*FGxx#H(!E+9Yu2*;s;R$b0_zZg%`O|9WU^@hO3&lG- z7@lhs9%2i~UaRnYk8@5q4*!IleH^$A)mKA=-)*6K*09uNwyfyHhEQxZW~k_oCMdjt z9cNECWEX|cwCHwnUz_Jvb_3w26u#Edrsz?HZ?rdoe?sA#?9J$WQsGv$=+F|fd)OruJYuZ^C%~E(6 z__C|RrVu08rfSF9xeK#IWcTmx1t@De-pbY{@hdHUF~kgH?bzS zhr*j$u3Phy72eE-)U}twq21h?;uM9qup3!Z+DGBF?Aqj8D?G_=1JC{nZ)F*qxv2_I zu=pmNrtm}yZ$7W^Hg;QVK0x7Z?Uv{~P~nkw6!;w!9%Z?%bQ9D+U&)i6aH7H;b~N~{ z6<*u2#^)v}|8To5da#3IYYWcpr|>#e7{8XL+y|4BhX{UJ~?DAoS=P1_dj}$(NvBd8(<(cZ`dA7Ac;iGMf z{bAvGT5pTZ+ZWr390tndlK zV}7gf@%99GS`|JHohG{4O5p?xf7Gh*N#eKg5`|9`e)GGEEWUM@D*UcD1F2I<5wVU= zA)5t^S6TOYMxgK+0*4n>@MppETZPXQe%@0QMQ52a;J-xiC+WKhqEp@qI0@O`0EK8d z9iEF7e=?L9&x&CjIxkSXGuY+Y)V53Q$?)H$@QDUJS|2^g`?$uPru;L_iKsqHZ8!-E z>xsgT8T!_>E6-(C#>?HR=OvGEq`!%Z)a0PIsedlF;N9H{I|F}okMdt;u_wG&;a9wN z6aU^B$K4J&4|9#qak;(1{_y&J%5w&u;CYJL&@Mg+OTq#c{^(tWUqafrkCf+WevMUr zi<#%lJox{qJoC)6W`ilOEBvf^%zS^+{EF<$X5io6Q}|`h`5%76bvDNFdyb=uIO(RA4N_eurL;BgD=k z^>Iv--NhrP@R7jRU5s9iY369N|JPzGZ_b+|;bFXT93l6&LZ@v!3jB2!pP=}o@!9@g z%edsK0|^tJt~@P^FC|W`kpYIU_M}c@@$ObD8u@s{Pegzir=;yDE=6vV_Acw^v{?IUVI?)T>OlF zM?Z0#Ap1^-XQ<7`if^Mc70#RefMrbZt`2tdTvb4GA0_VQDZHQIyzOq(aq=6>dE4Ej z@V#&u_oV8%&)kpxrIJScS)pH=uTVvqY+ZF_)s zb#ME2wA%atSI6l zIg_$}hYzdHwY(AZ#Z_w02#<5DyFuZrE!WTHMmv-5>uG4ydZ@Es1=2mo4uY0JX6aMgWwc^i4j|neR{4E~qlRi6ZHEWr*!3|UV=J3}|M}}hyC??!m;iJ6G zX;-hdWlNr(#m~;Mo>yyTjHns`Qv4NRD z+J>|PX=l>zq`lzZmwX!O0N_KY?@-cVq{B%^kd7oBMLHUu7Si$X%^;siK8xgl&mcdW z{9N)2Nf(n^srPr*=Pt8loe5ZJ1MaYR=0<62Wd~z zWYS*Xr;zVM+LttyG>w!;Za?w^$qyo*4&R}q!-0<^9Ys2t)IvIjbS$*v$WI`hNIHo$ zgLE=>&Lp3Op3{NP06v>^4(VLdd8G467eKp^)JnPxU9-urLgrf1_0VqucQg5|q&c+b zHqxEI_rP~AX)b&ZlRrxS1o_jX=b*oc+~0v;BL4^F*Ma8)zXiXjSdRDs^5wO}0*E^6Ts?9*U*uY#2`)zr5#dRh2IK~)+yFn;)dEd;l01`X zK?@rBS{>R#DYbh-OSxKT?Or4GRqc#|CH{c8FP1;GU2WVxn zGwPI5j@S?FosDi8*N$bzgxZGoPO~WHY46Osv}uR4snWg(nv-Y>ogJMS)6WT~F*)PV zWfn!yM7LR#aan$xhV+9oV64z0FC;#KS+ty6-i3=I8{uoAb#z9H@}A`3qGikqO6$O9 zRa(UJ0r(g7GXtE&VBr0%ay#!PiVb*N<(GB+jl^XL&AE&hW24R{zIb=!(W3rtS!~Jq z?dXi{izo?Cw5XBy^Q1R_w-sKZcj_kN^WHr5$C79+=yHU-`q!hbq`NZYtKNpigP_ihM~SUy*l;B<{r=>@0c`1H%ykX13<5xtx>uKy&CL<41}Uox(H7tqv_h zj-Ic`xeCuJyyF)wE_p@#Qu0c~8 z9XH%X#1ENc=9NRQ-L`d2@6LNQ#1xs)y{;SKB(6xSnNuF7av?O~nbAFrYfq`~x$<-6 zgS4Kzi9{m0XLPU0Zw85{&|Chf?084;?k*{zoqkx)H93h{GKcl-Aovf0Uubtjliv#x z*JKXk+9}OJYtepO*Nk)_v7VxGdmpXc=80<(c8@TlT)xZTPggdcvu?4JoXykr_1zff z7XL`YSCoXOt!uPv;t_TuaXfOo3DJljO;?WZ#iB*w;<0W6C$S*@fIpk%-RCYTHImQl z+R%;H`f{vKHSp)V&g`R&bNr5?qITo$v4{Z2)hWvbF}(W!@&h zvIc~SC~ylGEZo#><|LlWBpde89C0UvXA=`T&Ozu5iEUApbAGtcE!@;>&iW}dYz)X* z<3jQd*2pd0R?xx#jY^X>G755mtdXIa;F>7OIY8uuX0RnheseRCHF8qG{qXW6rJ;>_ zg=Y)51?yQv44iX`njto@x>abKnJrCzana8kV~Rw&lC{7DalWnFjh(n(gs5ob+D{Kk;Oo#q!bONp5Q%Znt1dN4X`)3yqTKHeFl0 zNsOhYKz=zk1x;L@A4KFC$!B)$;C6II;+IihmA^{chUcJ+7jz<+AZN_G0N%yn;+rCcCu)?RK3>qJ}7Ql5j{WaOljgJ(wf zuKb>t*ezqtbLE38^>sp%HES2%@N>jrnoK{0^iezWs4$hCGCyAO7UxE!3$7>UdUjrJ)m*R!A5-$?C0*4Ikp zpjPCfp1e7LamMJOKE_GnHCYFfAu)xD-P7HnPT~O#z-Mz45*w(or=9#B@?+g`PT~bM zQQsVJ^SV2UFci~{aR(cTHMF2S%ycFs<`9;VmykQ&o#0AvHkk$GD!=fQ;5mdhN+ecM z6YmAJC+;V1QK?(xBtOZ`puQ41=a+?_xJ8s=o)g_+rk!|3?d2LG&2>O45&5V@-rjw( zo9Q~Bb(EWwCiMsp{N1OxQ}J0Ra-Bq}6P%Pv#74^X9BEF&POz-yxuoclQb~D^;I6sE zRvJbdIVI2%pPIZPUlge>z>RiDUi7C~=e4mpFQ!?gb zp4Ohz-6_n6Impc}&rvxk!9%^LnlqRWF6j(fwY~_N=#F}3^315nC>L7DSU2F1!zSht zPk#*aD8$Z4&qqRQl^9b!Q{@R_xAO;xPR_wxdy7uaSy9i%#utqwh(KqjeZzbZbV~| zlEfb?nseQGuE-5e!#&0C;4gA6A6A}+RMDK{eq*F|em@ZHEY>A?4xY2j*?a~U_C!!= z0ddhfDB=BbSU%rf;6m$q^3Y;ADdm*s9GvO*x>o0aTNu~H^02b_C8imBvAe)T5=#<|Rb7$t7<)c3YVyQs%R`aY59^Jn zuPE`_dM`4UIEmxdY1L==DufpEoJahdqRrDotXW8wC`~tc{zvvwcbO}3U6X?v(;_Qn zX+x{I9GXGn0uYYDB%4$%AxccsglNlKfytP8#U|*a!Tl$ysb*@Ms0V5e=U(6HJu60+T zN3fNKPfurubll6WOW;2d)Nr;n<%$o`i5)TOfV^U#c+^Gew4 z_&p~14emx);+GhsQ~vuo)+bltxt{n%IpX=w#pV`bpGLhov>45AayPqtZ{+1^vFHTm zdbwTmTiqOJ?Vg^Cp+!A;Xfe+%?grY_NPT&9#=3-ty}j3)8>x>PXo28zYNyb0%;cL) z)YD;$w6M|36I-seH|KSb=X-B+e{`+AC0cJx36He&hK5$!BKe=(?MkCnWh|)3#XPqV z-K2CJk(pK&-Ia=~p_o&jUwv3axge}d`9&r!w z^x{W5b9S84#zA}7&83we(zk1K=lMfVeB4fbt>lln$DN~OIOm8BIqGZli^>xbmr3GK zvnt`8Mn8uxq2-YK3r~@AmHHewX@lfKyPxO&A>NfSC_cuYN|XF9o&klXL_f$J%j@`( zTxhrPY$(rccF5&zPUo%Am=E?^-X>@c8j)+Hrbc3`x*#X-aR-gTlkO?kOew<70a)3n zG+d(J(N957|WxG>;C0m+|rPivf5>Dvg75L}~;z`5WB_cu2T zPC37a6}d*dB0SIV&Wv!j$Niw~YP7NLr+9uA1rb*Oq7$zMVZxx(1yS&#`@5T*2tCl{ zd0t3tR4IkTLv@LE_mY!XsYNrRLUTk+UDcb*4dWNg%dQA5X9g&(h^~2F$rghbf>+%? zTojZnXO0R@B2$LMh@Kz3XkLRB+5x6W4~I4izC|=#0x8i7Y zCZYwi8dR3I3QC`R}^7O{8-3RW4#CRB0vm4)X2PH>})&t_aDP zW`cKI$%I~x`Z%xPH!P%7B>a>y-k?^8yC8U+_I>N|m??H`!WoYnv>u1{z&&wJ)WcsjY_!=q}a(8MMayvuWB ze!c5Ce6q$Smy&qE1Yf$ZT%I*9vhmtJt@UJpSw@6 zt=+4k_3bGjmV`YKAJgzP&+Q{yvU%3>4%RWDIbU>};A8o=g*Dkw zpYvrtL`lho_9ovqM)Hm}zqy>BtDGN%79}Iz`^yneJd!pfC6`iDvP90U6t3$UlX~t* zHY%<$=@JpwcRj8bS}qwHV{(ei5fMJ8Jc~`)Nh#JTxs*gMXXMsh3-QBcO`c9YVVM~P zE$nS6+k#iXDt^C*W^ytjCNJ%PCb?e-3KEZ;(J2w*m49-DCf^DX5jrV8i;_@#r6fGa z7s}9F!kAWQu?>=k@N~1nb+Gq92A!>}?H`FA@(!M{CJU*;Y(L_6e~wTEE-{sP3=5_@0nC5YU)y|XK{b99AQF3yh&e^@$LfT3Uf5SR&Y9eA_Pe!Nk%=&Um+7+46P0&i^rc@()4#=(phJ1z{T3DkngS`l( z4PmNDad2urq_DD`4Xs4KhuAkmOEGP5VIU==eJi?V+c|IwZMI##unL-u_AS;eAvebk zDy#};6ZPRw>I?hi=Ga_eHA-j`AJc|8)_Cp63(snW99JzRwX>80OR0^qDET^t;e{q> zVkiGojr@KsRcLD$R_7|IUF#FMCQ31_$*xrx3};c>Ai92}g?3nB2%3x925O<6s?N}^ zSr}>^JwW2W=GN4NsaDpA5ry@bn-Ohr^n>(isC@*lUAM3%S5-*R?sWH+4rImPNA9d=)wqS zXrYfpCvb((sJbu3!{;9#Mh_owGMuv#XRE*>)QyLJY$c*vCgwg zMoinFFvjNCLqq%$({k*pVTj#6t~}OmT)>Al5q(s(Gv*mr9wp!R$=)8=;-n3%sZouS z+-_3XlztD{10csv03rSf$&Ks@U^XvoQ6R5rV}3(nZX7Pcx(()M8y?V7~z z2+4UmSDsLqSjbmsRk@g!FUz-R63c!%?TfGhTRh>B`Zi&7lH)U0sao1j|22~f&p5j| z{a|Wx$e9|Kh-B{qJsCWvI5kwcY|FZtGmNd>nAErKevh~E+06t;yH`A8ub z^Ghx~@~vA0AH85>T*TdLc=!!9(Qa38$cF~W7?;TN2Q9I+-M(NFZNAXjcn)M#s!j79 z3Og1~-;If#()N7C zmY65vx$XA0lxX!Ev8B~-^-GD4M3KCMor(4=OfJa&Lp((&&jvRyQBqn7+8%`+tyosW zJ(f0Kt~%x^Z637U3p-ia+en@xa3-yIuzeK%wQGCo5heOUKcaZPLX!9`MS)L zBHQLi6<Z}AT*99#(f_MnM==fBdT;K85; zo_*~h$VJrWmY{`Pe@FgQJH1e(hN8}gTp|P)%SZl!g=y5nn>~QDP87&* z`zVk-fA(87vb%pX>0^37YiXX5 zknf$}+lD{$y>og`F3c?C*#pnWZwnbE++(it%qSeoet9hcBZ79d1acob=9%AnQsFoo zia*sBX{VHOnx9%YtfS|x6TJ8Kjb&AkRYU;kQr;<59eZO{MzefmF{3rimdoz>oE zfz!SnJ8hKHb*GbeIuxUnczjEr%5S8~sQQUaOj%Nf^>oa%kxmH6EJ^vPw$6Br{zRM1 ztiF{3n<}=Al+i1{{3@%uGb67^ZGnmJ!=-#qn%JxW{ERxQ512s^=Yg6Aa3dZ z&4OR9Z`>Y1*RZ9wv}vgn`M$o|o~o~%7{-;(Y$%+OXkj&v`*a*{@>XT4lopkdf7O;Q zc`lI~HFILhnAmR&{EA0;Gixc70ZXOimP#46R7%rQDdUz(ktagcSt2bJtK&Xh8YL-j zIrn*|+NZI17F5>|83z?@F{Oj+(x3Tl{djIKIZI-hF^n0R!D2yG=Ew0SJ+Odxjeecd zqP-orqiR7>MCk4LeKI>t+Kw?4CP&NB*uPYg^gvFSVvoROfGj9EIxj%p4dChOZASaQkL+6Q+1uy-p1-mOUK4DtCROI)dFo#d^K35EO{=` z)qhm}7utS0gMWVhk!#CX+hlrMc-Nmc+Egs4oJ*v)W6CJA2E0UgJb?uc=6?-(StW_iV487W?F=f(HDb@Au zmoo8)-+VWr#6H-dQqQ<*pDrV?{CI1{Q1$WKZbal zkF{u7vsFnJ-(MVcX7jfW*=vIff9H<8W9Ejve*X&$_o4W-TR6QrHJd2#Q!zfg@>Z@7 zo)@eO*75i@;eT?3w@c6)O*AeeA1?pbj+**h>FnM6 zb>5L!=b4>yVS&!JjUyjl8}E2{hv8y)?eF}#`&}N)I^~k*zg~^5m4M6>-fG*{d-Rd$ z!_F+7Xaeh2pEzJp;hm|aW4lv){LY)a;WC3SY>kdyuNm*yx-bgQzj03gmnW4TSmBX@ z<$@U4bkgJ~edCahz3V4lTn?Q#$h7;p(pfwA>--|I-ZQ7?j3WZ*D$BP-HMI}_V8onX z9?e77SZ3yR2k~UsG+j35!v(g%EL(ci)D({zFx0*|IXbpee)ImyL2!sUe*5Od`%-ho zoXySEE684n#azb}e{$v>BDUK?JyDj#tm}6 zRNFix$Ni=7n#L`>NAGeUcBBdGC-=(Cj>Z&T*fuZb;GI3dtZ7_$@S06{$3NegK@17s zgt<%lUnAyBU>6&1|5&~$oL5-NQ2s^jMV21EtsTGLWhQ^XGS5G@vb^I(V6I$4W1V^U zzIh*((!Y>lh!;Aifo9~GgA(}-X9)0b50{tcbTxSxqoQ47>!VG0m)Y#|gx9piFqv7G z{`$-sZfaI8n5*0H&VBjPf^5StD$4CqSajXnhwPPu(lB(=xLKz0PfvC4^wmAX8_!_x zr{#wX+{~HX_rL1ag|&?)mowp@ffvW;k)NsxmvIy2T7n~B$QDwjSoh@V6ElUCazU`t zuvQt$|EXg_u6NDl2V7R;a^{~m?t?i@^hf)fK6~>&+uE`cBQOTQ=ug@7?5BPs~G@H`t-^&UW z*cx`~!JK7n=XE=VJF{>YGvwF}4eO5S&VD?2_%fU%%r1{KJS;P-cl3#qUo(S-G(|Vc z%%Zc(Z`L;)W;W*uZS#8PoS3JIpB+V>Dt@==1^sf%27K=SycsZ{IVhbz^PCB_jWwQi zpB`iye(8DQSuUD(_SSoCFucDD=FGIl_v=h&`aGUgNf$OcDmnKb`}aPuP|sQI_K#DO z@2WYk)HZDAHg7z)xEsr0{%5vOEKZ6}e|pt3SK=(P(kZVplo?3BICPAdni^AhYl>-# zenAIue%LsuW^_%XXG$`&;6bqD>cX$v!;_-Vpq z8iskL%@Xm<8Zg7{})NcLp`XFmB<1o*a8}Y~@e%C;8j@+xt8E&HgU_ zZvGy;-#EqJ$Itr*`qO!$IKw}c=Rs%s=lJLO7x)+Xzx6NiFZD0?uk?TK|G~e;zs|qj zztO+hztz9Z|C4`*|7ZU${~rH7f3E)s&j%m(pY)&cU+`b_U-Dn^|KY#x|I>fd|Cj%c z|E~YO|Dpe}|B3&Z|AqgR|F!?E|GmG^U*vcBJ$~8ugW8}W$Oip*BD!+0YOs1RBv>OD z7OWi%4@U50b5yW?Fg6$$j1M*rHsvYk7Qt4*#9&geZLoc?W6&Jz#+RQ{f_;Li!G6Jk zd_8(ta71tvU%(z493Pw*%m`)%rv|eE7n~8C6`UQM8=N0p7+lO(ioXjk3$6%e2Ui8f z;AY-NzCE}nxIdW7Gt`HJzw#vR@!-ke>0n;)9B)Lw7_(uid>?cLW!CsqBAr++u~K3co^=gL3{R|=7@ZiC*dVcCVxz<+iOmw5 zC$>yXNNk`RC+a$$OJ?laC~yOg@+Vd-A2^E6IN(-$=fdd^`C;@{{Bj$?ub0 z$wVrhS}wIhYQ@xQsbQ&gQX^6$QyZiEo~-#>%_}wktSQxeP_v-s)0*#UYHRCjGqsJi{c4x5&DE}1 zyLRoE+VQoU)^1a~UF}Y_lWPyDJ*M`!+L^Vd*Z!vV!rIGfudKbc_Qu*dwSTO=v$n1F z?%Mln=hi+{8`VBj`&{j-wg0Mpr}o|24{ATH{k-sGBB zS~sF@Ky}A$TKCSzr?yI`*>lWAb)}`v}>zA)z zrGB0I_3GEJ->^Qc-?DyU{WkUc)*o1ZME%kA$JU=*U#LH~{(}08>s#wDtG}}T_w`rT z-%x)`{h#XZsQ+{Q-Szj@KT!Wj{d4tyuYb9Ie*HW3@7FJ=|EfOKkZD-1VL-#m4XZY+ z-mq4~dJSV5Hf-3uVM4>!4cjzq*RVswP7OOZ?Aowr!<2@p4f{15-Y~1dHJsUSPQ&>P zmo&_7C^p>KaBIUK8}4XmYq+=JFAWbjJlgPh!_y7VHN4R9Vnchw%MGtKyw)(k;f;p3 z8s2VruVF#Mw+%luEN;lk4QJAN2S+Kk4=wDk56x$ z-ZUMiw@7c5o|vAL-Zs5`ddKw6>D|+l(|f1$=|j>-rcX+rl0H3sPWpoMMd{zBFG*jT zzC3+p`uFKSq_0U|m%cuIWBTUwt?Ap+e@fqx{&V`S^gZbZ(hsJi^i$~<)32moPrsRd zH~nGy^YmBguhZYAzfUhrFG_c%d(ve#5AidJOe#~Gsn4V{*~~JT{+Z=6D`Zy8tdbd= z8J1ZuGd43mvqff7X6MWvnJJllGE+18%>J1JGY4m;XAa98kvS^Uk~ubWeCEW=jLgi; zshL?BmpLPIR_5%?xta4b7iTWd%+6ewxjA!N=8jBT=I+eBnfo(yGY@7S&ipkKWggEw znRz-hFY{dHh0KeY_RPzfS2M3==4al>yp?%7Q_6gp`8=~QvpCb6u~|Qx$fmNj+4^ic zo6Rnh?VnvPyFzxw?8@0yva4kWWd~=6X4lNFm0c&hZg#!w$n5Csm@Joi*=@2rW}CCS zWOvK%k)52KlHDgeHJi`wpFJ>paCUn3ugot1UjGqPu8 z&(5BoZO#5Jds+61?Ck7S*{ieHW{cSyvNvUK$SIF^b2$A9tv9(I6!ykb{u-Sf)x zJiFTbr!D%qzNfsWwT`*oQ@^O|9>qLY`5)W#bNT;`@?3Vhe4=8{U)Y)P3AG^pe^;e+ z7rTDn16;N4f5VRdo6ZN-rU$);yobF<6duVQ>}}p%6}Xy<4u167kv4`b@Y)JXKHR=* z-?Q&)c`e|PD!o>vED~$-_OIk?u+zau_G9}c5&Gk@{2$7j!;=4}((fv5@yzekk|p)> zn@;QT%>q-Z*t~%KUP=|K1s47Vyp|I~>)6lj7m6E#?J*=ALw{lOE?V2pUNz5aS#~y! zp{gCPdao-|B2dOsM z+q0fq8?x`|l3ZhX&w3nvvWe>dhB*9VDR0OQ9b(C+L@527_n*gWNicC=d`B-xsmpv@ z@x5XHpKt89d@3aPSzf_AgI$pY{*5R5BMY=-5?}BC6YL~*>y_Pjh3j@BC4uDIV##me zUgup}dbCo$%UtB$p***kRru0#sCxbO3hrjJEIa8A0ULY$W@3HzSImf?)Ve0`AdfPa zs?Nd0A(Oo@M}qmgw)mI-SHYj-DpaxS8{)D`{yBMuuNXG!)4tGjs@Ctw34Ww-Cms`S zYdw{cTy}02ocKxdCDX1;_(*namfgUGKFQmL{fu`ahM4Rd9^(Xmx48#@J)}DBuy<-5 zciIctd-`kd2bFxl$Zl+_sAn$pZm-~0Akx`N?ASJlorT3~qN~x9J;7qkk~YP@lD$WV zn2A5JR=8FnZr3>WAKj>r@-;hE3gruSa{CH6Q}NMP+(eUIlZEEnjoAZPp!mN)v4=c+ zx_6d$j?zv8`VDaGrXD%)H}>OihZk(QI5^L zE%D&C-gfL3y(5&vy(7FMp|&Vhbi_Wq-QJ=ieFz2I`naRYmmG}*UpqhchMw&+`1|6gvdB+kRt#B8|MTxYJYU@tY7^WC6uZK8YI z#$J`3TQ}pz&?K|STkLgt-Ks&jzT#^~$v42yaN_4d{OrT3M>Q+e;|K=wM7eW|`wjO+#~(YtnEqNjdG zgyfsln%#MtBfT}9o1{0|QGNQB`@u_gzTpGp|<2TzSDkFA(36OFQhE~m0VKn+1upkKdqiAF?CnwBXw`EB?+Y9YCN8ybb6Iw*SV65jju_yMy)7eTB6_$`{%PJd z?-Ai!b^;XqYkhY9+>7_AANTHS`yECidc^*`$=qh{pwz~lVbO9E(D~j4-XE3wCdO@- z?Y2F(*K!liOL{4#{Yj~d>|)!+lN{d@nn(*==hb@+UcJAzFPM7$U*p&LF*KSOjhC4^ z#Y+53iB~!1SG+Ir%?=>O`%k?u8mmcmsvxeDmQNtkdV$AJvLn3EXA*(we5IVF|9{gb zH4DE9$CBQf%9-x~m5cui{XVm|w~x24V*f;GAB80HictTEx8CsH^4|8|_1;rTH5U(M zysY=8_b;#1M-~61!4Fg30RN=DVg6e9XdS+jAL)Pcue+pdz!s7M%lUcFYGP*5PRZY?p@(s>0RSp>s_byKLMBQAM>%c z6<^A`bo~lx^vy$ux zCACbei9qb3%n(gd4_FSS-$*xgiowVg#`-#Hxg`VuTco;h<9-&eP^M&1Xg=DwC|8#49 zP2Wj;Ehc!`-A;D0J5Ecn?eBXZcw+eiwRWZzD7Jhi--C&i>`y3p{QuYV|0i)X*a>^K z);ELi*kq5kE46g8y}({*FSf1r683hxoIRVQ*7NoMOk2(Wla~BDU9pvy*+1J)z0bVQ zy)V>*7unycjlW}Oy4c3^uO82!M`jVa!bTO2NuFEmo7wJX>4uK7!S(zJKAFBT{OY6SOSJ=A2h z*l=$uWx}A?V|d{PeSWcL3VbPk*TzuNG*@te$@_VzwcPzGc`=khA_VtfeFnZpg&L4G z6)5!EyQlDbIfFzKxNlP;E4a6S_=*x}0TAZWj+cRQimRcHVxk3{NHq6BO^J>QuHCOv zn}RCT8k8#3QXdp0&7yN?QO4wxZJjY>60TEPnW5!XDDoU$6I_Yd!5J%%Np&o~S8*nl z@2Wy=;Kp-Tuc&-6Bw7S&_3~&D$f#!ZRgg!YKqgg0i$JZ(61FJh6_F6gB||hnT%R>j zq6FW=YG31`DT;GJsVidzS4@UVg)dp`ycbXMVq>ZaoIuUA?Orn!a(X3s!`1XmFR_g%_~q#Jw>Q5Dbx-mvPD`H_h7r9r{&U@?L94B zQ_P#9uQ!J3jq7byTs^-Ms!)@a5i5K-o3BVj-KKk8TA3oED{u@EH(H=1`ndIshmt1h zc3tZN1twHzJWz92j<)G&>S_jhUo`X0?7ikapnO>%wTieAmG&}|?ltd-rO@v+Zwo{O zi5QnhHtww)vKcEQJ0eC&70P=VEB%}AbwAqsx=iTUuzg)GUH7;R6eXqNv{enOgX6H@ltJmVLWz= zb@_$yh>hwD9+x`8x)7?2ja(|MjK5rigDNAewLwOwjH@Uxv{GibOB+Vhr%+98>;tH^ zLKTU|Anb`DrxH4zdu5#VLUnx*A02>`6(s5vs0S!4htwkBoItJJ zIdH;f%7PQ9*ws{_njWDFUt_Q66R52>2lP4+qrC#P_B2+YjzzLEd;-;VMnA;*n){$! z9~3Tji)0kztHlwJ%xSkcueb){{tH#w+tJm;Xpf<2@wz&Si(MTRDD3`GR%V50Ff zp23yny;%RT$7 zX;GX)ri~bapX1#|_8W+ycGF00f@|xoLM`QXyrz7n3N`nJv_No8wh9q-ix>ehUlj_O zGjgVrb-dUUpYs}nc7+;4`e-UFinf|jCS#E$HGQ%Z=_gbI|Vl%$SiIHCs5QW)YpMZ zoy7`d7FBU!X9?U}B7uiw9%W4HqNZdFHL{OK47GF$u8G>3JDXB5)UmJ%eGcsM@ReDr4WKZLOWn704}e%sj!-$_g&TlNtLCIESyQ zkjz!VH81X{KyFdQsv@|E9<1>7LG*7$HtcSzP@8(H`Z^XG#;&Y?&7D;!*9V1+$&7tZ zG$-@j8!@M)j$BuKZ5DNfi#O6Mw`O8p$7@NGi6QtZIDw)bSr2HNHJrC(^=bB+R0~wk zDMT;$0_nMoy^YS%ao^%Kb)Tc_bFz+B?U7u%;Yeq#KGv+mCZL=8HjCoX0%!`T5`~IGK>H%l$EmrpY zUwBSdY+0Mr>Yt)NhPhqekvS_JJs4eYOt#t$CY;qaTYZ#)Kyw7zc7RcC!0rR zVW_NI#>SO(%iDUWE}<=HWv3WY>cM;`Y6A+X(kdGlmd3V!Yf@R1fTTDJ*-(UgM~;iV z3LC1xj&C-ur3&w!Nh55jwxNtCp*-%FSXzZy3mnQfm9-2oSBSVNG$EWBnzAN@qY-<@ z4=~q&Y;)d*LVRIC;z&yOdZCe;yFMc|&jw8qq~?5pZBYksEt|`2sJ4l8sid_{6*d$% zRU$-Jp(^a9!}mFv<`8k_jNX*9p_+j1i_KkWkW+NLmEbEt)h3k2Gf57=1JM(17*v`# z+_U;sIP1}U1fD)^s0{nO-eaDVtBusd9YwWIXI8qm$eK9Xax(JijQJ6C!-XNWFqAPG zB+V`i3C>Lm zLuDlqq_Yv1O_$qHRk{{d-a}lbE{}6NpZV!di=MYabH1lgZb7BFO5)ALf;_Htrau;B zOdQI$pv;CU7gU%lBCZt+YRwgqbVCz|ujbI zFK0s$o}@TkjC~L}RIxCmFmmuKANsA<%R@?`5O;kXit!bO9gQ@DW9t(WQcX2=9Ex#P z9$@04bcFK;>1I3S7O;luM&}J<&)maND4(ZGji>mp6|aMd>CeO4T8-Xe@`TpC34r%cA#~x`TQ^lW7^yQkccYv@D3`QZe-a^-@?yXYyMP zv>aw)F)a_GIay3SK{P*$sTYX8)X1~~h-PkasY!?CaIvfpWc^fsODlo;s}(J+3|ayA z_nfjXi00=oWk9Q9h8Pz0;g9Bnb;mp>rv4zB^Ta7v0j-W1WK64qdSW#x(`rVxhAr9Z zh+h*q;Ap@f{c22(Q?8AalpD+F*W}gkD=E_e%xR-vOgSaZd|MaiS(cS!<`sP#o@o$% zW2G3T!T3d*VwmXbfE2?-^NlEmX;aKSq8O&lF{g%Nm}o`~&6wfbL*%{%Y%&c6ZGilk zhJgm6EKI{e>!X}ZBR~T%JBMi`i0m?L4cbbDmPUbwqNFSv4WeH>nZ|%NLP?pn0S!Uf zn6?Flm`}nq7BmbqBACX3hGVt~(|FJb)Q@QbXfxEEsRFbK+J$L5(8g#priq{pFTh%d|6yX5lgI0-|1H+7&bgb3vGB7E=ndo0zhoaX6ze?GD-uR=B74!0+xGpgoyr z&d55L5ydI@LCOi33B|N8h~`Q$?FXV+IZX76JI&8wIsim-a+nST(flf=gFrOXis@j` zPMEvHbO>mB%;RA?6tpYm`!H34cEju~roVu8!80z?VIZ1w!E`uiPt1N{Is&ve=3+1% z3EBhmGMJ76?T0yDOh<#Vm^;993}_$BE?_zqL^BPTjsqQpnPE)FgAPGixCKwZjF{ap zFO2DLn1666X4)`Cn1MhuZJ18P{DZ$>HW|}N_{ID%^aa~I1vU>yU$BgRX{VmyD+0~L z*$XptIOUm0c_d^^XMv7TM_D=>L~|fmb`Izm%sXK^7qlzdx+|_GDKjVMSj;@(YtZ?a z=Xtz3$fmpyDGye=Te=9ezdFIv#h?>VZnk*|XkXNyX*%eyn3KhHDTrEw=`s+_%wW14 zL~X+~1N0Bf)L^;-L@mX1CFq}+X~1+9h}w-Q2Ra!ujF_$l(d-VUYe3YBOxJ==!yG22 z>p;||OxJ_XP-j}Y0dyv2NwMrk&{>$>#55ChHfE48-2^%TGpM-7Xs*qHXv1~QS^rkd zQaT4SpE%|1NO>Tb=?+j8QZiK=ItNy!;drHayys!w3d`<>jCzLY9?-d%Bgb?v=tA@& z(|sVCE6H>}=pxL*V|oCzBW71JJqVhPFG?~!1iA!s`1p$VFo@>!vFs7h<(T2evPVHP zFhi4NkAbehY)z)eK{N}HDF$5vy;V(1Jb}47mm>#mC7R1qff=5h@)@M0*`A#8S@j&k zYg*a!Ms}RdeHQ3gNVzO8fbbR=?L~htVs6IOn8VHVGG?eO4dT0mS1|+S8W874Gc>wl zb|cg4piY=U#(Hn4H}UnWr7Y2075YvVr+fz~XJY0V(`?Ynm~+kaF6c(w>oL7&Qr?Jr z7W$(ZoHQ<2_90|z;U0tOBM^-erjJ21%Z(`ys>WDg`UFI?mzh2V-GdokOrL@7#jH1` zIiUM6_m74d7Lc!0y3K4$utl25a!fzuh0sEM=)cTiRQIGirKqNG&lKi6UaO_otl{ezNuM#*9DK^YFXv9eCDcqB+sGASIIqt$|rhOabUlj1#65 z=mp$qF{MG*VgxajfL_Kb0H#t9&G^~bl#J$yzJmT_8O?>vLB^v83l}{ag-lp}=e>w| zQk=33DQO%sbqDpqNaK_=C-pkq(=zqId{vr1#3^YmCe0;cqIsG$Z-}o5Gz0l<%&p>9 zqPfU4%ZjOwx03fJ#xLuw486B82aBmMXg21sGG##TVU#lU1JQ_O>JOsX$V{t%Xr40D zs-TZB*OQ4>(R{4(mS`PN9?$qJTLVP%KAF}8y{A62qmF575Umbi8U>n&=N_ifpjsTQOk+TFL^9F*r*AQb zorz`>y`g@zG!{hbg;+*2j_7D*8V{m%MNAVwbhI+jJS1AL!9=r>=xAl4xn{Kbh-nh2 z8RrA;hsoX)?8Yrbv!7aVT(gYk5#i?zkBR0)(RvxCoxNQUZnP28T;Pj&aYTB3P9T`)79Q_?J> zWiU6LiDpEV;#|S>H}CHVr!CREHd=SUGMXDkbK03`mROgCIh=y|SShSj;BuaZa?%-x z>2%O?Xlo{#H`Jh(x3V)q^wk%ZodxQN{FrD451oye&H>Tci0NDqosF2PKr~C0={!)` z!ge_ybC*{1G9KQ(;*{q~#p0L=OFtmgy?csz}R3GaFZe9@EvJHDHtJ8qjLUkLg;_Dkuxnb)bGIC)4$y zQtVyNbOUHDv^>*|pe{JWG0g<6gMMJT3A6y)mNDH78i0|^bPH%bZ+$Df6+~x0mfZ%T zvmev#ph4aSmS`5!U~fZ9)gU?-a>_eFbS`AN3q?md{bzbVeWO!r}a z|0Y;@$V4-=H^Z7ZCYq~_uasDN1oO5x$C;RAG}CkgteazsG3Rs(tUG0T67x^X7ZS}x zr879op2e(GT6M=nb9FaaSe6&CriH!?!lix*rKZ(6OfQ3m;tL;4uYhP?E7PkWn&HY+ z0~+aVZRs@-%_L>n>!8uz7)x(}Ld+uNve4>~ZIC|`tvsZ!YB0_A-bHwnC0c>FHD+zH zj8-R(#SB}fkGzjju5p&~SZ6y9tBP1gt8ZzI5fiP-q?x%)wBB~>g*ng)&M^ziLTfqK z#@tx0!#61Pc+9e7`W8g9N146@(Hv5y??Kza3R5j;4CdD|%?HuUTc#gCGz*vMM-ZLQ znSKII!S{Wbuy&<&P0Vg(qIE;tqyLx|fHuLIpQ#Q+b6}aU{-u?!156E|9nca?ji3-S zO_`cNbd6wY2JM7($xJPvjWDB@sTE|dALfjrFb9$53A2n=+R%()CLff=sAJNg;kdRi z1)$w=-C?3tBU@vZF;f~u*Bz!35M6heNYHo*K|rd}YrmNBgWqH7t`iXfU<%hVf0S2m_Tpkp!1muV%?y7=+} z)5;*a>M`{N(F|Lr42Z6QO#MKA#W{qjKd2n@xtUf0(e;sORS?bmW?BtIS4*bVK{S_| zX${bcSQW-ZD_>}iHPc$4ldz_YpDEYIy2S%AWk{V$og0s4x;NgmwJRh(x>Y<=T7t6FUHJY)*FqK7b4|YW0O{!o{yAW z)v9=orgf*6fH>tiV{^Kt@gSPB%d!ce%Q2UjsRDEb?gp5)16_%`0VZ0_e;L*{FiisG zysIru2GObqmQ4X&<6UcMdl0QiWZ6^@t*&I62Ab*JWN8Nwt@UFWtpcQVe@wKJ?JDn9 zOSCeJ*3PnwR&3E~WTss~w_`ps({3PIXUCKU-HDZ*OuK__#40Vb13`~?)s_wd zJ&ILGEISzV814<24go!m^(9P)g6{BQOO+tHQ(zgbMW)p`OoxH!zJcj*5ZyO09Ra!@ zD_WS21kqgt(@~)3aM!|gH0T+u_F}>h3$4o(VKx8VSO>{;B3AXj0Aiab!RCutt;KXQh}PsXodUWWYjl}T1<`6< zrqe*Lc&}PI9Yi}tu%Rg$CfY0KRjZZ zD)yRSD;L7b8;~(w1iBf=3hU8Iyqhp~nP^qnOpINo%do!ePK;e9T4`2|vCDKN*6uxm zzGcc`1=^$NTP9kI_89t>iB_dOj=trVzX9v5uEep)vYA+|_5hAerknj+{D*ODGSO}Z z4`C!T-R|GvKZudcM7y6nhcUrK`?EZY@xpWu_63@SQNVN`b`zp|JI?(9?Ds2c79So6*lgXk`h=?T!sUf$A^Ai5`H z*;638CuDjWGzUAhFg*jBi=9lEo(0hzBEK7b4m1zDdN4f?`Vu>0FwFwJkKI4)TT~AD`5ODHFue)-*89%VTcGc7 zx5~1&LEn3|mfiu)#~v~)n+>8pGB}5K{r7y@J%eTML-rHao-=&_`Wb7|Ipv2~(@JZo zS@tnx3%vPOmdAS5I;^c;&K%R9`k(o<0+@-`_B3E87$#buMC*nzH2{CK&WF|zGtn9r zT2IVGt66aGYFqw0NYm#gIciqn8z8d1II#SpX=}w_D`TS z$xOfa3(WdtraHggtYT)Oy$(wJQk${~E9pzIN}Odaeydr_%!F4Vx-0VNVRHAeR?w$B z3AmITWVVOOzVI>+|6jSHhL+n73Lasg=}fG1rx2%{Ki|_ z?}}d_eMRdOX;n4bEWFJ)l?S&$s=z9H39g?(q3`ha?3M+*Mci&jq3?jB5iv8t4I z`rwrPkg^Z<{$T14S^;`ovQ>Ggj3SGRN8ZeX?4)b*zJOeR-kD4vHM7OybZy2=OEfihsP4FD5m{gczmvp_1SA+ z-8K`g)LsKCk=e=y&|A}A+vZ2>x7YF4wL~lZ)`cFYq_utnus;l!Y-7-B{(4qMs~OkB zK0Pek1XS)1w6rN`pg+jcW}rdXdw^4J4x&3*rY%5&u`ZiwOVEb?MwYe$ZG@HaEDJ#! z`$H@Z1r5O-6f7GCqV>8=!$F(jo|kC^Xmi~2GK~anfgM$twgzp9T~(Myfwsbq9ZaJ^ zp}&=-F`%K?CxvC(fY!zxFw?f6b3F zo%F`21JllW7rhbc$F!^7O>c<0GiCMedNA6BX%D@p-T-aJw3psn4?=q~?W6bA1JTw@ z`|164Ir@R=0DYhyhrMHXd>*6^*6U-(A};44DCc-QKQSE&S|5A$@DoF&{)?V~U5=Oz z(}(Nrkdo;LeWadw-=UO2%?=|m@WeCi@krCE(Yy~eSnxQ0qu{Sf0(9&4!|xzOqYTV z#NG!?mw^uQ54LnU=wR$5#IhM6+Es|@3J~of#B?R768jA?T?L{YoS1T;!?1G`)77BE zu>%p)HJ~G~rxVk)pd~#MOOZS6l7ZjE~0HS9BJ{lj?4{3T9V0u_T zqUl+H=~4Zdre^`B$FYC&h5kjBp1@wtbobA)r?9Ux-TgB?qo37u_s{g4eqPhvKhrGz zf~LEFJ|14gUeGhJlLwdVWt8kP>`B4&3TQfZsbG2)bTRg=V5$LKh21(eC?}_U2XqDMz%(0lIqJvsF6dI!o#{Q$ zC1@9>_dyq-&6qv_U4Zsv`Ve#;+M4Mj(7EUbrjJ2q`#DQ_(AC(LgU{@rfM|aXPWdT_ zcIx2v{7lc$v?CYOT>ZJe9y@e#$}f=eMm#?;%>#{r9@Ceg8?bi;(^sIIuuBeG`C5OY zX%I}f#7Cd(`)q-Y1k7+*WX6%f{^aJQN|8{HTNBxt&1v0kzv;IZj zhUYa-xd18e!1EeY9q3l*G1Y@^_p2>6fM`cew$iAZ^c|2fHR~3AC!X_IuN5ip#&aH% z3h=H3dQ2YZF6?E>@HCQr?f}L#9&DJ4{mm-UuL$`RP3i>VCsAa)XE>JEAcJ9jcI19}*{ zcrq;udIY;*GW7sGioI=_mIFP8eQueS2R)8`aG837Vm!w(^#VPCJzber06mGlN|{y! zJ%znsnR(FD`1oS5MxMbQCMEhZ~mCdk+J?($Vv<3FFe+T}ic@?Gqm$rOU#h91*U&}=*#GYtd1k6oSE%5dz5PtVOvBe6IB``BNTQ;tH)53$D+ z(`XRw2E{Z6L_0$>r?`RkM|y2x|7qaZP0CbBNSlNZ3K;K|x7lE$#QdV{` zD5Y~&b_wVcFKuPhL23QCm0b#Y$}6$5%RnXiZ7aJR^gP~Na*bwy-o)?aOjm&3@=C4V zl^}Yr!?LSDo%NeGWe$YTs#w|8pf36XE4v1Cq1V;Qt_2}%={nF@)lKtQx*pU`Ut`<) z1|qxz;{0v|Ev3iVnVU0>-Z=a=M$(&tn}emWOB&NH`1Z#4{?bivp23$&dLkv~_Z+@j za;D$g<~Iu|d*gYRd*ubtM8A)fy$GUx#8~zcXp+COrI$e~_%uYmgM3QMnomiIF@ zWeq5UH+`J)HBfiIpOw81>Zg~rvNu5e^(wYTZ-Qw5GS+(ww3=Ss(%Ycbv5Onm{T)NA zpnfZ&b!P|f2K^ypdM|iCxCXlv@|pdE;KN`|>{!V3QSfoFmY!wL`uX6KAm^`bbNCcC z*Vd=lr>xI{Il-y^I+~xk<_4b!>teS#F4-3*WjCDoZnZ$*8%NB z$Mj9`ZLkh@{o|D1A>{zPrQ;fX5276vnQB3_w<6Pg&|vJm#d<%0Hoz`iEc+3(5%v~i z`U$i#_8DXP88k$1V(AyqCVEr7syVwY2>{-qPxMDZD?^p(P&_;=Lo=)SxZ(P)h-5sJ_Zxfl{C={b5#? z1`X50EtP;q=#jP`N>iOuTk8>)I;Xm%M(UGnk9EbDc1Gc=M%+qEL2o5J%F@yx`rZ-C z%0Q#_7)#wjWAG&;mMsI?MsI6rS&;)!} ziDkV&6?!{MD}c7c7nfMJB50zXWT`i3IKIWivOb_mdWxl$KvVS9w#`-s&GNUmvc910 z^;VWLpviiwrGB8P__h<<><^lTHe*@^v;)d{vgzqnQ>&$R#2Z7V)l+Mv#^Q@mOlzjr zN)5vML;i;0+NpI?J7Kgkt(zK`B0fX@MqY!$0JPgK{ zkfwXP*!J8AW!VLLHFE223|dw1YH0{)SAB`S9&G~JP5)%ie4B!rvDX#rZ3d#ZmrR?3 z_Q0D>rY%5g=shfL3EExvx3m=~EotWy3&w=@qSPIOrv;G~o6e z0jj}VaHf%qBrJX^?<2^3Rb^#rS zZ;dhS3i>PF+%oNEWXGfKTVkzi7GK2L+Luq&?Ex9R$K|%(6GZQEnf3zxLyxj8u{Y@N zI)W9t+ukR&Z|X#R*NkaDd|&HC$XM?Hlk%UI4g}FVY#yx#r4CLVig(dnu|B6%9fGfN z9fkH}s!aVQMQ@nt{#5GLDNjnBoH_$vdgGL*q)ttpse4(y(^99W&hyT)`JI9M&cb_t z&izc#Mc&z#&H|mStL)KnHfUdcj+LDQItSm8+uW4p+*DQST#RJ4a-NY@*_7vls_?zJ zRm~A`LF&TPdC=pO7eThVcfO^ILFem#dYtl-)bvypzEa1%c`0NU;)`{xcNyp+eX*s> zK^G$jPB{Z~39K+(0Xkn#x3Viim+H%`-c_K>@clcsnFC#}XIQ!#Gy`A8W7##JEAf>) zrfWf0>71qOKskIrk7d_`uGZIBx&d^JzR=Q*po>u>uHVemO{q&zvQ^D}&&~Mm+ZFms z5dGbnx-B&W`7zy|x+8Tt@?)w_-I=-!`7zy|#F-IKaEbpgKV$7Q(>`Ax@n z{h00tU5gx;9spgTue0}4syz8AiG81YUx?ft@>%J z_Z;Xcb(<~A^Pt=G%{JvMlkzre^M%xlsoV8kR_`Uqo>X^Oy_Z3E=xVF?3aA?2JLKG7 z1>LD{w^ReV9bZG_wtg-3dg?)Sm$mW+WOwT)?0No8&|Uf-tM?X&-tDu^w?X&fdx}i& z7`?l!&Dp7UQ}?O+tj+fzyHDS5Q@#(nAKzePy$?VS=m#x*2zpT8Z|nDwq5G`Ok5l>7 z(%wTh_N8kFrPO=czAJkKk*Nd{oVY z>@mogz63q0AGdm6f#_EUF7?--SU+Lu8xZ{l!Ln~bPvX}Krtd(HAqPG>zE9Pro>x!d zEKGm%Q$M7h){o!`lm328{giq}KWFLZ)Gv@dWlOdIR-V$&SgHd(qaU`dR1bPsJ#A$T zpjbU?b7)L8rJmD|TAR(OmegbFc`IwhHV)6>*AcF*m&SWjJvOWg7H6zLm)o zkPN?^@UfXnr_;0ai?+5Uki7&M*S!?h~-y19}hN_hi|!pbzk^Po^HA z5A|$I%Yi=9A6Qx*^gg}`$|-w-^7L&cdV}WRo1#p8 zKy!88(n_Gu@yiLzRt9~c=UM6t`VzmRuq*@mOn+smALwg*r8F?dYJYq!^DBI@l*iJl z>DAI-;~9v1Y;~mE1Sy%;0KJ4B<9miR(`%*Qz!y+?HOt!Rb9DYLmn1+Miz_(nPMu2|SZ(AA(`U<}Vv21J5FZli|(=*kcDX?2w_W;Kpv)Nv1~HP4{(w+=a(rU9h`5^ira&NAQkXE; zYAPtPv{QQLbV*QZX%~EZwG)1c;*`6kv+2^Hv!&hBd!)PI+qf*-Grd>3Gk$Gi+B>~Z zx@*wQ(!S~a()8OC%l1znkX{Pk(`7m^eNcMopo^u0(}$$%{W4pJLs9Copu43?PAL*3c-q&PDuYXy&}F1%r*L3`tRx9K_5#|`XA{&_;N7IPE7wZ z{h8O<+B^w1JL$Q$k4^?XtyZ$Rp8{Gbc+y^(PX(j6uVcCwv{A5uO?jV@tr@Ip z`u2W&<(PiiSGcui}cubSeCTnn;g)joUg=+zeq~+$|P3& z!ZJ&&_)_*u6U!{pqn%Q>u3PH1+z}~{4XJ_nQg3%3-PU$}(F<ggYY#o>x(qG zMj}ma4auLSVo`k2bzA16OmxI=pKfw}rBsFa7M~{z&!Uo__$L+gLa}b4RCL7Wcj-dK zx`k3nCH^VSd<&(bBmSvQU3Y!|;nXdZN`B&>=+rHgijMgIbm|sLMMwO?`bzBZ3F9ho zy&QXPf#u&PJw;`pEjr?h<&&|iUE9)=uv1vu(&Szc%N>(u9QppkS>_X+Wlrvee@&TD zaiNVn z3b~fuM%DezvCuy0OsDRDpcKyU#Y*pT>S9l6{7K)4Z(0(T-MatDQmKLXQnTbT ziegkc)JS~EH`%gCN!NY8`t8weazL5yb(YyJ zO)iyKzRzjdE$zr%(4EeFtDVx0=(;VlRN6*->A~dsij+$wI^v5oIbV^wYjhlT4z<^m zfs1_6O}>8?spGl;TgN3n4@%juT#S@D$)v?Sp!kw+@;gL$PUZl5k&mbAtG z62I9-4Y^cOPw^#(qfCv2iv44p^-X?kVwt5v;!CNL zbwx_0Y9n8ax`&)n_gmB35_Rpn>wyn0fmEKmlXZWO)TA9VcBJ^y8p)PL`cz_>e{a51 zCXXB>7R7%i(XvRnRFu!ZTKAC-#)qM=vhY{oVP_ zO01ETeNit={@o+zxprDk>ffgmbqiaA%9y0v-abmwb+>c!nW3<)q>SRbrRKb~*mI8i zH<9F0iDifG!mEaqReU*{UTS(lNPJ1~v!s*4lz z6=`yrjg7_jg1gL%ze=`!N8!F&@zq&sAik72N~~|PwD=i^-a;%Yl~@-4<^s#bx`k5F z5&ssaZlP3k#J{FMS7N1~Z*Kdp599fk#P{B!drjhdZ;@WBBIGRji7(RYRL&v2Ud0aS z4dxD6EQ&9duTnI5Nn*tpDdpO>^lE2o6uy%w?!n}Cmi(_R$hTOxP%1j&U+2^U7YI{S1PwI47XXTh=j?~iZK;G z{$bKzoR;0vpPjlaHT{Vih%bHhQ=+a&-!)RBgB}xKq{*!zQnoBQ;)}E+y2bj-h8(ldD#FySr zF0)9#{=;;+RFY4z@6NX)y2))N`MdM&h;DN4w=dsz>n4n6u94(Z?DKe*@hiTha_fG! zXl(rMe7|dZJmXyNILiJrrMN42qU{<%`jS&xJgre*609hXTuVcRd&}qFZQL zV#O~kbFprrRCL6D*_m&lRCL6D#i?5;6&>+kb?O#MMMr#hFT7k}S#+c~l1nAhyY9cG^g!+7c2e3sq2=0 z?$mWlKXK}^RBA82v`TV)Mf$0+EIQ(gv?IF7Wfsfsd^@6>+>-6fwvFB(_ByUgxu_n%T~S~*hPt>HKmcJS`&ztJ*}=i(zoTJpb9%12pSHF8V;f2;5R zUTgd}_Mp4Wjwdgiul|(&`poZW4ZOkO=Y4Z-OL(7?{5C+&Bd?ijw~+YlJ5MGbWxTFn zAih^me_~O5DP`e%q+;n49oCh6#IpFwmPP6)6~<(8ecf$EGX@8tHryIQ;!D2CM~X<@ zy2+&~)D;q6%IxSP)VJeOlg}m_@g0ou#}6AbYPh<{^sn^MBA=x+CNpi0oW)BQ{Z=fN zrQYWyjw_K~m{=;2a+!sSebz0GmHdZu#MY29cXdkr4oLTL>h9~58e#IWfL?Ixy7S%JneSd5kh(2vr{$mnQn%$UPRpI0 zQuoMl>$>xGkGegbrP{+O-Q6k8I;H=ve7ieKwTx5R5#2JUn2|pM7Pj#v2NDcR)v;}b$2tm(!b(MzJ->Hb-NYlijMe3*yh+szQT$wTNWzLH~HEv zsS7O^>n7h7h;E_fV%_8`o#+-?F4j%H4vKD}x19L|u`xWzi8|q;6fVk+hBYqFX4HSn=KCnM+k{QFN2Xvy{DuDo2eat@w+i)Ep8k z{vRyGdO~hVlMhJp72n;?2PF1jJIY*`FV;&+e&W0HU7_uK3oV0+Yv#7x$5<8}@!MCb zp8r-|8I$5mnU_y&E0J=UMMr#*{*k&d$|d=TFC(X?a!aX7q9eYPooghq;ulJV#Ftd= z`tlv}#ef|sI^r)nj%ZCQ)#TS}TUVqat3P#3GpIk?>R&rHWDJTg$I)`8xg}P7 z{K`WKRI=2qE7ChL z#W&K0*CUA)-z}Azag9Vr{6*3bHI`WMM@}0vnQFBXzDMDbQe#P4@x{hUBs6z!NiDgu zk&2G^qT6pVx~@|7Qz5j)lK7GXTb5YysjibJ4&9bZC9&eWrP7jpO_@bU{QnCny(^OZ z#Ft-r`Z{-6PcE|@-F;0m#TVUiiESm)@kS~-;)~R+d!)0zM<(Vg zIV4*)Qv9;szeAQ?eZ=*Z`iU?3ZlW?MwZw`qWgd|@+C@52WgWU(tH>c8rOt9lM?=~}uDkDXF86*7@ zbw#?w$HG9R#wA*oQTInm7k?Z{D~K=k-6XNhB3;}uNXk;b;`dkF3u39*A7}Cv9q}bq za{r2yEsKu$BHhMWBepC$;*0JWr!HF-9q~ms`PdgJTNWMhMLNovFIyHJ@kMuQr!HF- z9q~ms`PdgJTNWMhMLNQnFIyHJ@kMvI(Up-SvEs938L7p(YdP~}%VJ40W4 zY`BjUwk$g0|0{Ie=PP%<9nl@^Y-e}A|Es#vpW;hDC)Zb`$s?zI(&Qc#U6u-oFQrQ! z?IK-!(J`1XL(;9gY2w(B{N1hbzb9=^A4#i=FKzXwE)Avs?AGYW@%yLlulx7k*BY)n zIvSEL&mspyDbC>1L9H+Jf> zv{*-Yh*OuPk~Z0wvWj1rs*n~vX|LzZm!)m#uJ6=kX$UwR z0mspRw%;T`Iz)vI%Nw`-CIPy9q)1J~ml`D>Wg;Eqv^>yRs&Z$I)_1nXdd`*{;OvDV z&K|_k?dbiDoFm8GR_maL+88+t-<-(tBfj*;;fcB;J;F#uNBlymP_aKQ(X#1Zl!`4E z>xeYDR3dGUu9Q`L$>}eNr4s33&ib-c(iZ#fGAHXwjgm_x()Q>|J;j&O9qO!arL(>) z6-&jwyUfYDQlsQjiL^bsQcv-vbO$@@dx*2XEEP+|zPrrHx>BR$Qi-%Zx>8T^rE~{6 z>wA#1zAP0>#lE}D$+}XbG8i};H%$%?2h%c!M?=~e?{N!`2tehK{ z*v@XLlrmZOPboF2wEll%YfPFt$P{~n#IaFWBN>b0OTFoLM6dIZlbfklbrQssaPuZ-DOVJl^P|NN~G=4 zm3oRVrJLZaZ-ukIEEP+|zPrrHx>BR$Qi-%Zx{|iIzGs^niL|)PobRN`Lnn^f0KeIe z#5^n9>r1M?7PJ*vhH#^on$qc376Q;!6#U>cTP>OIJ;_ zEVFl3OO#64-K9#Fw!<=-luLz$@05Iy_)_*{%Od46i;nmrO|Gvz1x4!C zO>SoyNj!3de&4t{E3p^ER^gbGvUWsDjlRRku_}2yOAnrzSSo2VzRQ);i0_sbTDCnm zSbVXOTq==rsYFM7ktUZ)q{%gMw}!NHa;c=gXD7Cm)c2e=rPK@V-cOcFncJ4q%)R7% z3(G7mD895+vSpF7Wzi8|q{*!zQb(z97CkSqtxTCAy(saWo6PHTd^G?^`;tf(S$2Ox zGC--Ne&UPnP0lZa-vrGi{Wj%&rmdtu#h3i=O>9Y#x^?e&>Ly#3{F8O%IBL(?Ow#_o zvuKsGojWDgNXoo8sjGiGIrGH}Rs2b-i!b>uPU_0nt-G7EREv|k%AC9!OKP;Vv%X6^ zOSP0!cc~@Nm67Bg8;g@BwZquqEj>H2%wpLsjS_Vw-zAYszR9}O3lm3b=Ca zBI&TPQ`7}ZD5Y`5mfPz6WXn=Bx9+=%r7F^;XIS)!#EQR;Qx~s1@F!zIbj1H7b<@aK z@)2J~EdS~uvEmQIhd9QJ8f$0KNSPP;B%P?*nt{X8!rxO0b;q`;+n)J3ZRN|lES3DE zM&c*eSEPIlE}5?T%#fU~YIFKa7*Rr-rU)e>p1V~7bhjtQdaTZ zrQ);7aOYWNxLTu)GPmc9fa?@vyFB}sc>{Ju@ocL zp$ln8>bq{+WnRJ~WpN{x`)EmyL9yJC`m(OEggy~pj<#gWBIRBX9q~o_f1-;%G5H#Q z{G@UCy@$_8i(=8f0|yVrnSrE(_#9gx{nzLY;*nEec~QOtf7Q;vE%WcvmG%`sdE|(+ zuv8K&zFXIEZpRzf0vEx~0;Cw>fo}L|SOs5Na>JjLC}<^A+hOMk+eui}a7ym3+jP_k`_v?=3pw z%k%F}iS=!tbjKyol`<#i+dgS>zM|`v{=4$sIkByz%q*=KJ9IKmUP^rFtK=GqG}*El zn=m#mF<&~X(C>pwA}zEm?8_?!q9d&!(p?hEEK=4L5?|iQv`1Q;pV&w~ zjzr2Mr!8G~A9YlBG**J}tP=61RLQ+B(&Uzu-cOcF4$0Dv=!)ewj=?Dv71$MK&=N^) z>#(kzmlyebZ+0|~x}q5xa&LCRBI&QL3sySt|3nwZs~la@gU36M1$UV*T~woAS(f_F zSR_rT?;ouz^%Gz23X-p((vwRfZJ%ZLmEA3!p4dlHX4aK@iZ4>q9nHP|t6q>)$(BX> zxHI2mUCFlwx|uffCFyV9en`G=LpD13-3aR7F4bd+mZelAT~fr{oVskeE#23hx@@^E-PozimfOYH3Dk-BU2yt77b=`5$NTgsNDCgMw(lk*j++wzOfQn{rsICa}2m70hzWlq)=sk>D3 zouzV1Yn{67k(!z$?1!AJD>ZVL>M3Wbp8Uh4oNrq-O3qhmlw4-HuUn8{`>O5zC&rg(!t&T{yb6Wm)NkeC;{*+SlNbmpewZ>4Y z-ok5_9HGCbzV=-%e(A(7o;cdXMzUp*4m0_Rj`$)C3#1Y&ezIkHPN5leY+2HZUnrIQ z#Ftdb$Dm00*cTn~Me5e&8cAC5jSbvGY*tWTiIr4a7^zUPzh$CSY_R2G9g*_v4k7U+ zb@JQ~k-GCu)|DLGx-6Bn;!D2CH4-VemFS2s(*I1|U-iD+Pr`3snLDm4`G{}Y499Wk z{LOlCQW}(EQT#=glcaL*oqTkQ?vhB`XZgIgk0Z3kpHgZb>4lEBhOsp8x6cbVCia4i zpqWPcr>vNw~`XyQxTdXVjh+jCaBv$Bc%Hpj>2J@^g_eb+%;NKrB2?^CzKibSi>1jml2oiKB)**Mb~2VFR{X`x`zn~b zB|75&+H%|y;$Penwc>vjwkYGuz-29Qvueq1|` zqqs)M8gpK*F@%f23LLiN8uQKIX4MqqU$!aJoNdZCZ;cwF);!9XM;TNr8m2XB&A`vV58;!8b}LGXzlc&OXtm}Mis8eNZ_>pr zp^B-_q^DxUhwv4pp%5ITtw@EOKnOt}c`M4hCEuED$Qc(ks3!UsHHA%KBmBm=DXvGj zUNuCGM%oxP<{Pq&nWjtw;t{JFV*FG17dM3UQGL`HB81e?i|b&cE^1H<^7YvU$Qr`N zxGn@o_3?t3|E~|Bryxa6@Kt@LF#{{AJ|f*FRhNSgSD$HCbx})YLkyRx&(vib^L4rU zTtjVLzCK@916N&Ni6 ztdCN0U996em4=^=>O;gK&j!TPSVTT~xUebq;>HTUyeWtAS>shV&Tg9BJgsS3OV}K? zM$J)uMC}1T2S0`%!_UK4Em3_2E`-a%MQ}N|7%oo^=~RnC8ih0pX%y1H7F;sR+dz@ zs*()+vep{oDqEwHOmkS8X@*{N*oj=W2|ir55q26wIM`_{FRg5X50_~wFD+}TGOn^I zEDf8Zl3a6Kl4*%bQKD3)DU*uPA8}JK zP}@`+R5gczYR(6_X4M&aAb;fD5SHc}P>$9ZbqYJ@8biob7nBc9btRW;gb$Z%2)pDO z6dcmQWgBZdSHo2_R&*g(jk;v&qtbkR*ePEh!G)d4Wyr6CUxz&FLO7&@%h#26Dz7i^ zR8v=FTzNg}NUkn64thuvBCRSRm#bG`w#Q0^T0jbWDz%0(_$7j@1y#BdSv zMHv=AXF+USegR~V=jxCiF1r9a3!uM1b;`lz7lhDPU32vzT--I&5O>Wtgs6LrHVC^R z+zs{WigLk4WTR82MRg{ZZHB#OoE5Be^(GO)=7u%Oe~jF2vCr207!98`8u`n=>wh zqm^8kf*f{Y_%S$!?Kl-R=7MZv6ohaYxTrA$R$v8I;A{$VIF*hX^C_f*qi_asA@uV| zA0s`=V_XP%n94WA!R&@G1siGDP1QEc)71?#_2`CU^fC3v;7l?Tt~|)W&8)B0s-aeA z8%l!*8b$~68jcC_^_g_skV#k9t8}&@PF2^V+{USNu0EtQ7j#ccWg5sK?}jkQ*M%fY zXW?h+QT93&U=+dS;Hpy?C26Ef#r5RkAlpzA)Zi>wQ(vCKc^xi@Oj(WFX473$c7YYuhTN`6*H@Wa*!qbaKui{OlI5VdCEGH?nm4|_3O4laVr>Zn?@3Dh0%FU;eD%TprFKtTQemndr7D= zB{5v6B3w;!>1=B*jrLDRtzn5$A<|^wXW>WiBltP^IruUB7=9jp9=(4swO^c_^2c z$NzaR@?!Wg{2croe3nLD7Mulz@I&|+_!*MISMX6TScE?OScUcuG;WTAxH-htFb*o= zqh4?nj)Tw(Rp`a7G44>|qqbpdIrK7cNC!Vw<>t!ck+`It|Clv~;fJ7#t@E!$mlM;GQ-; zGp$;u8&}&hJza%x)H)L`YE_+-Qk^mwCwb$JNoQ1LX{`yDVtiKOd=Zt#aCx{YuOeNm zD$;rAC|`97{iw9Uk5e@m`!!x!TKRD);^`QMj_MSv=@^5R7?0!-*ODm-G5&M#b1kJM zRq(4?V6(X*UEN#;7gImMomPtR)+yIQj`YY)FAa?i)hWW5L95~p40dsKMcQNh%F+cGnqLml(*DO}ZxGjekk?vtwVud=zeF~S)stK;UpAEUidT8x3HHR~z#D#9M( z;1u#KtZM?ln2jjL^xQjJ;T;>OXz5H&rhR6~MLofaH}tIcdx16Q7^QYsax(Wz=x z8_ZL6IHP7$kyn{gUOtGtFo=BE^uqw{8N_~G=lv*9I)|_dLLK>ezt#_R1+Fb2{Lqgf z$?6(^w2l$3@T*fwlT#SG8Mx|HEzZTYDxc09mrIv>)a~jkHz<)sR)U#z9qUb+BJ+j3YH}%;BjmZ=T+& z@#I!cuBjH!rrG)|o?)|1sxfC=Tt8h`s%b$lwI5t%kb%FZnx`YU7;P2dsV>6#z&Jc1 zM|i%A8*R1Qy(B_ zy1wFE13$>Au<$QgviQ>aLg?9pBQ`}V6P}Nx3P~8|esHPa_={)*9Zb1Hc zo3UnHullGCHt}X6gSQK%ji)V$8^by0!0v|5Z65^Reb$zie?3QbY zN_#Y_64)up;|?){J4m?FOYodKwRM}416%hkIka^)o@Hb75^T1>Z;8>1Iqzyug>QNa ze>Z!#ApE`w-$K{zu)&09c%S(y-b)kYC{5hpQTPV$dZcNz=>x5z^EBBB^bMYh&Nt!f zy%hWlOgN=sQ(b7n*O9Jz$LQYR-H7zFP562bx^bhif1`ID>^GVC8@;=b=2H{Cm*Ul2 z6TXgg<0g~-F7IBXZ#MCFd3PiIXC{0P#j80cd@tFFn@#$=y?c8 z#NX|`1Uo*?_e#Cwy@2#3Cj26W^UB7*?4e;y_ytNIm-wXoviBm=mzwyOy;opIoA7HC zuhJ&`q6gi$)TDpKdkyJ3nfO<{SCKw2;TnopDXR-RaVL}hRh+?8*xAHy5^Nf%xHIC* zRHKJFh1-}kEuN3|KHIdp*66FK%7ix!VBe&#RIhrkBfg8V^SYbs&($sjHSer_{ zL3ydJCXKJ(@P?$%F=_7e?uYIdR9*F;_YnLqP52@2KGKCk3P3) z9)|yw2|w&zi}bxr`uoUExPnQ44aG-q+cXcr|JsBf@UB7no+kaZ9_)m@O!})SK6=Zh zxf1?76TXthdAz(ye~kw_VNa9(a&HFWsczU!*}EKlN^PywmEINb(JuJA+Jl{Nd6WK4 z54Pi#jh(l=QjGb_O*@q8P6*F1;m(?lrz=djlb-AKKDbYc>}(d$cw7s*k^0Q*tfSiA zCVrOpJZ!FHZ9+F(+2r*+P*>YdC$VHH{oZ!XJDs~vGY8o z4_7jFo~HQhPd3eSsN*jt{G9hR()Tv$pCLP8ACvxmiqHOR)1dG23rzSy>g#w#lm2NB zcEa8!{pTL~KU&ws&-3Uw8(_j;cxd}@ph+{wL!ZZkO#G+bX1I<~JJ3=2srPfwwM}>~ zrHR%t;m^rVILPRJ?bUl-Uc?Ij!VxCiOvjoUX~HcYj<0wd6W%=7B2eK_*eO%Zq#KX0HmTo26W$^~`AwQi)j~F- zktV**qjS&J#!f5Qk4KwugSWZ0snoYrwrH41-$ePU;U=v7ZxKJrq(?03IL3sx4AAG{ z76@n5FCO|c+|tA^@a98zD-$m9ajuFdnDBsLD;)cSOq+*6Ir7~I;S8RN2cYjZHu1lB zTO!RCCf}_nJ{*L0&Zq&Dml|x+%%iap4>UHv_i7P8#DwR2-y^(<2?svTZP7RruB9;( z?`FbZpzl;X*o3to_$nN0!oH95Xf(-$(>~6}(RdS1`8cP>lTA3FH1SwdwiM~AaVDIm zyu!&Q?D;sahufO;zV9LZwkE!W?5Oc3TuS!C2`1c$+9#^8x;Pg`6HQo?9W}{>%lz($ z-`Ut)*6#s-4-;O_r*qGqCfvhc4*n4)yu6>$Dt^u!*BM;~-RDiXyWbDzlUXL*PcMry zykNrfsqdn#OkUl6q*pte@B$C{hPxP>Wj^{e-qnPA_&7&~dzo-A$~WHIgnRmQuHDCk zm!on)QZ+|OSX;loULReu$P4>#dq!FCAWOkwX6 z|5MoC!Svmy{wIjvL1W;nxfHK?%>oA63{6vDrl@Cb^Jel#|>(-RTrq1~0*&)?tg zJ>V(W#Mw-bMw$gCeTCi*V_umwJLn2Mue6H^j|k9CVONAR-e^4rY3fY+F?t*5)|>Fi zU3a<+S|u*8OJ7m zAAete?(0vO@V-8c(zU__PTh;2-GEnfQzeZ|9>Q!<)@9JI%-SExyBqC;D`K zyVs;S)9;Nk#3rxax(~|yz6p=eBjNvG!qdo3bg$9vt)Uw~Vd5wHNFP3F!hJOCsP|33 zU+s@ZJJY=;&V+gj(gddcr|7HE<|z}NtS9Nij#ow&({5g&bN(ogpHOUX{$Xv2t)zB1`A^Djr-*Cu|te;Lx(n(*ahCvLD|#7AG7^fUY`5ciFV zzs#S3^xvEC6=Wx_H{mhCHaM0$qfN@y6_h6W#^_$@Uj_NMCd~~0O6Y!P!dH>axXy+V zAAM`m57kH?e{cHnN`DyosMdt1>S^#hnKqxM$Jo4-T2rru_}5LE;pi_sY?bP z?@atKJsfuCoABu18stgiBvjYnD||MTvy`)cl zXZUCOD)*U5f0lnX{5d9kvVRuJw!nnXCf(RG>2qX1TE(>0*_0-lWAZ)6KNo4~I-%5A z{yEV7#e~l#o3S#w=Tdw$*QBrV&x0J-5B#0uS0Vk+CVU>*iCb+L@zLid{rPlEDO`K- zS4GEQ_>&1=Kz8C56F$kuc_#YFlx>>;bu{C)MxElH3VGh7Io%(RbML1nob%U4x!yEo zTU(!kxVKFBRDT`#Z=3KsdVP$I4@`J{jd2%$Y{ubt8e=)moAAo|G?eEVlV)Ar7w7qR zOt`OJ8RdD;gumD8BK;>O{b~N`zRKd7jlW6$WR&w36P}EIoO}MQCOj^f1fRxFtfnB% zoMmn`?J&WwKwdLVnhJjc?A{>Fr7`P;)!n>O5D zZ>8}QmkEc+>zq@UwPDzgzcuLxk^N{X6TcIcCtBKs2g2srCCi$8H_$jYgrAu78|lq; zuLbi=cynEWbJ3S3{Db~c|2%b`(H*RRK>9CC_(#1SY<_9uH$*sZ(r>6y-tYqx|Ba^e z+#D0$E*OlmeSv&4s#fE?70xyBKj`g{7sb;Z(GU8UcjlS!#DMOPzC<`w-%?)TM<)Gz zjrv8OoA7#iB791NGdabFADZ}DDnm5K#LuTP#B)vfTgq2`Zo=znjPvMSQ|50eef*(` z|DMKqm^a~XXq-o%8k^sdef60MZ>l##n$L}HMX&{QsjVvgE%c^(*7aYR__6*Z)QhfR zxVH&*fKOvJqjvDe`YL~yi9g;yg2s{wZ>G^c*)NRlx7QUrD|<{O-}7b>9*>EjXPq{C)G`q~K)6>UWGj zIXH#$qTT3If>Rlj-!=Nw;55?rj6OX$gMRyg(Pso_GFE?R^!FiclYL-q^-cIg7$5qf z(LaRWhfh^LHu^uI_Oi8eU`;W}dj~o}yQ^RbiW#yk3y;HC=?SGf~+!SmCeW%eo2Ro78 zW#|4z!H`IjmF=2nNCZ9^YV=OQ%CzAyqgRfaXsh8yHw9}$pJR45RGW#8zanb~8)E+s zqc;k`%bjL_?O+}7=Nf-w#UzZUgmr?A!L!aIY^XMw*|ndq6O01yjlYRv62?=)s9+QD zI?u5urZ(kv!;cEq1)my!Q^h3Ai-dK9O~JD+A#9>HB{TfG!Fu2)8GkdyB+QY7^@7d7 z-)i)xYEy1A{CdIq;3pe@bHyagi-h%q&B3!CB5bBMt4&s1THg(V(cpDn7uiBF3G*mnbg%_@)@p=AZOYAtA04a#UgtBBRTY!y+^oB2 ztAfAL=q=Qy++_Gw6)!g$eQxOKGl}($VZm_tCmVi^U>NC{Mh_3R=ls3S=b9@!fl$7@Y=_@Zoc#Ck2xk6TUEda&Q*@d};JrdVcx4jot;Hzq{&QYyaWe z&i-VhhXwebphMU}k41jH(Q5|yDN_yeb;y{Pykm9$cgUERzi0Hf;djgP=c-^<33&lTgFjs7Ii_Sn@hp9R!4+0E!r z)n>kj(eH)thu^OAyp{ESxKAXd&y3zDVs0;f##poztE_#al^*%Q_-}=8qxX!_OGR&m zpY&hc#*nwe_rh-n=Enax&^G2;o$yJ(aZ7eGdanAD?_%_)>W|;m{G6*8zrE2P1|Olj zgJC`n7@LzFjs8e&<~tkxexT#`Rz`mqFb^c`K@dJr-F&+`9$mkK+5A8;ek-Hj4Rju0 z-AQ;qV17v0vmm^uHuJGHJK=}nz?WXIy1XC$$?^KH(SL>?g*S}-$>?_ioo8705Z(=# ze-f^92<>V=A5*u9eZRGp+pZYDnbB_rZ==h4i11GE7P_pN2yd&+oNFz@8^N1kMjQQB z@CF#>Z^E0Zn=^kC-d0_|x!HVEF@ChsuLn9m=)9tKUPqU?gm9PI%$ZXOcPb_ijh+*{ z2u9a}iUIF8G&^&{55i04zG(IRBxGG&eA(zP!ntAhYp)soQTTEA!d`QX{y1c9lDuT} z*1?&vWg=dW-OSur>B|O(61o@B(tyNrV@IIh^mT-3c!SFL52m`j7B( z@CxVJD5GBqUd3nD9E6j@Q&>-~Yh|4oo(yla(WitHna8&=dVHZsv%<5%vkyg>6i$ZTqK-$`Z)=$I!b#ZC{TGq5!trb#&$<`zVF|;}ag>!TY2)g%?iu7i8|Hb%_}`3v#yt;yal^l$Hj^a`|BQPY z|G7s($Q6_6{ST3+^?9{?py8iao5|vaf7-Qy*LzMP4=EX@0NC8KA$2f;TQ{voxQEN1u_%J*N^G1ExDGJ2Yu0e(@#Kj^TNG#Y-IyASy% zhMBGy|Ao=_x#{2+G5idNon%qN-{vfH&cZVJ6ZblCX7GiAK&*&c9HP-1pdSGMk^f&#*Jf`1?oH&-%ud)bvvqA3DVNpDHF<+33&R7jEE7Lyi8-X`M!y zo&BQy>;0-IUpQ@7T@Nu=x_`M!KV2uWCUGTq>oOyZ{$6!+=5NAJj((KudQN*3zWEJ| zE<5cnTN-^pM1S-fL3{b#aZlB6Z2UhQ_e+yajQ&&ai`l(49_kGG!D}{tzo0+k*q%oJ z<_^G5wIk9$7(lwK(E|heZ(cNdfa3kGRyR}g#u&ez zjX7&YtPSm+9kW%0Z+4$fG2GX)`*b3II&}Rg!>;i*}>z~cZkhFk1574XY|9tBj_$~m`8($(OtplN7QB>8$C0a1!gIu9}Z@MS;pvD zs+%uc$D`|)H=DB*6W8D$ zzlx}S`fH7TGI)x0#R&7whbi_sCkbh|Ef~%L!fL_l_1g=?LG5&;LBKBFk5RMC4NMAR) zB{-gIlQ)b$Avlri4%Tyo6N6*1|F+RPNz=!_1#&f@iU_s?j4A<4>vEp)Sd(hF@K6=4TkainfWg8fHwe6_~4x z|6GuRS>5bB5j+WRxY17qPlFk0^wYsJ__>PF&j!!2ep}7xJa~fkT*K()Wd)Jq(&{qQ zK@s=kjJ`{j=d%7wqZg4SnVc6hdP(7pVqbfIcd#rAjf}9YEQg(?jJ{j+7YAk)F(-H&5L(sv_@gOo%Qo7oq_z{Z2o*vtnQzZl`0 zVZN5T>{07B!z`j@`I$y9k3`}xjcyct&lfh`fwDMDE%lEPKn8*zZkT?e^8UtOL~SMm zjK8>+>lZct!O>7`66JU~Bw7vrNa)x#%c1nudknLh>`YmE8odj9aFXn0^v<#i_`Quj zEE+;eoh6Z#MeR`^!caLll5D7zI|K>4+>!E!C^n(33Ck!yr(FnBLXL$r+xd7=NZZP; zMh~V%nfHxe8Eu};FnXxgH|BT~25OtgaH9*-00tF8Buo#v6$_VcmDqFvt!Ze!6=X*+ zyBdBcBwWuLZQl{`_n4uD!#lv-S)+w9FS*O;MM51%?=^ZyfzI!!^LN6|-A3=E_T?TM zyA}@7_4gXheQb`q6{Vixv-S+GaAgPkuXG>b(RlTV&{vOR-pA;E+8=zI(Fa9`N40*w zh8!MEqfNBWZ{qGnTS|`_W}5z_MXkhVR0E$mo02W@(n`PLunv`LNOV3O;0yY3*cPSr0$gF#Z zXDg$R4!M?*t?VGJrx@NWSKakx19aCk%(~>beldCjwV8~m)9__Y!;cnh`?ZX}zKjOH zvC$i>qXpafCPr_pc9JcOUfteuU&ZJ(WHT^Y9yMgWi#cZyLZFbv?zn1Fe_)1tEADLh3d}zO_;hSV_c$|BLwN*FQ`fH8wE1?e&)>hiD zX83hPe|>@S2%}Ut*SzkKtplEOl`u+azq;W!)_Nh;_FPBno9u4%MrtSD!{{TT_odbc zu9o-ZcaCX)h0C`54lvi4N^&Q$#Q49r9e1bq6_cZk-pYR6FEPwIvK{53L)cC@wn?+m z8>>J0?naNLcS{KzVQbk2JpF)B3b_6i)_;U;D4A<*CFOBlzsV3Q>*wGX<`?F5!t9^} z{sf~tf}fc?xK1Yg60nv@rWw6x$a*ii&*)Ns&)ME~-u)~12|HSz-nsr24C?^GufcEF zWUWB>P3tSH6$n46eXo5~q(kvCv5v=1ew^9-S^Y^`j2#3s2*dxW7_WN`ivJ4?dk2KSg89(w7ZBzLe^QpNb-1&pdvvmw(Z2_Opv!uN z(5d@%!X5p_Z!_9{*Ijo>KJT#)>4G|iWl}W2!Cq1$r^e*c_-Jjf7mW-C-+GLI=#MbAeakJmdycOE(d--Z{x&|{@5EQh6=|1f?ztbqB`=t|hlzV}~7FBT0X zUD)iu7QP;SJ?Kf}zaDmS|M54YJHsQn#!;IhOGK}s+i3Xl(PGgxKQ9D*zYL5PXAED& z_=`tN;OC-7cZWUUU)Rq!-8aKG!f&R2YV;f7lF_8Y7BkG!(VO_Zq|vX3uYq~e=GNE1 zFFWC>y6)@j$v<7!eG@-FHO$qnD_C(g_K65xL1Xl4VSw3bjK)W&n{Vt+yQ89ceesEK zmAl$aKkZc;TYAH4IJ(?r{4l!8rSJ3_eRLE?zO4tEmzly|j!UQUtD!`der2O2a-ou7@1+G}vJh!Mqi@%BoS$y=LUJs7=?@uQ4vvXx zK8qX`mbos_Yiw56?n?GpUNV1<49ADx?l#i+S31t8Y;U744e=%8eg@&Puoe8iMvo5} z*FD$Ugz;d$dvBy2>!Yy4Gu1|ygQLP_*I3o)Bg4zVv)4wrJiG#${Sm?y_#>V@2&2Ks z{)WFioIro(T8J<)0-qG2TdCEZOafZ3Mctk9CT;bhLZEJE-1yY!bC=;kwwe}}EvA2j|jIUf87qfdwqVJsR6oyjm;=f=h#E-GKy=;Nbd_%;GN z$HP65c7D(Ji=iQ<73+BFm8@j+(yE&eF?xjB^edYW7l*W`>|w|2l2FIyJ&hhjt1#~v zeY%_h=5*8jubf0#c1g$C^Iyv9qg9k&S(>y9pLV&9)` z^|}oW*6K#zs{ZHq8UA#&liY9gm+~*tAC3Nxdf&at!^W;C+>^1sdQX-|! zgn6o){9*W#d=LIlCPqwJ8FB|=td`?Q83Ev93Nr&M-m+!#S z4+!6>uCEyVxqLxNoeAHmZt|<)zfiw&`VisYs_VOr{z8w7win^ws+;^~_%GGRob@Z= zKdS3{j6Nk=i2l=1VE;}|jTWV^_Jih(jRtUi+8>&|3P^>^B%@Vf7*JWAqZ?8PKx~e|n_* zb854QKa`vFGt8c{7cTCrCgqH1PwJ)k#0^mYctN!>whFMDgNHr(hV!s(PX!suUQan@#S zc8rz^cc*ool*pK0`x%1<6KdWn!e=^wK}VW|*1^0?7^%enNQ{mkdR z&^Z^2|c$)d#PtTE3!Rpd4^5}-vhJB;{@FSxKMEz*bg3(b_pq;Dc ze?t^$YWzafhc3IAXJ1L9NnmEKN?%r;Q#IqMJW!Z96!`=j1t~&x`ujeOp8N>o{QJkM@r1 z=?^zsJ5LpkL+KWyua~LNcNyJR>t%kjHc&go$oxM=+uX*JHDn(wNw&Y?Z;%^lzT1qx zS#F{oZa4ZCp`82drmNI4t(_(Zrcx~N|FMcvsl9z69YjMuVCM;Kj{qoA=xm?%a5AEP85(8e)- z6D||#>aQ@msC<8n`F3%HjqEV^2f8El7e75^5RO(GMeGu$$VJ${*yv*fAB)T@giE4} zIqs^vuUssbP}Zf!zd&fqY>LqrqAfZ4go{9-W%MNiHo45`OYu&Mmm7V6`k&DjgeejI z&f4u!Ih@jJWpR&#oRnx^!clS-JA(6P%=o92p+KuC6{1dQGn-We`eAa4pKUDC& zbg1z!jYtj8{;Jw39&eb#w5$w$!r_XKPcZ&j5qz6N_m!*UYTAu+iEsru$vMXeS4)*W zmJ36rtAV!t6dO0LmTSRtJ`=7L=GEjTqpwrETu{ejGr!RAmt$2j>=Igqb}FGyxQ3j> zoZEyeRM+c%x|VefHg!Lp=Rov0maa6Pk5SzWyM$IfjxjjGI>iZu2L|)guRnOXjaKB#Ll^!?xLG>ql+x&b${mI@n{!DoT zwfBvF8x4u)8r>SS2p@>)y>YKzC6h$&rtFGy*w(9nN%^4iPrl$C84guMsD=0A?5l<&4=fdm%n8E*9?oVgj`+@ z#XoH2z8t=W{l|^Y6_dPV=Z*iIpzGf<{A*e-KilkF z9zB9wkM(%0fHgb0jEII($5jie{BoG{|KWOD(GK#6(XWK~CXbn&q0unHm?n@V@^NZ=sUt|I9~Ki!gb-*_(^{y+z{RYt?PdMC5juM^*VvIao7rd zkonoF`25hi?v>a)qK?PDKfy3Jgg3%J%J{dd&7A!L!j0kW*x@>aaEIFWrx|{byM}XQ zJ?(CCZ8V5w%9GG-vUao%*iEeN>qOTc1?D#&W*C@%x`ixch( z(e>vUeRs(HitPMae~6}WEOdPw%QWRDlMQo!_yGJ1jD8@T4xcp;VMfRvf6ly1m>%lA zJLW~gi|QvwL_5m#@I~s&nu9P04d!2?XQ&;2iIw}KoJ<{UYm=RwA87~O+i8`DLas%; zj^p&QkZX>FbCNJKe2}sjD+v#V4`GwBj4+Ef3T=J(zYV@Y?X7I-t|2DB1G zQk3_qzFzNf z__wUA1Hh3{gM*8+D(tFK-*YveqSeCsc<X=w{lxU zA8z#4ZX57N7`=_#(e1p+1fzF!Te+Fx#5%o=+vVvAR_-=#Tkt0ue_Pd+6YKm#ut^z& zL)@Wmxt|yp2wS=_@U@=wG`Ex6`K;rN-ioqjO`d4FJAv7y`#7V=P%ghUVVDElfzTHl zU3B!pSld+OFo*96V-4Y8m(jPWKjCn91Z~LuFv1b;NHBUYmM1#YhvbC1{e$6Y`|^t) zT2_&JZ-fmTec$hH^k}ys_&to?&~1!wdmFtmKFpdku8!Z>%^Wk%Y#!u_@Gdca79E7H z`Qz4f8_|Y)8D?W_?tIqXMsJ9OanJCH+k*6XqqlGgJ{)hDeUzV{SI6uNo_<5v*X>6i z;J6aDaC$BtYV=OvXO3y9^LN6}7PGUr!{2<8@yEG++<`yWN{_X%U7a2X?9R;89i*S@Xnz`~iqYrcwNpCcI zUAG>XU5#E(ZTj7eUf*p(8}4KDCT?B&567Oc37B1;-p9(F=#F!*4!g z`e-@bjmOSC#&2?Klj0L$Z9R7W0MorQIvbv~p*veK`2%&#I;6W8y^b3NzuD+fZd3a0 zenxK!e&!hJY&JKgkL_}BTK4-$DgJOy1n-dx={#+%}8h8g8fBE8+{libPfuaECA`eZka`C4^( z)=T|Q4m2N5R3Ch1nB!av>CHwT?-*l}Ta7-=-5b@~kkL3~e>b5|5S|Nj#{PSa&co;N zjWP(&hc7Tk+-LL)A$zpR{YF0)67`tmP(ddvxiegzepC=+Z}xPAKarv$L%miw{Q{f2`XMJM=BWc5VlbFY_E> z2j+rVbB;B7Tlh1_9BaCpVSi?Lw9z}DyYpGc7`+{3NutM(wN`|l&71qmv2FtVsm7n6 z^Gke#(f38GQWwhRxy4o8&b&KwvhnYa7<&@!$FbYft>(^Nmh+adnfjTZWMw@Nac(8_ zE&9@~S}tdYVzzUfXZ{SMn;pl>Fzf?6#{OK#4xSEmTrYaY4#Likb0X)M5oSbtpsV~` z_HZ0?^FhxVJy+<{gy|92c82kCcX$uS-P^IgC%l(qof>^_$hEIsPjPR~EsV{TO}Ei4 zM%xZIdNH>UZ9Br~g&p?<66QI=Q(+_Zy4~p2!0`KrhFJ*RnPWy+-3KV&>$s`*=}V08 zni=5ev(}zETV0C}Pa0-csP}5Ph9^7{a&IR`MtC%Qn0|hp(GQ2*_e;3uBs{NsFUiZI z%1?;i54@_5d7kRBUqhIsy7~3iw-5-(}AIOj%}monP9ip-j`w9#$ROrBF(g0gl1B5s2-ma=ktggqqlho38#wmOCa z99FX>4b#aUCGR_!oh~WkgSL@C1)RTwj1F8U*Tc&g-3fozeY#z zs#g+!qRFpXO1B>sLy`&dRg?ZWG&<0 z60M70dW|+k){WMqO*XS@tM&By%dXM*eWB=L_s!hZ>epx^!Rubx6j?8V&NnyyNZmuT zYd5Y#)s9`eO`+UAl(V9h)koJbTlF_f@4e$E`Tn$ZpLXU$p7{9GLTF5Rmd z{Yb>PSUX;z9ma0%HT4|(o5 z;+fxwXQ?BegN}GA6GKvvtt8;d+=#v(@%(-yyA$^&?ngX`ljl${he00&J%My0_!Hor zL_D4RIoO^=JfHj&(#w#yl3oS=TKv0?-hDH;yNJ_>(}``wN5IVn^Ca|B#OH`};Jrfn z8u2aSyW~G4{h0JKuwOubiS4h6-$BoV_g`c`5q}~7E2%y^GoRQ=>>`$l{IoTrLMVJ> zg7YupDA8ubMTi55OA!YXS0E0d{fCo|aG|W`0>ugQ0bPpMV{`_BtN^3D76OKh+gjG1I|Z z1G_yDqjMyegSm=$HS{&asbFs=y$#--q<4{@M*0Bxhp^Q~oJIZ-(%JByBs>%A$~#piufJzd*V;TUx|NWvkScnbP&*<#Qs4jiv)q_ zJEr;`tG@fH@5}0M*e(r!5SYQF`a82RaV7FYh{NHnN?e_|Cj2INYZKQaZb;k|zW%1^ z80f8tV~INwn<;M(WP2mqhjd@^`n!||5sSowiH8smg@0JkAV(4>fIAW0lc7&1JvS)G zWaLx8T|)j+Vk_|);#A_z#Ef_saT;+tu?_qq=sk|Dr_pLu7O|c9 zJ~|%}KP7%i{F?Z0;t#~1iN6v5B9@80#DGD*Aq=HY*ucAaA@BbMJo6Fp6j8`C36A#} z9q%PNS%J7BF($4AW=L3&q2N}5UIX4*#3tg}#C3?H&|f#~CmSG7z-~!?TjKV_orulo z?oOF|BR_!rLF5l1J%aQo(g~z3q$hznmGo@#`onAI5vLF@h1W`YHSv1lO~l)XYyMADPUpGrKFcrI}=@k02Q5HH8(mE^C6zMgm^c5flQlXwsM_aVEV_#i&cBL6t} z*~p$GJ_9c&eF^!i&~HM&3;h9@xzPGd_7~*8Bz{f&H~AlkKT^hjNqsh!>E*nDi2KuOPjacmwek;_bw{iT7c125B4d5$M_2dXL_8Jx4AL`+=O9msli{6D{sQ7f;4dZL z3VkK%HKffo6Q;J!Ogq)U8qMZP+`Cg@S5>yeHo-3b1sV74G`Nq$V9 znD6k2#PrylubCu0aiPSaj=PzzeO`fPU8Oweil!M~?g)M4OaCJ)alulPl`4T}#Oki; zsZFWd%BS5rE;L~1J7H#Ydv zMjo}4<4Ql@-xv9=P$TQdCTtbqB?bM?P+Vz{0Y3hp@{pKK#q{-k`1Ha*z9jYXihPZt zz$!1R`=UPJ313T6+gT;#orS!T(`LS!7m`9oduXcdvyfkycKKhK=8{5*x(|>=eBAwy zOlV`3X`3(V8@>FGOxsFj+I9=^o@*oDMbi37gXddnaV2gLzTehZSb50h3i4S(DQis>i6J zbx(R?WZEu^@SbjhEXK`RTP=_!J^guSp^b0O2@g(6Lte=A8=$0Ze0y|hKgioR=VW$u zirVbT`2wA$ad{a(*z5P-c=M|+(=XGFEx;=;Ez5G;^FlLyLTzQ(s_Bg_^Yo*%^9>e} zqV<<{WZG}|E=$+)eg&`JrfZd2U&@hbf6;WXtccC_s0Eve;Wd||S1d0pvCq4#?p3W{ zj-R!(SYFOACoxts^M%xG*7TO)U19x}48MI)Z9|W5!RVJ|_%2Lo{t&;iFY#>{eJ3Yr z$oZaLv9pFL&0oo{C>h_#(>BWszEJGcoG)aZao2D^!pB`6S;BGfg_!TE)-Z9`Fu#(- zn$tSaF6h-|S=UfMM2cNnUe3&t^F6*IR!BRGT_gP}KI+(FVkop zik+IO?O2A1mY}}G@T~5J$+}jM;i}i*)n*^B-{8`3weT&!V&|%UHE-YU6Mm1ZPtr#^ z6TaRz&eGNW8b0Sce+e@Fo8I_3MxXiDZ~Exl!f{{yzE2Zh_8G+YeVRJg_Um~4&X4vN zPX26uVzO+0Q|DT|OPcV-7p*&A2{M`QGv0hzLq>U(@w`7a z$Jg~d-x$m~*OYa=mR{2O^^GZyqhlCkel6UDU(WdcSS-}N&p5uDmh+XdnD3J1y&L(Beb$>as4U?;ugPkd z4gChD*FoK-U#wrk!AdjVHfrtN)NkfM17c-H`Wi+xS*edo`iF8c*u_o5+@0zrL~iA6dVg z@1bSAo5~nuqGJzVYOCv!YTY-Jt-OBsP?-NR&ZBX?<9hQ##y1eh^={|4_xf$bScFHv zi+m?hzl`WjHr6Mi-%f0l5?^a7@*PF}qM~BP^=|98K$c;%R8^aUdIyrJv`bA-Wn23(q9v59?&@DgPBG(pH=-SOjh1cr3H7AVL>;gcB^>vfEbm>PcaZg4d7kq0xYHxZC6?~!ck<-_?w=})wGWf- z;I~81^DV7GyvpJAn^x7SeQW8?eiyH@9GeSd+LugEnz0%8@%REKQeHy8(R6$E;Ym40 z9{*~7CZsAGD?8~-YkGN~tdIIz>O-D%SHGM0oRwy?uiz8qavo~Bhu;$!Jj#>4CBr9m z%Nb-)W*6BNnT{bbwrb^RTC5hUyUAYIESk+?-^9w{>wA{&?Z+Xb1oZe? zU|q&pjou!z53*Xj2yK?&pYN;R0_47{-%s`W3FAEf`JSKU_*NzF-S`8Lp@E;$53BHM z7~WE2Un}9ee=#C0uO_Qu_T&k5^~EEr`L233%+?y2FC^eK&A=4>fzr+yr2SgUQ(tNr?u7b-(DQcw@gF^5EKz-)*7il}7c*DI@ai(d z`0BxOgvXEi{8y93$UJ&HbB-*t@g?q)HK?tu!IKuN^vSa-OWbm+Atm|cU%n>~Qu6pbw%ACzPA>2Ei#lfs2S1ui0V*iV`i4C--yxW~ce0{;FOcX*!X; z+L+$1Hu>KthNtI|>YeIO^Euzy^woLPS=+#J$Z|Q|pMlJq9{>BO-U7@?yw86SuB4bE1cnK6!f_tVvhs(S~kBRpDLW%uTou^y*R@wRf0^ja( zj(0PbbG{2He1%Xk?e0A9&CepfEU;OVNpP;Dlpqc5Ra%XCR?CyR{v^53lkXS1|B*3I zD`v7x@e<@5x1{H9J@hFxI8QF}aejMn|WJHq$R_YTJcZ`m6ZzQCp!6KXr|-yu8qc ztU0(;uJ&pL5o2r46E2#oVJ_hwgx08JZLRIu9Mmupp3mD0CDFNmuAT4Hh1Sg@{)eaP zdlUBUY(o<`EsN_lO}5;^P7q(^07!cn~ODBN52l*j*iTD0^Uf33&n z|Kk;-#PV0mb;x3)6TTay`f((dUhk(OtI%(Zd@vczz{ZY!zFuF>~H__0;R zm3U@C)0}5AHNDZ_gkFs<)p_JhHdSs`n?@JITAGA;pnA9Z+mIDa=EGWAtjlh(_fovc zN_AVlF0*&U@Ir0)x__m*?0W7A#ZeyEd;~8JvnUBmK@yb0+x;CJ+ayf%9787bbxo5X zi!y&JBT5td8Zo~L)fB}%PtzPVN5V6`_xbx7Um7`HG2aYpjKCplLe}J_`HVBWG17kB z7as}elGXO1Ju39_ru8{<3G8?F!#!I zp9e*Jna7vW$I>GDMcO26=XYiv^baA+v61oBbMS#8wbeR;8U8-ABGgZ1YO{vv2&VD= zOQOf!3IFo|eXiaW(-GXJ@6yoERL^s)tS^x&<`(Ybc~=q-qJ-b*2cmh>Hb2vM(y|H1 zPh8G7c=?VVX=l_@nB^b#Ni>(UNxuM_^F7-3XdYC1)Db=6ANBgZ-oC8MYkDn(d4}nT z9uh_YN}x2eSu0QVTMGJ~k9V0|zJ?_JSkMV`A+p5;kr`zMgWLocc8 zSsvNL+@I7s2*1gIj#J;gYjmZkGkVfL<<*M%qB5f9khK)_eH`OqQ|sXQ>TnH1-FYj= zyUfbtzv<*n#~&KY2HNA zQoM+kOKee_aEgW5`mT`6vDtxMTTmj`#`jxFQj%BwYu=ON?4!K4pom6pGI6i?=Y@O_ z)7Gu{_m9lGm;DP^fv4pm6OJY2Vbi;p{2VN|qNn8v7`0iGz35+*qQrr&xsxF0SZPiy zeciv|y|!{Smj!xBU8e72cr=iU>e<*8kY@~g%fGE_Q>!~(fD?SGVcz8Z4_|FFJ^t6u z73!&&cYHf~@URKq^zu69HPQD&isl!-kZK)jm{)iUjU2ofKjB$hs|>EZNsVYp?B|@5 zzMAo0Wi5pn+&k|m&kJ+b6Z7~j>UmuqWr^m69qfO;=ik@;PsUGS1d?brd!rI5rm^xa z@8~5JxLN|Tm_1QV6ZSzr@E@`_`oFSbB|`?U@~(V@%>^>G6`KrRrCr`*|1&q6xz2Iy ziRMuf@xSu1pX>AgC(~RK|Ze5RFsr$RgggxL-{b#x_{68|yCAJs;k$mn; z|Ieo8R6ptYkmm>}-}Ex8vqz>rB|Yym24!9NW$lSA_6HN@j)e3J|0VmaO?4S_4!kDx zldi|RK9zqV!!Nyl0H5i;BIRZ5#eU3t<%RXE)+5kIe*|S_f^H zI8;oD-{_cK9vd}DlgZ|FB|SCS?D8l4f`{)BJO9L$lc)}pH%jz{|gyB^h!Ez!&`v)!~a5g@Q~$on-bJ8KeHzBJw=lh z>wb!kl<5DL=U#l3(z#wqz{l)|#Ed1H>h^KW=vb;IHb&B7q$}h+$F+s7=bC#h7dE5UjV-`bd^h`NdF1VUP(77-_RoBkC4EXh^o+a- zYa-v{S#LpsiPAzE(-I5jIO&ahTN%qW?Vk=vv)+H^INzIrtjYSN;xdrxi_VGJ-!gV0 zQ|IDd9~4Dwj)Si2Wxah;9xcJ9=($<%Lp7UOZ$lb7MP{61)WH0#VY1$;L@vQ=UtdS& zRtGUmuN2Vp9QVfByn-x`YO=q$UClmt)Xv^kZs%me`KQO9T>|ODe3*n<2jelMmB3o~%139pDyClb(c z`%2QQIZ)VHGF>W_UU+)^&=YLdF|ruXgD1UNC9C;|FDk2H7UkJL)|d1+eDAHLjlEbR zzjQh%_0^6Zk4^3X&;}5_D5x{tznjQOSznLHN&#;wC>nUxZkl{x;!=$ z&H~ZBWBx4H83vJXF+J^vNb6;n^!&t;B854`^yvy2*aOK5Vx{hPMDbeOi1+@kwde(M!F__FgIV6qq5v&zB)qpVtQ4}cv@aBGQ$jatGK4# zgc^9W*#uW@$GuIxP3hX4f4R!Am2jSGPGx!TTIp&|?Re8eM~}N<^4?Y5>dse7low-D zJrPS4Gt8~Q*n`Jd&3lXGaeCa<7t-Z!%ygUlz2P@>B~c<&JWrQ}1%c(W*%` zVQ$ydQ|^Z8Mrl&>MX_M;(=Za~`$F)rQnQ9rK@B6pI&OV8y1QATbryIzVb?x=S?;>+Em|h zDR`M;?V@$xpPcHIqS36k+M@AzGS}K#f;_skI=Go-7IITLG`_tO~s+S`JAL;vybEBksKFsw|;@BO#ZwikKVilO^0!QaxzUcPzBjYrd_YEDQoV$9m$Vr@4^K-`J*`mW5&d!fR>pg{{Zv*##5k&Y z2{toEkXZI~`={i(g`J>UdF?6#n*_V_eq+om+$POc&-^a@Mg&)(W%S(v>47OFVXI_w zx7x~>!#%Qt(qgK5MG^k1UgA`yslKb3k;`b$S~=|jGQ;fc_N8YhJtaM=)Sg|fh?dZD zgWcSI9KVFt|i3MY%$_^;3#ruoJUSH-eg0z=?x!5b! zTH4loNO~x9fG?}f1u|c5DSO82gWO@Py<5r&b!aIUyNbO<^q|l`I4$a$uZ!AM`H#$U zU7mI5;pq`+jx5%?Bg?^OUB0W-Tk0L39%ZrxdKu+pbR66NpG=tVtO2N)jxW|np+yddKi^}yu8i^IjP%UZ|0Bbu z<+?mFeb+O`PtUp~uGIYVl$Wr^Io_S(e7En`{!Us+ST~a6ax3XMD?K|UR}no93uKkV zFsHe5kmcGg=+$^7mEqIr?p*2zm%~t#Wj!U$Q};8R=Qxy*; zcQ;i$?dyu@S+^pd*lEZ)YYeJZpx$5yOfCGu+fRNhO@?fe$!YyE_B zYnWr*xh^Z0Dlum^9#mS&c}3J0(hJfH)4Wo$`U&G;O_o)Zm%1rwshm|x%+wiUPF~iW zrIm})i_yy}F?FcvspXn%lAG*0psi2Po*j57q$Q|J(o0iHW4!cL<+b2fO_p?@$L|<4 zb$4_%>Z+mK(bYstqTSV2PP#8ouSoMUIrebTswWs9o4q3xN{`7R8}IrA-xWpl�FJg6(5uelm#YI;3> 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

    <~!H=_=k(Ja-f)!yY)xYW-La6 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


    {bggA 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%0A}lV)1<0iL3`ryI8(Fr2-!a| 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

    wN01i-Dr)nt9 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

  • UeC8pAJ;Et_r$n< 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\t{6^4EN0nO~CPge8$++Gr9?ty;26h|yNDb*-+c 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

    `0|~=iXG`EC^AlMKbv-hYFt^O=i#SCHtt> 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�&9FTx*x<%w`jU$UkqndecWZ@)y_6$Kj} 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

    X@XMH*Gf$QD#wwx6~i<+Us47{5px#IIq4l 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⁣KatI{?*uYdb4NgduH+-DCeqBew0IuhD#FqjGA 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 z zK2o0s`PF_CJ_O0S%b_zet8~0Ofxq{NWZki#_3Kx`?JyH!Fb^c_eg>bzV)z2S1j)Z& zgZ3p^2|bZ(M2>S1UV-tzakE6=W+>2!De!;1akA?ggzGkzGU#o`zSz--AT^xUCO; zVK5AZWPhpB`%Zy7VJ6Imr{NX&1eQW4^tf6xvK8zMLtzvg4_d!2{qJp14q7jwH6k5) z+&|XiGJ&Kc(G`WC9U1(vjhkqi5pmG^nHORy_3-*-{wySEEA%EW3j55&}0 z7f6>Q56N2Tt;4yy=7*cB@|Jzuz0CJDD$M_3@7?1hOV7K$X*avp%zgqSK!lCF*am@f z1A;>mTiC3%JF`7A)zv_P@oFyJUH9tCOh_DI#b%kAp6=?d`@N>Sx@VH@UI{F%Y+Wtc zGBy`uV}nh&gn%7P5)wpktPn0vaAM{Aecq~`k(>nbUobv1r@HFYIq&=Yp8NZ}?>UuD zbBZgby?A5oF(%s5SFxt|UrH-`7g^~0(R5SZ{A^o}8L~Kl$M~o#7abEnbHDf}ov8cB z>;c-)$fK1%@u`n}^dm9%=DoCh_c0!DX&X+nGZmMf&k-L!1^!?MCw}sKC|j{|Z3dPf zwDkvrd8GU70MFl`Fu`KyH~&N+Tulc-~ zI3p%TJ!5ttJ+{;X$j&pAQ&Qzj7$c2kMgHK^~vp_OtC_={uz!U8huE!C{yp}eV_zf(`&I0}f&I6!`}{le zxGMX1u(#Q*Q+_AAzm4*v>_5r=GwkMXzrgN#)?dy3RqWow`)>B%&+c6P9ri!U-e>=( zJ@4K;&3Sr%4`q$rn&tn~vxojR-~9vjf0jILN_P5xbi~lZmpF!lkzOHfg`S+h; z|6z9L=;t}ymy(0Mo&BBcU(5b7`+S}2dwIXd{)pYRt>4T3W9&c0?mfQ0!2YYqyS|d$ z^{nq^_gO?a_CLh_I=eaBG5d$uzn}fb*?*e-v+RGL{hzR#xBXi7-^Bj4>@Ty=@AY-w z-ur!h_RzD>y#GEv{}}t6i}u^+G>v44>L zGwiN;{Ym!Evi}^r_wl}+{cG62j{O?@4fZYeKf>N-|HX3+F?9VGd<^;pPW6{!oFG8C z8J67s1$YGU4C%!=;$NH&5Qu;I=`|!2aLBx0-AE5Sp0Vs)S!R{bUrx|}IYCc%v1&`- zL)y#}anlnupE0iVL``)ko^DkkKIyt3ZijJ53^ywCr25trRhZxS6 z(0<~hX;6N?$d(nejt0~7faNUfni!ii7vuQB;>0H%#H40F@AGSwg+qnsUBc`5W&WO_ zi`RG#ZN_`A|HP+RD>b{`4j8l2VOp*g1C)<^oc?GhTJ?;N@jP_zqm2@^O?-+TxeYq% zCtoxQ`K7Rc|H9iY{K^Z97hbsVHLR_D7kid{o&8(cYwSntZ?Rwal~0~rV!L?hBLDe! ziPdeFF1_&j3$L^Ja_NN^;?V1#``Ouc>C)@3r?WmcnPiqHY)_t^HOcUqgBR0T7caif zS(D}ENp`~fbm8ltTh1=?f3p1K*|V0}ve_q|_0LZK#fvYb4rq_}b7F1Y=AP*wJE8SB z>zw}CSzkauqYbMZgA+xoD4kc>Lrs|LGPAMq1)?;v3@~`ucz88$CRJ z9Q=B6auR>jXO73`Cr`fk`1~^$&iMAlG+n%Se$K27+k9!^M*_Rg?EUNP-^qCO+Zk(S zV98f7&ih&RA7HH3Wh}PNbB}%}&oNr$c|?DO{Y{=R^j@AJ^yX$KY{c`3(egpF@?4N*Pdtbpk$cymgH}YI1_8H`RH>#Lbl_)WMg6!E9ozx$ocDf|}d0Kb*7D-8UH>_7Cc@m#8ZopntA20Hj}a=+)l z#Tb?Sg9!gSemmoSnEc|u%^H06AN-v>m+5O6FaJA?dw&=6ME@?&J!XIZzsHyt1z!3( z?qU6U=6l$`4+q-(-K=x^2K49~`8@&lzxaDtNB>v7O#=w6NKaMf|#@ARk&;BRhL*3&B&y2dsGskW*Cv=K5#8y-r=?k23#vkGjQuY7p#y>H+g_JIw1nWFBmn8o(a& zZ|r}pM$KTK8o&XyqdN5<_U~^{186d*)WTlc+`rM`US0OnE^)2LJ-vPA#0JzP*grL- z-Y{Y=Y|Q-JgmrK1f8i1HafdvI_z3?rWzOrE`78F1oiLyHn0mz%?s@*tsYS5=$bZ57 z+Zz`yY@8B5&v>@mo80Tb{^9piZ~6d!?T_JC{y5JNWB=3NdEvtFgWR9}A)ZbB7WJwR zQv+lF}Q{1-QK5}2mD@Y zAm2w#g#FW>p|>>>vLj*5CbE z>PJ7!eIGx_51;aH01r7B1wT zTe$GG&o5l~6<@k=;jgm4|7{D@ycS?kmTf}Fos5U0;b=4(^assBquCs^n)Oz{-tYID z?a8=NuebQyZZ-Lye;ni;r?$r9Hc@!oZga_?&r7}D&z7 zyVY)wx$NFjyPe65Gm|#wkDI+-y_KDeTMf=0G(A1jZnxN)%_gs0Gj96cj~;0HEiKYk zHv4%2fu=nfjYr_&U$0+>GOuVr6U6kJw%CX(n{^-#AaKxX^Jm^_v(;{KrpGzIK4=U8 z#EE{-XWARYi;dAe44}aQZ^aXUplRG5^t#QlokLNp0pDn+5qS7If#B*f+-tUAIa}Za zjey4O$;t|VR#w0xobfOK$=P~?&cM^F^UjL~vIq#lcxaK1+HDyK!{l{_?+5pmcxjH?jYfkLTYjHukDGNRi(r#H8;t?@IIrDa zMtaRgLKGqbENzX)b3ijhsvH}n$l4Zw5LP{Sz-3Ly_bbSS)KDqt8MoqHmovS_f9-a^ zE1qbjsYvg2s8#nbBd8)I}=vOwK}Ve-tkz=r`1nAb-$ z(6~So@`pSG6-{yRTtZnCuC4hDhQp*IN;r_oThS#sA+cVN3f6uT%WI1Vp`fBjO*u5$ znYPNWWK=ro;&6KfjiMboUC55rc`#%$T-k2lTOt>hTZ0zrlAWw%GcXTpqZvr`++Y=^ zjRH<4nz%6d%W-x9DW6QTp%oZ18MQ|p01efpCfco*!CJMhhX#hWdLWpsVkQ2z`4(iH zNUL>F2P7>7>guANUD3qIL$6S|7G0pwxDt$}MQVR<3Bk1B+n}9AQtgTQ(CEVkP1&w! z7`9+qZWFsv;ozRIM2lKtS(%VfHjBzlnjpf626PMAEkN~q5(6TsQeKTd2Q_NUPe!2# z(u>gQeek1moTn>kp*KzC6Prh2v|Zb`bm+MzS^QbQorRnCmd0bPe|cpA=3?`b?}m`@ zVH%M%FH7fmvaJ1~beI@z!P+Ds@I194bapgqcSb`96a^kF8BijL3zZGt7(7}v4T%fz zZA`b{hv`D)utrS>IGjccbwo&YwFhqZm8pV5_;4e;Fd1|Qur#a6$&^fXWx=tmF<8kNV+>w>42ZNNS0@>KtJh-HNP@N^j6o$wP>O|>_Mi>h?a(rBvK_m;9*1hWj62Z0@5 z!l_|Cgkx!fZXB+fifh4g^SmM3N#ijFvgbppKFTq;3Fek_5>X#mtwAXC_0` zu~+9h!zZeu(~vVMKN|GAL|r9`8uLw$tZZRrOeiK6cON`>(3K~la_9sB89TsR$WJ+I zXL>x|G(xqY+MdzwjA-0i1jE>{rPlIt0;D9dc)bvcs|C@@xqOJ4I=|Ed-vqfL2uzxp zCo3xsk*>fg-=_`A`>jYV87_t%T^mLN9K^ymQqXQ7se4O1VzUwajzY!K^gd_~`c3B7 z#P3SK(MnYW!fYdILA>dmt%XwvJfrq73G}mfLYcXT`Z1vDiHBiGM`{NMRw@j<0%7H@pVz20v{@WB2WrBF@ zo4#Tr_%uQ zN&&{J#DnsXa)F%pV-kWU?xh<;B^re!RG2g{gER!BGU`YM^)}gS%1%i^HFOk~KOK7g2X*8TKpBr;PKpI8gnmfDzzIvrqk#TBDhDw|%oYk@OreU~2>V|H|7#zYM zfJc2A5FH?bTv`u_rL<5s+NBxt1SGJKT_(J;Et|c>h?N{0|EZi&i*R$Q8+hUNGRPyl zO0EP1!XT9pA7bQx+k|)S6z~y9NDJo-{b916rtvZ~9)AW#T7w@rO~nxQL_3p7L_xd& zU-AV!!zrq=dVl>1t`>{$iHGaDT?A$(f**@ahszz{k>9OM&_eW8o*)Lm;24-pz{;{v zRZqDw!%Q3}LebxG9-CT%NyE5>1>z7kGg9Yh6#cA&hZ9wrMo)ebFnAAG6b%&$jnIB0 z4r;14%2^VD&b8aPfAK?pU9-T^>kHZw;mCZf)UlAFp)vV)Z^@x*8#^0B%jk3~JRKqo zIg*hBNIsGc>t#3tg7C<0YO<2YEynOcx6Sx_1VLI{GVeORLnA_+&6jOTdeE|LQ=*VY zw`;({A7c18ukd|jdV^kl40QY;rY8&a$W5#W{XTu{SwZ#o8SnOvRZb}k_RjS>}&;3ImH;e6jCAcP!PLLHi8 z?Se+ST}F?_J!7K^hYvt+$gDXZZ2+~tuGQcTj(B3|A}~yrje|B$@dHycP&pogeJKEu zNWeYnKH`~h4q%l42h9}{4)l>S5n@Abz`>0I9btaSmn4-F&=8g4%jBmRU}|?VnVJ$- zFSm6Dgeuq!qv%!+K@g%4FT#RG@(Z*=UXbANWyUdWb7euRcHodf3y40T;9^~vn-Vhl zf?{ASBk-;?W^sct+KZqqp16#c7S^x(Q}5szq@rvIQUXLtj?p*n*7Qu7qvMd{hh9&O zHC+q0*R6MZ(2a#+3B2KLk{+o99g>B?2b>lIg^2*G-)tFx=8-TfJpxZCf&AG z01F9l9X`_nThQ5V_%!G;*p+h5M?D6P5>SYgb7S^!!wi_qNN5;> zDj>8c;*hBh2q(l~-py(;$XJm!4G^*U$q^#9ijx2(bn4uJDP3X#K zAorGPy#GMeR8}JbMNIw59y3B^)9>9jgf~M+Y`gj%- zbxRSMY+F6yJMtQZ-6zrS#Xu%ARN}cC6-U*>Z2kn|BwKT)ffD$rj*yn&ue3X#9 zB+}zrh`li|XyLd}7^oYd{E2w-OacpRk?nd|Eu3yuGbm025G!r*32W=_5TzU^OsFSv zrUN^CnPUX>B%2Khg^+9!y4AQ)yOk{M`XBzGr@=D2g1MP2YD@tZLYA3>#|;WfrPrfrn260NT$zvt*l2uUK=~UC z*&NxyW2>D4f|n)^Vc$psy#%&Aa6m=d&;h~HrK^SUJfS!+ocfmTShfuHdjS*I>vlSOw>lKSnF}KjTxQ={DFs%?@Z;qerUO0 zkAj9G6V#Lw&^8Wmu!*lj2)r0|XbAn~dZu~kK`YYukp??j%4a2m7IK8F1Gb}^3MKokH} zH%n-+Uw>!05#gvuO`}iHDW9PWr^Hc%fe{NY9vYUU646j>Y@BVbfu4{IPXr`ead0i- z1}%Wdn!?ITX2xc+Vwe(Hk;#K8^a@pdYdyLGr5m)14TYCcv>NYWTckc-%-3N*Mlr{M z{O26g4}t*wf($9NaRju(nY0Q)V3uDDf5V6nlY;S8pTLF^avfm+*IK9Z4ANzCm~kkT zXZ$ep!U`g)J{GNXMD6S{;Sf>jzC-C&vZP)uCoUYZAwhZ0uFjdq&$W=Y&m}YhkRx0* zPDj8?gLzd5GXG{cg6!~ts6yl_2o8Uwx=RBMGHNg+h1cLMmxpk;5XXvB*BC7>w9S*3 zp`D1>XcAJbM<7!m@mTO*otnvqguR zU6Y^4=Un@s_B&$5RB(fQm5Fg6LCCPAHlucYnFS0CC0c|5C9a0PK?Jb~nt@|X!zpM( zBjTvM)P%5dE+!A*KzIpGH^U>vGc@xK_c*5cC|1y53oSw8Cn7>dIRAiyvlBaIF0Q8% zixNN{!t)YRz6R+mhQOxVUcgb{4H)y1q&Jw~BT=*d9x+ybqO#DEa-&s}d8%O)vLIZN z$8t=dK&F!j`XH5*0l70MV1iFoA=X>8)DG}iQq9=hSgM@p zosOfYg=OVKrA?~Z9%~Ip*BGCU@0H)EaOQ;1YOt} zs~Uia?&-j!#KDmIgpz~}Wiv`hqtgi>O~z)R3BMMBA9kZdo`AQc_L(?C6Xt&AiJ;Pb zj!h+J7UcN`e_-Lzc(qj1=t2*A)EbO%t)u?IB*UbWfciTIAJC#}h8MQ1dI%x`fq-fd z%F6!dlCBmn6v=+8-WGzm64z|&`kUFiK7;zdD7V^cy- zBf_Q7p7FpORSy?7MCA@k8xu&(fFPLBEbXfxE7?YWH0rhS=hzUASbu_yP&!h@h^bsg z;L~d}hUE%N6&QCM0Yca>Hl~Uq-tZLR8aJEK?h=>G^S4A!){;1vv4-%SP&}aaBM6;-XQK}$3!HAU0VGZQyO-A0K zsboe<3EI#*1wwV72K2BTm4WogN`7>6WkGL9|MEeV^W@Pm;lWd#J5fAZ$@(XLE^miF+JtFtN18&EiO;VB!tk0rKRNqGU0%>otj)V{> zAOtYR#&m62Tn5sBv6#~W>5?Q{;>M@A@WarS>IfE3nVC>eIf6^^)EOWb#b7finf}V0 zQ~5ApanuZL_*#aHNrCZHIzpt0|Mz_KfLD8g|M&%Eqx+ye=dR2Nj2X-{N^g{yCfNbj z6yga9@v_h|QRNJdavF+>Nq{1vi+^DX@esSrgf#R;{6k7mjGqY49m#2u5M&W+RZNJ3 zJ?I{3{0gB%>G;NqEptgps@N%?@?3jJ0Q$@trdhCT27x1(&b>ydG=A_JM zm|Yn6`s0jC=UE?rZ|M@-7&SwnG!EZa7Rcuvwlmy=8;Ht*A2a9#3<24lYN5MEHPE)u z>^Y!}HsoZAagH+)6=dQJ`}-`)i})lQ2qpR>cJi71eGQRz)Ip5N_i&XytY$kFq9GAw zvFogbdCrp5v5KMqeODvWTKrFq#bcye24F1v*t`;OX>t&*Ghz>`G`Vz(LE^U$+ z$_nxNvP`|xnYry0S+NX~dZ;s$b2jsCJNx_0aG^aRA;v`-kApsqr;X(q(kOb=YT$c+SU_m)mh9zVHc>Bky9Lc%WO4}i?-h(gN9 zPg&C#8?X%^Sd_GTT4sdSZ8ifCYE2;0Di9K}19oTR_`tOuJKeqgef_0u=PdI>TpcT& zhImDN2knD}?x7inW9FSo*jQ9+K%e+llWGS~A;riD#*>SWkJ(O+kMAw<2Sgwt;z+j} z&4r^IGwcYz5bn+lI;vQ-WWI+|^A{hefze4gg_Qa@ZX#Q-U@XHC5ks7ZRBWuhQIiU{ zP1ci09^w}{jer(Y)W~z00S$@@3$?n)j@!^julQE-l`P-EdBCAE*xF;D9G{%@?g8TERvl16~x013HE#^68V%o!}P) zgoqxaYH~cBK>#8c0ir!Xy2KXDU$@|(RTpi50;Nef(IGtWe7zhBgZf}Od}pC6l)PET z6%7tRLzIQ-PLm=LqF?>M%6^Q|^_C#QN4Rx)*E zW5Nj+TlHLSeLa`U-CCcXOrHgWK$IzE2LWjw$N=-e?4v1UMAHqvF&m;s%-(^k3B4>m zFJpy-R7}VOm1*xJ+dSCc+pE=TW?9K=LnyghzrN?>KN$~zIxU7ZW1)zY8P!iS7SS3CtY%-V) zv}FWOk1$9DLrRQqFiYa2O6A`ohnlZKy+TI4yX5)b4osL?lgf%h& zVI$gPU@*C83x*g&XjPnU>RlGv;4IyaU3hN3%Wwyei;7JVkT6s^P)+%85$M9tWUop* z$pJc`+0itNAhFhr;8cbV6P{&;ne@wMT0g7HF*}5UM6&6%ifVIfql(ULpKM&eZpw-X zL&`*Z-Vr<%3D`F_u{HG9VVUqqGcY@)iPgD|8MZNcVD&+#!w1baL(Yi_0YNoOfR2vN z&H(iIxeyUC=PH6#=Rz*LQc4CFR|5#Q5Xy)Gd&dXv3kMD!3}#lBV|K{m2qeQ`z%!O8 zmGb54*2dQ6lr@LfnN!9&l*^HjI|v?}IUcIlH!77);3GcqsR-1Dlu*j&;48fu_vRaD z;O9g@cmp+!?cUPS(P;wo9MAzyENZJ>2uPvGC-LCWI65XfPLhoB80nHO#FS;OasbjT z!RT-v!$B^$wz`@tZJ={U8z8#I%BFsyT;61@Tf4vau-AKY1j*P+sk||6A0RXE2nhKR znwgDv?inM}%TeMGkBVm+0GpS?$&tn>rgK0?)5mx3D1xAx=z^s5`T>XzblrSQO|Zo= zOpRG!MuQxqUFsloKZ`@m>LWR*f_WLpYBo#7{CcrmeQ|SZIz^x&>J_ThZA&YAuiYAq zdknRhBP$k)mCeq9golx7hNO3RL`6hRyB!83nB@_p9eNH=_4s7Ey1E{YA#5ll1fV;2 zwlRkAWzJrmI|6hXe~H!bB_d~~AFPq$F+k zcw?=!+1We5k0wC$L+rNNXk}eTLc`j&@fO)9+*&ugcNTd z9w!0f72e^gahKx3E8~{%o(d^RXfh;OgvK$|pW(1nEacbL^Z9)79q)LtQkibuP1^=| zpbtpsCq!Uo3A_rXTps%AM^H6XQ&WJEGAn$7Ig}p3NMNRK+QTRa z-N(35H{5PJ0n%?9UB3X3HZmFE-U1N$v__A*63-wMZB%*j+)aiSY=}qGCuWFeE+KRh zI`AXjg9oAO>#J*PxkA2Fs#MEIANX|k?)FA?W3yWAxJ2>r^4FWDZa3SzeMBk zZsgtJ=D_1-VqteW15JlN*e&`KDwm=V0rlvq4QX-c{Tz_v!>}Q}FEu6BBZ$t?b^}j` zux%ZQn>BDwKWYjLhAdHe``sX)&*gLLXwvGfwOp}KDOZuu_FVu~%H>L_-GNMo7pNz4 z`1V`tXQ##TW+%kLATN;-CE7% zOXW%#mCN4Q-Vjf*oS|gud>EF|YP|1T^J{0N3aeFJ^hk1RH5o{*)&LEAS~-cLn7X&m zz1<}9ILZm&VbjZ}91bDL!2x)`bipwYk+z>TvjuHSy`J@0w#wHvqB^2K7MQaY;QdP3zesq5BpbSX&a zeeeCYLhdwI9EG7^JbyBV0J23A6cZ1Jp&Ga}r&pk(g#NL)sxojlb=o{ieSRsZ8WhkEB#~7gF299@5 z3@8iF1FIg6JBUm-_bI}y-M&qL$rp1Ea;3^qb$fH`uw325%QdeXQW+7!q5SRjLgkbS zK8mJz5Q`;;nP{vI0T8`oFesNP024Y;qY?hJwf|-SIzIWEItK3_I_&}I(sR$9 zu~sfk38)*>%?%uPXsq2uHU+~UM_+I9dp`;KhEl+b~-(CIlTh-sRA;wM;g+G zvhniO29>0<5BH4^y&+?70iB+*oZIfM=aOTsNUAVQP%t}aG50fOVB>j!JMKKQ{84VZU9F^5XZTh@Bh)16~-(>q&8 zh_XG!T=h(uhM>aL;mG(4D8@d7_;%QiDIQI`}P~T zV(Dlb2Qc04bUKs;BlGE<_DRuH*fLj-V{b5MC1_Ha zY~;;vWBpx!glD+7^yZt#N2lFm-0AivL!l;lLIR|e^l>O0FT`2j@tTP&OF*>EU|5CZ z+ZiB3Z)hejC@_n9Dy7`%>Di-u#maQrBvako+T7gOWN-I=-LK!<89eMhEac9L8(SoA zC>FZLG(XB_2B)L~5Vc8amsI-OC_hw^rL1tnIW&%j4cxY4p(yuQ^_lihk4{LoLqbhL zYwJ1?&>SI!ltREhODaGybY`(IfTS6r`5>#OfRfWTSy$=m2aRf}gpa#-yIeV}3`#{l z@PZetaIay#zcbw5f7mPJE1N7$BrVWv@G{hR)Hk-MeW6hEb}S$VD{6)Q zx2s=SDjz*6R5p((_YhKWO=uTIu6BRz*25lE{BFOpS-}@L+mFX_Sw;hY4Vow&>l3UL zH3zjCS%Q^xYeYmsQf{iDSrHjnNrEhr9GxB>U%ZP`$Sxa%r3YgNkVcavg!KbP`l+5k zG1CokpNPJXv%sCkL)afpNN;4W+CsgxRjme|lTD)}N~CuqBaah-@iTw-v(v{F&~V?I z%7#p0ITr~jhg_eGkYcH4hi9yyMd#Eusn?>Un1LpluZK8@vBr4F+tr*~wOmbza5a4IptX5?T;AB+rl@1Y)Q!=6 z?0C2sDd3XLcSyVu5w~AyJm67S-bu|tg=9R>$_B4xi2{{)arwdNJMg5`=WKfXB$Nr& zM3DF~#e}j3v6#YBTY`2(2Km^hYu*w@+nqZF-b$r}FuS0`!XWSiTicXa>0V;gIp!IN zS5VBLVO$Y;0!qqiQ_0PwKA+gy@9l?95zlaQx&F zfU=akbk!5Wa3%wC{R!gG0yTO(b4u^jJ8q11rJ$SRA~Nyta(Y$*3vntIlM#Sjx@2i? z+j^-Z8UzObbjern0H5d+e+{IeaumWMF+jdxaltKs4$K!&<>BJu))rnjqk1r!ffEPR ziXKy{IP+d`eD{-!xMjq^gB{w41H5?n@L!fMaaVi?;ru7Ri+pE=sTJneWsyFVm^UBb zIk|;eSwxh*>OPEREdj(rmdYABN1kIA04zQ`6nDH3#zRHlzg*2sx$0&Z;(y~HMy|~_ zYsJOQZ8>cm!Q!b493cBNF4Ap7G7tAd66yq`nPb6o9fEV3kQyS=jF3~Lqbn=qyULuw z64!XrYzS_y2W4s;IgyT54y!j3#^48$*$>D7#_oL>f&nGEPo(kO*~%2sDsLKcRJsQHk;D3y5HZV&#Lv^=giQtI^mG zRQru$@$9r#sctg?(1tpc2iJ#bv5_5RTrbC_=>P~sW@6$p$~ajEij>NPgsDU#%Sf^_ zQf0B10uNR-cM2VIN@Rf5>JVgh=#b$lp6tXi{S`S718kK6H_ch5*`c6bA}16r(y4Rb z0f2hF1Me<3lPcB#gwkzqfyD0d6RoioSN_C3cpNkcy0#J$kr1Yg>H$dnq)eie5ymB| zbqGokL2wH;C^x>C+fYYm1gmM3z!~?yN{%MS$$ka7(9gHJb_A&~j63?0fP#F1Bc3pt zMP%07-8B|*TJg(^g|lM0vPty_q5y%zJiyZ(Knd?vImD6~lP=;C*w8&9a5!z#1<3Fy zc+@KhrxgUk#FNnzFX6b>qT(!<>%eO68*xU(`$yCy$)rr>OtwuKI~@YBCFLZaMz3(o zoakhOAqWY@%uugCESE9GhX4{@rTA8%$OfQ08ih$oL;-w}D;QW_hG;l88h5k^l}}+X z8ZZY$Cj$?VH7bXQ7*sN(RNrK#i}T&jvuy^n7(3AwKPF+JUqG_v9u*P4P9pS;a!UCD zj!qMT?2wLYf`GDEDk31=9kFShB1NHCARXL@C&y3&fQBou#(hAe$cqB?x zzc732JWfo9lgLu)2~||-gaxTO{+D`CkPd(`g&zVuKonNO zgJLq0Q{%i0qe51SWp#D62%>!rk2p&`k}3Rrp}2vUBLRV$3^TXL$3D>%0Wo0CKq^$5 zP+zgpq7yc*B5@6B7lHyZ=cshR z^M#|T=WOF0>9wx9QdmbsyWQP>e|M)>DC7Z@2T<4$#9|YweoINwlwOX$RUf|;kSUPD zfkv09A{=ZE{}JkjTfj?mo^+&n4bD_-^W>Dq_$m|%rt7x#T)+rz5-IOZNRxK}4Cmmg zoepP1oIsE9DVR{lMJjrwg3D@fc74F0Z$$v9Ez8Qld1*8p8D(Ht$`tIMBQPG>C?`i7 zc#!ZOAO|DjFlB3ImX~RWV9WSk-yU0_Peqar;GH7_*L?1cTn+^bMA{N!34=mb$_GuH zWfUS#n_0H`D2}|jh+``jy7zaCL@k^gTb`;hPL5iW#I~H&k!Z%9>4_IH>5B%aYaC6M zpJBKnNVRE#@`SSwFRh+sx&MgyW8SbK%=7u7j!n=|RAk_>w`lPXdr(Nkmc&rhgL=H1 zUmy|c2no#0(P?+yu`{Tain(&GzXPH{3;in=-4{2uwzjw6u-pkix-35VTpy5NE5SCP zqKy*B-F_r{q-n;PSbE4Dfr}(@(Ru;c8i10U@PZ_v@F)rh#_7Cf^ieERN*WGwK}`VS z41tmRqZx!Y`)j6wO+d})#5D?Uz>C5D44L`1Lg&`CZ( zf(ELg%3%nMV==&EB`XKD3Zf?}#*o35y#0euAs_@kpOQ4cQnWsyAQA(}O7{rRi2Sk( z;eZwy@n6&gp@by8hJ28i=?^-$m|N@Z;1%)|$#YJsmlg>_TN2e`otJ)6)uq=+P7zV~ zZX%z4l;bYBw0D-*yIPdHecS?F41h$&;~Hr~VR8=Kh=msdjWe)EEJI>bc3`oX3)?*)TJ#RE_xP_rl`S%WC*4v(>fS#MUjbi zAv===fsvyq8}~zpXTIWsS{{6LLrI<%Rl#@5j0+L=KAka9P zVLZe^u*5>5=#BbI4?sMYmK!IORXdDc%8AEDX1pDS#gcH&H+kg`Z)a5>Gj+*^6OfH2 z!T5+u+*cLhiBo}~p6L$s+ITudq-Qgw(2_{qVoL#RP_35Ne|N86UjO>Fe6@|ha0#1R z)efZdWB}QzA_rq*_z)!*okRfQo_Z>{&3>%8rL*Mo9OYSCz@O^{iACIjpcF$uD(@Un zM#aX_Cka84ocCrC%M5%40y&^-Q-*xP#EiNqoC&rvNjFP{+Z!x09wI|{S7Br8UH8G0 z*<7qTy4z$~S0puPx#FR5LRsB7lwoAmNT#epfM(FWMqw11h<72MtaidbWR#NAtRG>k z>KGm&t(Vh=Qu`217Z8jqgG3@^$O0yWC4ocx5+JTwUucqTLMk9~9%UpW7AxfnpDKmp zlj%3SR3&P+$+9W;v%wA2EW!+Y4#hx1sDK4mKHC>a``v3-5xe7CsG!J*=SDxp8Y5VQ zgZeqRfW;gZA~oYkPA!DdHqCgx37aq!hAIU0s;M%HT1fx~GGdttXg+iRmsjlVEmj=O zako1&3P)Raw}#$=fmRUi@TFuJgc8)laug~@Obi>cSZBv}*EqP^z4q$TRVBnIiBq^d z>Oqhm>PL9ihybb5FhPbZpRhj0I0PJ3nG-FN(xR5)7Tlf#qA$b}GO|}SjxzwIF=JCOdKCJ#df@F9y}f&~*u^v>1HgAnO?zD;z4C>Cxfg$>Vr1T9bkf!a;?bGFlam zoH@h0^muChoC-n?(Z6!})upASS9=l;9B(JVn<3_msuT)qHpJKuo**y_MP{foK;a{V z1rpUw{V}_Chm5U)D2$ZLn=(xF>qE#Wc`tbCSiP`DlqvNTMsp>HW zPQ?vZ24%#NP)p!`UDllZBT;OJqA`AIMmyz|*z3{oyLp%YCOVGI6H(q<~!K1@!xp?&G z_=sDDINYMrMq2`+d%cj}&$|v$Ir(oblR=~HBOzpTnVa+=f=vQc(d0{bO^`GjbWYb8 zcr4Y0Q=lKRUkVD~F-?GKl)~hOgJ_2dG;Q+2f3hF?OwlKNcK}gFZ192!zqK3R{LQc3 zc;gWX!VC~yqG8gb>e62zQj6_dm7}`s96^Yv*}weCl`Awgn!scE7bQAnkot^M9W^UR6(t4MglQb6HVUBxHl za_f(nVhkHPnGRh=jaKl$Xf6Q|E|E<^;y>a|Lcn+9YWbu<7-v5I5#3bQxn{_f@OvHO)qY@DzT?<>IbdormVSphY6^8#Bi5W6)tk zp>!cA+&Jkb)hp}^JgJO@AX_*%5FrrQM2|YTtoIaPMDU8uiVGcD>cYN-&L>}u!vRT! zi~j~z)&*88gJUv<P&@FC4F#dIiU6xlR z(;`=L)Q4;paYCgT2@p1qBOUMg2v zY>ej7H?7G4WJ=2aq;P88BEz|2rPnPNxLf00U%y^O^BD(qI$TUQkc(ZgJU-}`!T^M7 za0L2E3jnz{?g0pZb{BT%nW1d{C81L$hBIjQJikoip@8OR@Tv>&SoOx&AU23r<<$rs zf*)v|q>sOG1iOk69-wsT?ES%Fr9y7nFTCp;PfphEJ;+ysfzhihMczJ;Lvc6;(}sw2 zWNV6sez4PaEBLGRf5HO!K08cu|QHDh2TepgQ#WHYm@A4ugxh*>-@i5fbj(MTY zhL^K5HDkyWe_96=Yk{WprjwNC$QV!=!H6squV@u!ZF3mb%x!ZPcRXaa`<1rn{^ z&|3&srw#Mz5=E4Yd?A|w6A%bm`h@feIDhhC{KSRaMZZW~=vb{c4AB~=@;`YwNMIY3sg$m-m8;yO++WSD=T7&EOoB5z z6#Rw;?ZjLg23b?UebP9`>y4rJPr9t>=7NFUyTj zCDa}=pfKCUDtTp=FBVxrTkqibakIm+0b&T@N*8EthKEO)`@rmY#;SNcS=Y@U>Wu4! z^?bR1f2TKC=a$vI(>)5O+nY@5Lr-XlEM}EV0u(weo0vdiQ00YSg& zg!96nlEy@;V5X|-$%=L)3v(Mna6>9f5q*5vjd8Wj^HQYk?6f{_JE`@o7yF@5eU+w_hvT4^dKU_beyn9KH;iFgNv)} z@taMV=a`nzV&n&FEuqAy#2`In0wkAcgm64CD4}JfKMwi!cWNLnWeGa!BgHm%%2JI)0j~TryAOKN?VCbP2Q&fl%ELg!@SW@letBG714}lz<-ua*s z(+>d^o9MSkUroQYJ=Th5zLd1V8~=kx+GxZk+Jd4;=0bXW(1QAdB7pF4$a=7|gR~GA z#rkTfIji$XH|z@8=voDYoD6d+Q~(MAf#-O15g!0yVM9Vv!Vbkl)4UiWnhwQDKAuh* zhgN%)d^7GfC^}ER`kmf5yVn>sGAq~hC6N$NZ5B|FjzNbw@p7tTY<$6;Y`MIO$c*If z9=C_&bGvWs6$ONvI1-m|`f>bRcL*NnL{x7~2ak?Uj+4SokH-L_91f$yGdq%E(0ki&TUAR@nwwYdH(T>U;UeZ^40O=otZ1IT)8Ho=k8GGFlR95 zaiyl?2DX`!&GCRL4wdl;mhSttT7M8X<}*K348Og#iHOixf{<20+F>r|njw_V!O79! za7vnf*dHD5r? zUi~flk<7~!lM0ua1G0YTJm9}N)Cqen->(dpsgA%K#G0znH0jw1;5E&Iz(dH?5D7SRavBz8+Syp6 z#k|p6LM)lLR4$#osLwGT{)&%Wzkcod^~SZvwdb>xqBtXxA=<|UgotKqVqEn%+f+kS zxjatas&|+5-7bsSE0mq^Vr2}K%N? z86hchIWb~IEcLOFy5|DG7%58~%_JgOyoMe}p^?Y9D*<$OHE=z-Rh4DrDYMw@d((Ei!MV}7xW zo>VfsM3fY?^x8hbhyS7iSNL(O!Thh+OCcS;=^hZ33cIHTa=AO3oe_ZQb(fL^$FTsX zB-KOHX_TEfgzY>6(AiAoSa1n#NCg8P_X0q5Er(wi=0SfetKi-xcn3KK450V5X$AyY4wopeLL%&~Q3GH4uxh<-V zv?51Z-gOpwmQ+p|(c3t4g!SO(hC916KzL)7C&i(5W8ZtAFBiGHE??OqZDUnsnorZn zW`Kqcp+IDc>EJ;~Xj_vNLsl+ikY3IIfDWg@d$7%5n9ZfP=wy215%sV)*xRccmdY%< zfWadpa)TS=ppTW|Z~)r~FK6l7EDbQ*)jw~-wl zPK%sNXgDO_jzKrhOBtk1UuH549u9&gprp4bBmjeEy{ufDpj{}*cf`~W7O$p zD#wpVHXFmH0);lZqZFXaW@5oS$Z!iOiV*4)M?VUq@h(lUChZHo7~0AwyF4l(BneFj22`b<^)vs*)pnY&Mzy669c$5I~(R>I%hhHoqZAdA3K>#Y1c_If-fk8sJKyO{bBP=h^ zZHT(_(0D)ro8-$#f~)iCaSD_!1rfAj#rlkp(7pYKdnMN(csg_|95y~mx_|2DQI=+nl5fLrpq*5+tH%eiu%H2oh9&#Vs6bWfV!ciYN>3~EEAu(xFsxk)f$*43D z$~0Gd9$|8O|n0~q5WXf|C!Pr$@g2PqCY)lM9O>-t_q z){xXN^Z|140sIn_50ujqQFbWQ1_G7j)piR3s2DTcGcNG0rfzJ8as@s6 zVrE_e3P_>_X=IHI)l@muh6KO!5MQL1W8|-dh^z?^Gb|w@gcN~Q84+14n?CjtE;JE2 zYJC1f7OYv(?zEL)sg4?9)mcbGiW0`l{ab19lf3qBt$@ni-vQ7}M&TWU{Xwpx5SD)u zh6IC$&(nwRWe*O(pQpmm-p)FL;; zTROQyz?$0-DISn?3T(>Bv>E}m@!OOl+HP?sA(vBxB#cmT2G{c@A&Dh) zw#pXP7XsHOx;}=};GBSPW!MSi*6W9(GX{8%&H*{GB-%i9P%`T%v6Yb$5+b~zO_(Gb z#x~F8C~e2eqNL+`Bh7&ywxUe5ED zc^cIUDWka=qSOqKSrjQPM57%#SQ20A6@-nbA3}@Aph2Py^E`hgH&eL;NO_o-nJ{n; zuWT+kgMF%#Nn%_(z*J!pip#5Ul2LLL>%qm-E_YQqFaPjxzqb3JM%siS>)!-Km9SPT zGa7cybg8nnu~n&Tn6aD2amKmIbsWDL5F#-Ooij?%V|uQx;*qp)Wb`&Dtd&Y@rMzA) z0EJC(eTXj!QHY%B3Rk9T2+v97xIdocLE?E24}#+N=m!8*JG(yp-|e&ci-xl3qCwe5y67*KLMdOZ+I%@(;FyqnbrSQ9H0b2n)-|}Ss;%Msgab>UI#0Xs@hQV>Xe)yU=f^lp#>aFkx(KsHHQqas4?g|-{kY9H`iBBZ{Oen5_h(%Tk*^VfoKWB zi2$vT5Kwpp6fF>mhkwLvybtt;v?v8baa@d=goH*Do+dLMK6!HS;&sP1s%*Ws3m$K| z+}m$%Y;0_n3OMf~w^;O0AqDh|4RJrck8WkdJe39q3X2+nK8&`xUmxrb_IZ#I zkDn`^<#|}%=AEsL%`N387lZ=?5Kz<;0EACbmxCfbKONHv*p0dt{$Ud;Cm?J=#T-4s zhz6s_JUe1cA@Sn%>lE1>@(gyFioS9CX3io-WrL^klr5U)a_YKhX!(2y-qCLpow(T{ z!C?eWdTn(WG9ZU;$?5Mu^u@=|Jv52W@eIv7+nd{4^r)*2)M}l8Oi9BqWs~XdkKV7E-EIw(j1&bBBj2 z5qr=XEj)!P;NZ7)ZOBJBsEj!L41Y8*IfXs3$B0#})cQwH9-oYv&L0q8nM$HaVx_U! z?A_n5)%G6Vd)RF7#4b`gBvdT)K;-h4kWY&&bp|Ljj#!E@hYc{QWB|^xAGOBH$)LYi z+u7x&x}Dk%k2V9)&G(eJVPlg5Jkxyqs<@h#j3^|8Q@}B(`)u?VTB(7F53N>7{elT7 zO2HvT!UO-we4YU4(%|A_1`fm_GI0b@KiF-o=htsPJm48Ul*M?knk)DnNZ7XxJXJX^ z9O6X`5oQWWCHdOVq_QT({RiFt-u~Y1J}LFf#$rKwF;lhRghHhpR{#S7acTiw+tLf!1sF3WEnRaYv6s ziE;@>CKEbOPFWda)h9S-h8(ewJQ!adWNOSPow*kSlE=d2h^8^EkF9!I8tRYwqjoQDX6YD7 zB1dfO@87zW%O?p{OO-_cVL)gd?I{CjoqIWQxhU2%5W_j~rO2Yt2x|2nW!J|N+V)YY zHIm(4S3sNP@N%0Sty%u7Lnc1Jfe$zUNssD0Zy2Mh)@~8Q9c+b@u%@7Z)WMnm77$}J z*zUR*zHT=5kx(wTKbMez`Z$F`uS9hsjObiK{^|pjQ-DB*oftrcMOmLvp*~0lH+*%Knql^R~;?M?9vX#tWGKLU7o58&CC*+V&pute6EPV(O={I@|tIii*aGY9t z>S@FiG5JbBA!cF-Hbh#w-_V9oIlWwx5UWAy3rjoqasVQ?2z#YXhY(Va+7n5X*GxzH z&KI)rVm&>ZaV?D0zw>o;!QTFaM`$}t@{7Lc)Anj-!nA4ww(4r5AyXj7xoCb0-Z zHeE0>nW>x?hrOB<4@i3WiP*>Fm#C7iiBVSo+H06)v$TtcKis$=G8=1farRq1NJ2gd}nsK&qH2@buLU*r-Q6 z2jqexNkCC4O@{pF4oogd$9A!A*TS?02PhmWSITpPP#!>=0J}M2;&E_q&av7 zpzxe(Ae$N&TIQb^BY9gFft8O!feSp8oPL>48u26}hfd~#x~S%UBVRlyBpWIgtJTev zZ5IkWsNIavV%%Ki_|a)hho<4F50j!vx?nniF&OJKqC7`(H>f>)P{W3DJP|YiZIm}% zdvKlQNajv%4m@Z;YoRq-QNTz)ba0k=@ccX&6hea7wB}SuYBd|*perB(P=^F0hgu)>LZb@CE}#G* zK2Gz!BUJvds>({er!@xq4H5+bmGN;~JV@3G5OOLPLqH1hDInKn!&I2ZQFAON*>DEo z#OVT3tS>YLG-&Lv-@Coe5Tb1${HD5LyT)42gWm&$LLA zqoYum$;&axW5J4Vkx1}jICA2bL*^4mh(SMYdy!cOg3u!4J02f|lp@6u&pDvcgeei( zg$Xe*?{;+=`f-G$U8!$;hnL%_!K?K=5?Wmc&{k#Bz)B^V>zqmuPgs$6(93RUCQE}i zsvIvN2n0pEL)jD?#}Xj)#VRN#awtT{$cTy$8XWf7)|hYzZsEZIwkr6-g5u1=2u2{ji^p?sXPUwwb?hyHhBjpH(#N!rzJ+4tU0$a;-P> zs9ud{2s4SsbDeyC0bjT<1a2}M^Oh?U1n55PxD-hdB0#$@&M^o$|6DhH%0ofD3VC57W8lFgpG?b)7gz3 zvfFR&J{ZHT z1>Fbx2e{;WOBuiQ0*5I?ApmiWAEgkFBF|>fcNjj)6dZdb zh1OhWeikeyF){BdRehvb-{*-uwTC-{5iu`Q;U|hneYTW2OI86CiD+Qp0~$a&0LOzd zG!P_1wxhmC*C71hfCB=`gwvyYm&v*zC@w_Wojn3~$i6WPha5RiF>gWRyC`rL*>LUSAHm*99kv<+Q8FOu+d z>vVPS1g}YIIhQz{o2{U2&{6x)K6lpEStUHoj53QpS)4MKMyYE1wv;S{hT+;)lb2wsjn4wq2G*kGq~ z0#9wonQR_SN~=gnzABU;0p?)21Ytd0zxVdH-p;MhD;;F1NveSC60ir zRFW*wiRL+gK(ubT?2-=D*uYDp(Szo~-PF2mY`~**&R7{vgou390epv9oVmYx%Jj*@ z*4?ccAnK=V786o+^(i3m07uQ%8JOsFc`OR>1j6}@Vwpm@ee-tx!!T)Qyk*QPuP5d79wKf#QE@HI8N?JA;ID_Q7>QV+cOP|O2~-mwG7!| z!r7Z|zWM&Rcb*1;zz-Cf#?b;8^e(<(4=?9YEq))BRkH>IenoU2XnbKD3gLQ+Vor*O z=23<<=9(%Flu%*wfZ8@rp{i3@1P?R!EG0(k#dBW9@&|69M2Xuk9@y#}5rZrUh$KV~ zFZj`}y*+zor52w?At5W9G^T*`A9A1i5AvoBUJ{+IyC9&WQ~Y?SAqvyq->>yRqz{kO zM;imNJOCuPychv09SsyfXX`A$>a@(ZHy4>wF;lR}D3f6+Y@JKUhlT_mnxr*G+vd!w z3jB@1r=A9?`QcL1E7sgHZJs2QA=QTQxJ@!yl*QBuk7paYP0Ljf3IxPVW87s}=V>df z^FMHsk2u740^&pfsHS=sB^B5EL969+4+*g(h6PLhp4~>3xeox<(KvtHmh6W&GeF!M z6r2qSfuYHWJmt*dj8PwKHMPK9#0m|0A~tf+3^!0x8Ucqq_D&D0K>UG*h-tBYIP%TG z(q&u%Ka)<}ViN11*WIrlfH!K}z(&aysvOHQeWY8ZahJ-w z2)$Vo9|F>B_JOP<0HIx>B5QA9)^ z_$Hi_ye5s&()&wGue_V*^)Nli0ymZbDI_dv9*3mdO-aT7phc^;`DUxOdd5B2Oi}Y7 z{YK^0$~7KsnJ+3ICX(nDEjiESOy%g7sRdbq1J$TSq_NV2f@fUeuN}Cc!KHNG{?9EG ztS%lIQN7i0#!`Uu)C7biZGr-fL3HWLl~-PV`O39xgYJEPSO7%$9Dmdrl|vY!*BZG* z?j}$$6FWj|jJJEMXFNR>KtSp=Uaef!ib|L-xsez8GPfbqZQKq{CupY`7XZ3R5z=%R z!^FA6P0SiF*Wh6 z&Va>A_zP_a(QuJ$00MlZH9$qCiksvag2m#h&z-1lZUCs-X;iLNn$@;2O&S^IlLe(et^4nA68D4B)ndQaSSw12RByNw`g1m`j<& zL*(Rc16|9=l_{{0C*1LZjBw-ebdFh32RwuRH-h6bH$m+3bg0W$UU|g_;Voaknz=T{ zdDESf#yE1_FI{7)TsVD+rZjY&<} zAfHy0kZ+qnP=z04AU6#!hZT|-C|K1N8C#_k4|3|Rt*@P(@#9Y1 z6QaxB2RkacQ>Jx z*7*Vuj?h+JXHKD6fpU+)H-6LQ%a_05rI(S?ZsR(DmaZ=IJF|DNgbiFR3a8z zsK)r^tJki-o2RSc+&Y` z*K@!|b3~R%TgNYFcSpX`7YVUv06R@Ao^; zz3rl-W9vTt$rt!q-)VB;jKVvTkYs(P z0-v&I(KTmGoHU70TMZFm+qpQEyJP1r;Z1)G;HV(4!)KVB8p3mVbd(g!G72NkXD_Ow zh@t(3gi{+CGr4m$6NEG?67Meb;PIYt?qKG0bjdjp$_!t$Xy|at%?U$?p`%JP#DYMh zlR(jftw5aJYR3%Fzu|>cmLu?%>T9Mjkst{~S2i7tbR{5HRdPuMm%uT(K$IbrURj-L zXmW^byD~B_lSjK#4lkzc#?xW-oP?$a3gW_iS5OpG95n+aqVo7bcx*xhpHMiWk}`yN zqek-}Ngl7plYZ4uatdlY)!!H$X9|JLTCRBYWL`*oBR56j-e?Rt9!X>QtR>uP?Vgq( z^1*^oC_@C#NQC96ddrUj#NT9YtP);Q`Ed}j771amxG|h_g~vcno(x36!*8P_9yWsN zs^%O$aL}N^gNF>!7mN%IX>vFepBKlB;(|a79_#ig5n*s4QkVjlJ@a%XPu|4MC{(B} zGiJ`5arVbNKh9$`CLcCOgj^^?L<*Edy)@#GQFM=?6TP?-X<1MKIY0qMZml|^90z>u z;?sSkcv~TS#wrg=;1_DE%HxhcehB8)rXlQa6mEMNJ^^18&8!q{>)r5pwD+SvBAH?O zVcpF1yNTCEFr%Hc#{-??4y3A@(F9=BiR>I&O3`+BIrMEpHRMPy^}C)RrX1+uu*Yl% zEu8-tor4&Z7gl5RitjvEhetI~S^1O%Tvbig;N$cL!v_u1%b_72X*Z@Ax4rCKBOk&S zFQ`*s!GLr+7jY6h5I&YKtyse$s7$uUi6cWz&-m|5X(Am(}-w+x|K3?g7SO>}xT|j)-%K;>r2-BPfX016~+)`S?MF(%ThB8R9_`BSyxb zkqD%CBNgbJ88fFl+e4$sM)0C%M1|n)(Y@(cAaq?-wS2}5s{q42t&Il);e~uMBP}vL z0yVG&AlJ~ccs31YW++E;Z8ac}M#qL|vnCJ0cIIokhfPz?6b{bISeJ4`96F+o@nI^y z*QB~~;L$uVW7vqnSloyaRS_wS994`rV&rc|5-4d%gXdakhqNJ*r^jqaDuuzchAX$w z`rHKcL+q>}@Zb(cvy3f0B6r*2Fv3}fLbNR1sHsH)4G`t2AFg3Vj=6g|+<`J9G*?7P zp&E=qyXFycw8X1u(a|_r91oTqUNt}J)#A}KSbZlUo#lv;1X38R$Q;8jgcIiqmRoZ_ ztk6HIjzYB5;NB_~by1F@BrUZb^nrOL6fiDrUMLB{jFp+4$(A9`hYTj0gmc1ZRV#t{ zhsarEMD?RMESMTmtJ#J?de)lik;TW47>-*gXb6Gya{3btAgfs2Qv*?^=u=TauCSM` zoD`x4{Sc2cB4s23eIXMrDEetx3xUvEiFumeZ)M@P695Tfyp)UxdqYu7a>Ey}wurtS zvQHs}bNg(67IVjX2%FOcVyPZhvuGs3Ek&Sk4#jvmc4gWjmm$lm;RhO+EfI5f=%HGm|qF%o*gN&|z;}LL=ftykIPinCjllIlHcv2X%0K znv!KUr{D{nREW851JAC~_-AZr zi3y2NjfI^t2(%SaYA7Zo5sWg0?bXf+-cY`WQ7fuamqj9m2G2H-r| zg`UcI!e%_S$Ow;|G=8A%jWOU!6J{D}RQ1D5;v8lM%TbokK0i)n(R!lhM?rDOte z2FglW53R&mmCJn5CHRGNV$Sr(I2VQx%U(`$R$VGxs#r0U@O;FAlo)l6xnT(k6g}%U zi_A*8W#b78z7O+{8UFfxfJaMDL(bW4zn z{jrt&j`6NsAi_i&%oY)3F^BAzv$2Zl880lr)abex!!Q!^@Z>o(=NJ;*Jq(c03yzB; zv$z~8;%wA-$VGxwQPsd9!~8dA?wt92ELc3`ic99P4>xYjo{NjtZCe*mjQB?ZB_a9* z5~^#X_|VUnoeTZ&eofP29YInoQtXz>Si3UBHk6GpJXS-g6bQ$Hr4tK;-7TP}#_6$G zq7FtYOYRTJ7~is9rSj42sO~&+NmDMW?B0JP*%R&8+W^%$?%Y79P78i~a*MaLc|DJJtngsz-4<5w^@9S@C8Ydy|RZAYBoZ(hNrAdnZu zacXGMgO$o9zJW8Mmncf6-R6YmruR@s5&aP|F-eqaIzqTGJ8D-Rl8-^?>tex)&Yg4f z-P|C;-P;Jnc*-pLO?9~3osvBhnc-CmCZgc&^h05HN=BZMZhai>9}SXRvpC@-Msoq3 zc`OBi^s7;qS}HB@(b-0t?N*{;X~K<9e~2z5-j)Eojd+R8$mEC?0{Ns~YDrS&$fJ;;F?oB}-A3{Rzt9>51+& zI`U5KfD`@MN=2cDxSgSTVLZ}`{;JB^bUiZyow~7fa8Ap^^vPMpBxm;LU0WP zLfOh?atYBiG=3!G6ibUXj0-Jw5Qvh7@>K~7g#%6LL|M3?r;6j(1=*>!IRI+iL^Z;HPJ%9q z&8bWvd#-qxc=#K0k+5EI_~KfWA<|}@Vdce`oN?Qg^nzsS!U#!Nl^q4i^Xr#W6+p0n zbHMxAb*Jp^$-edsn-ah@$VIneO595|pBMHn#%|CKwG#7@cybomZ*ZD5@Ix|Ag0gHD z87r_q!bD-Th+_V9rkD(D9D`OC&Y{I*(Kh1DM{nc|L#NK}r_<2Jy-8#o%wo#`7CNf( zjl`&coabz$ip$n4n5R7EtV%^^o|?9**HI4kSGzS!D=)ot&ir{;&C+7}vMQO#Q8|5u~U>*`FH#0KnpTh}TQzMX} zjRB7Pd&a5-HC8fcc2QLnMgy`+!XSDdP$cO=sxT4@bS$O;{}TeuMng68h7>OyIpny( zHJAVoZm(Q0mkS&Em`wk3VU=TOYF>I)?AJtV&s>nMPqGY`K>bZ5%*p+Uzicg-+d}eA4f)T5d_bin>OoEdxUB)ZT7!xv>a@wXHRwc#cgNnp2(JQNRNjyU-QBK1f z>H554rDbSY^&om0dFuupQhM9UIkYM;IRhL8!c5FkO-;vTwq*@i;tmADX(P4Sgp0Ev z>q*TnuY!5!WylUMMZx6k%p_f$7Tqcl(Fns?HkY)hR4{8qk2+Bp>R$T zCCEGSF=hnwl^i^g(MA>F5NF~FD5;>KWmrS>l6eWUlgZJqrHD(pB|6$Mw1+SlO$;IU zW^>IlL@mL#yhBG5w>yp@8)`zm9C?Dhu$N+)o-Epq+`?z;ILUFU?8s|JGO!^REy0Ed ztyA=7M=2GY*XO!O!7=fo0!|T8dhD$Ya24HL4Xsp0R!^v$m6_a#5n*ypkz8VFQy}-n zfQ>+vE6yFQKQ2J-h`zN%^PnpRd5|a*!`z9(Q>36knzUI$+R1dfaxf&48Eyfy&;@Zu zl26g%nW)$yS>?+eNwq-|0fc3M!=iMfOC2oFH?MM>m=OpDzZqnuVSrO$(2E)KUeWuw zxU4N!}=A(B0liuVJ6v*B(rJ>9Hu9;J?Kq%0BT#R;yol!JU zR0zbnB5@GLO|oe)+9l@D5of0fL$DNk;B46(6<5j1n^)dER6(*uc`l`0SM7M-sF7iE zjG@z&jAOP8QO&6#gv#YnO-aDCH*qPxnr1fA;IVBC@q!-fZT7^%HO>%-z4#yU(9$s8 zQKHn0h^h!(g^I%YF!EQzxJ(3EzS5RD)Fz)njL&(dRG4XtnRtdoLk6=jX3Y4*upxs7 z&8l8jHF(6x;$oZv{tu%kcgaLGgrWH_DMjbb0QALd26Su#oZpw|&?;n?XGu?Mb(u5wDNX;{W1!Lo<~pHBT% zxoF5BMjQ4ies3|O_`|sseNL5w-@_SW%>^=%CKIQ?X>x%m+#!sANF!-iGLs&)CP&!e z=4cA*B?yFq6o$NUPjnd-s{*kg(ER9IMk1?#s4zoI1W$Mu&53F#B&{Z9h-o7vfoReC zH!@VS#})_U%Gv}PI_T1Q^q3-<0u3I4$&K=Y2&7L(Ey?6OR^6CUR;2L<|As*9S{zR| zw&LL+G=&hnV-266c91a+$~6=c@hS_voFxbWFsSq`SyJSceZF=&Xl^=qI(Mzi7#p|y z)Rv`*u%Hb-o}urNqxeV9FQX~59L`5YRIF7*3JRo|*q0JL;He%8i&Gk2MkAE37;<@8)q)z3pdOAx^id#J5Ykw@oln;I9LA`p&&1e01+5g&+xouL*aiz>*U zkPZt|E0`e{=emsGX*(|bto+79R4|p?VaxQF*~FpPPUWTZmQ*IEU?xW&R52bVJ(I*7 z2@&{WBx>&Pm2U_WVOwaQuBGT)3PW^P_SA8h3t8W`DrI3vnlePFfL1Boq@41?dPJ&f z2_Y&iLr58^rX7q+!{qJBL?y*T!L>GrKf_*X^6ZvAhiJVzB@6syvqatPk`;Zfcj~uN) z%7aTVL<|jSIMi?^kvb=QR}H?+@Bj}G(zC1m8lfVho={CllybvqZFzgh&8lcVfoK{# z!L%?v^n*ZDvNS@pOdINY4Ey@YKQ3< zfp|p&Lis)~x}q)~&dIe|d*QeY0;y<(Mqw5r1R{ypEkQuYW8XO%QL*fpS6i8vQ<{*6 z$~i^W)+MyO@NeX_9)N;HYKaV$C$*C7l+o(R`si1or=22YkE+!xf{;>QS{*%H?8NU1 zJaX7b(}yaHM@8ogMXBWC;i)M=>hOFBL@L9Dp&&$acT9|UnwEnCDHpAOe+-FCKE^_R zbtprKO44*|rqXdIi-C8T&RHa06ln9OSzN;={C|?oi;m!>F&=1alQF84p=`)V@DrPGl z&S=-$ccZvbW6|3hxl5{|3?Z%SBth>?!QxXnlnz1tPIwhQI|3i~cBAcw_9EpbhqZ;x z5~7eI4TO|XmFU&70Dz)^)nR$esL^3Wmk`;`_2Tw(vcX6Fax{^umWxO5Bsx7xB`%&j zL(v)=P>_!&x7ta`4yRx>P0fisq%{{vy_s~<&9Qof6er*l&>#)GxO2$TBOTm!s0o3z z7P>>cH06VW&wA*H^J<6m9=M70Q_B$jVC`clBWTtmkw5NpLsMo1?_AXotqFWNOB79{ zw5Fv{DGwbKR;;Rm)NzgUsYED%6tg*0r8BL;-Vi9o-s(V=DtoS_f>U5lxf4Ji5)Epo^mHEq0YL~(R;Y}H{{Dt*$TO5v}y8cjmd zgF7R|#&WuFi&bQFR6&S@g7~kCARr-=8H!|ys1%QhYY#ObPZBBX_0d!45;hgVX^CUpxj@Q5?1>SYG{Qbk>;OH&jb@58vpo4?lCf|0z&m*Mc5Yh@g+#dI zNKefC(Y8!7c|%Q08^_uK-%j9dN-63gkln@z6mz-|+r2|SMw=8w$`UnBysgqW)=G{i zmuB@#7>feg+S5hr9!O-=MqV!R8ncQ_QA`9H9g&>l$Lve_^1dIAZ0F_d^&wN}&%`M> z85-^Cn`6Ol=(kVdk3pRShpLFY54V;oEzAf(Fs-PHJQOuCSc`b3g(e>N-7QA#I11|4 zNV=&tU&ATr-dw|5r*feKk8)tw$kHl=NpUuHs_j=5L-9g-1hT+!aCO{+N0qBUYKY!B z#ISO=Dk4>Azz;Ur{A87Sh;b@56N2ONtY|IW)~7LEikt*_p_kAf$){uzreShR$Q3in z9teaa>7+-|yty5lHGFps`BK^Ad$ipNwn-r3a4XAV%o%m* z*VQx`9Mx_TDAG^Xkgv#P5<_`>@SVFf4717kaC0UNgj(hDWht%PSG4GAG|k9-K7ORp)z9zcXe@hR@E=U*2KlhexEjFI|>P%{6GwY9Z8kNSqrcr`OW*ifGawsopi2d~0^Z7s^tO0>y z<`4Y=;q;I}w_vr0Z_t(Lvsp8TP__Lx)Je21LZe!qhw@|UE~)YrVcwNYmfJq09BN&p zfPg{4q8?I*6dv}eG6wMUDolZ#o&T#aN>HuBqTbPM6?qOHpB z?7;*9W_vl#z_l#{I5Q8V{KqUH(qA2(2&Iu=+$|?nN62G`Vdf{uI3Jr^NAx5io)Tvbm&sVNL4pQ9l?VTMftf&`UzC{mtnNfYTEg51?n{`ULv?O{JNEf{$c>3Z9;Ud&VWrlJV5z|Z#Adu?kZ)S4p5ihrt zij{C%V~&|WDuMseg0C zl3v|8on&ES23gtoP&&xcVc5(kQIIZy9EzBfP@8p25epKbO0X=Ua}A&n`e>9&vD z5pH{N0&EpxrRt@zdj6>+cfeKS>a2)V63tikpcwfa0~Qn*iFJmZ?n4bb(u^Ejn^VEU zO7Hup<%bxW9BCrqYKgPZOo+At2^-Uec{u8V0M1I)@Dw3+uo3mx0^zKrQZ41NoC0Br zwE5>pzo;g|b5+%e6jn`$VUDr8Gu2J9g~Y)Xl5LlkX2@aq5Ncfu0*T}g9b%Nw zkcXX>NAYmsY0#LqGV^YV@!4sl+d73*Ap#{)eei9x;ha4UseqB-(a8^L&V=;^lfxbv zlSCc`BF)qje5Cru;sg|HHlmm`aW~=?#uzO4CNj+59FI+U2GmGU5QdJsu$>e+5?Q5s zlRS1F>g5!ezJHzRvM~sSf;co<+|>)_RpY7g2}wSxAzXs`K_C~`96BN>%gc}g5zJwA zO9)SwC=it=#=tJ#q;3Z286r+V2<^)7&NJz5G~@UgflP7ifCceZ(PFlcpLFpNmYNDC z5NWz}&GEV_49~OZwvmVZn6EH~X9Qy}W<|8O>4cfL)ZvtH1IS3r&n5<^((E*q@QY!* zg?b1L;SwlBj1!T|rc2iqFU1TM;S)$QDKYa+FloZ_I6d~P@>s&4aK#iuG{=ACvj+#? zfcQEam5PrybaI{;##>yXhBznkkS!>at^?{9ioQz0BWNiWA@a`1PP_A6zxeKOh~%e7 zYCr8NR>WsPM?P$hUQR*+L|`H1Bn4ZyocLi%^#huwHf5SkAo}E+I$$;(R1zP| zH3@kXmTTClgeDU>1dIihX>$IE`zx-RhtBMsa#}k>O)iJK2EH{VadcRl^3c*pKQa9(n%}BvGz&!@TaGhE9;#7J*QO!- zN4EGV0t8Z-^qyIYEEx(!-dd1CaVUVMc?y6cD4ABtt17n0kU)pFlN)1$aRf1ta*{w|48xsN?Vw^uifrrEc>1WJ$O86@ z3Y6!lh81jb?2#cfAwOrGS8gY+}LiA=pfu}K64~g(X@swVU zb4iL+G4zgWCgGY$Olsh9<1*u5dIIkc^6nm7su^#q&E7Z)PWT30w^b_vs;8l+-HOts zgN6_&!a2s3=5w=B+C%TsAHarQJNh3MM$0hJQ}P+)v2j6yp+ zXAEcevZaiQ->OCv*Y75A%>NjYjFcl!=(8%?OL**JrF6hSaZr*y3+Ty;S1(5ok;NTh ztgQ;O;#OUG*#ZZpD2W6WWM%Znh0iWAX(SR47Xfxy zo!dwpDG6z?=Bx>x3xq`ML31dKj)X<(BD48wBC!m7n$wo_bKx?y)eyln>Mqz5$O?|H z!J_zrG=xk~e*-Bs5e24g1G&Q_1Hm6caBsUV#^3Pj*>va;aiEJD_+26IcRDMmCRSV$8}u~H6!h)vmM%*jGNQ!rFioLMWz2eQ>~Ivx+^ zN3xe#IUKA45wb4eR&d(4Y^0~eMtn3Mu3QkJD2@x+kXk{C!k~XzAx)ZDit){G>t#Oq zhbzrAq!p_l|GBrb-j^nUl9h2h2WYCcm$fZRI7vn<{c(5!c119?N0vp7X>-=1~>B)i!lI0 zHx8$SGSLtJ6(&j=-)y#pO3e@x9r<9s>$-IaWVkY6VeU!lQ@m}Kg?>UHY?kxVnsyI| znU$HNY*y(e7U2pMs0x$H?JZ&)J4!WJ{j~WV&du73L^+Kl{G2O((L6{?UJvQzG&vQ7 zK)gUg501fbZQ~0gX%cCOK`tnb8g^urfLu+HL!3IgOm*)pW*P@+eK-<=73wgXe%vz3 z>4-KQNLsjHUa@}MdMK=n7Py}*2BKYz4D@c%C?(yty$vud2S}tOel4bmsvgWg$`EIu ziztka%%m$T{)UFga+OQGL_x8$4T&Q9wq2|OFumw)K?+Kb+5!$xat+T9tk|A)A6P>q zzy?xlg-n%f(>es=Pneo*Rpp6=P1GY4pc;o*Oos7+*&cErlgV*AB~G(J|yRex9C<-QthUmP|gY{1d z{m5j3Q5OYxw#Qgfg4eB@*Ey9beS+_=ee;PWzGlVum4)*DRP^gy&I++{suj zLI!My3Ov~y`e3XmOwNud+_h!J+(KJf!cj{c!kJM&QX(WjvY!=I34_`B3_g`)$Z1(X zEl$x4+sjOa#G@c8FlY3UV!Iv@Ll+%BI&1^8aUosSE);4mn!H@nP-ITn7fn__`S0z| z)*&85JWmppkPj;&!V^syGer}j2lB}W7ugb2V@WK2;^<;KsH}}hm-$X|Lst}vOd!?4 zq9W)wD52&-7>=Z$&WOt%U-HFTM{n(=v^0eY`_M|rzTD)TAV?;;AVxt&9H6q%sAnct zrxixdTl8%(SnP4iv6tn>^5x(@8uET#%Ter&L{W^f5)y&sAVZWL(jN}Y;50UAX9S=o zM+ZQOLZ=!W?rt>caPKfXB_d5;9Np+p!*8cZ!F(adM&|-)ZXuW%z@p8uaMJ23Ovhmu zG6v_31d&_hdlD3#TXje-{{bhIcNh93GG|dT+osKOVExL zDPPD2O%r+0aA--}ERDy5PQ3*Z*q#WQc0pE3*a&iR-&+8 z_OXyy8R!|Dl^#=m&>*U0M-{9dg}nA67=)b#mZUUjj4?(Ss&lfN)Q|87F_;(0uERF8jf9W_lS7nBo4;Qn2IM@lP0>dXE1b&0=1e z5*IF%3#5v2oAZ1MWf)|RhRvy9G-S;fC(wVPDwP%XYcqn7$e;)zGzJP#NMuusDN*Pmd;&H{zIZf_fe%fPD@ICk4Ixm{5zf;>>0(QQ zz>YJ<89WJz;`s@5?;ufLdOR&Fh7youieG75kly6eBWh&_MKG%5Tt>{wXFpEdDnKq8 zA6c@-j5fvC1j9aVMWU=cb0kYHpE`0&mIjPF7YJ#RK+%p$4m<>+Tq=+1Azy8fF3_P- z_L0LJ;-~l)y0oz97SviOCw?XpWnVRgK$)2+8|Neal+ft)Asg8nL+1xdG~2x@=4UbD zY$U*XFC;(+FAGZKS1xNM(dOksL-EBWyy1tqFe#wkK|V{IN706I2?6+w zlbAiR5kbQzP@mBrqB>AN)8r=%v+5YC(SEme}6<2?RM&n1>bR#*?|+;n0bK#+j7MImE7Wt!F-iT97+G9@XI zCZf6E6Jqj`^&1NjV=hpVC|cwQ6=py_>H6Yqq#uWe08zPeLcfrQHYR9IFe3(eya4}0 zy*i7~o7rH}NKKN+PN6icAKrqWin#GZ~}~h3OEbShs&U-_gQD1J>%?|*Ah~+7WL-U=`+tc=b9N#f9lQ4r}mtA_O;i> z%Jk`b^xJdhv}?~jH+Ji{Yrh%OuQ}%&R;Etv*Kg11)2}`IY*u({;-0)x_1ar*Vdac7 zcr*4{)2?CVKa`&7?b0)SPu@V7r)ST8d$y(LOp?=<9$sYq=A>svyYx)on>V55`Ew@k ziTao6*;Z|YzK-GZqc9CV2Mge4SOZ1d@1 zE}lC5+H0$-T8p;z*?+ukYs%Eg7oRq5`qk4HEsBlw$e*?MnbWShYRdGP%bD&G8yPu2 z`>eBK+jTQ>CTt{h=ixsymoJ}&P0X~}$wmy3&a~>8XU{zQoK(u#NT5ltO?4I9;--w6 z8ub0&lBeIsRvc>=u_O2|32%(;z5JL zHk@KLWZ2MQ?=BuXc<9K%gV~6~BXXb*ZjV)?MvWXbYTmrq7;bOT?6@A`uTV3Bh+6R@57r-4YIKCE;&~CCB26Y!{C?v9cHZX;)d+~U+EX?XTpv+CV%e~ zD~22ColS3`KH4BXm&Uv8;@k@>5sh3{137t_-(o)5_iDSh+Ov!m~+%hS_u zcDwYX=T-hU(o?-`(M`7MIrpqtmoHebatXzgmGbga7cE`DJ6ott;umHPreA1C7@pI9 z=NDVHL^#a5Nh|#%SG98X)NV6plHGL1PhWT=Yu#Ak37}J_-gM*a>C;)6OO!EncDBOXcy^mQ zg{SOKYwahV&hUB28cY>qug*ThD)E?-&LNSlz8UVH8G>z>)uUD?xS#GI9}art#W z^x@#dXkXx`|@pad6Vm6+B`l+|ye#fGiy}W3#N4$ah_rERA%Da^^muGn< z&&qc4%(`V;Siqj!vpvi z*ndH27k%psc}gQsuOGI+(E=I>ws5N#ve!@^p_TU3m$Nr}vhR=u3*&IQF5S9t$l#$v zsRWk9M*P10W{ZXnp%$ORHs#Mz~0*A;mKt~ zhpi`1ygY7bM|qTH*wDf2$wShIZXgdY%z5kN89Hp(kfH0z<*Z;y>HX&wtk8Fp-W~34 z{u1xqzA3GwcUJog2A0Qa`m+U>m9%ILRyrVbmmc8FL?Z!J0eK)MNBiBjq zRh^Pfo!&`$Mp{Yl^K`{t!*~~_yKziC>lv|Nd!d?cUopmi~SEw07^+r%zL?^l$CP59vEUbj?=!a~vy8{?Na#hji(g zcI)52cNb2{dit?XpWa=#P-~YSX}y1IQDINM#zs%}fBRZr-^8;2{;e!U-J6>Fd$FP( zZuVQ(9$Z!t(zn>Nh)ebFzrXu+cR#+g79mkc>egQS?;j`ivR(bXM_10$)M2GJJH-L+ z)T_QezVE+(Z@zl0De|20wNIZdy6~kn{VnR{p<3&A? zB`%ufh#AYKxaQVz`3=|W>+91`tsT#t<%KDU^JZsG*}_%Y&XnazH!sjT@+uQDzNgKR zJCRv!IfeA-wu$^{mr;K2n2os*{o z1Na?u(-(koh%v}%@L9MLR>E3%99{rpimmYhd%^qR1kh(pf{($4utk^aufM*vN0*kC zmM#24b+vZwTK=wBv102kYu2pUKGuu6u3fugMNj;DOH1Fb*I&PO?RM_bTGVaDiu?GX zTT2VS_oc>Mvu4|_D^_r#E_|$5(Tl%p*Y@q!w{Ode729@gX<4(TwOiLUYgVl2(}Q1{ z`>t8D4d-aO_ukfS+pJizW=$VX)8bW{Tl)5G?Y`~WwH(5hrsk&R#+E*&wyT%!zHQ&W zYnofuG&Qp{H8%Hc;g>G&G97)^vX!G+_@QY{U$^hbweC#^tl^9t(84Dd==Lto)u%6e zBQ{4gHa00qYY$JKwz8S?lj7E{+xO{1f;l%kv#|Rb&QY|3GJ3fSHz;&(fG}Si9CA8yXrL>OG|A zR_w8s(=?D*Elq9-74_{yx)FLsU#{5NrzbgmZ}YvRy*GKkV#OBZwQIdtYi`~$bl9tF zb2HgrRCGkqmRJ~ZCA#hC4 zn05q|!wk^&s$dCR54V8z*H_^C@H6-mbfd1Z4%-9X2Ls?p7y%V<4qOED;RaX*Uxi2E zId}znQa|ks2U<^Uxvs;~>IO2k5tC?YXkNE2Hq?#DR^M3Xab5bXTeqsNu5NWY%NDV=x^8uCZR3Ce zaotr7bO++8I zHu&qt#6?!i3}rdnV>PDNvZlGQK9_$rzhTYIg*}?E)hJQ zS+BEfVz7CJ)iz*p7UD=G$!d)KDNXr??3B&5jhsSxR+}8ZkSW;~&*qj6*`BB6tx88% z669jSTxjO3TepV%OPdOr*nsZq$iUh>6IWvkb*Ob!p6|65cz#vI$q+fmYW9${fiE6k zI7cme)N=glJR9>XH00;-i&rUV*FEa+M}fsykL--Z^1^Q6#cZGf718@xJGs?lZ_d=+G<#0RP2amwB@Dg;z zSG)_}3m<}^FdnAE|3DSINrj6%Zpt%VZD*b$*;?3}30c)ZBZQ@()K#l$S4+WVty;aB zeRA)^A+`8D4X$vAc9bun<8(O^kX%b|ejJc?pqT08D zsrQVL-sVUi7tc+suA#Y^#5NaPtY%sdQR&ZM` zlaCGNqy;niPOj2^Y3+jJvK~N?Lb~e7LOgO^TRyH@Z8o-TXsB;!YG`a~Y*biJ(O`X_ zPTXn*psO=qy79dZM`~i?J2kq;xDV%y?;c;@Of8=sZ%))THFCkmw(_}(+Q)i7&Kh}z zB3UJ>$db^+6%RC2@${&pZP^^Xlk-?pY-6lE7p{TZ!Fc&Q@KZ2m{tNWLe;7Bnk6rAK zn*g@AKM&Pl+;TVE58s2Q;Mednw8FOdk$1zPFbGOv3Va%DZ!d!{Lo+-KPs1Oe6>M9- z8xDm*a3V~F^Ia2{L&HEQiUZXn^-EqV z>%t8YP30Tvn_8Oc>*`lWED%LN*HuT*lJ8+mV7=)=k8@gC712hvl1}CdThnfMvf9{% zFB|s&Uh6*|AB9^%T1%`2)QeDr>%-6J0AfQp%y#a%rH&x8E-Uq(qJ{kl>OvG0>D}zWox}sB^c4*4$!WBztK3)YNU&yG4d7hlWe0-bUj!4_cEQ z;z_j+m)7oBd{lydi5j)=#nZc3SGpuUa&~IxwiZBbs=(W7z1sRZTST?14c9$KBk65) z$%|+@UHaQ;;)VWM0942+BMRCzZJx=pSKnSUW_P{H%T?tDwH2*Gv(61J1?Qy8vN@3) zTK1*G1`lyVw2i_-3?Eo8T%{$~nEEgz%M_-*TwT-9K;drGAw@8kS}e&_JX7njS)Ex# zo!AGqhuy)xr(>W5CW8Ifmp~;ff*asYux|Y}JO#f8WBP5V7x#t_fc;UWFa&E&6`cqFH2cy8aema~FmxBEP#`bqY``G@EtaqWF+z!^SUr%M*neZ|A zEaa`62!-FaAvl(&vO=S^wlE`TcQwVSg(|c;dPM2jz)qsTt~RR2ERw}+%*YC67-if& zI3mn2&e3i|YM{CSYYV%~y+B<l$(9~e#p_xcqao3at{+;|^>pqm$LE4Kb+X3of~Z{!RWRS7b~< zA0|~s+Y#w(>F-2K|p43YDv0I_zOViaq#D{T|sKsUN{(v)VS|YU>5d zs)rQ%PTEAu6UH7EwZa}cQyg@?ogAsSa#Ff&qE9e3xCa~B9pWBrbZKkk#PNBHr?A3q zg{~95Ol`Q3{8BU{2;iw6$5IuYSOQ zwl-_Fp{>oD?@?&8<{O#^3|Iv&s57msYHGLA(2}pPHSN}Yz<^p-`gARFGZh0XYY#al%2>$2V~{#4$Svnu)IA3e+1_Q*^b%^Y)9pD2}}8IdHV!h z4vyzv54NM$z=QA@7|Z+#x>0^CbNj-FU?_}->F_^L3D?4x!SRu=!lU4v!B?OsWoswP z*G7$*N`bI5Md;B!r3$4!VVpUyPpp_26iwp-oWp8kRV`brK0IUvg?RKYiyXm4ldjUfhP z<>YIa;luDaSWdjR<5h6}fwBHR@BtVIW1#}3fpyabV86pMxEZXUz5!3bui>xI7kl3w ztecL35;zs?%eSn|f+b+wZ&`6H@dXYMr>s$mWOpV23ONxL}@c(wWYYqR$KIR=WD5ro_1xBEk%e{ z5%j{@CQNDIDz$m^$i<2AqBO=lg7`)vBfiU0Z5Lo1nfx$S7;BqdPXhVRY#`bcHl?G@ zTWhe#Ld&ACZhtJ<6TYq4*$|A~72ILuA_fr61DgdgfFDf?b?TQoPZnQtADSJ+ID2;5 zm~+9%NQ|MTITVcY(J>N^GL-G8Up6Xl+lW!X=!+*=ILLgl-Q2TC<9w}kZ~ppBm-oYw zFc5}A!EUkNI2_m3?yF)~&L#`VkHt2@~KPxEOrii1%sT0=4h}{1Ec^vP)q~ zif4+}6S)%El=myyHLdfe^^@(Qon{kX%=UB+M>Ght&B5+|O%+l%zutS`L2T{n*X9=U z+FGK%xtV?Y#Py>*Qaae+r5jX?Q*5FnhGL@7@{=RIZfIXr@^fsF<-=jfcRY-RN$?4{ z3>L#m@P4%i!F-6)l_@7mSM-vn;o_)W9bI;aIk${e%q$|HY$%NO-%Vz?q!f`fH<-ji zi|=j{?^5Xf^%TubsZTeImfnwmJ+`^*5t-=CmP!y^{_n<>kl?v^i6)?jG$IN?yCX z9>z6K2A@TA0n7t!?oPN59)X`j-d@mj(vpNX0|{4B9{^V}kXX&2d7*V~j^auil3lQe z8=}b`W|41T*8ds1MI*Hq!ml)N=3Iu#1p zr#YP>mc+KPn}!gOp{_g&JT_n6xc;71Ch{$oY-lM`QfJpK+1)lq#FP_P3f6XaU30VL zzuktU)WU{)umNQ)$a@dRtM)>XtYwcnCX*C8h_z?N2~eRqLSET@t=nb#Uf2nnT-s)S z(J$Jroc=pL@yCeV!4|?!9E>6k$`oPmIK`={uwgaVXG>$jc_>te(x=#wAN-J%$;p(o zkRKKS%V=T9(%qZtQ@$o?kx^-z>eBq54Ww-^tIypU3S&UuWIZqgE`%z$4)jlX`7Bg@ z@g+@3;sR|>J6 zOE*%Gvo_mMm!c>Ra>)0Hr$a^QVG&Ea5dZp zJ|E3?$4_7bPi&2L?^;8?n3WcS?0fH8=AdI#h1_48D%jLdtUtsnD48UMu^}wA{f02x zTrvzB2h(nJxISXf<~8@~VWJCMn{5h*)1lb(DC$efTU-0__W(EwMnMInc&S$w`Cw(% zYZls6zwt#O+|a=e-4OQJ@pxm#Ejer3T=3#9w4vZ!_yX8p@kOYG2f)4x?_GKodeL^; z4Gw_3Z}4Qkp9L3y<1STT8*KeKRkp!igxA6G7yAegfTO^1-#0o3eE;rgPSvq|7DEM` z1DC)exDi&tSKu*t9$tlBJs7uv1K=na1r=}(Tma09G@jrBY0!w&)P zMLh}f`S>+_Ujg^PSKtTm3wRlN;DdL9{oqI#0s8Jj?5qolHUYJ;73lx}{L+^H*8I{= z-K(2iWi%F&Z(K|4LX4fe%H%kk@;DzorSbi|ImNAPsxlkkx60%ftIn9H7A+EXa6{qd z1p7_gVCytO>%6I3*u#Fgn2tka7O|U$v$xx5(4|`0Z3Ja*^Ioq=A=?Z=W811#tMYA5 zvv*sxZL>(vROid)Imdo{79;9UJ`Jt3apJ^DK8leIWfLnZDkhYV zFP}JLM%uu7#e@mv6Y>ocDke_!u!)niLp*Ewq;zg(3v&)u;>$RXaZ7y36Hv-lmpJ_d z&R)*-D?G+M#+8p}DJv_j$Ty5H8|P9wAwPulPH@Q&NvBJHTYL53ON9sb=*7256UO_! zTOYqyj2}17vvlnnE91*bImHa_uADJras@J{H4dvN_v9p~_ly}6Ci*p7Dd%Kmc}|Su zhqB4>W0v;Gq>Q|r#KsV&bbL8WyQEHNg^mn~+@m@j#)$`PcHU6abjmz9^1tt2k4Fv%ojr|gPsuKQcJ_+F+EJfMZ` z&x{#bNSxQ5+*V$Z*{TPk1-FeQHzI{>(>h|?*s){tZ3^x- zvmrm9sdihoY|3`qW+q9PFaqsQOD{MQvwK`w+4%911D14hYAm)J?!t4p2OHWQ;vQ^t ziLyA>4RJhX({Y8}bS!agl`$?#aA8A51@<_uP)f$-CYmQ^(zw#_I^n4-d6O*a6Yx!( zqHDKELb#Sl%WYYGbq{rj^UNOs`x{<@uG9(J!=7*;Sg-i}l#jw0V7+n$EP-F5!NpU!qHF+_C1^p zp9k;dS^-~%RnP(t!1v&3_#M0kTT*}Q0f)eGFcv1kC*U$z3@hPoSOX8ilkiLU6STsX zy*LLP0>{BvI2}F?m%<{r3F_e+@F+YBzlYaho8HV5gAc&*@KGp*6QK-Fg7I)Nl*1`7 z0V?1exCrLM4X_Hn3Xi~3@Edp)y7eK?VRtwXj)IXe0nUcc!z`E&SHTzIHmHO9;k)oO zya0cO?sT(l2k(Io!eA(asqiVd9G1Y%&??3zX?`KD(18Dvxa4>Xnin zeq*8)(Zq`K3TlYhkY!k^{H!9v`4s93zm$2h__E$XlPYp|R6)SPRVPk}J-BY!#0eFX zCQqt}3e$9qXPpbj?hAO`L>i<+|YH(96vp{zWRNDkjAK*6yN5e#GO*wV7`g+1IbjxBt~9%FGgnvYA0rYI0@Oe=h8Tj7^vx|9-{ z6Q!xW!Af~KfqlfatV|kDJ3;I0($jz`niaa;w&krV-4=6~O*yRY+BZbV{%j_dcCNQ* z%7rPjB{kjfks4^eWHxPY0Zrh7k&hi$Iu;6%{@Bt|ymh+<^0@K|<+dmbhva3#6Q?RJ zziui^g(MLtXK}xCqwS+^f%W^8dJ(&Oua{$uhl2N+`rO1*;cWOk{Hy-z9f;lcfx}=3 zwC_)v%lcAqys;J@0LL4D1%Cmb;jkMV1RsIXa2lKoUw|v&i(tHeFFXW~!^ZlQe1^jy z7z{qkVJHlP;V=S5g8fa!a4MV&Uw|v&i%<*e;9>X?{1#q=ye-h5xc(zB0#1f$@L8A( z*TC(t7QO>Ng%`ocy>AEafe*r9F#bOiJ_#2?H7tb{a1VS1egMCKm!Su-`Ht{DI0A;l z$uI@ZgU`WiFvhhZ%4oRKay{7p#Nt!O!4N(2baU z2Y5Fe0!KqJoC@c{7hpbo32ujaxE~&dr{D$nEA(P$eJ6My916$4FtGF#%-JZRon61l z#fWOcVw6(TH$Ep({P+?f>twnF=v*?1UHEmZt?<&+nL83t3=rJOSz6X@2yDICJV_Gh}Z^>l_Oz=8Tp3a(wrd`WWYv5UntKT|qK`uk2XjiHHX;-H2%JTB20 zt+g|Gm?CPdSlW8#t)L(>D?sA<;_Ep)d#>7nlm?!z@?^UxsG*7W@Q$2mgSriRbr%_rvip7AAsy{-1{P;WO}A_#e0c zE(F^NSHMDWEZ`pa3j6?m0WU)j;{BaqKR6Obz$q{d&W9^tDck~0@DThM?En8eY(<>E zC-jGpzz8@Qro;b0C0q-(6B^+Gcm(YKx1I2J*orp6o^S}*Mi>fX;B@#nTndZeCa8z| z;6Zp2egl7lEw;j5pg$Z1!{9`i3g^RYxC*`ujqo*i6n+l>3*EP-y#()rBVag`!wk3( zD&cCl8S3Hd@HqSu{tUgh!QNmu*ar><=N7nh&Ytn;?(fu%r6gf$Dz)lW+m_Vd#Q?0c z9U{sxkfLL!w6xvi5PCdqFt*JWVfdKI8%$Wy4Q(-wc0(!MORO?Mh7F#A@s=rP z5+i!4%~8mxo!^;~lcIeM;_Wsi2cw{ct>d6wZK8!4=>* z-Abqf?+g3^`~qHv9<-r%0_T1o2_xVXmF2tS19;Z^8G+j$o_0FHw7 z=Y3bRZ8_WuP4I1a3Vsi-gU?#u8$JLhKq*XtPs1#@8g2u};O>As;V!rvY=^IcT38Kr z@Blmtzkrva2kq*eU@zDooVRxr*ft*x&e59&w$CqzE8#l04c5TJ@HG4ZUWaXHOYaRI zfD@n;9Ivx|?wq`3@MUO*Z$Um*XJpcT3Fov4&8OH{@@;Q0BZ?ZXvrOCH++6C$v}&a5 zeGREnXOEchMN_lTxo>nlj^=LL2pd7U6B^R!0Efh+F{0}m?WCC!EugJ&B&Pnzt* zhB&E*%8qd-L0Y=|8@-2ia1WQwN}t`|5sPb$sdw2fng6yB)ZF>p1RZ?KC)O{%=uV;niA z6{N}UDviL;0qiu0?FLpnzHkorP_@oHjC15yDAm<*o;$3&LE&Cm$ngzv+T;RSF^WGmt)--9y%27==ur@&1398|;gU@W!{ zz6U>sUxKlhVNpq+li(9@87zjCPzR2Yd=GvEzl2wyJ7XL> zf^(^kfZQII1a|bB=`he220@4xJc{dyigWx2X2A_qwa1GoJYvDWa z6#NeU0b6fNd=3NPXcz{ia2k9JE`|m0C8&k3z<1$k_#ONMw%(3&!298N_$ZtS7eEbs z2^wH?=x>WTASteyvT5Ey(4ikV1~1;}MvLf)$#VbonZ`t1?U%Ujo7s)V_3eb;bmXLRUo7U33R?~TTbn|u!lt&`4jdvV_=ZrPvBt%>|jTu?sVc6xZ*x9y#U z9pi#d-;J?;O}zPa+-$tk_)kyy@7mGzZ59D%bP&Gt$P*l1(PLR(j?Y}01m}YH$N9{q z>)&uTLbvar6=Jx@Hg=OIG@M4FB}Fw zbEyo@gwH_xd9Sy#-UyDpJqf>ozd>L6Xm*7I;b>U@{wuWzk?g>y6!LnRqk12g%{Qd+^Qa8Z7i+wer4`WO0t0yTl_$Hm{-d zw|c&3A?ra6_AGw*!@pkfSxxsI=`2WZ6!Qag0VQr564>VyO$lBdI z(4JoZ*~e$G?E;t$i{Xo4JA4g%6WTwgvM257oxyiwd>BpupHX=tOoj7dHe3a_LJQa) z{~Dad)`D&C z$KW||enn5(&O5_?a5xNvVmJlPg3rKZVEa3tXR(g&--DmQOJLi38`uj5z(5!WlVK)Y z2vu-BtODEJ-+`y#x9}I}Mca92ulZpt+>jnpnm?$>E$Pk+ynlLNQNbDdNTIRg-aZd5%A|5W{&iVf@^jo% zIS;M{@4LJgz6(Ev--7Sk@!bep!}|AKI`(@WTmlQ>MyP|Y!w=zkcm;aUUfc=xgCoIv zE=NKsvhnRp?3E(Ptjn?mQTdfI(0Sli@tL2%P7C z9o!1uV|gDu2#umcWJPSS}$?@Snv?IM2U>|V4|1nSkwnNW@OJD)m4qXjjgU7)+{(pwvv?F(geB8H~ z@2A4K;JELV;PX=NfHm+iJPpq8Z-s4XL;AebLtzk{2pj9Z**u5F{?ik4-b4>saE%3* z*yah>pND08=s(`)X|L~FIf&KfxVPEim*a7fi7y_j* z8P0>x!CY7hw?Gp-1V4s93dr#!k@Jo0RiWuM84&DPFguze->(9gdGTZ9les~z3fM3I3p)c+C-NAPU z9tFeTB$x{4!)&+;-soJ+kJEm?2pkvlnWT4ub1@%*XTW!a`(D5vw9~hRe&D#+(crrQ z$Afb+&xcFFaWUKaH^4jIV$*!mPzP_J65n}`7GwOp87$s-kv|Y(tS>ih|N7ENWxQ#q zEPMZiao5}JWdeOWD7I79ZCYz*ibp!l;MM(EJ>8r7a653GNq_hVjE2+TV{kDnfG@#n z_!>M8)}{XoU8xH2-5@c9E3FcW;=);w4aK7Zgocm$q>^`9U4 z0s6@Y!Wi)W2A>~!DJ+7UpdP*fPr$F?ui$e9c7uc9BjCGueaF@mI1es_D!2~rf^}e@ z`cL6k@JHxEpZE4)-}zx+U-?Ne5vIeZ;Zj%tH^3_RDm)6$!7I>{{_dS&fA}zrgb8pq zd>(4RXA0Z_&F~F)0)7pDg}(H4?*{MO|G#O!MEGC!X?ONsvdy9^a1-vLS+579llK1+ z=5-u}H|}HZZl``PR%`3#PJIN?e@;r z#O=EN1izv`XKlsjXzzJ%!TR^Ix4*Ao{XW$EUUu&*u-*4FcoANQEor;u&zC!t@3#F; zguD-R7T=e^O;874gU8{Q@MkEZ&DICDhuz^|_z2kcI~C4_FTfmF0PW{Z`F`am;WzL% z*n+m3eX0H7SQrDR!^gpX)Fp5;+yc&<@;(FGfj(>Q4!9HYcRu;-xvzuw8La<~C*Qk# zB#Z#(RLz9X!92JIZh4 z!sW08ZiYtqCU_70&*24l8G6vx+X?;;d+z}!S6T1>Z!()g=%I#C1rd}0QWXd-^b%%v zXLe?G`k6V?XV;FEi(EP?%2i2BOcYc~fMk2gt}A*`ks>7!N&xAQh*#`jncw^KoH?_z zN%VF9|DQjF4F}%YnKS1+=Q&UPmZxYPy2ibj(|j+($Ki6g9&Uyq_!&G2(iQ&*?p*kT z(D^)Q!4!1D?LhP84~J8r1vFp&!{Dw{cO##BL3=ho z0Gcl^o$`0E@xIMxqF-vQx-47>?*0U~@LBsd-wF4@WAG}x30pJHYERIf&Bw!85CpAN zcOhH}i{VyS4fn!R@GGdo4(v0q9~=P-zz;Tj0-S8N^2!F>nFxe)>PaZ|$ ztvc;QcJ>So3ie#1n>3pj1rjNXr3J$7CRx5PJF=k}m~Ed`@U+u3n?PIj6SWRD;nS{J za@1>~ee=Q03^ZpHnm(9`fbT4NRUg-|ky5hdOf=qX6ZRHzmAQjr>N)jR9wxKd#GI^~ zDZc$Rk_pC_dI95u@^QkCIx#6MGtzjSWewHOG}rV@ZI@V`6w6?25r*r@KH_|`IQ1uI z6QVYw)`W~pP3TrNd&erqn%xO&;6>273^TBQ><$ORad0j~p#m4dwXiu~`5!qy6Pw2_ zpmAr1!3l6Sv_la-1zH2}>+l^|1*7mYcoKdIe}(O^ee4Z~!AanS6nq3Of~(={a0A={ z8?OcUSI%vR&0}vk4CF8OK?>wA{}fyXUxsf(H@NFEyujz*LNm6F&H2jnoR_csD)+UzGwpRPn@9mZ30Hw^A}e47?t`a6bIhh=qmVsB`zp#O-e~L4 zJhOI)fc)Yyh=bN&NP=u31^5_z9=;6U2JN|cC%9_@zQX4>U>3HFxo`-~2d%>&gA!Z_ zm%>-z2IztRhDYE<_ycH7hMCwY=D>U5c#z*b1|4uATnw6v_C1izLu&#)4qA`@&#(

    l}PLEd;!&W`N2c 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

    ZNvSmW7X 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 z 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

    cOCQeVZ5C&3cR>q(RuKMl~ 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

    |}F|Br&L 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 z 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�!cnTIX2o)eH)Mz0*thF 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ʩjGzKJ6O@FZxZtoa>f3-{#G{!EohtgU-X+=N@r>Q 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�! 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Π?M^yfm>lh9r1N8ldz6p-6W>r92_IL9%3dg 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 get_doom_video_buffer(); - -extern "C" { -void doom_pause_video_task(); -void doom_resume_video_task(); -void doom_pause_audio_task(); -void doom_resume_audio_task(); -} diff --git a/components/doom/linker.lf b/components/doom/linker.lf new file mode 100644 index 0000000..26fefb3 --- /dev/null +++ b/components/doom/linker.lf @@ -0,0 +1,8 @@ +# Move gbc code into IRAM for perforamnce +[mapping:doom] +archive: libdoom.a +entries: + d_main (noflash_text) + r_draw (noflash_text) + g_game (noflash_text) + m_misc (noflash_text) diff --git a/components/doom/prboom/d_main.c b/components/doom/prboom/d_main.c index ad38e81..2227002 100644 --- a/components/doom/prboom/d_main.c +++ b/components/doom/prboom/d_main.c @@ -541,6 +541,8 @@ bool D_AddFile(const char *file) return false; } + lprintf(LO_INFO, "D_AddFile: Adding %s\n", file); + wadfiles[numwadfiles++] = (wadfile_info_t){ .name = strdup(file), .handle = NULL, @@ -665,7 +667,7 @@ static void L_SetupConsoleMasks(void) { // CPhipps - the old contents of D_DoomMain, but moved out of the main // line of execution so its stack space can be freed -static void D_DoomMainSetup(void) +void D_DoomMainSetup(void) { const char *doomverstr; const char *iwad; @@ -681,9 +683,15 @@ static void D_DoomMainSetup(void) lprintf(LO_INFO, "M_LoadDefaults: Load system defaults.\n"); M_LoadDefaults(); // load before initing other systems + lprintf(LO_INFO, "M_Init: try loading iwad from command line.\n"); + // Try loading iwad specified as parameter - if ((p = M_CheckParm("-iwad")) && (++p < myargc)) + if ((p = M_CheckParm("-iwad")) && (++p < myargc)) { + lprintf(LO_INFO, "M_Init: loading iwad from command line: %s\n", myargv[p]); D_AddFile(myargv[p]); + } + + lprintf(LO_INFO, "M_Init: try loading iwad from current directory.\n"); // If that fails then try known standard iwad names for (int i = 0; !numwadfiles && standard_iwads[i]; i++) @@ -694,6 +702,8 @@ static void D_DoomMainSetup(void) iwad = wadfiles[numwadfiles-1].name; + lprintf(LO_INFO, "CheckIWAD: Checking IWAD %s.\n", iwad); + CheckIWAD(iwad, &gamemode, &haswolflevels); lprintf(LO_CONFIRM, "IWAD found: %s\n", iwad); diff --git a/components/doom/prboom/d_main.h b/components/doom/prboom/d_main.h index 40b1454..43d8c86 100644 --- a/components/doom/prboom/d_main.h +++ b/components/doom/prboom/d_main.h @@ -69,6 +69,7 @@ void D_Display(void); void D_PageTicker(void); void D_StartTitle(void); void D_DoomMain(void); +void D_DoomMainSetup(void); bool D_AddFile(const char *file); #endif diff --git a/components/doom/prboom/lprintf.c b/components/doom/prboom/lprintf.c index 19e5672..61fab31 100644 --- a/components/doom/prboom/lprintf.c +++ b/components/doom/prboom/lprintf.c @@ -37,10 +37,6 @@ #include "config.h" #endif -#ifdef RETRO_GO -#include -#endif - #include #include #include @@ -59,12 +55,7 @@ void lprintf(OutputLevels lvl, const char *s, ...) { va_list arg; va_start(arg, s); -#ifdef RETRO_GO - rg_system_vlog(RG_LOG_PRINTF, NULL, s, arg); -#else vprintf(s, arg); -#endif - // vprintf(s, arg); va_end(arg); } } @@ -83,13 +74,7 @@ void I_Error(const char *error, ...) { va_list arg; va_start(arg, error); -#ifdef RETRO_GO char buffer[256]; vsnprintf(buffer, sizeof(buffer), error, arg); - RG_PANIC(buffer); -#else - vprintf(error, arg); - abort(); -#endif va_end(arg); } diff --git a/components/doom/prboom/m_argv.c b/components/doom/prboom/m_argv.c index 9392840..0eb3e20 100644 --- a/components/doom/prboom/m_argv.c +++ b/components/doom/prboom/m_argv.c @@ -37,7 +37,7 @@ #include "m_argv.h" int myargc; -const char * const * myargv; // CPhipps - not sure if ANSI C allows you to +const char ** myargv; // CPhipps - not sure if ANSI C allows you to // modify contents of argv, but I can't imagine it does. // diff --git a/components/doom/prboom/m_argv.h b/components/doom/prboom/m_argv.h index 5340c15..b784cb0 100644 --- a/components/doom/prboom/m_argv.h +++ b/components/doom/prboom/m_argv.h @@ -39,7 +39,7 @@ * MISC */ extern int myargc; -extern const char * const * myargv; /* CPhipps - const * const * */ +extern const char ** myargv; /* CPhipps - const * const * */ /* Returns the position of the given parameter in the arg list (0 if not found). */ int M_CheckParm(const char *check); diff --git a/components/doom/src/doom.cpp b/components/doom/src/doom.cpp index de3cc4a..34629a5 100644 --- a/components/doom/src/doom.cpp +++ b/components/doom/src/doom.cpp @@ -3,46 +3,51 @@ #include "statistics.hpp" #include "esp_log.h" -// prboom includes -extern "C" { -#include "prboom/d_main.h" -#include "prboom/i_system.h" -#include "prboom/i_video.h" -#include "prboom/i_sound.h" -#include "prboom/doomdef.h" -#include "prboom/doomtype.h" -#include "prboom/v_video.h" -#include "prboom/w_wad.h" -#include "prboom/g_game.h" -} - static const char* TAG = "DOOM"; +static uint16_t* displayBuffer[2]; +static uint8_t currentBuffer = 0; +static uint16_t* framebuffer = nullptr; +static uint16_t* audio_buffers[2]; +static uint8_t currentAudioBuffer = 0; +static uint16_t* audio_buffer = nullptr; +static std::atomic frame_complete = false; + static bool initialized = false; static bool unlock = false; -static int frame_counter = 0; -// Video mode settings -static std::atomic scaled = false; -static std::atomic filled = true; + +// prboom includes +extern "C" { +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include ///////////////////////////////////////////// // Copied from retro-go/prboom-go/main/main.c ///////////////////////////////////////////// // 22050 reduces perf by almost 15% but 11025 sounds awful on the G32... -#ifdef RG_TARGET_MRGC_G32 -#define AUDIO_SAMPLE_RATE 22050 -#else #define AUDIO_SAMPLE_RATE 11025 -#endif #define AUDIO_BUFFER_LENGTH (AUDIO_SAMPLE_RATE / TICRATE + 1) #define NUM_MIX_CHANNELS 8 -static rg_surface_t *update; -static rg_app_t *app; - // Expected variables by doom int snd_card = 1, mus_card = 1; int snd_samplerate = AUDIO_SAMPLE_RATE; @@ -65,53 +70,49 @@ typedef struct { static channel_t channels[NUM_MIX_CHANNELS]; static const doom_sfx_t *sfx[NUMSFX]; -static rg_audio_sample_t mixbuffer[AUDIO_BUFFER_LENGTH]; -static const music_player_t *music_player = &opl_synth_player; -static bool musicPlaying = false; +static uint16_t mixbuffer[AUDIO_BUFFER_LENGTH]; +// static const music_player_t *music_player = &opl_synth_player; +// static bool musicPlaying = false; static const struct {int mask; int *key;} keymap[] = { - {RG_KEY_UP, &key_up}, - {RG_KEY_DOWN, &key_down}, - {RG_KEY_LEFT, &key_left}, - {RG_KEY_RIGHT, &key_right}, - {RG_KEY_A, &key_fire}, - {RG_KEY_A, &key_enter}, - {RG_KEY_B, &key_speed}, - {RG_KEY_B, &key_strafe}, - {RG_KEY_B, &key_backspace}, - {RG_KEY_MENU, &key_escape}, - {RG_KEY_OPTION, &key_map}, - {RG_KEY_START, &key_use}, - {RG_KEY_SELECT, &key_weapontoggle}, + {(int)GamepadState::Button::UP, &key_up}, + {(int)GamepadState::Button::DOWN, &key_down}, + {(int)GamepadState::Button::LEFT, &key_left}, + {(int)GamepadState::Button::RIGHT, &key_right}, + {(int)GamepadState::Button::A, &key_fire}, + {(int)GamepadState::Button::A, &key_enter}, + {(int)GamepadState::Button::B, &key_speed}, + {(int)GamepadState::Button::B, &key_strafe}, + {(int)GamepadState::Button::B, &key_backspace}, + {(int)GamepadState::Button::START, &key_escape}, + {(int)GamepadState::Button::SELECT, &key_map}, + {(int)GamepadState::Button::X, &key_use}, + {(int)GamepadState::Button::Y, &key_weapontoggle}, }; -static const char *SETTING_GAMMA = "Gamma"; - +// static rg_gui_event_t gamma_update_cb(rg_gui_option_t *option, rg_gui_event_t event) +// { +// int gamma = usegamma; +// int max = 9; -static rg_gui_event_t gamma_update_cb(rg_gui_option_t *option, rg_gui_event_t event) -{ - int gamma = usegamma; - int max = 9; - - if (event == RG_DIALOG_PREV) - gamma = gamma > 0 ? gamma - 1 : max; - - if (event == RG_DIALOG_NEXT) - gamma = gamma < max ? gamma + 1 : 0; +// if (event == RG_DIALOG_PREV) +// gamma = gamma > 0 ? gamma - 1 : max; - if (gamma != usegamma) - { - usegamma = gamma; - rg_settings_set_number(NS_APP, SETTING_GAMMA, gamma); - I_SetPalette(current_palette); - return RG_DIALOG_REDRAW; - } +// if (event == RG_DIALOG_NEXT) +// gamma = gamma < max ? gamma + 1 : 0; - sprintf(option->value, "%d/%d", gamma, max); +// if (gamma != usegamma) +// { +// usegamma = gamma; +// rg_settings_set_number(NS_APP, SETTING_GAMMA, gamma); +// I_SetPalette(current_palette); +// return RG_DIALOG_REDRAW; +// } - return RG_DIALOG_VOID; -} +// sprintf(option->value, "%d/%d", gamma, max); +// return RG_DIALOG_VOID; +// } void I_StartFrame(void) { @@ -125,8 +126,14 @@ void I_UpdateNoBlit(void) void I_FinishUpdate(void) { - rg_display_submit(update, 0); - rg_display_sync(true); // Wait for update->buffer to be released + static auto& box = BoxEmu::get(); + box.push_frame(framebuffer); + + // swap buffers + currentBuffer = currentBuffer ? 0 : 1; + framebuffer = displayBuffer[currentBuffer]; + + frame_complete = true; } bool I_StartDisplay(void) @@ -136,16 +143,15 @@ bool I_StartDisplay(void) void I_EndDisplay(void) { - // + // TODO: } void I_SetPalette(int pal) { - uint16_t *palette = V_BuildPalette(pal, 16); - for (int i = 0; i < 256; i++) - update->palette[i] = palette[i] << 8 | palette[i] >> 8; - Z_Free(palette); - current_palette = pal; + uint16_t *palette = (uint16_t*)V_BuildPalette(pal, 16); + // Z_Free(palette); + static auto& box = BoxEmu::get(); + box.palette(palette); } void I_InitGraphics(void) @@ -159,7 +165,7 @@ void I_InitGraphics(void) } // Main screen uses internal ram for speed - screens[0].data = update->data; + screens[0].data = (uint8_t*)framebuffer; screens[0].not_on_heap = true; // statusbar @@ -170,7 +176,7 @@ void I_InitGraphics(void) int I_GetTimeMS(void) { - return rg_system_timer() / 1000; + return esp_timer_get_time() / 1000; } int I_GetTime(void) @@ -180,17 +186,18 @@ int I_GetTime(void) void I_uSleep(unsigned long usecs) { - rg_usleep(usecs); + // TODO: ? + usleep(usecs); } void I_SafeExit(int rc) { - rg_system_exit(); + // TODO: } const char *I_DoomExeDir(void) { - return RG_BASE_PATH_ROMS "/doom"; + return ""; } void I_UpdateSoundParams(int handle, int volume, int seperation, int pitch) @@ -299,17 +306,17 @@ static void soundTask(void *arg) totalSample /= (16 - snd_SfxVolume); } - if (musicPlaying && snd_MusicVolume > 0) - { - music_player->render(&stream, 1); // It returns 2 (stereo) 16bits values per sample - sample = stream[0]; // [0] and [1] are the same value - if (sample > 0) - { - totalSample += sample / (16 - snd_MusicVolume); - if (totalSources == 0) - totalSources = 1; - } - } + // if (musicPlaying && snd_MusicVolume > 0) + // { + // music_player->render(&stream, 1); // It returns 2 (stereo) 16bits values per sample + // sample = stream[0]; // [0] and [1] are the same value + // if (sample > 0) + // { + // totalSample += sample / (16 - snd_MusicVolume); + // if (totalSources == 0) + // totalSources = 1; + // } + // } if (totalSources > 0) totalSample /= totalSources; @@ -323,56 +330,61 @@ static void soundTask(void *arg) *audioBuffer++ = totalSample; } - rg_audio_submit(mixbuffer, AUDIO_BUFFER_LENGTH); + // TODO: + // rg_audio_submit(mixbuffer, AUDIO_BUFFER_LENGTH); + } } void I_InitSound(void) { - for (int i = 1; i < NUMSFX; i++) - { - if (S_sfx[i].lumpnum != -1) - sfx[i] = W_CacheLumpNum(S_sfx[i].lumpnum); - } + // TODO: + // for (int i = 1; i < NUMSFX; i++) + // { + // if (S_sfx[i].lumpnum != -1) + // sfx[i] = (const doom_sfx_t*)W_CacheLumpNum(S_sfx[i].lumpnum); + // } - music_player->init(snd_samplerate); - music_player->setvolume(snd_MusicVolume); + // TODO: + // music_player->init(snd_samplerate); + // music_player->setvolume(snd_MusicVolume); - rg_task_create("doom_sound", &soundTask, NULL, 2048, RG_TASK_PRIORITY_2, 1); + // TODO: + // rg_task_create("doom_sound", &soundTask, NULL, 2048, RG_TASK_PRIORITY_2, 1); } void I_ShutdownSound(void) { - music_player->shutdown(); + // music_player->shutdown(); } void I_PlaySong(int handle, int looping) { - music_player->play((void *)handle, looping); - musicPlaying = true; + // music_player->play((void *)handle, looping); + // musicPlaying = true; } void I_PauseSong(int handle) { - music_player->pause(); - musicPlaying = false; + // music_player->pause(); + // musicPlaying = false; } void I_ResumeSong(int handle) { - music_player->resume(); - musicPlaying = true; + // music_player->resume(); + // musicPlaying = true; } void I_StopSong(int handle) { - music_player->stop(); - musicPlaying = false; + // music_player->stop(); + // musicPlaying = false; } void I_UnRegisterSong(int handle) { - music_player->unregistersong((void *)handle); + // music_player->unregistersong((void *)handle); } int I_RegisterSong(const void *data, size_t len) @@ -381,167 +393,176 @@ int I_RegisterSong(const void *data, size_t len) size_t midlen; int handle = 0; - if (mus2mid(data, len, &mid, &midlen, 64) == 0) - handle = (int)music_player->registersong(mid, midlen); - else - handle = (int)music_player->registersong(data, len); + // if (mus2mid(data, len, &mid, &midlen, 64) == 0) + // handle = (int)music_player->registersong(mid, midlen); + // else + // handle = (int)music_player->registersong(data, len); - free(mid); + // free(mid); return handle; } void I_SetMusicVolume(int volume) { - music_player->setvolume(volume); + static auto& box = BoxEmu::get(); + box.volume(volume / 100.0f); } void I_StartTic(void) { - static int64_t last_time = 0; - static int32_t prev_joystick = 0x0000; - static int32_t rg_menu_delay = 0; - uint32_t joystick = rg_input_read_gamepad(); - uint32_t changed = prev_joystick ^ joystick; - event_t event = {0}; - - // Long press on menu will open retro-go's menu if needed, instead of DOOM's. - // This is still needed to quit (DOOM 2) and for the debug menu. We'll unify that mess soon... - if (joystick & (RG_KEY_MENU|RG_KEY_OPTION)) - { - if (joystick & RG_KEY_OPTION) - { - Z_FreeTags(PU_CACHE, PU_CACHE); // At this point the heap is usually full. Let's reclaim some! - rg_gui_options_menu(); - changed = 0; - } - else if (rg_menu_delay++ == TICRATE / 2) - { - Z_FreeTags(PU_CACHE, PU_CACHE); // At this point the heap is usually full. Let's reclaim some! - rg_gui_game_menu(); - } - realtic_clock_rate = app->speed * 100; - R_InitInterpolation(); - } - else - { - rg_menu_delay = 0; - } - - if (changed) - { - for (int i = 0; i < RG_COUNT(keymap); i++) - { - if (changed & keymap[i].mask) - { - event.type = (joystick & keymap[i].mask) ? ev_keydown : ev_keyup; - event.data1 = *keymap[i].key; - D_PostEvent(&event); - } - } - } - - rg_system_tick(rg_system_timer() - last_time); - last_time = rg_system_timer(); - prev_joystick = joystick; + // static int64_t last_time = 0; + // static int32_t prev_joystick = 0x0000; + // static int32_t rg_menu_delay = 0; + // uint32_t joystick = rg_input_read_gamepad(); + // uint32_t changed = prev_joystick ^ joystick; + // event_t event = {0}; + + // // Long press on menu will open retro-go's menu if needed, instead of DOOM's. + // // This is still needed to quit (DOOM 2) and for the debug menu. We'll unify that mess soon... + // if (joystick & (RG_KEY_MENU|RG_KEY_OPTION)) + // { + // if (joystick & RG_KEY_OPTION) + // { + // Z_FreeTags(PU_CACHE, PU_CACHE); // At this point the heap is usually full. Let's reclaim some! + // rg_gui_options_menu(); + // changed = 0; + // } + // else if (rg_menu_delay++ == TICRATE / 2) + // { + // Z_FreeTags(PU_CACHE, PU_CACHE); // At this point the heap is usually full. Let's reclaim some! + // rg_gui_game_menu(); + // } + // realtic_clock_rate = app->speed * 100; + // R_InitInterpolation(); + // } + // else + // { + // rg_menu_delay = 0; + // } + + // if (changed) + // { + // for (int i = 0; i < RG_COUNT(keymap); i++) + // { + // if (changed & keymap[i].mask) + // { + // event.type = (joystick & keymap[i].mask) ? ev_keydown : ev_keyup; + // event.data1 = *keymap[i].key; + // D_PostEvent(&event); + // } + // } + // } + + // rg_system_tick(rg_system_timer() - last_time); + // last_time = rg_system_timer(); + // prev_joystick = joystick; } void I_Init(void) { - // snd_channels = NUM_MIX_CHANNELS; - // snd_samplerate = AUDIO_SAMPLE_RATE; - // snd_MusicVolume = 15; - // snd_SfxVolume = 15; + snd_channels = NUM_MIX_CHANNELS; + snd_samplerate = AUDIO_SAMPLE_RATE; + snd_MusicVolume = 15; + snd_SfxVolume = 15; // usegamma = rg_settings_get_number(NS_APP, SETTING_GAMMA, 0); } +} // extern "C" - -void set_doom_video_original() { - scaled = false; - filled = false; - BoxEmu::get().native_size(320, 200); -} - -void set_doom_video_fit() { - scaled = true; - filled = false; - BoxEmu::get().native_size(320, 200); -} - -void set_doom_video_fill() { - scaled = false; - filled = true; - BoxEmu::get().native_size(320, 200); +void reset_doom() { + // Reset game state + // D_DoomLoop(); } void init_doom(const std::string& wad_filename, uint8_t *wad_data, size_t wad_data_size) { - if (!initialized) { - // Initialize system interface - if (!I_StartDisplay()) { - ESP_LOGE(TAG, "Failed to initialize display"); - return; - } + // Initialize system interface + if (!I_StartDisplay()) { + ESP_LOGE(TAG, "Failed to initialize display"); + return; + } - // Initialize graphics - I_InitGraphics(); + // Initialize graphics + I_InitGraphics(); - // Set native size and palette - BoxEmu::get().native_size(320, 200); - BoxEmu::get().palette(nullptr); + // Set native size and palette + BoxEmu::get().native_size(320, 200); + BoxEmu::get().palette(nullptr); - // Set audio sample rate - BoxEmu::get().audio_sample_rate(44100); + // Set audio sample rate + BoxEmu::get().audio_sample_rate(44100); - // Initialize sound - I_InitSound(); + // Initialize sound + I_InitSound(); - initialized = true; - } + fmt::print("Loading WAD: {}\n", wad_filename); - // Load WAD file - if (!D_AddFile(wad_filename.c_str())) { - ESP_LOGE(TAG, "Failed to load WAD file"); - return; - } + // myargv = (const char *[]){"doom", "-save", "/sdcard/doom", "-iwad", wad_filename.c_str()}; + myargv = new const char*[5]; + myargv[0] = "doom"; + myargv[1] = "-save"; + myargv[2] = "/sdcard/doom"; + myargv[3] = "-iwad"; + myargv[4] = wad_filename.c_str(); + myargc = 5; + + // myargv = (const char *[]){"doom", "-save", "/sdcard/doom", "-iwad", wad_filename.c_str(), "-file", "/sdcard/doom/prboom.wad"}; + // myargc = 7; // Initialize game - D_DoomMain(); + Z_Init(); + D_DoomMainSetup(); + + fmt::print("Loaded WAD: {}\n", wad_filename); - frame_counter = 0; reset_frame_time(); } void run_doom_rom() { auto start = esp_timer_get_time(); - // Handle input - auto state = BoxEmu::get().gamepad_state(); - - // // Map gamepad to Doom controls - // if (state.up) I_HandleKey(KEY_UPARROW); - // if (state.down) I_HandleKey(KEY_DOWNARROW); - // if (state.left) I_HandleKey(KEY_LEFTARROW); - // if (state.right) I_HandleKey(KEY_RIGHTARROW); - // if (state.a) I_HandleKey(KEY_FIRE); - // if (state.b) I_HandleKey(KEY_USE); - - // Run one frame - if ((frame_counter % 2) == 0) { - // Start frame - I_StartFrame(); - - // Update game state - D_DoomLoop(); - - // Finish frame - I_FinishUpdate(); - - // Push frame to display - BoxEmu::get().push_frame((uint8_t*)I_VideoBuffer); - } + // // Handle input + // auto state = BoxEmu::get().gamepad_state(); - // Update frame counter - frame_counter++; + // // // Map gamepad to Doom controls + // // if (state.up) I_HandleKey(KEY_UPARROW); + // // if (state.down) I_HandleKey(KEY_DOWNARROW); + // // if (state.left) I_HandleKey(KEY_LEFTARROW); + // // if (state.right) I_HandleKey(KEY_RIGHTARROW); + // // if (state.a) I_HandleKey(KEY_FIRE); + // // if (state.b) I_HandleKey(KEY_USE); + + // // Update game state + // // From: + // // D_DoomLoop(); + + WasRenderedInTryRunTics = false; + // frame syncronous IO operations + I_StartFrame (); + + if (ffmap == gamemap) ffmap = 0; + + // process one or more tics + if (singletics) + { + I_StartTic (); + G_BuildTiccmd (&netcmds[consoleplayer][maketic%BACKUPTICS]); + if (advancedemo) + D_DoAdvanceDemo (); + M_Ticker (); + G_Ticker (); + gametic++; + maketic++; + } + else + TryRunTics (); // will run at least one tic + + // killough 3/16/98: change consoleplayer to displayplayer + if (players[displayplayer].mo) // cph 2002/08/10 + S_UpdateSounds(players[displayplayer].mo);// move positional sounds + + // Update display, next frame, with current state. + if (!movement_smooth || !WasRenderedInTryRunTics || gamestate != wipegamestate) + D_Display(); // Handle timing auto end = esp_timer_get_time(); @@ -556,41 +577,32 @@ void run_doom_rom() { void load_doom(std::string_view save_path) { if (save_path.size()) { - G_LoadGame(save_path.data()); + // TODO: + // G_LoadGame(save_path.data()); } } void save_doom(std::string_view save_path) { if (save_path.size()) { - G_SaveGame(save_path.data()); + // TODO: + // G_SaveGame(save_path.data()); } } std::vector get_doom_video_buffer() { std::vector frame(320 * 200 * 2); - memcpy(frame.data(), I_VideoBuffer, frame.size()); + memcpy(frame.data(), framebuffer, frame.size()); return frame; } -void start_doom_tasks() { - doom_resume_video_task(); - doom_resume_audio_task(); -} - -void stop_doom_tasks() { - doom_pause_video_task(); - doom_pause_audio_task(); -} - void deinit_doom() { - if (initialized) { - // Shutdown graphics - I_ShutdownGraphics(); + // Shutdown graphics + // I_ShutdownGraphics(); - // End display - I_EndDisplay(); + // End display + I_EndDisplay(); - initialized = false; - } + Z_FreeTags(0, PU_MAX); + BoxEmu::get().audio_sample_rate(48000); } diff --git a/main/cart.hpp b/main/cart.hpp index 135c08b..03cdbc0 100644 --- a/main/cart.hpp +++ b/main/cart.hpp @@ -24,6 +24,7 @@ class Cart { /// Configuration for the Cart class struct Config { RomInfo info; ///< rom info + bool copy_romdata = true; ///< copy the romdata to the cart std::shared_ptr> display; ///< display pointer for the menu espp::Logger::Verbosity verbosity = espp::Logger::Verbosity::WARN; ///< verbosity level for the logger }; @@ -38,9 +39,16 @@ class Cart { logger_.info("ctor"); // clear the screen BoxEmu::get().clear_screen(); + // copy the romdata - rom_size_bytes_ = BoxEmu::get().copy_file_to_romdata(get_rom_filename()); - romdata_ = BoxEmu::get().romdata(); + if (config.copy_romdata) { + logger_.info("Copying romdata..."); + rom_size_bytes_ = BoxEmu::get().copy_file_to_romdata(get_rom_filename()); + romdata_ = BoxEmu::get().romdata(); + } else { + logger_.info("Not copying romdata..."); + } + // create the menu menu_ = std::make_unique

    (Menu::Config{ .paused_image_path = get_paused_image_path(), diff --git a/main/carts.hpp b/main/carts.hpp index 94930d7..43d849b 100644 --- a/main/carts.hpp +++ b/main/carts.hpp @@ -4,6 +4,7 @@ #include "display.hpp" +#include "doom_cart.hpp" #include "gbc_cart.hpp" #include "genesis_cart.hpp" #include "msx_cart.hpp" @@ -46,6 +47,13 @@ std::unique_ptr make_cart(const RomInfo& info, std::shared_ptr(Cart::Config{ + .info = info, + .copy_romdata = false, + .display = display, + .verbosity = espp::Logger::Verbosity::WARN + }); default: return nullptr; } diff --git a/main/doom_cart.hpp b/main/doom_cart.hpp index a36b845..5021794 100644 --- a/main/doom_cart.hpp +++ b/main/doom_cart.hpp @@ -14,7 +14,6 @@ class DoomCart : public Cart { } virtual ~DoomCart() override { - logger_.info("~DoomCart()"); deinit(); } @@ -22,9 +21,7 @@ class DoomCart : public Cart { virtual void reset() override { Cart::reset(); #if defined(ENABLE_DOOM) - // Doom doesn't have a reset function, we'll just reinitialize - deinit(); - init(); + reset_doom(); #endif } @@ -46,7 +43,6 @@ class DoomCart : public Cart { void init() { #if defined(ENABLE_DOOM) - logger_.info("doom::init()"); init_doom(get_rom_filename(), romdata_, rom_size_bytes_); #endif } @@ -75,7 +71,6 @@ class DoomCart : public Cart { Cart::pre_menu(); #if defined(ENABLE_DOOM) logger_.info("doom::pre_menu()"); - stop_doom_tasks(); #endif } @@ -84,14 +79,13 @@ class DoomCart : public Cart { Cart::post_menu(); #if defined(ENABLE_DOOM) logger_.info("doom::post_menu()"); - start_doom_tasks(); #endif } virtual void set_original_video_setting() override { #if defined(ENABLE_DOOM) logger_.info("doom::video: original"); - set_doom_video_original(); + BoxEmu::get().display_size(DOOM_WIDTH, DOOM_HEIGHT); #endif } @@ -110,19 +104,21 @@ class DoomCart : public Cart { virtual void set_fit_video_setting() override { #if defined(ENABLE_DOOM) - logger_.info("doom::video: fit"); - set_doom_video_fit(); + logger_.info("gbc::video: fit"); + float x_scale = static_cast(SCREEN_HEIGHT) / static_cast(DOOM_HEIGHT); + int new_width = static_cast(static_cast(DOOM_WIDTH) * x_scale); + BoxEmu::get().display_size(new_width, SCREEN_HEIGHT); #endif } virtual void set_fill_video_setting() override { #if defined(ENABLE_DOOM) logger_.info("doom::video: fill"); - set_doom_video_fill(); + BoxEmu::get().display_size(SCREEN_WIDTH, SCREEN_HEIGHT); #endif } virtual std::string get_save_extension() const override { return "_doom.sav"; } -}; \ No newline at end of file +}; From dd39274512c8251d076f2180c786204c801cd7c8 Mon Sep 17 00:00:00 2001 From: William Emfinger Date: Mon, 14 Apr 2025 08:44:36 -0500 Subject: [PATCH 04/39] fleshing out --- components/doom/prboom/d_main.c | 55 ++++++------ components/doom/src/doom.cpp | 148 ++++++++++++++------------------ 2 files changed, 93 insertions(+), 110 deletions(-) diff --git a/components/doom/prboom/d_main.c b/components/doom/prboom/d_main.c index 2227002..d147cc6 100644 --- a/components/doom/prboom/d_main.c +++ b/components/doom/prboom/d_main.c @@ -541,8 +541,6 @@ bool D_AddFile(const char *file) return false; } - lprintf(LO_INFO, "D_AddFile: Adding %s\n", file); - wadfiles[numwadfiles++] = (wadfile_info_t){ .name = strdup(file), .handle = NULL, @@ -566,16 +564,22 @@ bool D_AddFile(const char *file) // jff 4/19/98 Add routine to test IWAD for validity and determine // the gamemode from it. Also note if DOOM II, whether secret levels exist // CPhipps - const char* for iwadname, made static -static void CheckIWAD(const char *iwadname,GameMode_t *gmode,boolean *hassec) +static void CheckIWAD(wadfile_info_t *iwad,GameMode_t *gmode,boolean *hassec) { int ud=0,rg=0,sw=0,cm=0,sc=0; - wadinfo_t header; - FILE *fp; + wadinfo_t header = {0}; + FILE *fp = NULL; + + if (!iwad) + I_Error("CheckIWAD: Can't open NULL IWAD"); - if (!(fp = fopen(iwadname, "rb"))) - I_Error("CheckIWAD: Can't open IWAD %s", iwadname); + if (iwad->data) + memcpy(&header, iwad->data, sizeof(header)); + else if ((fp = fopen(iwad->name, "rb"))) + fread(&header, sizeof(header), 1, fp); + else + I_Error("CheckIWAD: Can't open IWAD: %s", iwad->name); - fread(&header, sizeof(header), 1, fp); // read IWAD header if (!strncmp(header.identification, "IWAD", 4)) { @@ -587,9 +591,13 @@ static void CheckIWAD(const char *iwadname,GameMode_t *gmode,boolean *hassec) header.infotableofs = LONG(header.infotableofs); length = header.numlumps; fileinfo = calloc(sizeof(filelump_t), length); - fseek(fp, header.infotableofs, SEEK_SET); - fread(fileinfo, sizeof(filelump_t), length, fp); + if (iwad->data) + memcpy(fileinfo, iwad->data + header.infotableofs, sizeof(filelump_t) * length); + else if (fseek(fp, header.infotableofs, SEEK_SET) == 0) + fread(fileinfo, sizeof(filelump_t), length, fp); + else + I_Error("CheckIWAD: Can't read IWAD: %s", iwad->name); // scan directory for levelname lumps while (length--) @@ -621,7 +629,10 @@ static void CheckIWAD(const char *iwadname,GameMode_t *gmode,boolean *hassec) free(fileinfo); } else // missing IWAD tag in header - I_Error("CheckIWAD: IWAD tag %s not present", iwadname); + I_Error("CheckIWAD: IWAD tag %s not present", iwad->name); + + if (fp) + fclose(fp); // Determine game mode from levels present // Must be a full set for whichever mode is present @@ -670,7 +681,7 @@ static void L_SetupConsoleMasks(void) { void D_DoomMainSetup(void) { const char *doomverstr; - const char *iwad; + wadfile_info_t *iwad; int p,slot; L_SetupConsoleMasks(); @@ -683,15 +694,9 @@ void D_DoomMainSetup(void) lprintf(LO_INFO, "M_LoadDefaults: Load system defaults.\n"); M_LoadDefaults(); // load before initing other systems - lprintf(LO_INFO, "M_Init: try loading iwad from command line.\n"); - // Try loading iwad specified as parameter - if ((p = M_CheckParm("-iwad")) && (++p < myargc)) { - lprintf(LO_INFO, "M_Init: loading iwad from command line: %s\n", myargv[p]); + if ((p = M_CheckParm("-iwad")) && (++p < myargc)) D_AddFile(myargv[p]); - } - - lprintf(LO_INFO, "M_Init: try loading iwad from current directory.\n"); // If that fails then try known standard iwad names for (int i = 0; !numwadfiles && standard_iwads[i]; i++) @@ -700,12 +705,10 @@ void D_DoomMainSetup(void) if (!numwadfiles) I_Error("IWAD not found\n"); - iwad = wadfiles[numwadfiles-1].name; - - lprintf(LO_INFO, "CheckIWAD: Checking IWAD %s.\n", iwad); + iwad = &wadfiles[numwadfiles-1]; CheckIWAD(iwad, &gamemode, &haswolflevels); - lprintf(LO_CONFIRM, "IWAD found: %s\n", iwad); + lprintf(LO_CONFIRM, "IWAD found: %s\n", iwad->name); switch (gamemode) { @@ -722,11 +725,11 @@ void D_DoomMainSetup(void) gamemission = doom; break; case commercial: // Ty 08/27/98 - fixed gamemode vs gamemission - p = strlen(iwad); - if (p>=7 && !strncasecmp(iwad+p-7,"tnt.wad",7)) { + p = strlen(iwad->name); + if (p>=7 && !strncasecmp(iwad->name+p-7,"tnt.wad",7)) { doomverstr = "DOOM 2: TNT - Evilution"; gamemission = pack_tnt; - } else if (p>=12 && !strncasecmp(iwad+p-12,"plutonia.wad",12)) { + } else if (p>=12 && !strncasecmp(iwad->name+p-12,"plutonia.wad",12)) { doomverstr = "DOOM 2: Plutonia Experiment"; gamemission = pack_plut; } else { diff --git a/components/doom/src/doom.cpp b/components/doom/src/doom.cpp index 34629a5..fcd2f16 100644 --- a/components/doom/src/doom.cpp +++ b/components/doom/src/doom.cpp @@ -16,6 +16,7 @@ static std::atomic frame_complete = false; static bool initialized = false; static bool unlock = false; +static const char *doom_argv[10]; // prboom includes extern "C" { @@ -116,7 +117,9 @@ static const struct {int mask; int *key;} keymap[] = { void I_StartFrame(void) { - // + // swap buffers + currentBuffer = currentBuffer ? 0 : 1; + framebuffer = displayBuffer[currentBuffer]; } void I_UpdateNoBlit(void) @@ -129,10 +132,6 @@ void I_FinishUpdate(void) static auto& box = BoxEmu::get(); box.push_frame(framebuffer); - // swap buffers - currentBuffer = currentBuffer ? 0 : 1; - framebuffer = displayBuffer[currentBuffer]; - frame_complete = true; } @@ -156,6 +155,11 @@ void I_SetPalette(int pal) void I_InitGraphics(void) { + displayBuffer[0] = (uint16_t*)BoxEmu::get().frame_buffer0(); + displayBuffer[1] = (uint16_t*)BoxEmu::get().frame_buffer1(); + currentBuffer = 0; + framebuffer = displayBuffer[currentBuffer]; + // set first three to standard values for (int i = 0; i < 3; i++) { @@ -411,52 +415,30 @@ void I_SetMusicVolume(int volume) void I_StartTic(void) { - // static int64_t last_time = 0; - // static int32_t prev_joystick = 0x0000; - // static int32_t rg_menu_delay = 0; - // uint32_t joystick = rg_input_read_gamepad(); - // uint32_t changed = prev_joystick ^ joystick; - // event_t event = {0}; - - // // Long press on menu will open retro-go's menu if needed, instead of DOOM's. - // // This is still needed to quit (DOOM 2) and for the debug menu. We'll unify that mess soon... - // if (joystick & (RG_KEY_MENU|RG_KEY_OPTION)) - // { - // if (joystick & RG_KEY_OPTION) - // { - // Z_FreeTags(PU_CACHE, PU_CACHE); // At this point the heap is usually full. Let's reclaim some! - // rg_gui_options_menu(); - // changed = 0; - // } - // else if (rg_menu_delay++ == TICRATE / 2) - // { - // Z_FreeTags(PU_CACHE, PU_CACHE); // At this point the heap is usually full. Let's reclaim some! - // rg_gui_game_menu(); - // } - // realtic_clock_rate = app->speed * 100; - // R_InitInterpolation(); - // } - // else - // { - // rg_menu_delay = 0; - // } + static int64_t last_time = 0; + static int32_t prev_joystick = 0x0000; - // if (changed) - // { - // for (int i = 0; i < RG_COUNT(keymap); i++) - // { - // if (changed & keymap[i].mask) - // { - // event.type = (joystick & keymap[i].mask) ? ev_keydown : ev_keyup; - // event.data1 = *keymap[i].key; - // D_PostEvent(&event); - // } - // } - // } + static auto& box = BoxEmu::get(); + auto joystick = box.gamepad_state().buttons; + + uint32_t changed = prev_joystick ^ joystick; + event_t event = {}; + + if (changed) + { + for (int i = 0; i < std::size(keymap); i++) + { + if (changed & keymap[i].mask) + { + event.type = (joystick & keymap[i].mask) ? ev_keydown : ev_keyup; + event.data1 = *keymap[i].key; + D_PostEvent(&event); + } + } + } - // rg_system_tick(rg_system_timer() - last_time); - // last_time = rg_system_timer(); - // prev_joystick = joystick; + last_time = esp_timer_get_time(); + prev_joystick = joystick; } void I_Init(void) @@ -496,17 +478,16 @@ void init_doom(const std::string& wad_filename, uint8_t *wad_data, size_t wad_da fmt::print("Loading WAD: {}\n", wad_filename); - // myargv = (const char *[]){"doom", "-save", "/sdcard/doom", "-iwad", wad_filename.c_str()}; - myargv = new const char*[5]; - myargv[0] = "doom"; - myargv[1] = "-save"; - myargv[2] = "/sdcard/doom"; - myargv[3] = "-iwad"; - myargv[4] = wad_filename.c_str(); + myargv = doom_argv; myargc = 5; - - // myargv = (const char *[]){"doom", "-save", "/sdcard/doom", "-iwad", wad_filename.c_str(), "-file", "/sdcard/doom/prboom.wad"}; - // myargc = 7; + doom_argv[0] = "doom"; + doom_argv[1] = "-save"; + doom_argv[2] = "/sdcard/doom"; + doom_argv[3] = "-iwad"; + doom_argv[4] = wad_filename.c_str(); + // doom_argv[5] = "-file"; + // doom_argv[6] = pwad; + doom_argv[myargc] = 0; // Initialize game Z_Init(); @@ -535,44 +516,43 @@ void run_doom_rom() { // // From: // // D_DoomLoop(); - WasRenderedInTryRunTics = false; - // frame syncronous IO operations - I_StartFrame (); + WasRenderedInTryRunTics = false; + // frame syncronous IO operations + I_StartFrame (); - if (ffmap == gamemap) ffmap = 0; + if (ffmap == gamemap) ffmap = 0; - // process one or more tics - if (singletics) - { - I_StartTic (); - G_BuildTiccmd (&netcmds[consoleplayer][maketic%BACKUPTICS]); - if (advancedemo) + // process one or more tics + if (singletics) { + I_StartTic (); + G_BuildTiccmd (&netcmds[consoleplayer][maketic%BACKUPTICS]); + if (advancedemo) D_DoAdvanceDemo (); - M_Ticker (); - G_Ticker (); - gametic++; - maketic++; - } - else + M_Ticker (); + G_Ticker (); + gametic++; + maketic++; + } else { TryRunTics (); // will run at least one tic + } - // killough 3/16/98: change consoleplayer to displayplayer - if (players[displayplayer].mo) // cph 2002/08/10 + // killough 3/16/98: change consoleplayer to displayplayer + if (players[displayplayer].mo) // cph 2002/08/10 S_UpdateSounds(players[displayplayer].mo);// move positional sounds - // Update display, next frame, with current state. - if (!movement_smooth || !WasRenderedInTryRunTics || gamestate != wipegamestate) + // Update display, next frame, with current state. + if (!movement_smooth || !WasRenderedInTryRunTics || gamestate != wipegamestate) D_Display(); // Handle timing auto end = esp_timer_get_time(); uint64_t elapsed = end - start; update_frame_time(elapsed); - static constexpr uint64_t max_frame_time = 1000000 / 60; - if (!unlock && elapsed < max_frame_time) { - auto sleep_time = (max_frame_time - elapsed) / 1e3; - std::this_thread::sleep_for(sleep_time * std::chrono::milliseconds(1)); - } + // static constexpr uint64_t max_frame_time = 1000000 / 60; + // if (!unlock && elapsed < max_frame_time) { + // auto sleep_time = (max_frame_time - elapsed) / 1e3; + // std::this_thread::sleep_for(sleep_time * std::chrono::milliseconds(1)); + // } } void load_doom(std::string_view save_path) { From 5f13861db5a85e80b36f17f9ff541afcaf2f61da Mon Sep 17 00:00:00 2001 From: William Emfinger Date: Mon, 14 Apr 2025 10:52:07 -0500 Subject: [PATCH 05/39] wip audio video --- components/doom/src/doom.cpp | 277 ++++++++++++++++++----------------- 1 file changed, 143 insertions(+), 134 deletions(-) diff --git a/components/doom/src/doom.cpp b/components/doom/src/doom.cpp index fcd2f16..e193690 100644 --- a/components/doom/src/doom.cpp +++ b/components/doom/src/doom.cpp @@ -11,9 +11,11 @@ static uint16_t* framebuffer = nullptr; static uint16_t* audio_buffers[2]; static uint8_t currentAudioBuffer = 0; static uint16_t* audio_buffer = nullptr; -static std::atomic frame_complete = false; -static bool initialized = false; +static uint16_t doom_palette[256]; + +static std::unique_ptr audio_task; + static bool unlock = false; static const char *doom_argv[10]; @@ -38,13 +40,15 @@ extern "C" { #include #include #include +#include +#include +#include ///////////////////////////////////////////// // Copied from retro-go/prboom-go/main/main.c ///////////////////////////////////////////// -// 22050 reduces perf by almost 15% but 11025 sounds awful on the G32... -#define AUDIO_SAMPLE_RATE 11025 +#define AUDIO_SAMPLE_RATE 22050 #define AUDIO_BUFFER_LENGTH (AUDIO_SAMPLE_RATE / TICRATE + 1) #define NUM_MIX_CHANNELS 8 @@ -72,8 +76,8 @@ typedef struct { static channel_t channels[NUM_MIX_CHANNELS]; static const doom_sfx_t *sfx[NUMSFX]; static uint16_t mixbuffer[AUDIO_BUFFER_LENGTH]; -// static const music_player_t *music_player = &opl_synth_player; -// static bool musicPlaying = false; +static const music_player_t *music_player = &opl_synth_player; +static bool musicPlaying = false; static const struct {int mask; int *key;} keymap[] = { {(int)GamepadState::Button::UP, &key_up}, @@ -117,22 +121,20 @@ static const struct {int mask; int *key;} keymap[] = { void I_StartFrame(void) { - // swap buffers - currentBuffer = currentBuffer ? 0 : 1; - framebuffer = displayBuffer[currentBuffer]; } void I_UpdateNoBlit(void) { - // } void I_FinishUpdate(void) { static auto& box = BoxEmu::get(); box.push_frame(framebuffer); - - frame_complete = true; + // swap buffers + currentBuffer = currentBuffer ? 0 : 1; + framebuffer = displayBuffer[currentBuffer]; + screens[0].data = (uint8_t*)framebuffer; } bool I_StartDisplay(void) @@ -142,19 +144,31 @@ bool I_StartDisplay(void) void I_EndDisplay(void) { - // TODO: } void I_SetPalette(int pal) { - uint16_t *palette = (uint16_t*)V_BuildPalette(pal, 16); - // Z_Free(palette); static auto& box = BoxEmu::get(); - box.palette(palette); + uint16_t *palette = (uint16_t*)V_BuildPalette(pal, 16); + if (palette == NULL) { + box.palette(NULL); + return; + } + // copy palette to doom_palette + for (int i = 0; i < 256; i++) { + doom_palette[i] = palette[i]; + } + // release the allocated memory + Z_Free(palette); + // set the palette + box.palette(doom_palette); } void I_InitGraphics(void) { + // Set native size and palette + BoxEmu::get().native_size(320, 200); + displayBuffer[0] = (uint16_t*)BoxEmu::get().frame_buffer0(); displayBuffer[1] = (uint16_t*)BoxEmu::get().frame_buffer1(); currentBuffer = 0; @@ -259,7 +273,6 @@ void I_StopSound(int handle) bool I_SoundIsPlaying(int handle) { - // return (handle < NUM_MIX_CHANNELS && channels[handle].sfx); return false; } @@ -271,124 +284,137 @@ bool I_AnySoundStillPlaying(void) return false; } -static void soundTask(void *arg) -{ - while (1) +static bool soundTask() { + bool haveMusic = snd_MusicVolume > 0 && musicPlaying; + bool haveSFX = snd_SfxVolume > 0 && I_AnySoundStillPlaying(); + + if (haveMusic) { - int16_t *audioBuffer = (int16_t *)mixbuffer; - int16_t *audioBufferEnd = audioBuffer + AUDIO_BUFFER_LENGTH * 2; - int16_t stream[2]; + music_player->render(mixbuffer, AUDIO_BUFFER_LENGTH); + } - while (audioBuffer < audioBufferEnd) + if (haveSFX) { - int totalSample = 0; - int totalSources = 0; - int sample; - - if (snd_SfxVolume > 0) - { - for (int i = 0; i < NUM_MIX_CHANNELS; i++) + int16_t *audioBuffer = (int16_t *)mixbuffer; + int16_t *audioBufferEnd = audioBuffer + AUDIO_BUFFER_LENGTH; + while (audioBuffer < audioBufferEnd) { - channel_t *chan = &channels[i]; - if (!chan->sfx) - continue; - - size_t pos = (size_t)(chan->pos++ * chan->factor); - - if (pos >= chan->sfx->length) - { - chan->sfx = NULL; - } - else if ((sample = chan->sfx->samples[pos])) - { - totalSample += sample - 127; - totalSources++; - } + int totalSample = 0; + int totalSources = 0; + int sample; + + for (int i = 0; i < NUM_MIX_CHANNELS; i++) + { + channel_t *chan = &channels[i]; + if (!chan->sfx) + continue; + + size_t pos = (size_t)(chan->pos++ * chan->factor); + + if (pos >= chan->sfx->length) + { + chan->sfx = NULL; + } + else if ((sample = chan->sfx->samples[pos])) + { + totalSample += sample - 127; + totalSources++; + } + } + + totalSample <<= 7; + totalSample /= (16 - snd_SfxVolume); + + if (haveMusic) + { + totalSample += *audioBuffer; + totalSources += (totalSources == 0); + } + + if (totalSources > 0) + totalSample /= totalSources; + + if (totalSample > 32767) + totalSample = 32767; + else if (totalSample < -32768) + totalSample = -32768; + + *audioBuffer++ = totalSample; + // *audioBuffer++ = totalSample; } - - totalSample <<= 7; - totalSample /= (16 - snd_SfxVolume); - } - - // if (musicPlaying && snd_MusicVolume > 0) - // { - // music_player->render(&stream, 1); // It returns 2 (stereo) 16bits values per sample - // sample = stream[0]; // [0] and [1] are the same value - // if (sample > 0) - // { - // totalSample += sample / (16 - snd_MusicVolume); - // if (totalSources == 0) - // totalSources = 1; - // } - // } - - if (totalSources > 0) - totalSample /= totalSources; - - if (totalSample > 32767) - totalSample = 32767; - else if (totalSample < -32768) - totalSample = -32768; - - *audioBuffer++ = totalSample; - *audioBuffer++ = totalSample; } - // TODO: - // rg_audio_submit(mixbuffer, AUDIO_BUFFER_LENGTH); + if (!haveMusic && !haveSFX) + { + memset(mixbuffer, 0, sizeof(mixbuffer)); + } - } + // rg_audio_submit(mixbuffer, AUDIO_BUFFER_LENGTH); + static auto& box = BoxEmu::get(); + box.play_audio((const uint8_t*)mixbuffer, AUDIO_BUFFER_LENGTH * sizeof(int16_t)); + std::this_thread::sleep_for(std::chrono::microseconds(1000 / 60)); + return false; } void I_InitSound(void) { - // TODO: - // for (int i = 1; i < NUMSFX; i++) - // { - // if (S_sfx[i].lumpnum != -1) - // sfx[i] = (const doom_sfx_t*)W_CacheLumpNum(S_sfx[i].lumpnum); - // } + for (int i = 1; i < NUMSFX; i++) + { + if (S_sfx[i].lumpnum != -1) + sfx[i] = (const doom_sfx_t*)W_CacheLumpNum(S_sfx[i].lumpnum); + } - // TODO: - // music_player->init(snd_samplerate); - // music_player->setvolume(snd_MusicVolume); + music_player->init(snd_samplerate); + music_player->setvolume(snd_MusicVolume); + + auto& box = BoxEmu::get(); + box.audio_sample_rate(snd_samplerate); - // TODO: // rg_task_create("doom_sound", &soundTask, NULL, 2048, RG_TASK_PRIORITY_2, 1); + // espp::task::run_on_core_nonblocking(soundTask, 1, 2048, 10, "doom_sound"); + audio_task = espp::Task::make_unique(espp::Task::Config{ + .callback = soundTask, + .task_config = { + .name = "doom_sound", + .stack_size_bytes = 2048, + .priority = 10, + } + }); } void I_ShutdownSound(void) { - // music_player->shutdown(); + music_player->shutdown(); + audio_task.reset(); } void I_PlaySong(int handle, int looping) { - // music_player->play((void *)handle, looping); - // musicPlaying = true; + music_player->play((void *)handle, looping); + musicPlaying = true; } void I_PauseSong(int handle) { - // music_player->pause(); - // musicPlaying = false; + music_player->pause(); + musicPlaying = false; } void I_ResumeSong(int handle) { - // music_player->resume(); - // musicPlaying = true; + music_player->resume(); + musicPlaying = true; } void I_StopSong(int handle) { - // music_player->stop(); - // musicPlaying = false; + music_player->stop(); + musicPlaying = false; } void I_UnRegisterSong(int handle) { - // music_player->unregistersong((void *)handle); + music_player->unregistersong((void *)handle); } int I_RegisterSong(const void *data, size_t len) @@ -397,12 +423,12 @@ int I_RegisterSong(const void *data, size_t len) size_t midlen; int handle = 0; - // if (mus2mid(data, len, &mid, &midlen, 64) == 0) - // handle = (int)music_player->registersong(mid, midlen); - // else - // handle = (int)music_player->registersong(data, len); + if (mus2mid((const byte*)data, len, &mid, &midlen, 64) == 0) + handle = (int)music_player->registersong(mid, midlen); + else + handle = (int)music_player->registersong(data, len); - // free(mid); + free(mid); return handle; } @@ -463,19 +489,6 @@ void init_doom(const std::string& wad_filename, uint8_t *wad_data, size_t wad_da return; } - // Initialize graphics - I_InitGraphics(); - - // Set native size and palette - BoxEmu::get().native_size(320, 200); - BoxEmu::get().palette(nullptr); - - // Set audio sample rate - BoxEmu::get().audio_sample_rate(44100); - - // Initialize sound - I_InitSound(); - fmt::print("Loading WAD: {}\n", wad_filename); myargv = doom_argv; @@ -501,20 +514,9 @@ void init_doom(const std::string& wad_filename, uint8_t *wad_data, size_t wad_da void run_doom_rom() { auto start = esp_timer_get_time(); - // // Handle input - // auto state = BoxEmu::get().gamepad_state(); - - // // // Map gamepad to Doom controls - // // if (state.up) I_HandleKey(KEY_UPARROW); - // // if (state.down) I_HandleKey(KEY_DOWNARROW); - // // if (state.left) I_HandleKey(KEY_LEFTARROW); - // // if (state.right) I_HandleKey(KEY_RIGHTARROW); - // // if (state.a) I_HandleKey(KEY_FIRE); - // // if (state.b) I_HandleKey(KEY_USE); - - // // Update game state - // // From: - // // D_DoomLoop(); + // Update game state + // From: + // D_DoomLoop(); WasRenderedInTryRunTics = false; // frame syncronous IO operations @@ -571,18 +573,25 @@ void save_doom(std::string_view save_path) { std::vector get_doom_video_buffer() { std::vector frame(320 * 200 * 2); - memcpy(frame.data(), framebuffer, frame.size()); + // use the palette to convert the framebuffer to RGB565 + const uint8_t *buf = (const uint8_t*)framebuffer; + const uint16_t *palette = BoxEmu::get().palette(); + if (palette) { + for (int i = 0; i < 320 * 200; i++) { + uint8_t pal_index = buf[i]; + uint16_t color = palette[pal_index]; + frame[i * 2] = color & 0xFF; + frame[i * 2 + 1] = (color >> 8) & 0xFF; + } + } return frame; } void deinit_doom() { - // Shutdown graphics - // I_ShutdownGraphics(); - // End display I_EndDisplay(); - + // Free memory Z_FreeTags(0, PU_MAX); - + // reset audio state BoxEmu::get().audio_sample_rate(48000); } From 59a17a06c1c8f5538624f93494876d6d4fb0e559 Mon Sep 17 00:00:00 2001 From: William Emfinger Date: Mon, 14 Apr 2025 16:53:49 -0500 Subject: [PATCH 06/39] working gfx display --- components/doom/src/doom.cpp | 14 ++++++++++---- main/doom_cart.hpp | 2 +- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/components/doom/src/doom.cpp b/components/doom/src/doom.cpp index e193690..00f6046 100644 --- a/components/doom/src/doom.cpp +++ b/components/doom/src/doom.cpp @@ -166,8 +166,10 @@ void I_SetPalette(int pal) void I_InitGraphics(void) { + fmt::print("Init graphics\n"); + // Set native size and palette - BoxEmu::get().native_size(320, 200); + BoxEmu::get().native_size(SCREENWIDTH, SCREENHEIGHT); displayBuffer[0] = (uint16_t*)BoxEmu::get().frame_buffer0(); displayBuffer[1] = (uint16_t*)BoxEmu::get().frame_buffer1(); @@ -352,7 +354,7 @@ static bool soundTask() { // rg_audio_submit(mixbuffer, AUDIO_BUFFER_LENGTH); static auto& box = BoxEmu::get(); box.play_audio((const uint8_t*)mixbuffer, AUDIO_BUFFER_LENGTH * sizeof(int16_t)); - std::this_thread::sleep_for(std::chrono::microseconds(1000 / 60)); + // std::this_thread::sleep_for(std::chrono::microseconds(1000 / 60)); return false; } @@ -489,6 +491,9 @@ void init_doom(const std::string& wad_filename, uint8_t *wad_data, size_t wad_da return; } + SCREENWIDTH = MAX_SCREENWIDTH; + SCREENHEIGHT = MAX_SCREENHEIGHT; + fmt::print("Loading WAD: {}\n", wad_filename); myargv = doom_argv; @@ -572,12 +577,13 @@ void save_doom(std::string_view save_path) { } std::vector get_doom_video_buffer() { - std::vector frame(320 * 200 * 2); + size_t num_pixels = SCREENWIDTH * SCREENHEIGHT; + std::vector frame(num_pixels * sizeof(uint16_t)); // use the palette to convert the framebuffer to RGB565 const uint8_t *buf = (const uint8_t*)framebuffer; const uint16_t *palette = BoxEmu::get().palette(); if (palette) { - for (int i = 0; i < 320 * 200; i++) { + for (int i = 0; i < num_pixels; i++) { uint8_t pal_index = buf[i]; uint16_t color = palette[pal_index]; frame[i * 2] = color & 0xFF; diff --git a/main/doom_cart.hpp b/main/doom_cart.hpp index 5021794..8e01877 100644 --- a/main/doom_cart.hpp +++ b/main/doom_cart.hpp @@ -64,7 +64,7 @@ class DoomCart : public Cart { protected: // DOOM static constexpr size_t DOOM_WIDTH = 320; - static constexpr size_t DOOM_HEIGHT = 200; + static constexpr size_t DOOM_HEIGHT = 240; // cppcheck-suppress uselessOverride virtual void pre_menu() override { From 56c33452f684333e4cdea7675781b5618aaa248a Mon Sep 17 00:00:00 2001 From: William Emfinger Date: Tue, 15 Apr 2025 14:30:13 -0500 Subject: [PATCH 07/39] fix inputs --- components/doom/src/doom.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/components/doom/src/doom.cpp b/components/doom/src/doom.cpp index 00f6046..c51514e 100644 --- a/components/doom/src/doom.cpp +++ b/components/doom/src/doom.cpp @@ -131,10 +131,10 @@ void I_FinishUpdate(void) { static auto& box = BoxEmu::get(); box.push_frame(framebuffer); - // swap buffers - currentBuffer = currentBuffer ? 0 : 1; - framebuffer = displayBuffer[currentBuffer]; - screens[0].data = (uint8_t*)framebuffer; + // // swap buffers + // currentBuffer = currentBuffer ? 0 : 1; + // framebuffer = displayBuffer[currentBuffer]; + // screens[0].data = (uint8_t*)framebuffer; } bool I_StartDisplay(void) @@ -447,7 +447,8 @@ void I_StartTic(void) static int32_t prev_joystick = 0x0000; static auto& box = BoxEmu::get(); - auto joystick = box.gamepad_state().buttons; + auto state = box.gamepad_state(); + auto joystick = state.buttons; uint32_t changed = prev_joystick ^ joystick; event_t event = {}; @@ -456,9 +457,10 @@ void I_StartTic(void) { for (int i = 0; i < std::size(keymap); i++) { - if (changed & keymap[i].mask) + auto key_bit = 1 << keymap[i].mask; + if (changed & key_bit) { - event.type = (joystick & keymap[i].mask) ? ev_keydown : ev_keyup; + event.type = (joystick & key_bit) ? ev_keydown : ev_keyup; event.data1 = *keymap[i].key; D_PostEvent(&event); } From 9f0274cdfcbaa51c915bfc6a855623b9bec1d207 Mon Sep 17 00:00:00 2001 From: William Emfinger Date: Wed, 16 Apr 2025 22:16:19 -0500 Subject: [PATCH 08/39] wip moving doom over to shared memory --- components/doom/prboom/dbopl.c | 17 +++--- components/doom/prboom/dbopl.h | 2 + components/doom/prboom/info.c | 3 +- components/doom/prboom/info.h | 2 +- components/doom/prboom/opl.c | 10 ++-- components/doom/prboom/p_mobj.c | 4 +- components/doom/prboom/r_plane.c | 21 ++++---- components/doom/prboom/r_plane.h | 6 ++- components/doom/src/doom.cpp | 90 ++++++++++++++++++++++++++++++-- 9 files changed, 122 insertions(+), 33 deletions(-) diff --git a/components/doom/prboom/dbopl.c b/components/doom/prboom/dbopl.c index dcd753b..f2864ef 100644 --- a/components/doom/prboom/dbopl.c +++ b/components/doom/prboom/dbopl.c @@ -64,7 +64,6 @@ #endif #define OPLRATE ((double)(14318180.0 / 288.0)) -#define TREMOLO_TABLE 52 //Try to use most precision for frequencies //Else try to keep different waves in synch @@ -173,12 +172,12 @@ static const Bit8u EnvelopeIncreaseTable[13] = { }; #if ( DBOPL_WAVE == WAVE_HANDLER ) || ( DBOPL_WAVE == WAVE_TABLELOG ) -static Bit16u ExpTable[ 256 ]; +Bit16u *ExpTable=NULL; // [ 256 ]; #endif #if ( DBOPL_WAVE == WAVE_HANDLER ) //PI table used by WAVEHANDLER -static Bit16u SinTable[ 512 ]; +Bit16u *SinTable = NULL; // [ 512 ]; #endif #if ( DBOPL_WAVE > WAVE_HANDLER ) @@ -191,7 +190,7 @@ static Bit16u SinTable[ 512 ]; //6 is just 0 shifted and masked -static Bit16s WaveTable[ 8 * 512 ]; +Bit16s *WaveTable = NULL; // [ 8 * 512 ]; //Distance into WaveTable the wave starts static const Bit16u WaveBaseTable[8] = { 0x000, 0x200, 0x200, 0x800, @@ -212,15 +211,15 @@ static const Bit16u WaveStartTable[8] = { #endif #if ( DBOPL_WAVE == WAVE_TABLEMUL ) -static Bit16u MulTable[ 384 ]; +Bit16u *MulTable = NULL; // [ 384 ]; #endif -static Bit8u KslTable[ 8 * 16 ]; -static Bit8u TremoloTable[ TREMOLO_TABLE ]; +Bit8u *KslTable = NULL; // [ 8 * 16 ]; +Bit8u *TremoloTable = NULL; // [ TREMOLO_TABLE ]; //Start of a channel behind the chip struct start -static Bit16u ChanOffsetTable[32]; +Bit16u *ChanOffsetTable = NULL; // [32]; //Start of an operator behind the chip struct start -static Bit16u OpOffsetTable[64]; +Bit16u *OpOffsetTable = NULL; // [64]; //The lower bits are the shift of the operator vibrato value //The highest bit is right shifted to generate -1 or 0 for negation diff --git a/components/doom/prboom/dbopl.h b/components/doom/prboom/dbopl.h index 0009448..cc31850 100644 --- a/components/doom/prboom/dbopl.h +++ b/components/doom/prboom/dbopl.h @@ -37,6 +37,8 @@ //Select the type of wave generator routine #define DBOPL_WAVE WAVE_TABLEMUL +#define TREMOLO_TABLE 52 + typedef struct _Chip Chip; typedef struct _Operator Operator; typedef struct _Channel Channel; diff --git a/components/doom/prboom/info.c b/components/doom/prboom/info.c index b66d72c..c18b0d4 100644 --- a/components/doom/prboom/info.c +++ b/components/doom/prboom/info.c @@ -1253,7 +1253,8 @@ state_t *states; // // This goes on for the next 3000+ lines... -mobjinfo_t mobjinfo[NUMMOBJTYPES] = { +mobjinfo_t *mobjinfo = NULL; // [NUMMOBJTYPES]; +const mobjinfo_t init_mobjinfo[NUMMOBJTYPES] = { { // MT_PLAYER -1, // doomednum S_PLAY, // spawnstate diff --git a/components/doom/prboom/info.h b/components/doom/prboom/info.h index 03e51ee..782e851 100644 --- a/components/doom/prboom/info.h +++ b/components/doom/prboom/info.h @@ -1496,6 +1496,6 @@ typedef struct } mobjinfo_t; /* See p_mobj_h for addition more technical info */ -extern mobjinfo_t mobjinfo[NUMMOBJTYPES]; +extern mobjinfo_t *mobjinfo; // [NUMMOBJTYPES]; #endif diff --git a/components/doom/prboom/opl.c b/components/doom/prboom/opl.c index 02771aa..5494735 100644 --- a/components/doom/prboom/opl.c +++ b/components/doom/prboom/opl.c @@ -72,7 +72,7 @@ static unsigned int pause_offset; // OPL software emulator structure. -static Chip opl_chip; +Chip *opl_chip=NULL; // Temporary mixing buffer used by the mixing callback. @@ -112,8 +112,8 @@ int OPL_Init (unsigned int rate) // Create the emulator structure: DBOPL_InitTables(); - Chip__Chip(&opl_chip); - Chip__Setup(&opl_chip, opl_sample_rate); + Chip__Chip(opl_chip); + Chip__Setup(opl_chip, opl_sample_rate); OPL_InitRegisters(); @@ -204,7 +204,7 @@ static void WriteRegister(unsigned int reg_num, unsigned int value) break; default: - Chip__WriteReg(&opl_chip, reg_num, (unsigned char) value); + Chip__WriteReg(opl_chip, reg_num, (unsigned char) value); break; } } @@ -252,7 +252,7 @@ static void FillBuffer(int16_t *buffer, unsigned int nsamples) // FIXME??? //assert(nsamples < opl_sample_rate); - Chip__GenerateBlock2(&opl_chip, nsamples, (int32_t*)mix_buffer); + Chip__GenerateBlock2(opl_chip, nsamples, (int32_t*)mix_buffer); // Mix into the destination buffer, doubling up into stereo. diff --git a/components/doom/prboom/p_mobj.c b/components/doom/prboom/p_mobj.c index 0f8c8e3..176bb37 100644 --- a/components/doom/prboom/p_mobj.c +++ b/components/doom/prboom/p_mobj.c @@ -876,8 +876,8 @@ mobj_t* P_SpawnMobj(fixed_t x,fixed_t y,fixed_t z,mobjtype_t type) } -static mapthing_t itemrespawnque[ITEMQUESIZE]; -static int itemrespawntime[ITEMQUESIZE]; +mapthing_t *itemrespawnque=NULL; // [ITEMQUESIZE]; +int *itemrespawntime=NULL; // [ITEMQUESIZE]; int iquehead; int iquetail; diff --git a/components/doom/prboom/r_plane.c b/components/doom/prboom/r_plane.c index 0971494..13918e6 100644 --- a/components/doom/prboom/r_plane.c +++ b/components/doom/prboom/r_plane.c @@ -61,9 +61,7 @@ #include "lprintf.h" -#define MAXVISPLANES 128 /* must be a power of 2 */ - -static visplane_t *visplanes[MAXVISPLANES]; // killough +visplane_t **visplanes = NULL; // [MAXVISPLANES]; // killough static visplane_t *freetail; // killough static visplane_t **freehead = &freetail; // killough visplane_t *floorplane, *ceilingplane; @@ -81,11 +79,13 @@ int *openings,*lastopening; // dropoff overflow // floorclip starts out SCREENHEIGHT // ceilingclip starts out -1 -int floorclip[MAX_SCREENWIDTH], ceilingclip[MAX_SCREENWIDTH]; // dropoff overflow +int *floorclip = NULL; // [MAX_SCREENWIDTH]; +// dropoff overflow +int *ceilingclip = NULL; // [MAX_SCREENWIDTH]; // spanstart holds the start of a plane span; initialized to 0 at start -static int spanstart[MAX_SCREENHEIGHT]; // killough 2/8/98 +int *spanstart = NULL; // [MAX_SCREENHEIGHT]; // killough 2/8/98 // // texture mapping @@ -97,13 +97,14 @@ static fixed_t planeheight; // killough 2/8/98: make variables static static fixed_t basexscale, baseyscale; -static fixed_t cachedheight[MAX_SCREENHEIGHT]; -static fixed_t cacheddistance[MAX_SCREENHEIGHT]; -static fixed_t cachedxstep[MAX_SCREENHEIGHT]; -static fixed_t cachedystep[MAX_SCREENHEIGHT]; +fixed_t *cachedheight = NULL; // [MAX_SCREENHEIGHT]; +fixed_t *cacheddistance = NULL; // [MAX_SCREENHEIGHT]; +fixed_t *cachedxstep = NULL; // [MAX_SCREENHEIGHT]; +fixed_t *cachedystep = NULL; // [MAX_SCREENHEIGHT]; static fixed_t xoffs,yoffs; // killough 2/28/98: flat offsets -fixed_t yslope[MAX_SCREENHEIGHT], distscale[MAX_SCREENWIDTH]; +fixed_t *yslope = NULL; // [MAX_SCREENHEIGHT]; +fixed_t *distscale = NULL; // [MAX_SCREENWIDTH]; // // R_MapPlane diff --git a/components/doom/prboom/r_plane.h b/components/doom/prboom/r_plane.h index 6a28527..dbe0073 100644 --- a/components/doom/prboom/r_plane.h +++ b/components/doom/prboom/r_plane.h @@ -43,11 +43,13 @@ /* killough 10/98: special mask indicates sky flat comes from sidedef */ #define PL_SKYFLAT (0x80000000) +#define MAXVISPLANES 128 /* must be a power of 2 */ + /* Visplane related. */ extern int *lastopening; // dropoff overflow -extern int floorclip[], ceilingclip[]; // dropoff overflow -extern fixed_t yslope[], distscale[]; +extern int *floorclip, *ceilingclip; // dropoff overflow +extern fixed_t *yslope, *distscale; void R_ClearPlanes(void); void R_DrawPlanes(void); diff --git a/components/doom/src/doom.cpp b/components/doom/src/doom.cpp index c51514e..c7a41f7 100644 --- a/components/doom/src/doom.cpp +++ b/components/doom/src/doom.cpp @@ -2,6 +2,7 @@ #include "box-emu.hpp" #include "statistics.hpp" #include "esp_log.h" +#include "shared_memory.h" static const char* TAG = "DOOM"; @@ -44,6 +45,10 @@ extern "C" { #include #include +#include +#include +#include + ///////////////////////////////////////////// // Copied from retro-go/prboom-go/main/main.c ///////////////////////////////////////////// @@ -73,9 +78,9 @@ typedef struct { int starttic; } channel_t; -static channel_t channels[NUM_MIX_CHANNELS]; -static const doom_sfx_t *sfx[NUMSFX]; -static uint16_t mixbuffer[AUDIO_BUFFER_LENGTH]; +static channel_t *channels=nullptr; // [NUM_MIX_CHANNELS]; +static const doom_sfx_t **sfx = nullptr; // [NUMSFX]; +static uint16_t *mixbuffer = nullptr; // [AUDIO_BUFFER_LENGTH]; static const music_player_t *music_player = &opl_synth_player; static bool musicPlaying = false; @@ -486,7 +491,80 @@ void reset_doom() { // D_DoomLoop(); } +extern mapthing_t *itemrespawnque; +extern int *itemrespawntime; +extern Chip *opl_chip; + +#if ( DBOPL_WAVE == WAVE_HANDLER ) || ( DBOPL_WAVE == WAVE_TABLELOG ) +extern Bit16u *ExpTable; +#endif +#if ( DBOPL_WAVE == WAVE_HANDLER ) +//PI table used by WAVEHANDLER +extern Bit16u *SinTable; +#endif +extern Bit16s *WaveTable; // [ 8 * 512 ]; +#if ( DBOPL_WAVE == WAVE_TABLEMUL ) +extern Bit16u *MulTable; // [ 384 ]; +#endif + +extern Bit8u *KslTable; // [ 8 * 16 ]; +extern Bit8u *TremoloTable; // [ TREMOLO_TABLE ]; +extern Bit16u *ChanOffsetTable; // [32]; +extern Bit16u *OpOffsetTable; // [64]; + +extern visplane_t **visplanes; // [MAXVISPLANES]; // killough +extern fixed_t *cachedheight; // [MAX_SCREENHEIGHT]; +extern fixed_t *cacheddistance; // [MAX_SCREENHEIGHT]; +extern fixed_t *cachedxstep; // [MAX_SCREENHEIGHT]; +extern fixed_t *cachedystep; // [MAX_SCREENHEIGHT]; +extern int *spanstart; // [MAX_SCREENHEIGHT]; // killough 2/8/98 +extern int *floorclip; // [MAX_SCREENWIDTH]; +extern int *ceilingclip; // [MAX_SCREENWIDTH]; +extern fixed_t *yslope; // [MAX_SCREENHEIGHT]; +extern fixed_t *distscale; // [MAX_SCREENWIDTH]; + +extern mobjinfo_t *mobjinfo; // [NUMMOBJTYPES]; +extern const mobjinfo_t *init_mobjinfo; + void init_doom(const std::string& wad_filename, uint8_t *wad_data, size_t wad_data_size) { + itemrespawnque = (mapthing_t *)shared_malloc(sizeof(mapthing_t) * ITEMQUESIZE); + itemrespawntime = (int *)shared_malloc(sizeof(int) * ITEMQUESIZE); + opl_chip = (Chip *)shared_malloc(sizeof(Chip)); + + #if ( DBOPL_WAVE == WAVE_HANDLER ) || ( DBOPL_WAVE == WAVE_TABLELOG ) + ExpTable = (Bit16u *)shared_malloc(sizeof(Bit16u) * 256); + #endif + #if ( DBOPL_WAVE == WAVE_HANDLER ) + SinTable = (Bit16u *)shared_malloc(sizeof(Bit16u) * 512); + #endif + WaveTable = (Bit16s *)shared_malloc(sizeof(Bit16s) * 8 * 512); + #if ( DBOPL_WAVE == WAVE_TABLEMUL ) + MulTable = (Bit16u *)shared_malloc(sizeof(Bit16u) * 384); + #endif + KslTable = (Bit8u *)shared_malloc(sizeof(Bit8u) * 8 * 16); + TremoloTable = (Bit8u *)shared_malloc(sizeof(Bit8u) * TREMOLO_TABLE); + ChanOffsetTable = (Bit16u *)shared_malloc(sizeof(Bit16u) * 32); + OpOffsetTable = (Bit16u *)shared_malloc(sizeof(Bit16u) * 64); + + visplanes = (visplane_t **)shared_malloc(sizeof(visplane_t *) * MAXVISPLANES); + cachedheight = (fixed_t *)shared_malloc(sizeof(fixed_t) * MAX_SCREENHEIGHT); + cacheddistance = (fixed_t *)shared_malloc(sizeof(fixed_t) * MAX_SCREENHEIGHT); + cachedxstep = (fixed_t *)shared_malloc(sizeof(fixed_t) * MAX_SCREENHEIGHT); + cachedystep = (fixed_t *)shared_malloc(sizeof(fixed_t) * MAX_SCREENHEIGHT); + + spanstart = (int *)shared_malloc(sizeof(int) * MAX_SCREENHEIGHT); + floorclip = (int *)shared_malloc(sizeof(int) * MAX_SCREENWIDTH); + ceilingclip = (int *)shared_malloc(sizeof(int) * MAX_SCREENWIDTH); + yslope = (fixed_t *)shared_malloc(sizeof(fixed_t) * MAX_SCREENHEIGHT); + distscale = (fixed_t *)shared_malloc(sizeof(fixed_t) * MAX_SCREENWIDTH); + + channels = (channel_t *)shared_malloc(sizeof(channel_t) * NUM_MIX_CHANNELS); + sfx = (const doom_sfx_t **)shared_malloc(sizeof(doom_sfx_t*) * NUMSFX); + mixbuffer = (uint16_t *)shared_malloc(sizeof(uint16_t) * AUDIO_BUFFER_LENGTH); + + mobjinfo = (mobjinfo_t *)shared_malloc(sizeof(mobjinfo_t) * NUMMOBJTYPES); + memcpy(mobjinfo, init_mobjinfo, sizeof(mobjinfo_t) * NUMMOBJTYPES); + // Initialize system interface if (!I_StartDisplay()) { ESP_LOGE(TAG, "Failed to initialize display"); @@ -509,6 +587,11 @@ void init_doom(const std::string& wad_filename, uint8_t *wad_data, size_t wad_da // doom_argv[6] = pwad; doom_argv[myargc] = 0; + // Some things might be nice to place in internal RAM, but I do not have time to find such + // structures. So for now, prefer external RAM for most things except the framebuffer which + // is allocated above. + heap_caps_malloc_extmem_enable(0); + // Initialize game Z_Init(); D_DoomMainSetup(); @@ -602,4 +685,5 @@ void deinit_doom() { Z_FreeTags(0, PU_MAX); // reset audio state BoxEmu::get().audio_sample_rate(48000); + shared_mem_clear(); } From a648fe0c95c4e67a446f49eeb15c0525d203eb54 Mon Sep 17 00:00:00 2001 From: William Emfinger Date: Wed, 16 Apr 2025 22:28:46 -0500 Subject: [PATCH 09/39] wip moving more into shared memory --- components/doom/prboom/doomstat.h | 2 +- components/doom/prboom/g_game.c | 5 ++--- components/doom/prboom/g_game.h | 2 ++ components/doom/prboom/hu_stuff.c | 8 ++++---- components/doom/src/doom.cpp | 19 +++++++++++++++++++ 5 files changed, 28 insertions(+), 8 deletions(-) diff --git a/components/doom/prboom/doomstat.h b/components/doom/prboom/doomstat.h index cc18838..5a59a3b 100644 --- a/components/doom/prboom/doomstat.h +++ b/components/doom/prboom/doomstat.h @@ -221,7 +221,7 @@ extern int gametic; // Bookkeeping on players - state. -extern player_t players[MAXPLAYERS]; +extern player_t *players; // [MAXPLAYERS]; // Alive? Disconnected? extern boolean playeringame[MAXPLAYERS]; diff --git a/components/doom/prboom/g_game.c b/components/doom/prboom/g_game.c index 2fc5366..2af6fc8 100644 --- a/components/doom/prboom/g_game.c +++ b/components/doom/prboom/g_game.c @@ -117,7 +117,7 @@ int starttime; // for comparative timing purposes int deathmatch; // only if started as net death int netgame; // only true if packets are broadcast boolean playeringame[MAXPLAYERS]; -player_t players[MAXPLAYERS]; +player_t *players = NULL; // [MAXPLAYERS]; int consoleplayer; // player taking events and displaying int displayplayer; // view being displayed int gametic; @@ -213,14 +213,13 @@ int joybspeed; #define TURBOTHRESHOLD 0x32 #define SLOWTURNTICS 6 #define QUICKREVERSE (short)32768 // 180 degree reverse // phares -#define NUMKEYS 512 fixed_t forwardmove[2] = {0x19, 0x32}; fixed_t sidemove[2] = {0x18, 0x28}; fixed_t angleturn[3] = {640, 1280, 320}; // + slow turn // CPhipps - made lots of key/button state vars static -static byte gamekeydown[NUMKEYS]; +byte *gamekeydown = NULL; // [NUMKEYS]; static int turnheld; // for accelerative turning // static boolean mousearray[4]; diff --git a/components/doom/prboom/g_game.h b/components/doom/prboom/g_game.h index 29bc33b..7e6630e 100644 --- a/components/doom/prboom/g_game.h +++ b/components/doom/prboom/g_game.h @@ -43,6 +43,8 @@ // killough 5/2/98: number of bytes reserved for saving options #define GAME_OPTION_SIZE 64 +#define NUMKEYS 512 + boolean G_Responder(event_t *ev); boolean G_CheckDemoStatus(void); void G_DeathMatchSpawnPlayer(int playernum); diff --git a/components/doom/prboom/hu_stuff.c b/components/doom/prboom/hu_stuff.c index 02de590..129fb66 100644 --- a/components/doom/prboom/hu_stuff.c +++ b/components/doom/prboom/hu_stuff.c @@ -162,10 +162,10 @@ char chat_char; // remove later. static player_t* plr; // font sets -patchnum_t hu_font[HU_FONTSIZE]; -patchnum_t hu_font2[HU_FONTSIZE]; -patchnum_t hu_fontk[HU_FONTSIZE];//jff 3/7/98 added for graphic key indicators -patchnum_t hu_msgbg[9]; //jff 2/26/98 add patches for message background +patchnum_t *hu_font = NULL; // font[HU_FONTSIZE]; +patchnum_t *hu_font2 = NULL; // [HU_FONTSIZE]; +patchnum_t *hu_fontk = NULL; // [HU_FONTSIZE];//jff 3/7/98 added for graphic key indicators +patchnum_t *hu_msgbg = NULL; // [9]; //jff 2/26/98 add patches for message background // widgets static hu_textline_t w_title; diff --git a/components/doom/src/doom.cpp b/components/doom/src/doom.cpp index c7a41f7..903f961 100644 --- a/components/doom/src/doom.cpp +++ b/components/doom/src/doom.cpp @@ -49,6 +49,8 @@ extern "C" { #include #include +#include + ///////////////////////////////////////////// // Copied from retro-go/prboom-go/main/main.c ///////////////////////////////////////////// @@ -526,6 +528,15 @@ extern fixed_t *distscale; // [MAX_SCREENWIDTH]; extern mobjinfo_t *mobjinfo; // [NUMMOBJTYPES]; extern const mobjinfo_t *init_mobjinfo; +extern player_t *players; // [MAXPLAYERS]; +extern byte *gamekeydown; // [NUMKEYS]; + +extern patchnum_t *hu_font; // font[HU_FONTSIZE]; +extern patchnum_t *hu_font2; // [HU_FONTSIZE]; +extern patchnum_t *hu_fontk; // [HU_FONTSIZE];//jff 3/7/98 added for graphic key indicators +extern patchnum_t *hu_msgbg; // [9]; //jff 2/26/98 add patches for message background + + void init_doom(const std::string& wad_filename, uint8_t *wad_data, size_t wad_data_size) { itemrespawnque = (mapthing_t *)shared_malloc(sizeof(mapthing_t) * ITEMQUESIZE); itemrespawntime = (int *)shared_malloc(sizeof(int) * ITEMQUESIZE); @@ -565,6 +576,14 @@ void init_doom(const std::string& wad_filename, uint8_t *wad_data, size_t wad_da mobjinfo = (mobjinfo_t *)shared_malloc(sizeof(mobjinfo_t) * NUMMOBJTYPES); memcpy(mobjinfo, init_mobjinfo, sizeof(mobjinfo_t) * NUMMOBJTYPES); + players = (player_t *)shared_malloc(sizeof(player_t) * MAXPLAYERS); + gamekeydown = (byte *)shared_malloc(sizeof(byte) * NUMKEYS); + + hu_font = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * HU_FONTSIZE); + hu_font2 = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * HU_FONTSIZE); + hu_fontk = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * HU_FONTSIZE); + hu_msgbg = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * 9); + // Initialize system interface if (!I_StartDisplay()) { ESP_LOGE(TAG, "Failed to initialize display"); From 6025ac2d856dc59f2c5d3d53178b6fe40ff0b490 Mon Sep 17 00:00:00 2001 From: William Emfinger Date: Thu, 17 Apr 2025 08:34:13 -0500 Subject: [PATCH 10/39] add boxart --- boxart/doom_2_boxart.jpg | Bin 0 -> 5126 bytes boxart/source/doom_2_boxart.jpg | Bin 0 -> 65014 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 boxart/doom_2_boxart.jpg create mode 100644 boxart/source/doom_2_boxart.jpg diff --git a/boxart/doom_2_boxart.jpg b/boxart/doom_2_boxart.jpg new file mode 100644 index 0000000000000000000000000000000000000000..064c4192519d1c766d979abe5515b959dd90c9f7 GIT binary patch literal 5126 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 literal 0 HcmV?d00001 diff --git a/boxart/source/doom_2_boxart.jpg b/boxart/source/doom_2_boxart.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b911d6a5803dde877b8db89c2fef819bc90b12a7 GIT binary patch literal 65014 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 K)#}G`=l|KIA%npH literal 0 HcmV?d00001 From 5a72c8fa2598137062c898d710d65f89d1b6310b Mon Sep 17 00:00:00 2001 From: William Emfinger Date: Thu, 17 Apr 2025 08:48:19 -0500 Subject: [PATCH 11/39] add doom ultimate boxart --- boxart/doom_ultimate_boxart.jpg | Bin 0 -> 11942 bytes boxart/source/doom_ultimate_boxart.jpg | Bin 0 -> 48163 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 boxart/doom_ultimate_boxart.jpg create mode 100644 boxart/source/doom_ultimate_boxart.jpg diff --git a/boxart/doom_ultimate_boxart.jpg b/boxart/doom_ultimate_boxart.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e80f476ffe6e1183f6020cd18b944f85c8e2ebb1 GIT binary patch literal 11942 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ⅅlYO#z%JZ?ia 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 Date: Thu, 17 Apr 2025 08:51:57 -0500 Subject: [PATCH 12/39] update to latest tool --- boxart/source/resize.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boxart/source/resize.bash b/boxart/source/resize.bash index 092d7a9..efa2b8f 100755 --- a/boxart/source/resize.bash +++ b/boxart/source/resize.bash @@ -1,2 +1,2 @@ #!/bin/bash -find . -maxdepth 1 -iname "*.jpg" | xargs -L1 -I{} convert -resize 100x "{}" ../"{}" +find . -maxdepth 1 -iname "*.jpg" | xargs -L1 -I{} magick -quiet "{}" -resize 100x ../"{}" From 1f4d9651ee493a4f6ce7ffa75e17535ba679acea Mon Sep 17 00:00:00 2001 From: William Emfinger Date: Thu, 17 Apr 2025 09:50:12 -0500 Subject: [PATCH 13/39] continue moving doom to shared memory --- components/doom/prboom/d_deh.c | 640 +++++++++++++++--------------- components/doom/prboom/d_deh.h | 622 ++++++++++++++--------------- components/doom/prboom/hu_stuff.c | 24 +- components/doom/prboom/m_cheat.c | 4 +- components/doom/prboom/m_cheat.h | 2 +- components/doom/prboom/m_menu.c | 56 +-- components/doom/prboom/m_misc.c | 2 +- components/doom/prboom/r_things.c | 6 +- components/doom/prboom/r_things.h | 4 +- components/doom/prboom/sounds.c | 12 +- components/doom/prboom/sounds.h | 4 +- components/doom/prboom/st_stuff.c | 35 +- components/doom/prboom/st_stuff.h | 14 + components/doom/prboom/wi_stuff.c | 12 +- components/doom/src/doom.cpp | 61 +++ 15 files changed, 784 insertions(+), 714 deletions(-) diff --git a/components/doom/prboom/d_deh.c b/components/doom/prboom/d_deh.c index fd59710..3653541 100644 --- a/components/doom/prboom/d_deh.c +++ b/components/doom/prboom/d_deh.c @@ -70,330 +70,330 @@ boolean deh_pars = false; // in wi_stuff to allow pars in modified games /* cph - const's * - removed redundant "can't XXX in a netgame" strings. */ -const char *s_D_DEVSTR = D_DEVSTR; -const char *s_D_CDROM = D_CDROM; -const char *s_PRESSKEY = PRESSKEY; -const char *s_PRESSYN = PRESSYN; -const char *s_QUITMSG = QUITMSG; -const char *s_QSAVESPOT = QSAVESPOT; // PRESSKEY; -const char *s_SAVEDEAD = SAVEDEAD; // PRESSKEY; // remove duplicate y/n -const char *s_QSPROMPT = QSPROMPT; // PRESSYN; -const char *s_QLPROMPT = QLPROMPT; // PRESSYN; -const char *s_NEWGAME = NEWGAME; // PRESSKEY; -const char *s_RESTARTLEVEL= RESTARTLEVEL; // PRESSYN; -const char *s_NIGHTMARE = NIGHTMARE; // PRESSYN; -const char *s_SWSTRING = SWSTRING; // PRESSKEY; -const char *s_MSGOFF = MSGOFF; -const char *s_MSGON = MSGON; -const char *s_NETEND = NETEND; // PRESSKEY; -const char *s_ENDGAME = ENDGAME; // PRESSYN; // killough 4/4/98: end -const char *s_DOSY = DOSY; -const char *s_DETAILHI = DETAILHI; -const char *s_DETAILLO = DETAILLO; -const char *s_GAMMALVL0 = GAMMALVL0; -const char *s_GAMMALVL1 = GAMMALVL1; -const char *s_GAMMALVL2 = GAMMALVL2; -const char *s_GAMMALVL3 = GAMMALVL3; -const char *s_GAMMALVL4 = GAMMALVL4; -const char *s_EMPTYSTRING = EMPTYSTRING; -const char *s_GOTARMOR = GOTARMOR; -const char *s_GOTMEGA = GOTMEGA; -const char *s_GOTHTHBONUS = GOTHTHBONUS; -const char *s_GOTARMBONUS = GOTARMBONUS; -const char *s_GOTSTIM = GOTSTIM; -const char *s_GOTMEDINEED = GOTMEDINEED; -const char *s_GOTMEDIKIT = GOTMEDIKIT; -const char *s_GOTSUPER = GOTSUPER; -const char *s_GOTBLUECARD = GOTBLUECARD; -const char *s_GOTYELWCARD = GOTYELWCARD; -const char *s_GOTREDCARD = GOTREDCARD; -const char *s_GOTBLUESKUL = GOTBLUESKUL; -const char *s_GOTYELWSKUL = GOTYELWSKUL; -const char *s_GOTREDSKULL = GOTREDSKULL; -const char *s_GOTINVUL = GOTINVUL; -const char *s_GOTBERSERK = GOTBERSERK; -const char *s_GOTINVIS = GOTINVIS; -const char *s_GOTSUIT = GOTSUIT; -const char *s_GOTMAP = GOTMAP; -const char *s_GOTVISOR = GOTVISOR; -const char *s_GOTMSPHERE = GOTMSPHERE; -const char *s_GOTCLIP = GOTCLIP; -const char *s_GOTCLIPBOX = GOTCLIPBOX; -const char *s_GOTROCKET = GOTROCKET; -const char *s_GOTROCKBOX = GOTROCKBOX; -const char *s_GOTCELL = GOTCELL; -const char *s_GOTCELLBOX = GOTCELLBOX; -const char *s_GOTSHELLS = GOTSHELLS; -const char *s_GOTSHELLBOX = GOTSHELLBOX; -const char *s_GOTBACKPACK = GOTBACKPACK; -const char *s_GOTBFG9000 = GOTBFG9000; -const char *s_GOTCHAINGUN = GOTCHAINGUN; -const char *s_GOTCHAINSAW = GOTCHAINSAW; -const char *s_GOTLAUNCHER = GOTLAUNCHER; -const char *s_GOTPLASMA = GOTPLASMA; -const char *s_GOTSHOTGUN = GOTSHOTGUN; -const char *s_GOTSHOTGUN2 = GOTSHOTGUN2; -const char *s_PD_BLUEO = PD_BLUEO; -const char *s_PD_REDO = PD_REDO; -const char *s_PD_YELLOWO = PD_YELLOWO; -const char *s_PD_BLUEK = PD_BLUEK; -const char *s_PD_REDK = PD_REDK; -const char *s_PD_YELLOWK = PD_YELLOWK; -const char *s_PD_BLUEC = PD_BLUEC; -const char *s_PD_REDC = PD_REDC; -const char *s_PD_YELLOWC = PD_YELLOWC; -const char *s_PD_BLUES = PD_BLUES; -const char *s_PD_REDS = PD_REDS; -const char *s_PD_YELLOWS = PD_YELLOWS; -const char *s_PD_ANY = PD_ANY; -const char *s_PD_ALL3 = PD_ALL3; -const char *s_PD_ALL6 = PD_ALL6; -const char *s_GGSAVED = GGSAVED; -const char *s_HUSTR_MSGU = HUSTR_MSGU; -const char *s_HUSTR_E1M1 = HUSTR_E1M1; -const char *s_HUSTR_E1M2 = HUSTR_E1M2; -const char *s_HUSTR_E1M3 = HUSTR_E1M3; -const char *s_HUSTR_E1M4 = HUSTR_E1M4; -const char *s_HUSTR_E1M5 = HUSTR_E1M5; -const char *s_HUSTR_E1M6 = HUSTR_E1M6; -const char *s_HUSTR_E1M7 = HUSTR_E1M7; -const char *s_HUSTR_E1M8 = HUSTR_E1M8; -const char *s_HUSTR_E1M9 = HUSTR_E1M9; -const char *s_HUSTR_E2M1 = HUSTR_E2M1; -const char *s_HUSTR_E2M2 = HUSTR_E2M2; -const char *s_HUSTR_E2M3 = HUSTR_E2M3; -const char *s_HUSTR_E2M4 = HUSTR_E2M4; -const char *s_HUSTR_E2M5 = HUSTR_E2M5; -const char *s_HUSTR_E2M6 = HUSTR_E2M6; -const char *s_HUSTR_E2M7 = HUSTR_E2M7; -const char *s_HUSTR_E2M8 = HUSTR_E2M8; -const char *s_HUSTR_E2M9 = HUSTR_E2M9; -const char *s_HUSTR_E3M1 = HUSTR_E3M1; -const char *s_HUSTR_E3M2 = HUSTR_E3M2; -const char *s_HUSTR_E3M3 = HUSTR_E3M3; -const char *s_HUSTR_E3M4 = HUSTR_E3M4; -const char *s_HUSTR_E3M5 = HUSTR_E3M5; -const char *s_HUSTR_E3M6 = HUSTR_E3M6; -const char *s_HUSTR_E3M7 = HUSTR_E3M7; -const char *s_HUSTR_E3M8 = HUSTR_E3M8; -const char *s_HUSTR_E3M9 = HUSTR_E3M9; -const char *s_HUSTR_E4M1 = HUSTR_E4M1; -const char *s_HUSTR_E4M2 = HUSTR_E4M2; -const char *s_HUSTR_E4M3 = HUSTR_E4M3; -const char *s_HUSTR_E4M4 = HUSTR_E4M4; -const char *s_HUSTR_E4M5 = HUSTR_E4M5; -const char *s_HUSTR_E4M6 = HUSTR_E4M6; -const char *s_HUSTR_E4M7 = HUSTR_E4M7; -const char *s_HUSTR_E4M8 = HUSTR_E4M8; -const char *s_HUSTR_E4M9 = HUSTR_E4M9; -const char *s_HUSTR_1 = HUSTR_1; -const char *s_HUSTR_2 = HUSTR_2; -const char *s_HUSTR_3 = HUSTR_3; -const char *s_HUSTR_4 = HUSTR_4; -const char *s_HUSTR_5 = HUSTR_5; -const char *s_HUSTR_6 = HUSTR_6; -const char *s_HUSTR_7 = HUSTR_7; -const char *s_HUSTR_8 = HUSTR_8; -const char *s_HUSTR_9 = HUSTR_9; -const char *s_HUSTR_10 = HUSTR_10; -const char *s_HUSTR_11 = HUSTR_11; -const char *s_HUSTR_12 = HUSTR_12; -const char *s_HUSTR_13 = HUSTR_13; -const char *s_HUSTR_14 = HUSTR_14; -const char *s_HUSTR_15 = HUSTR_15; -const char *s_HUSTR_16 = HUSTR_16; -const char *s_HUSTR_17 = HUSTR_17; -const char *s_HUSTR_18 = HUSTR_18; -const char *s_HUSTR_19 = HUSTR_19; -const char *s_HUSTR_20 = HUSTR_20; -const char *s_HUSTR_21 = HUSTR_21; -const char *s_HUSTR_22 = HUSTR_22; -const char *s_HUSTR_23 = HUSTR_23; -const char *s_HUSTR_24 = HUSTR_24; -const char *s_HUSTR_25 = HUSTR_25; -const char *s_HUSTR_26 = HUSTR_26; -const char *s_HUSTR_27 = HUSTR_27; -const char *s_HUSTR_28 = HUSTR_28; -const char *s_HUSTR_29 = HUSTR_29; -const char *s_HUSTR_30 = HUSTR_30; -const char *s_HUSTR_31 = HUSTR_31; -const char *s_HUSTR_32 = HUSTR_32; -const char *s_PHUSTR_1 = PHUSTR_1; -const char *s_PHUSTR_2 = PHUSTR_2; -const char *s_PHUSTR_3 = PHUSTR_3; -const char *s_PHUSTR_4 = PHUSTR_4; -const char *s_PHUSTR_5 = PHUSTR_5; -const char *s_PHUSTR_6 = PHUSTR_6; -const char *s_PHUSTR_7 = PHUSTR_7; -const char *s_PHUSTR_8 = PHUSTR_8; -const char *s_PHUSTR_9 = PHUSTR_9; -const char *s_PHUSTR_10 = PHUSTR_10; -const char *s_PHUSTR_11 = PHUSTR_11; -const char *s_PHUSTR_12 = PHUSTR_12; -const char *s_PHUSTR_13 = PHUSTR_13; -const char *s_PHUSTR_14 = PHUSTR_14; -const char *s_PHUSTR_15 = PHUSTR_15; -const char *s_PHUSTR_16 = PHUSTR_16; -const char *s_PHUSTR_17 = PHUSTR_17; -const char *s_PHUSTR_18 = PHUSTR_18; -const char *s_PHUSTR_19 = PHUSTR_19; -const char *s_PHUSTR_20 = PHUSTR_20; -const char *s_PHUSTR_21 = PHUSTR_21; -const char *s_PHUSTR_22 = PHUSTR_22; -const char *s_PHUSTR_23 = PHUSTR_23; -const char *s_PHUSTR_24 = PHUSTR_24; -const char *s_PHUSTR_25 = PHUSTR_25; -const char *s_PHUSTR_26 = PHUSTR_26; -const char *s_PHUSTR_27 = PHUSTR_27; -const char *s_PHUSTR_28 = PHUSTR_28; -const char *s_PHUSTR_29 = PHUSTR_29; -const char *s_PHUSTR_30 = PHUSTR_30; -const char *s_PHUSTR_31 = PHUSTR_31; -const char *s_PHUSTR_32 = PHUSTR_32; -const char *s_THUSTR_1 = THUSTR_1; -const char *s_THUSTR_2 = THUSTR_2; -const char *s_THUSTR_3 = THUSTR_3; -const char *s_THUSTR_4 = THUSTR_4; -const char *s_THUSTR_5 = THUSTR_5; -const char *s_THUSTR_6 = THUSTR_6; -const char *s_THUSTR_7 = THUSTR_7; -const char *s_THUSTR_8 = THUSTR_8; -const char *s_THUSTR_9 = THUSTR_9; -const char *s_THUSTR_10 = THUSTR_10; -const char *s_THUSTR_11 = THUSTR_11; -const char *s_THUSTR_12 = THUSTR_12; -const char *s_THUSTR_13 = THUSTR_13; -const char *s_THUSTR_14 = THUSTR_14; -const char *s_THUSTR_15 = THUSTR_15; -const char *s_THUSTR_16 = THUSTR_16; -const char *s_THUSTR_17 = THUSTR_17; -const char *s_THUSTR_18 = THUSTR_18; -const char *s_THUSTR_19 = THUSTR_19; -const char *s_THUSTR_20 = THUSTR_20; -const char *s_THUSTR_21 = THUSTR_21; -const char *s_THUSTR_22 = THUSTR_22; -const char *s_THUSTR_23 = THUSTR_23; -const char *s_THUSTR_24 = THUSTR_24; -const char *s_THUSTR_25 = THUSTR_25; -const char *s_THUSTR_26 = THUSTR_26; -const char *s_THUSTR_27 = THUSTR_27; -const char *s_THUSTR_28 = THUSTR_28; -const char *s_THUSTR_29 = THUSTR_29; -const char *s_THUSTR_30 = THUSTR_30; -const char *s_THUSTR_31 = THUSTR_31; -const char *s_THUSTR_32 = THUSTR_32; -const char *s_HUSTR_CHATMACRO1 = HUSTR_CHATMACRO1; -const char *s_HUSTR_CHATMACRO2 = HUSTR_CHATMACRO2; -const char *s_HUSTR_CHATMACRO3 = HUSTR_CHATMACRO3; -const char *s_HUSTR_CHATMACRO4 = HUSTR_CHATMACRO4; -const char *s_HUSTR_CHATMACRO5 = HUSTR_CHATMACRO5; -const char *s_HUSTR_CHATMACRO6 = HUSTR_CHATMACRO6; -const char *s_HUSTR_CHATMACRO7 = HUSTR_CHATMACRO7; -const char *s_HUSTR_CHATMACRO8 = HUSTR_CHATMACRO8; -const char *s_HUSTR_CHATMACRO9 = HUSTR_CHATMACRO9; -const char *s_HUSTR_CHATMACRO0 = HUSTR_CHATMACRO0; -const char *s_HUSTR_TALKTOSELF1 = HUSTR_TALKTOSELF1; -const char *s_HUSTR_TALKTOSELF2 = HUSTR_TALKTOSELF2; -const char *s_HUSTR_TALKTOSELF3 = HUSTR_TALKTOSELF3; -const char *s_HUSTR_TALKTOSELF4 = HUSTR_TALKTOSELF4; -const char *s_HUSTR_TALKTOSELF5 = HUSTR_TALKTOSELF5; -const char *s_HUSTR_MESSAGESENT = HUSTR_MESSAGESENT; -const char *s_HUSTR_PLRGREEN = HUSTR_PLRGREEN; -const char *s_HUSTR_PLRINDIGO = HUSTR_PLRINDIGO; -const char *s_HUSTR_PLRBROWN = HUSTR_PLRBROWN; -const char *s_HUSTR_PLRRED = HUSTR_PLRRED; -const char *s_AMSTR_FOLLOWON = AMSTR_FOLLOWON; -const char *s_AMSTR_FOLLOWOFF = AMSTR_FOLLOWOFF; -const char *s_AMSTR_GRIDON = AMSTR_GRIDON; -const char *s_AMSTR_GRIDOFF = AMSTR_GRIDOFF; -const char *s_AMSTR_MARKEDSPOT = AMSTR_MARKEDSPOT; -const char *s_AMSTR_MARKSCLEARED = AMSTR_MARKSCLEARED; +const char* const s_D_DEVSTR = D_DEVSTR; +const char* const s_D_CDROM = D_CDROM; +const char* const s_PRESSKEY = PRESSKEY; +const char* const s_PRESSYN = PRESSYN; +const char* const s_QUITMSG = QUITMSG; +const char* const s_QSAVESPOT = QSAVESPOT; // PRESSKEY; +const char* const s_SAVEDEAD = SAVEDEAD; // PRESSKEY; // remove duplicate y/n +const char* const s_QSPROMPT = QSPROMPT; // PRESSYN; +const char* const s_QLPROMPT = QLPROMPT; // PRESSYN; +const char* const s_NEWGAME = NEWGAME; // PRESSKEY; +const char* const s_RESTARTLEVEL= RESTARTLEVEL; // PRESSYN; +const char* const s_NIGHTMARE = NIGHTMARE; // PRESSYN; +const char* const s_SWSTRING = SWSTRING; // PRESSKEY; +const char* const s_MSGOFF = MSGOFF; +const char* const s_MSGON = MSGON; +const char* const s_NETEND = NETEND; // PRESSKEY; +const char* const s_ENDGAME = ENDGAME; // PRESSYN; // killough 4/4/98: end +const char* const s_DOSY = DOSY; +const char* const s_DETAILHI = DETAILHI; +const char* const s_DETAILLO = DETAILLO; +const char* const s_GAMMALVL0 = GAMMALVL0; +const char* const s_GAMMALVL1 = GAMMALVL1; +const char* const s_GAMMALVL2 = GAMMALVL2; +const char* const s_GAMMALVL3 = GAMMALVL3; +const char* const s_GAMMALVL4 = GAMMALVL4; +const char* const s_EMPTYSTRING = EMPTYSTRING; +const char* const s_GOTARMOR = GOTARMOR; +const char* const s_GOTMEGA = GOTMEGA; +const char* const s_GOTHTHBONUS = GOTHTHBONUS; +const char* const s_GOTARMBONUS = GOTARMBONUS; +const char* const s_GOTSTIM = GOTSTIM; +const char* const s_GOTMEDINEED = GOTMEDINEED; +const char* const s_GOTMEDIKIT = GOTMEDIKIT; +const char* const s_GOTSUPER = GOTSUPER; +const char* const s_GOTBLUECARD = GOTBLUECARD; +const char* const s_GOTYELWCARD = GOTYELWCARD; +const char* const s_GOTREDCARD = GOTREDCARD; +const char* const s_GOTBLUESKUL = GOTBLUESKUL; +const char* const s_GOTYELWSKUL = GOTYELWSKUL; +const char* const s_GOTREDSKULL = GOTREDSKULL; +const char* const s_GOTINVUL = GOTINVUL; +const char* const s_GOTBERSERK = GOTBERSERK; +const char* const s_GOTINVIS = GOTINVIS; +const char* const s_GOTSUIT = GOTSUIT; +const char* const s_GOTMAP = GOTMAP; +const char* const s_GOTVISOR = GOTVISOR; +const char* const s_GOTMSPHERE = GOTMSPHERE; +const char* const s_GOTCLIP = GOTCLIP; +const char* const s_GOTCLIPBOX = GOTCLIPBOX; +const char* const s_GOTROCKET = GOTROCKET; +const char* const s_GOTROCKBOX = GOTROCKBOX; +const char* const s_GOTCELL = GOTCELL; +const char* const s_GOTCELLBOX = GOTCELLBOX; +const char* const s_GOTSHELLS = GOTSHELLS; +const char* const s_GOTSHELLBOX = GOTSHELLBOX; +const char* const s_GOTBACKPACK = GOTBACKPACK; +const char* const s_GOTBFG9000 = GOTBFG9000; +const char* const s_GOTCHAINGUN = GOTCHAINGUN; +const char* const s_GOTCHAINSAW = GOTCHAINSAW; +const char* const s_GOTLAUNCHER = GOTLAUNCHER; +const char* const s_GOTPLASMA = GOTPLASMA; +const char* const s_GOTSHOTGUN = GOTSHOTGUN; +const char* const s_GOTSHOTGUN2 = GOTSHOTGUN2; +const char* const s_PD_BLUEO = PD_BLUEO; +const char* const s_PD_REDO = PD_REDO; +const char* const s_PD_YELLOWO = PD_YELLOWO; +const char* const s_PD_BLUEK = PD_BLUEK; +const char* const s_PD_REDK = PD_REDK; +const char* const s_PD_YELLOWK = PD_YELLOWK; +const char* const s_PD_BLUEC = PD_BLUEC; +const char* const s_PD_REDC = PD_REDC; +const char* const s_PD_YELLOWC = PD_YELLOWC; +const char* const s_PD_BLUES = PD_BLUES; +const char* const s_PD_REDS = PD_REDS; +const char* const s_PD_YELLOWS = PD_YELLOWS; +const char* const s_PD_ANY = PD_ANY; +const char* const s_PD_ALL3 = PD_ALL3; +const char* const s_PD_ALL6 = PD_ALL6; +const char* const s_GGSAVED = GGSAVED; +const char* const s_HUSTR_MSGU = HUSTR_MSGU; +const char* const s_HUSTR_E1M1 = HUSTR_E1M1; +const char* const s_HUSTR_E1M2 = HUSTR_E1M2; +const char* const s_HUSTR_E1M3 = HUSTR_E1M3; +const char* const s_HUSTR_E1M4 = HUSTR_E1M4; +const char* const s_HUSTR_E1M5 = HUSTR_E1M5; +const char* const s_HUSTR_E1M6 = HUSTR_E1M6; +const char* const s_HUSTR_E1M7 = HUSTR_E1M7; +const char* const s_HUSTR_E1M8 = HUSTR_E1M8; +const char* const s_HUSTR_E1M9 = HUSTR_E1M9; +const char* const s_HUSTR_E2M1 = HUSTR_E2M1; +const char* const s_HUSTR_E2M2 = HUSTR_E2M2; +const char* const s_HUSTR_E2M3 = HUSTR_E2M3; +const char* const s_HUSTR_E2M4 = HUSTR_E2M4; +const char* const s_HUSTR_E2M5 = HUSTR_E2M5; +const char* const s_HUSTR_E2M6 = HUSTR_E2M6; +const char* const s_HUSTR_E2M7 = HUSTR_E2M7; +const char* const s_HUSTR_E2M8 = HUSTR_E2M8; +const char* const s_HUSTR_E2M9 = HUSTR_E2M9; +const char* const s_HUSTR_E3M1 = HUSTR_E3M1; +const char* const s_HUSTR_E3M2 = HUSTR_E3M2; +const char* const s_HUSTR_E3M3 = HUSTR_E3M3; +const char* const s_HUSTR_E3M4 = HUSTR_E3M4; +const char* const s_HUSTR_E3M5 = HUSTR_E3M5; +const char* const s_HUSTR_E3M6 = HUSTR_E3M6; +const char* const s_HUSTR_E3M7 = HUSTR_E3M7; +const char* const s_HUSTR_E3M8 = HUSTR_E3M8; +const char* const s_HUSTR_E3M9 = HUSTR_E3M9; +const char* const s_HUSTR_E4M1 = HUSTR_E4M1; +const char* const s_HUSTR_E4M2 = HUSTR_E4M2; +const char* const s_HUSTR_E4M3 = HUSTR_E4M3; +const char* const s_HUSTR_E4M4 = HUSTR_E4M4; +const char* const s_HUSTR_E4M5 = HUSTR_E4M5; +const char* const s_HUSTR_E4M6 = HUSTR_E4M6; +const char* const s_HUSTR_E4M7 = HUSTR_E4M7; +const char* const s_HUSTR_E4M8 = HUSTR_E4M8; +const char* const s_HUSTR_E4M9 = HUSTR_E4M9; +const char* const s_HUSTR_1 = HUSTR_1; +const char* const s_HUSTR_2 = HUSTR_2; +const char* const s_HUSTR_3 = HUSTR_3; +const char* const s_HUSTR_4 = HUSTR_4; +const char* const s_HUSTR_5 = HUSTR_5; +const char* const s_HUSTR_6 = HUSTR_6; +const char* const s_HUSTR_7 = HUSTR_7; +const char* const s_HUSTR_8 = HUSTR_8; +const char* const s_HUSTR_9 = HUSTR_9; +const char* const s_HUSTR_10 = HUSTR_10; +const char* const s_HUSTR_11 = HUSTR_11; +const char* const s_HUSTR_12 = HUSTR_12; +const char* const s_HUSTR_13 = HUSTR_13; +const char* const s_HUSTR_14 = HUSTR_14; +const char* const s_HUSTR_15 = HUSTR_15; +const char* const s_HUSTR_16 = HUSTR_16; +const char* const s_HUSTR_17 = HUSTR_17; +const char* const s_HUSTR_18 = HUSTR_18; +const char* const s_HUSTR_19 = HUSTR_19; +const char* const s_HUSTR_20 = HUSTR_20; +const char* const s_HUSTR_21 = HUSTR_21; +const char* const s_HUSTR_22 = HUSTR_22; +const char* const s_HUSTR_23 = HUSTR_23; +const char* const s_HUSTR_24 = HUSTR_24; +const char* const s_HUSTR_25 = HUSTR_25; +const char* const s_HUSTR_26 = HUSTR_26; +const char* const s_HUSTR_27 = HUSTR_27; +const char* const s_HUSTR_28 = HUSTR_28; +const char* const s_HUSTR_29 = HUSTR_29; +const char* const s_HUSTR_30 = HUSTR_30; +const char* const s_HUSTR_31 = HUSTR_31; +const char* const s_HUSTR_32 = HUSTR_32; +const char* const s_PHUSTR_1 = PHUSTR_1; +const char* const s_PHUSTR_2 = PHUSTR_2; +const char* const s_PHUSTR_3 = PHUSTR_3; +const char* const s_PHUSTR_4 = PHUSTR_4; +const char* const s_PHUSTR_5 = PHUSTR_5; +const char* const s_PHUSTR_6 = PHUSTR_6; +const char* const s_PHUSTR_7 = PHUSTR_7; +const char* const s_PHUSTR_8 = PHUSTR_8; +const char* const s_PHUSTR_9 = PHUSTR_9; +const char* const s_PHUSTR_10 = PHUSTR_10; +const char* const s_PHUSTR_11 = PHUSTR_11; +const char* const s_PHUSTR_12 = PHUSTR_12; +const char* const s_PHUSTR_13 = PHUSTR_13; +const char* const s_PHUSTR_14 = PHUSTR_14; +const char* const s_PHUSTR_15 = PHUSTR_15; +const char* const s_PHUSTR_16 = PHUSTR_16; +const char* const s_PHUSTR_17 = PHUSTR_17; +const char* const s_PHUSTR_18 = PHUSTR_18; +const char* const s_PHUSTR_19 = PHUSTR_19; +const char* const s_PHUSTR_20 = PHUSTR_20; +const char* const s_PHUSTR_21 = PHUSTR_21; +const char* const s_PHUSTR_22 = PHUSTR_22; +const char* const s_PHUSTR_23 = PHUSTR_23; +const char* const s_PHUSTR_24 = PHUSTR_24; +const char* const s_PHUSTR_25 = PHUSTR_25; +const char* const s_PHUSTR_26 = PHUSTR_26; +const char* const s_PHUSTR_27 = PHUSTR_27; +const char* const s_PHUSTR_28 = PHUSTR_28; +const char* const s_PHUSTR_29 = PHUSTR_29; +const char* const s_PHUSTR_30 = PHUSTR_30; +const char* const s_PHUSTR_31 = PHUSTR_31; +const char* const s_PHUSTR_32 = PHUSTR_32; +const char* const s_THUSTR_1 = THUSTR_1; +const char* const s_THUSTR_2 = THUSTR_2; +const char* const s_THUSTR_3 = THUSTR_3; +const char* const s_THUSTR_4 = THUSTR_4; +const char* const s_THUSTR_5 = THUSTR_5; +const char* const s_THUSTR_6 = THUSTR_6; +const char* const s_THUSTR_7 = THUSTR_7; +const char* const s_THUSTR_8 = THUSTR_8; +const char* const s_THUSTR_9 = THUSTR_9; +const char* const s_THUSTR_10 = THUSTR_10; +const char* const s_THUSTR_11 = THUSTR_11; +const char* const s_THUSTR_12 = THUSTR_12; +const char* const s_THUSTR_13 = THUSTR_13; +const char* const s_THUSTR_14 = THUSTR_14; +const char* const s_THUSTR_15 = THUSTR_15; +const char* const s_THUSTR_16 = THUSTR_16; +const char* const s_THUSTR_17 = THUSTR_17; +const char* const s_THUSTR_18 = THUSTR_18; +const char* const s_THUSTR_19 = THUSTR_19; +const char* const s_THUSTR_20 = THUSTR_20; +const char* const s_THUSTR_21 = THUSTR_21; +const char* const s_THUSTR_22 = THUSTR_22; +const char* const s_THUSTR_23 = THUSTR_23; +const char* const s_THUSTR_24 = THUSTR_24; +const char* const s_THUSTR_25 = THUSTR_25; +const char* const s_THUSTR_26 = THUSTR_26; +const char* const s_THUSTR_27 = THUSTR_27; +const char* const s_THUSTR_28 = THUSTR_28; +const char* const s_THUSTR_29 = THUSTR_29; +const char* const s_THUSTR_30 = THUSTR_30; +const char* const s_THUSTR_31 = THUSTR_31; +const char* const s_THUSTR_32 = THUSTR_32; +const char* const s_HUSTR_CHATMACRO1 = HUSTR_CHATMACRO1; +const char* const s_HUSTR_CHATMACRO2 = HUSTR_CHATMACRO2; +const char* const s_HUSTR_CHATMACRO3 = HUSTR_CHATMACRO3; +const char* const s_HUSTR_CHATMACRO4 = HUSTR_CHATMACRO4; +const char* const s_HUSTR_CHATMACRO5 = HUSTR_CHATMACRO5; +const char* const s_HUSTR_CHATMACRO6 = HUSTR_CHATMACRO6; +const char* const s_HUSTR_CHATMACRO7 = HUSTR_CHATMACRO7; +const char* const s_HUSTR_CHATMACRO8 = HUSTR_CHATMACRO8; +const char* const s_HUSTR_CHATMACRO9 = HUSTR_CHATMACRO9; +const char* const s_HUSTR_CHATMACRO0 = HUSTR_CHATMACRO0; +const char* const s_HUSTR_TALKTOSELF1 = HUSTR_TALKTOSELF1; +const char* const s_HUSTR_TALKTOSELF2 = HUSTR_TALKTOSELF2; +const char* const s_HUSTR_TALKTOSELF3 = HUSTR_TALKTOSELF3; +const char* const s_HUSTR_TALKTOSELF4 = HUSTR_TALKTOSELF4; +const char* const s_HUSTR_TALKTOSELF5 = HUSTR_TALKTOSELF5; +const char* const s_HUSTR_MESSAGESENT = HUSTR_MESSAGESENT; +const char* const s_HUSTR_PLRGREEN = HUSTR_PLRGREEN; +const char* const s_HUSTR_PLRINDIGO = HUSTR_PLRINDIGO; +const char* const s_HUSTR_PLRBROWN = HUSTR_PLRBROWN; +const char* const s_HUSTR_PLRRED = HUSTR_PLRRED; +const char* const s_AMSTR_FOLLOWON = AMSTR_FOLLOWON; +const char* const s_AMSTR_FOLLOWOFF = AMSTR_FOLLOWOFF; +const char* const s_AMSTR_GRIDON = AMSTR_GRIDON; +const char* const s_AMSTR_GRIDOFF = AMSTR_GRIDOFF; +const char* const s_AMSTR_MARKEDSPOT = AMSTR_MARKEDSPOT; +const char* const s_AMSTR_MARKSCLEARED = AMSTR_MARKSCLEARED; // CPhipps - automap rotate & overlay -const char* s_AMSTR_ROTATEON = AMSTR_ROTATEON; -const char* s_AMSTR_ROTATEOFF = AMSTR_ROTATEOFF; -const char* s_AMSTR_OVERLAYON = AMSTR_OVERLAYON; -const char* s_AMSTR_OVERLAYOFF = AMSTR_OVERLAYOFF; -const char *s_STSTR_MUS = STSTR_MUS; -const char *s_STSTR_NOMUS = STSTR_NOMUS; -const char *s_STSTR_DQDON = STSTR_DQDON; -const char *s_STSTR_DQDOFF = STSTR_DQDOFF; -const char *s_STSTR_KFAADDED = STSTR_KFAADDED; -const char *s_STSTR_FAADDED = STSTR_FAADDED; -const char *s_STSTR_NCON = STSTR_NCON; -const char *s_STSTR_NCOFF = STSTR_NCOFF; -const char *s_STSTR_BEHOLD = STSTR_BEHOLD; -const char *s_STSTR_BEHOLDX = STSTR_BEHOLDX; -const char *s_STSTR_CHOPPERS = STSTR_CHOPPERS; -const char *s_STSTR_CLEV = STSTR_CLEV; -const char *s_STSTR_COMPON = STSTR_COMPON; -const char *s_STSTR_COMPOFF = STSTR_COMPOFF; -const char *s_E1TEXT = E1TEXT; -const char *s_E2TEXT = E2TEXT; -const char *s_E3TEXT = E3TEXT; -const char *s_E4TEXT = E4TEXT; -const char *s_C1TEXT = C1TEXT; -const char *s_C2TEXT = C2TEXT; -const char *s_C3TEXT = C3TEXT; -const char *s_C4TEXT = C4TEXT; -const char *s_C5TEXT = C5TEXT; -const char *s_C6TEXT = C6TEXT; -const char *s_P1TEXT = P1TEXT; -const char *s_P2TEXT = P2TEXT; -const char *s_P3TEXT = P3TEXT; -const char *s_P4TEXT = P4TEXT; -const char *s_P5TEXT = P5TEXT; -const char *s_P6TEXT = P6TEXT; -const char *s_T1TEXT = T1TEXT; -const char *s_T2TEXT = T2TEXT; -const char *s_T3TEXT = T3TEXT; -const char *s_T4TEXT = T4TEXT; -const char *s_T5TEXT = T5TEXT; -const char *s_T6TEXT = T6TEXT; -const char *s_CC_ZOMBIE = CC_ZOMBIE; -const char *s_CC_SHOTGUN = CC_SHOTGUN; -const char *s_CC_HEAVY = CC_HEAVY; -const char *s_CC_IMP = CC_IMP; -const char *s_CC_DEMON = CC_DEMON; -const char *s_CC_LOST = CC_LOST; -const char *s_CC_CACO = CC_CACO; -const char *s_CC_HELL = CC_HELL; -const char *s_CC_BARON = CC_BARON; -const char *s_CC_ARACH = CC_ARACH; -const char *s_CC_PAIN = CC_PAIN; -const char *s_CC_REVEN = CC_REVEN; -const char *s_CC_MANCU = CC_MANCU; -const char *s_CC_ARCH = CC_ARCH; -const char *s_CC_SPIDER = CC_SPIDER; -const char *s_CC_CYBER = CC_CYBER; -const char *s_CC_HERO = CC_HERO; +const char* const s_AMSTR_ROTATEON = AMSTR_ROTATEON; +const char* const s_AMSTR_ROTATEOFF = AMSTR_ROTATEOFF; +const char* const s_AMSTR_OVERLAYON = AMSTR_OVERLAYON; +const char* const s_AMSTR_OVERLAYOFF = AMSTR_OVERLAYOFF; +const char* const s_STSTR_MUS = STSTR_MUS; +const char* const s_STSTR_NOMUS = STSTR_NOMUS; +const char* const s_STSTR_DQDON = STSTR_DQDON; +const char* const s_STSTR_DQDOFF = STSTR_DQDOFF; +const char* const s_STSTR_KFAADDED = STSTR_KFAADDED; +const char* const s_STSTR_FAADDED = STSTR_FAADDED; +const char* const s_STSTR_NCON = STSTR_NCON; +const char* const s_STSTR_NCOFF = STSTR_NCOFF; +const char* const s_STSTR_BEHOLD = STSTR_BEHOLD; +const char* const s_STSTR_BEHOLDX = STSTR_BEHOLDX; +const char* const s_STSTR_CHOPPERS = STSTR_CHOPPERS; +const char* const s_STSTR_CLEV = STSTR_CLEV; +const char* const s_STSTR_COMPON = STSTR_COMPON; +const char* const s_STSTR_COMPOFF = STSTR_COMPOFF; +const char* const s_E1TEXT = E1TEXT; +const char* const s_E2TEXT = E2TEXT; +const char* const s_E3TEXT = E3TEXT; +const char* const s_E4TEXT = E4TEXT; +const char* const s_C1TEXT = C1TEXT; +const char* const s_C2TEXT = C2TEXT; +const char* const s_C3TEXT = C3TEXT; +const char* const s_C4TEXT = C4TEXT; +const char* const s_C5TEXT = C5TEXT; +const char* const s_C6TEXT = C6TEXT; +const char* const s_P1TEXT = P1TEXT; +const char* const s_P2TEXT = P2TEXT; +const char* const s_P3TEXT = P3TEXT; +const char* const s_P4TEXT = P4TEXT; +const char* const s_P5TEXT = P5TEXT; +const char* const s_P6TEXT = P6TEXT; +const char* const s_T1TEXT = T1TEXT; +const char* const s_T2TEXT = T2TEXT; +const char* const s_T3TEXT = T3TEXT; +const char* const s_T4TEXT = T4TEXT; +const char* const s_T5TEXT = T5TEXT; +const char* const s_T6TEXT = T6TEXT; +const char* const s_CC_ZOMBIE = CC_ZOMBIE; +const char* const s_CC_SHOTGUN = CC_SHOTGUN; +const char* const s_CC_HEAVY = CC_HEAVY; +const char* const s_CC_IMP = CC_IMP; +const char* const s_CC_DEMON = CC_DEMON; +const char* const s_CC_LOST = CC_LOST; +const char* const s_CC_CACO = CC_CACO; +const char* const s_CC_HELL = CC_HELL; +const char* const s_CC_BARON = CC_BARON; +const char* const s_CC_ARACH = CC_ARACH; +const char* const s_CC_PAIN = CC_PAIN; +const char* const s_CC_REVEN = CC_REVEN; +const char* const s_CC_MANCU = CC_MANCU; +const char* const s_CC_ARCH = CC_ARCH; +const char* const s_CC_SPIDER = CC_SPIDER; +const char* const s_CC_CYBER = CC_CYBER; +const char* const s_CC_HERO = CC_HERO; // Ty 03/30/98 - new substitutions for background textures // during int screens -const char *bgflatE1 = "FLOOR4_8"; // end of DOOM Episode 1 -const char *bgflatE2 = "SFLR6_1"; // end of DOOM Episode 2 -const char *bgflatE3 = "MFLR8_4"; // end of DOOM Episode 3 -const char *bgflatE4 = "MFLR8_3"; // end of DOOM Episode 4 -const char *bgflat06 = "SLIME16"; // DOOM2 after MAP06 -const char *bgflat11 = "RROCK14"; // DOOM2 after MAP11 -const char *bgflat20 = "RROCK07"; // DOOM2 after MAP20 -const char *bgflat30 = "RROCK17"; // DOOM2 after MAP30 -const char *bgflat15 = "RROCK13"; // DOOM2 going MAP15 to MAP31 -const char *bgflat31 = "RROCK19"; // DOOM2 going MAP31 to MAP32 -const char *bgcastcall = "BOSSBACK"; // Panel behind cast call - -const char *startup1 = ""; // blank lines are default and are not printed -const char *startup2 = ""; -const char *startup3 = ""; -const char *startup4 = ""; -const char *startup5 = ""; +const char* const bgflatE1 = "FLOOR4_8"; // end of DOOM Episode 1 +const char* const bgflatE2 = "SFLR6_1"; // end of DOOM Episode 2 +const char* const bgflatE3 = "MFLR8_4"; // end of DOOM Episode 3 +const char* const bgflatE4 = "MFLR8_3"; // end of DOOM Episode 4 +const char* const bgflat06 = "SLIME16"; // DOOM2 after MAP06 +const char* const bgflat11 = "RROCK14"; // DOOM2 after MAP11 +const char* const bgflat20 = "RROCK07"; // DOOM2 after MAP20 +const char* const bgflat30 = "RROCK17"; // DOOM2 after MAP30 +const char* const bgflat15 = "RROCK13"; // DOOM2 going MAP15 to MAP31 +const char* const bgflat31 = "RROCK19"; // DOOM2 going MAP31 to MAP32 +const char* const bgcastcall = "BOSSBACK"; // Panel behind cast call + +const char* const startup1 = ""; // blank lines are default and are not printed +const char* const startup2 = ""; +const char* const startup3 = ""; +const char* const startup4 = ""; +const char* const startup5 = ""; // end d_deh.h variable declarations // ==================================================================== -const char *deh_newlevel = "NEWLEVEL"; // CPhipps - const +const char* const deh_newlevel = "NEWLEVEL"; // CPhipps - const // DOOM shareware/registered/retail (Ultimate) names. // CPhipps - const**const -const char **const mapnames[] = +const char * const *const mapnames[] = { &s_HUSTR_E1M1, &s_HUSTR_E1M2, @@ -447,7 +447,7 @@ const char **const mapnames[] = }; // CPhipps - const**const -const char **const mapnames2[] = // DOOM 2 map names. +const char * const*const mapnames2[] = // DOOM 2 map names. { &s_HUSTR_1, &s_HUSTR_2, @@ -486,7 +486,7 @@ const char **const mapnames2[] = // DOOM 2 map names. }; // CPhipps - const**const -const char **const mapnamesp[] = // Plutonia WAD map names. +const char * const*const mapnamesp[] = // Plutonia WAD map names. { &s_PHUSTR_1, &s_PHUSTR_2, @@ -525,7 +525,7 @@ const char **const mapnamesp[] = // Plutonia WAD map names. }; // CPhipps - const**const -const char **const mapnamest[] = // TNT WAD map names. +const char * const*const mapnamest[] = // TNT WAD map names. { &s_THUSTR_1, &s_THUSTR_2, @@ -621,8 +621,8 @@ static int dehfgetc(DEHFILE *fp) // CPhipps - make strings pointed to const typedef struct { - const char **ppstr; // doubly indirect pointer to string - const char *lookup; // pointer to lookup string name + const char *const * ppstr; // doubly indirect pointer to string + const char * const lookup; // pointer to lookup string name } deh_strs; /* CPhipps - const, static @@ -3080,4 +3080,4 @@ void D_ProcessDehFile(const char *filename, const char *outfilename, int lumpnum { lprintf(LO_WARN, "D_ProcessDehFile: deh support has been disabled at build time!\n"); } -#endif \ No newline at end of file +#endif diff --git a/components/doom/prboom/d_deh.h b/components/doom/prboom/d_deh.h index 8ee2072..513e0b0 100644 --- a/components/doom/prboom/d_deh.h +++ b/components/doom/prboom/d_deh.h @@ -59,598 +59,598 @@ void D_ProcessDehFile(const char *filename, const char *outfilename, int lumpnum // D_Main.C // //#define D_DEVSTR "Development mode ON.\n" -extern const char *s_D_DEVSTR; // = D_DEVSTR; +extern const char* const s_D_DEVSTR; // = D_DEVSTR; //#define D_CDROM "CD-ROM Version: default.cfg from c:\\doomdata\n" -extern const char *s_D_CDROM; // = D_CDROM; +extern const char* const s_D_CDROM; // = D_CDROM; // // M_Menu.C // //#define PRESSKEY "press a key." -extern const char *s_PRESSKEY; // = PRESSKEY; +extern const char* const s_PRESSKEY; // = PRESSKEY; //#define PRESSYN "press y or n." -extern const char *s_PRESSYN; // = PRESSYN; +extern const char* const s_PRESSYN; // = PRESSYN; //#define QUITMSG "are you sure you want to\nquit this great game?" -extern const char *s_QUITMSG; // = QUITMSG; +extern const char* const s_QUITMSG; // = QUITMSG; //#define LOADNET "you can't do load while in a net game!\n\n"PRESSKEY -extern const char *s_LOADNET; // = LOADNET; +extern const char* const s_LOADNET; // = LOADNET; //#define QLOADNET "you can't quickload during a netgame!\n\n"PRESSKEY -extern const char *s_QLOADNET; // = QLOADNET; +extern const char* const s_QLOADNET; // = QLOADNET; //#define QSAVESPOT "you haven't picked a quicksave slot yet!\n\n"PRESSKEY -extern const char *s_QSAVESPOT; // = QSAVESPOT; +extern const char* const s_QSAVESPOT; // = QSAVESPOT; //#define SAVEDEAD "you can't save if you aren't playing!\n\n"PRESSKEY -extern const char *s_SAVEDEAD; // = SAVEDEAD; +extern const char* const s_SAVEDEAD; // = SAVEDEAD; //#define QSPROMPT "quicksave over your game named\n\n'%s'?\n\n"PRESSYN -extern const char *s_QSPROMPT; // = QSPROMPT; +extern const char* const s_QSPROMPT; // = QSPROMPT; //#define QLPROMPT "do you want to quickload the game named\n\n'%s'?\n\n"PRESSYN -extern const char *s_QLPROMPT; // = QLPROMPT; +extern const char* const s_QLPROMPT; // = QLPROMPT; /* #define NEWGAME \ "you can't start a new game\n"\ "while in a network game.\n\n"PRESSKEY */ -extern const char *s_NEWGAME; // = NEWGAME; +extern const char* const s_NEWGAME; // = NEWGAME; // CPhipps - message given when asked if to restart the level -extern const char *s_RESTARTLEVEL; +extern const char* const s_RESTARTLEVEL; /* #define NIGHTMARE \ "are you sure? this skill level\n"\ "isn't even remotely fair.\n\n"PRESSYN */ -extern const char *s_NIGHTMARE; // = NIGHTMARE; +extern const char* const s_NIGHTMARE; // = NIGHTMARE; /* #define SWSTRING \ "this is the shareware version of doom.\n\n"\ "you need to order the entire trilogy.\n\n"PRESSKEY */ -extern const char *s_SWSTRING; // = SWSTRING; +extern const char* const s_SWSTRING; // = SWSTRING; //#define MSGOFF "Messages OFF" -extern const char *s_MSGOFF; // = MSGOFF; +extern const char* const s_MSGOFF; // = MSGOFF; //#define MSGON "Messages ON" -extern const char *s_MSGON; // = MSGON; +extern const char* const s_MSGON; // = MSGON; //#define NETEND "you can't end a netgame!\n\n"PRESSKEY -extern const char *s_NETEND; // = NETEND; +extern const char* const s_NETEND; // = NETEND; //#define ENDGAME "are you sure you want to end the game?\n\n"PRESSYN -extern const char *s_ENDGAME; // = ENDGAME; +extern const char* const s_ENDGAME; // = ENDGAME; //#define DOSY "(press y to quit)" -extern const char *s_DOSY; // = DOSY; +extern const char* const s_DOSY; // = DOSY; //#define DETAILHI "High detail" -extern const char *s_DETAILHI; // = DETAILHI; +extern const char* const s_DETAILHI; // = DETAILHI; //#define DETAILLO "Low detail" -extern const char *s_DETAILLO; // = DETAILLO; +extern const char* const s_DETAILLO; // = DETAILLO; //#define GAMMALVL0 "Gamma correction OFF" -extern const char *s_GAMMALVL0; // = GAMMALVL0; +extern const char* const s_GAMMALVL0; // = GAMMALVL0; //#define GAMMALVL1 "Gamma correction level 1" -extern const char *s_GAMMALVL1; // = GAMMALVL1; +extern const char* const s_GAMMALVL1; // = GAMMALVL1; //#define GAMMALVL2 "Gamma correction level 2" -extern const char *s_GAMMALVL2; // = GAMMALVL2; +extern const char* const s_GAMMALVL2; // = GAMMALVL2; //#define GAMMALVL3 "Gamma correction level 3" -extern const char *s_GAMMALVL3; // = GAMMALVL3; +extern const char* const s_GAMMALVL3; // = GAMMALVL3; //#define GAMMALVL4 "Gamma correction level 4" -extern const char *s_GAMMALVL4; // = GAMMALVL4; +extern const char* const s_GAMMALVL4; // = GAMMALVL4; //#define EMPTYSTRING "empty slot" -extern const char *s_EMPTYSTRING; // = EMPTYSTRING; +extern const char* const s_EMPTYSTRING; // = EMPTYSTRING; // // P_inter.C // //#define GOTARMOR "Picked up the armor." -extern const char *s_GOTARMOR; // = GOTARMOR; +extern const char* const s_GOTARMOR; // = GOTARMOR; //#define GOTMEGA "Picked up the MegaArmor!" -extern const char *s_GOTMEGA; // = GOTMEGA; +extern const char* const s_GOTMEGA; // = GOTMEGA; //#define GOTHTHBONUS "Picked up a health bonus." -extern const char *s_GOTHTHBONUS; // = GOTHTHBONUS; +extern const char* const s_GOTHTHBONUS; // = GOTHTHBONUS; //#define GOTARMBONUS "Picked up an armor bonus." -extern const char *s_GOTARMBONUS; // = GOTARMBONUS; +extern const char* const s_GOTARMBONUS; // = GOTARMBONUS; //#define GOTSTIM "Picked up a stimpack." -extern const char *s_GOTSTIM; // = GOTSTIM; +extern const char* const s_GOTSTIM; // = GOTSTIM; //#define GOTMEDINEED "Picked up a medikit that you REALLY need!" -extern const char *s_GOTMEDINEED; // = GOTMEDINEED; +extern const char* const s_GOTMEDINEED; // = GOTMEDINEED; //#define GOTMEDIKIT "Picked up a medikit." -extern const char *s_GOTMEDIKIT; // = GOTMEDIKIT; +extern const char* const s_GOTMEDIKIT; // = GOTMEDIKIT; //#define GOTSUPER "Supercharge!" -extern const char *s_GOTSUPER; // = GOTSUPER; +extern const char* const s_GOTSUPER; // = GOTSUPER; //#define GOTBLUECARD "Picked up a blue keycard." -extern const char *s_GOTBLUECARD; // = GOTBLUECARD; +extern const char* const s_GOTBLUECARD; // = GOTBLUECARD; //#define GOTYELWCARD "Picked up a yellow keycard." -extern const char *s_GOTYELWCARD; // = GOTYELWCARD; +extern const char* const s_GOTYELWCARD; // = GOTYELWCARD; //#define GOTREDCARD "Picked up a red keycard." -extern const char *s_GOTREDCARD; // = GOTREDCARD; +extern const char* const s_GOTREDCARD; // = GOTREDCARD; //#define GOTBLUESKUL "Picked up a blue skull key." -extern const char *s_GOTBLUESKUL; // = GOTBLUESKUL; +extern const char* const s_GOTBLUESKUL; // = GOTBLUESKUL; //#define GOTYELWSKUL "Picked up a yellow skull key." -extern const char *s_GOTYELWSKUL; // = GOTYELWSKUL; +extern const char* const s_GOTYELWSKUL; // = GOTYELWSKUL; //#define GOTREDSKULL "Picked up a red skull key." -extern const char *s_GOTREDSKULL; // = GOTREDSKULL; +extern const char* const s_GOTREDSKULL; // = GOTREDSKULL; //#define GOTINVUL "Invulnerability!" -extern const char *s_GOTINVUL; // = GOTINVUL; +extern const char* const s_GOTINVUL; // = GOTINVUL; //#define GOTBERSERK "Berserk!" -extern const char *s_GOTBERSERK; // = GOTBERSERK; +extern const char* const s_GOTBERSERK; // = GOTBERSERK; //#define GOTINVIS "Partial Invisibility" -extern const char *s_GOTINVIS; // = GOTINVIS; +extern const char* const s_GOTINVIS; // = GOTINVIS; //#define GOTSUIT "Radiation Shielding Suit" -extern const char *s_GOTSUIT; // = GOTSUIT; +extern const char* const s_GOTSUIT; // = GOTSUIT; //#define GOTMAP "Computer Area Map" -extern const char *s_GOTMAP; // = GOTMAP; +extern const char* const s_GOTMAP; // = GOTMAP; //#define GOTVISOR "Light Amplification Visor" -extern const char *s_GOTVISOR; // = GOTVISOR; +extern const char* const s_GOTVISOR; // = GOTVISOR; //#define GOTMSPHERE "MegaSphere!" -extern const char *s_GOTMSPHERE; // = GOTMSPHERE; +extern const char* const s_GOTMSPHERE; // = GOTMSPHERE; //#define GOTCLIP "Picked up a clip." -extern const char *s_GOTCLIP; // = GOTCLIP; +extern const char* const s_GOTCLIP; // = GOTCLIP; //#define GOTCLIPBOX "Picked up a box of bullets." -extern const char *s_GOTCLIPBOX; // = GOTCLIPBOX; +extern const char* const s_GOTCLIPBOX; // = GOTCLIPBOX; //#define GOTROCKET "Picked up a rocket." -extern const char *s_GOTROCKET; // = GOTROCKET; +extern const char* const s_GOTROCKET; // = GOTROCKET; //#define GOTROCKBOX "Picked up a box of rockets." -extern const char *s_GOTROCKBOX; // = GOTROCKBOX; +extern const char* const s_GOTROCKBOX; // = GOTROCKBOX; //#define GOTCELL "Picked up an energy cell." -extern const char *s_GOTCELL; // = GOTCELL; +extern const char* const s_GOTCELL; // = GOTCELL; //#define GOTCELLBOX "Picked up an energy cell pack." -extern const char *s_GOTCELLBOX; // = GOTCELLBOX; +extern const char* const s_GOTCELLBOX; // = GOTCELLBOX; //#define GOTSHELLS "Picked up 4 shotgun shells." -extern const char *s_GOTSHELLS; // = GOTSHELLS; +extern const char* const s_GOTSHELLS; // = GOTSHELLS; //#define GOTSHELLBOX "Picked up a box of shotgun shells." -extern const char *s_GOTSHELLBOX; // = GOTSHELLBOX; +extern const char* const s_GOTSHELLBOX; // = GOTSHELLBOX; //#define GOTBACKPACK "Picked up a backpack full of ammo!" -extern const char *s_GOTBACKPACK; // = GOTBACKPACK; +extern const char* const s_GOTBACKPACK; // = GOTBACKPACK; //#define GOTBFG9000 "You got the BFG9000! Oh, yes." -extern const char *s_GOTBFG9000; // = GOTBFG9000; +extern const char* const s_GOTBFG9000; // = GOTBFG9000; //#define GOTCHAINGUN "You got the chaingun!" -extern const char *s_GOTCHAINGUN; // = GOTCHAINGUN; +extern const char* const s_GOTCHAINGUN; // = GOTCHAINGUN; //#define GOTCHAINSAW "A chainsaw! Find some meat!" -extern const char *s_GOTCHAINSAW; // = GOTCHAINSAW; +extern const char* const s_GOTCHAINSAW; // = GOTCHAINSAW; //#define GOTLAUNCHER "You got the rocket launcher!" -extern const char *s_GOTLAUNCHER; // = GOTLAUNCHER; +extern const char* const s_GOTLAUNCHER; // = GOTLAUNCHER; //#define GOTPLASMA "You got the plasma gun!" -extern const char *s_GOTPLASMA; // = GOTPLASMA; +extern const char* const s_GOTPLASMA; // = GOTPLASMA; //#define GOTSHOTGUN "You got the shotgun!" -extern const char *s_GOTSHOTGUN; // = GOTSHOTGUN; +extern const char* const s_GOTSHOTGUN; // = GOTSHOTGUN; //#define GOTSHOTGUN2 "You got the super shotgun!" -extern const char *s_GOTSHOTGUN2; // = GOTSHOTGUN2; +extern const char* const s_GOTSHOTGUN2; // = GOTSHOTGUN2; // // P_Doors.C // //#define PD_BLUEO "You need a blue key to activate this object" -extern const char *s_PD_BLUEO; // = PD_BLUEO; +extern const char* const s_PD_BLUEO; // = PD_BLUEO; //#define PD_REDO "You need a red key to activate this object" -extern const char *s_PD_REDO; // = PD_REDO; +extern const char* const s_PD_REDO; // = PD_REDO; //#define PD_YELLOWO "You need a yellow key to activate this object" -extern const char *s_PD_YELLOWO; // = PD_YELLOWO; +extern const char* const s_PD_YELLOWO; // = PD_YELLOWO; //#define PD_BLUEK "You need a blue key to open this door" -extern const char *s_PD_BLUEK; // = PD_BLUEK; +extern const char* const s_PD_BLUEK; // = PD_BLUEK; //#define PD_REDK "You need a red key to open this door" -extern const char *s_PD_REDK; // = PD_REDK; +extern const char* const s_PD_REDK; // = PD_REDK; //#define PD_YELLOWK "You need a yellow key to open this door" -extern const char *s_PD_YELLOWK; // = PD_YELLOWK; +extern const char* const s_PD_YELLOWK; // = PD_YELLOWK; //jff 02/05/98 Create messages specific to card and skull keys //#define PD_BLUEC "You need a blue card to open this door" -extern const char *s_PD_BLUEC; // = PD_BLUEC; +extern const char* const s_PD_BLUEC; // = PD_BLUEC; //#define PD_REDC "You need a red card to open this door" -extern const char *s_PD_REDC; // = PD_REDC; +extern const char* const s_PD_REDC; // = PD_REDC; //#define PD_YELLOWC "You need a yellow card to open this door" -extern const char *s_PD_YELLOWC; // = PD_YELLOWC; +extern const char* const s_PD_YELLOWC; // = PD_YELLOWC; //#define PD_BLUES "You need a blue skull to open this door" -extern const char *s_PD_BLUES; // = PD_BLUES; +extern const char* const s_PD_BLUES; // = PD_BLUES; //#define PD_REDS "You need a red skull to open this door" -extern const char *s_PD_REDS; // = PD_REDS; +extern const char* const s_PD_REDS; // = PD_REDS; //#define PD_YELLOWS "You need a yellow skull to open this door" -extern const char *s_PD_YELLOWS; // = PD_YELLOWS; +extern const char* const s_PD_YELLOWS; // = PD_YELLOWS; //#define PD_ANY "Any key will open this door" -extern const char *s_PD_ANY; // = PD_ANY; +extern const char* const s_PD_ANY; // = PD_ANY; //#define PD_ALL3 "You need all three keys to open this door" -extern const char *s_PD_ALL3; // = PD_ALL3; +extern const char* const s_PD_ALL3; // = PD_ALL3; //#define PD_ALL6 "You need all six keys to open this door" -extern const char *s_PD_ALL6; // = PD_ALL6; +extern const char* const s_PD_ALL6; // = PD_ALL6; // // G_game.C // //#define GGSAVED "game saved." -extern const char *s_GGSAVED; // = GGSAVED; +extern const char* const s_GGSAVED; // = GGSAVED; // // HU_stuff.C // //#define HUSTR_MSGU "[Message unsent]" -extern const char *s_HUSTR_MSGU; // = HUSTR_MSGU; +extern const char* const s_HUSTR_MSGU; // = HUSTR_MSGU; //#define HUSTR_E1M1 "E1M1: Hangar" -extern const char *s_HUSTR_E1M1; // = HUSTR_E1M1; +extern const char* const s_HUSTR_E1M1; // = HUSTR_E1M1; //#define HUSTR_E1M2 "E1M2: Nuclear Plant" -extern const char *s_HUSTR_E1M2; // = HUSTR_E1M2; +extern const char* const s_HUSTR_E1M2; // = HUSTR_E1M2; //#define HUSTR_E1M3 "E1M3: Toxin Refinery" -extern const char *s_HUSTR_E1M3; // = HUSTR_E1M3; +extern const char* const s_HUSTR_E1M3; // = HUSTR_E1M3; //#define HUSTR_E1M4 "E1M4: Command Control" -extern const char *s_HUSTR_E1M4; // = HUSTR_E1M4; +extern const char* const s_HUSTR_E1M4; // = HUSTR_E1M4; //#define HUSTR_E1M5 "E1M5: Phobos Lab" -extern const char *s_HUSTR_E1M5; // = HUSTR_E1M5; +extern const char* const s_HUSTR_E1M5; // = HUSTR_E1M5; //#define HUSTR_E1M6 "E1M6: Central Processing" -extern const char *s_HUSTR_E1M6; // = HUSTR_E1M6; +extern const char* const s_HUSTR_E1M6; // = HUSTR_E1M6; //#define HUSTR_E1M7 "E1M7: Computer Station" -extern const char *s_HUSTR_E1M7; // = HUSTR_E1M7; +extern const char* const s_HUSTR_E1M7; // = HUSTR_E1M7; //#define HUSTR_E1M8 "E1M8: Phobos Anomaly" -extern const char *s_HUSTR_E1M8; // = HUSTR_E1M8; +extern const char* const s_HUSTR_E1M8; // = HUSTR_E1M8; //#define HUSTR_E1M9 "E1M9: Military Base" -extern const char *s_HUSTR_E1M9; // = HUSTR_E1M9; +extern const char* const s_HUSTR_E1M9; // = HUSTR_E1M9; //#define HUSTR_E2M1 "E2M1: Deimos Anomaly" -extern const char *s_HUSTR_E2M1; // = HUSTR_E2M1; +extern const char* const s_HUSTR_E2M1; // = HUSTR_E2M1; //#define HUSTR_E2M2 "E2M2: Containment Area" -extern const char *s_HUSTR_E2M2; // = HUSTR_E2M2; +extern const char* const s_HUSTR_E2M2; // = HUSTR_E2M2; //#define HUSTR_E2M3 "E2M3: Refinery" -extern const char *s_HUSTR_E2M3; // = HUSTR_E2M3; +extern const char* const s_HUSTR_E2M3; // = HUSTR_E2M3; //#define HUSTR_E2M4 "E2M4: Deimos Lab" -extern const char *s_HUSTR_E2M4; // = HUSTR_E2M4; +extern const char* const s_HUSTR_E2M4; // = HUSTR_E2M4; //#define HUSTR_E2M5 "E2M5: Command Center" -extern const char *s_HUSTR_E2M5; // = HUSTR_E2M5; +extern const char* const s_HUSTR_E2M5; // = HUSTR_E2M5; //#define HUSTR_E2M6 "E2M6: Halls of the Damned" -extern const char *s_HUSTR_E2M6; // = HUSTR_E2M6; +extern const char* const s_HUSTR_E2M6; // = HUSTR_E2M6; //#define HUSTR_E2M7 "E2M7: Spawning Vats" -extern const char *s_HUSTR_E2M7; // = HUSTR_E2M7; +extern const char* const s_HUSTR_E2M7; // = HUSTR_E2M7; //#define HUSTR_E2M8 "E2M8: Tower of Babel" -extern const char *s_HUSTR_E2M8; // = HUSTR_E2M8; +extern const char* const s_HUSTR_E2M8; // = HUSTR_E2M8; //#define HUSTR_E2M9 "E2M9: Fortress of Mystery" -extern const char *s_HUSTR_E2M9; // = HUSTR_E2M9; +extern const char* const s_HUSTR_E2M9; // = HUSTR_E2M9; //#define HUSTR_E3M1 "E3M1: Hell Keep" -extern const char *s_HUSTR_E3M1; // = HUSTR_E3M1; +extern const char* const s_HUSTR_E3M1; // = HUSTR_E3M1; //#define HUSTR_E3M2 "E3M2: Slough of Despair" -extern const char *s_HUSTR_E3M2; // = HUSTR_E3M2; +extern const char* const s_HUSTR_E3M2; // = HUSTR_E3M2; //#define HUSTR_E3M3 "E3M3: Pandemonium" -extern const char *s_HUSTR_E3M3; // = HUSTR_E3M3; +extern const char* const s_HUSTR_E3M3; // = HUSTR_E3M3; //#define HUSTR_E3M4 "E3M4: House of Pain" -extern const char *s_HUSTR_E3M4; // = HUSTR_E3M4; +extern const char* const s_HUSTR_E3M4; // = HUSTR_E3M4; //#define HUSTR_E3M5 "E3M5: Unholy Cathedral" -extern const char *s_HUSTR_E3M5; // = HUSTR_E3M5; +extern const char* const s_HUSTR_E3M5; // = HUSTR_E3M5; //#define HUSTR_E3M6 "E3M6: Mt. Erebus" -extern const char *s_HUSTR_E3M6; // = HUSTR_E3M6; +extern const char* const s_HUSTR_E3M6; // = HUSTR_E3M6; //#define HUSTR_E3M7 "E3M7: Limbo" -extern const char *s_HUSTR_E3M7; // = HUSTR_E3M7; +extern const char* const s_HUSTR_E3M7; // = HUSTR_E3M7; //#define HUSTR_E3M8 "E3M8: Dis" -extern const char *s_HUSTR_E3M8; // = HUSTR_E3M8; +extern const char* const s_HUSTR_E3M8; // = HUSTR_E3M8; //#define HUSTR_E3M9 "E3M9: Warrens" -extern const char *s_HUSTR_E3M9; // = HUSTR_E3M9; +extern const char* const s_HUSTR_E3M9; // = HUSTR_E3M9; //#define HUSTR_E4M1 "E4M1: Hell Beneath" -extern const char *s_HUSTR_E4M1; // = HUSTR_E4M1; +extern const char* const s_HUSTR_E4M1; // = HUSTR_E4M1; //#define HUSTR_E4M2 "E4M2: Perfect Hatred" -extern const char *s_HUSTR_E4M2; // = HUSTR_E4M2; +extern const char* const s_HUSTR_E4M2; // = HUSTR_E4M2; //#define HUSTR_E4M3 "E4M3: Sever The Wicked" -extern const char *s_HUSTR_E4M3; // = HUSTR_E4M3; +extern const char* const s_HUSTR_E4M3; // = HUSTR_E4M3; //#define HUSTR_E4M4 "E4M4: Unruly Evil" -extern const char *s_HUSTR_E4M4; // = HUSTR_E4M4; +extern const char* const s_HUSTR_E4M4; // = HUSTR_E4M4; //#define HUSTR_E4M5 "E4M5: They Will Repent" -extern const char *s_HUSTR_E4M5; // = HUSTR_E4M5; +extern const char* const s_HUSTR_E4M5; // = HUSTR_E4M5; //#define HUSTR_E4M6 "E4M6: Against Thee Wickedly" -extern const char *s_HUSTR_E4M6; // = HUSTR_E4M6; +extern const char* const s_HUSTR_E4M6; // = HUSTR_E4M6; //#define HUSTR_E4M7 "E4M7: And Hell Followed" -extern const char *s_HUSTR_E4M7; // = HUSTR_E4M7; +extern const char* const s_HUSTR_E4M7; // = HUSTR_E4M7; //#define HUSTR_E4M8 "E4M8: Unto The Cruel" -extern const char *s_HUSTR_E4M8; // = HUSTR_E4M8; +extern const char* const s_HUSTR_E4M8; // = HUSTR_E4M8; //#define HUSTR_E4M9 "E4M9: Fear" -extern const char *s_HUSTR_E4M9; // = HUSTR_E4M9; +extern const char* const s_HUSTR_E4M9; // = HUSTR_E4M9; //#define HUSTR_1 "level 1: entryway" -extern const char *s_HUSTR_1; // = HUSTR_1; +extern const char* const s_HUSTR_1; // = HUSTR_1; //#define HUSTR_2 "level 2: underhalls" -extern const char *s_HUSTR_2; // = HUSTR_2; +extern const char* const s_HUSTR_2; // = HUSTR_2; //#define HUSTR_3 "level 3: the gantlet" -extern const char *s_HUSTR_3; // = HUSTR_3; +extern const char* const s_HUSTR_3; // = HUSTR_3; //#define HUSTR_4 "level 4: the focus" -extern const char *s_HUSTR_4; // = HUSTR_4; +extern const char* const s_HUSTR_4; // = HUSTR_4; //#define HUSTR_5 "level 5: the waste tunnels" -extern const char *s_HUSTR_5; // = HUSTR_5; +extern const char* const s_HUSTR_5; // = HUSTR_5; //#define HUSTR_6 "level 6: the crusher" -extern const char *s_HUSTR_6; // = HUSTR_6; +extern const char* const s_HUSTR_6; // = HUSTR_6; //#define HUSTR_7 "level 7: dead simple" -extern const char *s_HUSTR_7; // = HUSTR_7; +extern const char* const s_HUSTR_7; // = HUSTR_7; //#define HUSTR_8 "level 8: tricks and traps" -extern const char *s_HUSTR_8; // = HUSTR_8; +extern const char* const s_HUSTR_8; // = HUSTR_8; //#define HUSTR_9 "level 9: the pit" -extern const char *s_HUSTR_9; // = HUSTR_9; +extern const char* const s_HUSTR_9; // = HUSTR_9; //#define HUSTR_10 "level 10: refueling base" -extern const char *s_HUSTR_10; // = HUSTR_10; +extern const char* const s_HUSTR_10; // = HUSTR_10; //#define HUSTR_11 "level 11: 'o' of destruction!" -extern const char *s_HUSTR_11; // = HUSTR_11; +extern const char* const s_HUSTR_11; // = HUSTR_11; //#define HUSTR_12 "level 12: the factory" -extern const char *s_HUSTR_12; // = HUSTR_12; +extern const char* const s_HUSTR_12; // = HUSTR_12; //#define HUSTR_13 "level 13: downtown" -extern const char *s_HUSTR_13; // = HUSTR_13; +extern const char* const s_HUSTR_13; // = HUSTR_13; //#define HUSTR_14 "level 14: the inmost dens" -extern const char *s_HUSTR_14; // = HUSTR_14; +extern const char* const s_HUSTR_14; // = HUSTR_14; //#define HUSTR_15 "level 15: industrial zone" -extern const char *s_HUSTR_15; // = HUSTR_15; +extern const char* const s_HUSTR_15; // = HUSTR_15; //#define HUSTR_16 "level 16: suburbs" -extern const char *s_HUSTR_16; // = HUSTR_16; +extern const char* const s_HUSTR_16; // = HUSTR_16; //#define HUSTR_17 "level 17: tenements" -extern const char *s_HUSTR_17; // = HUSTR_17; +extern const char* const s_HUSTR_17; // = HUSTR_17; //#define HUSTR_18 "level 18: the courtyard" -extern const char *s_HUSTR_18; // = HUSTR_18; +extern const char* const s_HUSTR_18; // = HUSTR_18; //#define HUSTR_19 "level 19: the citadel" -extern const char *s_HUSTR_19; // = HUSTR_19; +extern const char* const s_HUSTR_19; // = HUSTR_19; //#define HUSTR_20 "level 20: gotcha!" -extern const char *s_HUSTR_20; // = HUSTR_20; +extern const char* const s_HUSTR_20; // = HUSTR_20; //#define HUSTR_21 "level 21: nirvana" -extern const char *s_HUSTR_21; // = HUSTR_21; +extern const char* const s_HUSTR_21; // = HUSTR_21; //#define HUSTR_22 "level 22: the catacombs" -extern const char *s_HUSTR_22; // = HUSTR_22; +extern const char* const s_HUSTR_22; // = HUSTR_22; //#define HUSTR_23 "level 23: barrels o' fun" -extern const char *s_HUSTR_23; // = HUSTR_23; +extern const char* const s_HUSTR_23; // = HUSTR_23; //#define HUSTR_24 "level 24: the chasm" -extern const char *s_HUSTR_24; // = HUSTR_24; +extern const char* const s_HUSTR_24; // = HUSTR_24; //#define HUSTR_25 "level 25: bloodfalls" -extern const char *s_HUSTR_25; // = HUSTR_25; +extern const char* const s_HUSTR_25; // = HUSTR_25; //#define HUSTR_26 "level 26: the abandoned mines" -extern const char *s_HUSTR_26; // = HUSTR_26; +extern const char* const s_HUSTR_26; // = HUSTR_26; //#define HUSTR_27 "level 27: monster condo" -extern const char *s_HUSTR_27; // = HUSTR_27; +extern const char* const s_HUSTR_27; // = HUSTR_27; //#define HUSTR_28 "level 28: the spirit world" -extern const char *s_HUSTR_28; // = HUSTR_28; +extern const char* const s_HUSTR_28; // = HUSTR_28; //#define HUSTR_29 "level 29: the living end" -extern const char *s_HUSTR_29; // = HUSTR_29; +extern const char* const s_HUSTR_29; // = HUSTR_29; //#define HUSTR_30 "level 30: icon of sin" -extern const char *s_HUSTR_30; // = HUSTR_30; +extern const char* const s_HUSTR_30; // = HUSTR_30; //#define HUSTR_31 "level 31: wolfenstein" -extern const char *s_HUSTR_31; // = HUSTR_31; +extern const char* const s_HUSTR_31; // = HUSTR_31; //#define HUSTR_32 "level 32: grosse" -extern const char *s_HUSTR_32; // = HUSTR_32; +extern const char* const s_HUSTR_32; // = HUSTR_32; //#define PHUSTR_1 "level 1: congo" -extern const char *s_PHUSTR_1; // = PHUSTR_1; +extern const char* const s_PHUSTR_1; // = PHUSTR_1; //#define PHUSTR_2 "level 2: well of souls" -extern const char *s_PHUSTR_2; // = PHUSTR_2; +extern const char* const s_PHUSTR_2; // = PHUSTR_2; //#define PHUSTR_3 "level 3: aztec" -extern const char *s_PHUSTR_3; // = PHUSTR_3; +extern const char* const s_PHUSTR_3; // = PHUSTR_3; //#define PHUSTR_4 "level 4: caged" -extern const char *s_PHUSTR_4; // = PHUSTR_4; +extern const char* const s_PHUSTR_4; // = PHUSTR_4; //#define PHUSTR_5 "level 5: ghost town" -extern const char *s_PHUSTR_5; // = PHUSTR_5; +extern const char* const s_PHUSTR_5; // = PHUSTR_5; //#define PHUSTR_6 "level 6: baron's lair" -extern const char *s_PHUSTR_6; // = PHUSTR_6; +extern const char* const s_PHUSTR_6; // = PHUSTR_6; //#define PHUSTR_7 "level 7: caughtyard" -extern const char *s_PHUSTR_7; // = PHUSTR_7; +extern const char* const s_PHUSTR_7; // = PHUSTR_7; //#define PHUSTR_8 "level 8: realm" -extern const char *s_PHUSTR_8; // = PHUSTR_8; +extern const char* const s_PHUSTR_8; // = PHUSTR_8; //#define PHUSTR_9 "level 9: abattoire" -extern const char *s_PHUSTR_9; // = PHUSTR_9; +extern const char* const s_PHUSTR_9; // = PHUSTR_9; //#define PHUSTR_10 "level 10: onslaught" -extern const char *s_PHUSTR_10; // = PHUSTR_10; +extern const char* const s_PHUSTR_10; // = PHUSTR_10; //#define PHUSTR_11 "level 11: hunted" -extern const char *s_PHUSTR_11; // = PHUSTR_11; +extern const char* const s_PHUSTR_11; // = PHUSTR_11; //#define PHUSTR_12 "level 12: speed" -extern const char *s_PHUSTR_12; // = PHUSTR_12; +extern const char* const s_PHUSTR_12; // = PHUSTR_12; //#define PHUSTR_13 "level 13: the crypt" -extern const char *s_PHUSTR_13; // = PHUSTR_13; +extern const char* const s_PHUSTR_13; // = PHUSTR_13; //#define PHUSTR_14 "level 14: genesis" -extern const char *s_PHUSTR_14; // = PHUSTR_14; +extern const char* const s_PHUSTR_14; // = PHUSTR_14; //#define PHUSTR_15 "level 15: the twilight" -extern const char *s_PHUSTR_15; // = PHUSTR_15; +extern const char* const s_PHUSTR_15; // = PHUSTR_15; //#define PHUSTR_16 "level 16: the omen" -extern const char *s_PHUSTR_16; // = PHUSTR_16; +extern const char* const s_PHUSTR_16; // = PHUSTR_16; //#define PHUSTR_17 "level 17: compound" -extern const char *s_PHUSTR_17; // = PHUSTR_17; +extern const char* const s_PHUSTR_17; // = PHUSTR_17; //#define PHUSTR_18 "level 18: neurosphere" -extern const char *s_PHUSTR_18; // = PHUSTR_18; +extern const char* const s_PHUSTR_18; // = PHUSTR_18; //#define PHUSTR_19 "level 19: nme" -extern const char *s_PHUSTR_19; // = PHUSTR_19; +extern const char* const s_PHUSTR_19; // = PHUSTR_19; //#define PHUSTR_20 "level 20: the death domain" -extern const char *s_PHUSTR_20; // = PHUSTR_20; +extern const char* const s_PHUSTR_20; // = PHUSTR_20; //#define PHUSTR_21 "level 21: slayer" -extern const char *s_PHUSTR_21; // = PHUSTR_21; +extern const char* const s_PHUSTR_21; // = PHUSTR_21; //#define PHUSTR_22 "level 22: impossible mission" -extern const char *s_PHUSTR_22; // = PHUSTR_22; +extern const char* const s_PHUSTR_22; // = PHUSTR_22; //#define PHUSTR_23 "level 23: tombstone" -extern const char *s_PHUSTR_23; // = PHUSTR_23; +extern const char* const s_PHUSTR_23; // = PHUSTR_23; //#define PHUSTR_24 "level 24: the final frontier" -extern const char *s_PHUSTR_24; // = PHUSTR_24; +extern const char* const s_PHUSTR_24; // = PHUSTR_24; //#define PHUSTR_25 "level 25: the temple of darkness" -extern const char *s_PHUSTR_25; // = PHUSTR_25; +extern const char* const s_PHUSTR_25; // = PHUSTR_25; //#define PHUSTR_26 "level 26: bunker" -extern const char *s_PHUSTR_26; // = PHUSTR_26; +extern const char* const s_PHUSTR_26; // = PHUSTR_26; //#define PHUSTR_27 "level 27: anti-christ" -extern const char *s_PHUSTR_27; // = PHUSTR_27; +extern const char* const s_PHUSTR_27; // = PHUSTR_27; //#define PHUSTR_28 "level 28: the sewers" -extern const char *s_PHUSTR_28; // = PHUSTR_28; +extern const char* const s_PHUSTR_28; // = PHUSTR_28; //#define PHUSTR_29 "level 29: odyssey of noises" -extern const char *s_PHUSTR_29; // = PHUSTR_29; +extern const char* const s_PHUSTR_29; // = PHUSTR_29; //#define PHUSTR_30 "level 30: the gateway of hell" -extern const char *s_PHUSTR_30; // = PHUSTR_30; +extern const char* const s_PHUSTR_30; // = PHUSTR_30; //#define PHUSTR_31 "level 31: cyberden" -extern const char *s_PHUSTR_31; // = PHUSTR_31; +extern const char* const s_PHUSTR_31; // = PHUSTR_31; //#define PHUSTR_32 "level 32: go 2 it" -extern const char *s_PHUSTR_32; // = PHUSTR_32; +extern const char* const s_PHUSTR_32; // = PHUSTR_32; //#define THUSTR_1 "level 1: system control" -extern const char *s_THUSTR_1; // = THUSTR_1; +extern const char* const s_THUSTR_1; // = THUSTR_1; //#define THUSTR_2 "level 2: human bbq" -extern const char *s_THUSTR_2; // = THUSTR_2; +extern const char* const s_THUSTR_2; // = THUSTR_2; //#define THUSTR_3 "level 3: power control" -extern const char *s_THUSTR_3; // = THUSTR_3; +extern const char* const s_THUSTR_3; // = THUSTR_3; //#define THUSTR_4 "level 4: wormhole" -extern const char *s_THUSTR_4; // = THUSTR_4; +extern const char* const s_THUSTR_4; // = THUSTR_4; //#define THUSTR_5 "level 5: hanger" -extern const char *s_THUSTR_5; // = THUSTR_5; +extern const char* const s_THUSTR_5; // = THUSTR_5; //#define THUSTR_6 "level 6: open season" -extern const char *s_THUSTR_6; // = THUSTR_6; +extern const char* const s_THUSTR_6; // = THUSTR_6; //#define THUSTR_7 "level 7: prison" -extern const char *s_THUSTR_7; // = THUSTR_7; +extern const char* const s_THUSTR_7; // = THUSTR_7; //#define THUSTR_8 "level 8: metal" -extern const char *s_THUSTR_8; // = THUSTR_8; +extern const char* const s_THUSTR_8; // = THUSTR_8; //#define THUSTR_9 "level 9: stronghold" -extern const char *s_THUSTR_9; // = THUSTR_9; +extern const char* const s_THUSTR_9; // = THUSTR_9; //#define THUSTR_10 "level 10: redemption" -extern const char *s_THUSTR_10; // = THUSTR_10; +extern const char* const s_THUSTR_10; // = THUSTR_10; //#define THUSTR_11 "level 11: storage facility" -extern const char *s_THUSTR_11; // = THUSTR_11; +extern const char* const s_THUSTR_11; // = THUSTR_11; //#define THUSTR_12 "level 12: crater" -extern const char *s_THUSTR_12; // = THUSTR_12; +extern const char* const s_THUSTR_12; // = THUSTR_12; //#define THUSTR_13 "level 13: nukage processing" -extern const char *s_THUSTR_13; // = THUSTR_13; +extern const char* const s_THUSTR_13; // = THUSTR_13; //#define THUSTR_14 "level 14: steel works" -extern const char *s_THUSTR_14; // = THUSTR_14; +extern const char* const s_THUSTR_14; // = THUSTR_14; //#define THUSTR_15 "level 15: dead zone" -extern const char *s_THUSTR_15; // = THUSTR_15; +extern const char* const s_THUSTR_15; // = THUSTR_15; //#define THUSTR_16 "level 16: deepest reaches" -extern const char *s_THUSTR_16; // = THUSTR_16; +extern const char* const s_THUSTR_16; // = THUSTR_16; //#define THUSTR_17 "level 17: processing area" -extern const char *s_THUSTR_17; // = THUSTR_17; +extern const char* const s_THUSTR_17; // = THUSTR_17; //#define THUSTR_18 "level 18: mill" -extern const char *s_THUSTR_18; // = THUSTR_18; +extern const char* const s_THUSTR_18; // = THUSTR_18; //#define THUSTR_19 "level 19: shipping/respawning" -extern const char *s_THUSTR_19; // = THUSTR_19; +extern const char* const s_THUSTR_19; // = THUSTR_19; //#define THUSTR_20 "level 20: central processing" -extern const char *s_THUSTR_20; // = THUSTR_20; +extern const char* const s_THUSTR_20; // = THUSTR_20; //#define THUSTR_21 "level 21: administration center" -extern const char *s_THUSTR_21; // = THUSTR_21; +extern const char* const s_THUSTR_21; // = THUSTR_21; //#define THUSTR_22 "level 22: habitat" -extern const char *s_THUSTR_22; // = THUSTR_22; +extern const char* const s_THUSTR_22; // = THUSTR_22; //#define THUSTR_23 "level 23: lunar mining project" -extern const char *s_THUSTR_23; // = THUSTR_23; +extern const char* const s_THUSTR_23; // = THUSTR_23; //#define THUSTR_24 "level 24: quarry" -extern const char *s_THUSTR_24; // = THUSTR_24; +extern const char* const s_THUSTR_24; // = THUSTR_24; //#define THUSTR_25 "level 25: baron's den" -extern const char *s_THUSTR_25; // = THUSTR_25; +extern const char* const s_THUSTR_25; // = THUSTR_25; //#define THUSTR_26 "level 26: ballistyx" -extern const char *s_THUSTR_26; // = THUSTR_26; +extern const char* const s_THUSTR_26; // = THUSTR_26; //#define THUSTR_27 "level 27: mount pain" -extern const char *s_THUSTR_27; // = THUSTR_27; +extern const char* const s_THUSTR_27; // = THUSTR_27; //#define THUSTR_28 "level 28: heck" -extern const char *s_THUSTR_28; // = THUSTR_28; +extern const char* const s_THUSTR_28; // = THUSTR_28; //#define THUSTR_29 "level 29: river styx" -extern const char *s_THUSTR_29; // = THUSTR_29; +extern const char* const s_THUSTR_29; // = THUSTR_29; //#define THUSTR_30 "level 30: last call" -extern const char *s_THUSTR_30; // = THUSTR_30; +extern const char* const s_THUSTR_30; // = THUSTR_30; //#define THUSTR_31 "level 31: pharaoh" -extern const char *s_THUSTR_31; // = THUSTR_31; +extern const char* const s_THUSTR_31; // = THUSTR_31; //#define THUSTR_32 "level 32: caribbean" -extern const char *s_THUSTR_32; // = THUSTR_32; +extern const char* const s_THUSTR_32; // = THUSTR_32; //#define HUSTR_CHATMACRO1 "I'm ready to kick butt!" -extern const char *s_HUSTR_CHATMACRO1; // = HUSTR_CHATMACRO1; +extern const char* const s_HUSTR_CHATMACRO1; // = HUSTR_CHATMACRO1; //#define HUSTR_CHATMACRO2 "I'm OK." -extern const char *s_HUSTR_CHATMACRO2; // = HUSTR_CHATMACRO2; +extern const char* const s_HUSTR_CHATMACRO2; // = HUSTR_CHATMACRO2; //#define HUSTR_CHATMACRO3 "I'm not looking too good!" -extern const char *s_HUSTR_CHATMACRO3; // = HUSTR_CHATMACRO3; +extern const char* const s_HUSTR_CHATMACRO3; // = HUSTR_CHATMACRO3; //#define HUSTR_CHATMACRO4 "Help!" -extern const char *s_HUSTR_CHATMACRO4; // = HUSTR_CHATMACRO4; +extern const char* const s_HUSTR_CHATMACRO4; // = HUSTR_CHATMACRO4; //#define HUSTR_CHATMACRO5 "You suck!" -extern const char *s_HUSTR_CHATMACRO5; // = HUSTR_CHATMACRO5; +extern const char* const s_HUSTR_CHATMACRO5; // = HUSTR_CHATMACRO5; //#define HUSTR_CHATMACRO6 "Next time, scumbag..." -extern const char *s_HUSTR_CHATMACRO6; // = HUSTR_CHATMACRO6; +extern const char* const s_HUSTR_CHATMACRO6; // = HUSTR_CHATMACRO6; //#define HUSTR_CHATMACRO7 "Come here!" -extern const char *s_HUSTR_CHATMACRO7; // = HUSTR_CHATMACRO7; +extern const char* const s_HUSTR_CHATMACRO7; // = HUSTR_CHATMACRO7; //#define HUSTR_CHATMACRO8 "I'll take care of it." -extern const char *s_HUSTR_CHATMACRO8; // = HUSTR_CHATMACRO8; +extern const char* const s_HUSTR_CHATMACRO8; // = HUSTR_CHATMACRO8; //#define HUSTR_CHATMACRO9 "Yes" -extern const char *s_HUSTR_CHATMACRO9; // = HUSTR_CHATMACRO9; +extern const char* const s_HUSTR_CHATMACRO9; // = HUSTR_CHATMACRO9; //#define HUSTR_CHATMACRO0 "No" -extern const char *s_HUSTR_CHATMACRO0; // = HUSTR_CHATMACRO0; +extern const char* const s_HUSTR_CHATMACRO0; // = HUSTR_CHATMACRO0; //#define HUSTR_TALKTOSELF1 "You mumble to yourself" -extern const char *s_HUSTR_TALKTOSELF1; // = HUSTR_TALKTOSELF1; +extern const char* const s_HUSTR_TALKTOSELF1; // = HUSTR_TALKTOSELF1; //#define HUSTR_TALKTOSELF2 "Who's there?" -extern const char *s_HUSTR_TALKTOSELF2; // = HUSTR_TALKTOSELF2; +extern const char* const s_HUSTR_TALKTOSELF2; // = HUSTR_TALKTOSELF2; //#define HUSTR_TALKTOSELF3 "You scare yourself" -extern const char *s_HUSTR_TALKTOSELF3; // = HUSTR_TALKTOSELF3; +extern const char* const s_HUSTR_TALKTOSELF3; // = HUSTR_TALKTOSELF3; //#define HUSTR_TALKTOSELF4 "You start to rave" -extern const char *s_HUSTR_TALKTOSELF4; // = HUSTR_TALKTOSELF4; +extern const char* const s_HUSTR_TALKTOSELF4; // = HUSTR_TALKTOSELF4; //#define HUSTR_TALKTOSELF5 "You've lost it..." -extern const char *s_HUSTR_TALKTOSELF5; // = HUSTR_TALKTOSELF5; +extern const char* const s_HUSTR_TALKTOSELF5; // = HUSTR_TALKTOSELF5; //#define HUSTR_MESSAGESENT "[Message Sent]" -extern const char *s_HUSTR_MESSAGESENT; // = HUSTR_MESSAGESENT; +extern const char* const s_HUSTR_MESSAGESENT; // = HUSTR_MESSAGESENT; // The following should NOT be changed unless it seems // just AWFULLY necessary //#define HUSTR_PLRGREEN "Green: " -extern const char *s_HUSTR_PLRGREEN; // = HUSTR_PLRGREEN; +extern const char* const s_HUSTR_PLRGREEN; // = HUSTR_PLRGREEN; //#define HUSTR_PLRINDIGO "Indigo: " -extern const char *s_HUSTR_PLRINDIGO; // = HUSTR_PLRINDIGO; +extern const char* const s_HUSTR_PLRINDIGO; // = HUSTR_PLRINDIGO; //#define HUSTR_PLRBROWN "Brown: " -extern const char *s_HUSTR_PLRBROWN; // = HUSTR_PLRBROWN; +extern const char* const s_HUSTR_PLRBROWN; // = HUSTR_PLRBROWN; //#define HUSTR_PLRRED "Red: " -extern const char *s_HUSTR_PLRRED; // = HUSTR_PLRRED; +extern const char* const s_HUSTR_PLRRED; // = HUSTR_PLRRED; // // AM_map.C // //#define AMSTR_FOLLOWON "Follow Mode ON" -extern const char* s_AMSTR_FOLLOWON; // = AMSTR_FOLLOWON; +extern const char* const s_AMSTR_FOLLOWON; // = AMSTR_FOLLOWON; //#define AMSTR_FOLLOWOFF "Follow Mode OFF" -extern const char* s_AMSTR_FOLLOWOFF; // = AMSTR_FOLLOWOFF; +extern const char* const s_AMSTR_FOLLOWOFF; // = AMSTR_FOLLOWOFF; //#define AMSTR_GRIDON "Grid ON" -extern const char* s_AMSTR_GRIDON; // = AMSTR_GRIDON; +extern const char* const s_AMSTR_GRIDON; // = AMSTR_GRIDON; //#define AMSTR_GRIDOFF "Grid OFF" -extern const char* s_AMSTR_GRIDOFF; // = AMSTR_GRIDOFF; +extern const char* const s_AMSTR_GRIDOFF; // = AMSTR_GRIDOFF; //#define AMSTR_MARKEDSPOT "Marked Spot" -extern const char* s_AMSTR_MARKEDSPOT; // = AMSTR_MARKEDSPOT; +extern const char* const s_AMSTR_MARKEDSPOT; // = AMSTR_MARKEDSPOT; //#define AMSTR_MARKSCLEARED "All Marks Cleared" -extern const char* s_AMSTR_MARKSCLEARED; // = AMSTR_MARKSCLEARED; +extern const char* const s_AMSTR_MARKSCLEARED; // = AMSTR_MARKSCLEARED; // CPhipps - automap rotate & overlay -extern const char* s_AMSTR_ROTATEON; -extern const char* s_AMSTR_ROTATEOFF; -extern const char* s_AMSTR_OVERLAYON; -extern const char* s_AMSTR_OVERLAYOFF; +extern const char* const s_AMSTR_ROTATEON; +extern const char* const s_AMSTR_ROTATEOFF; +extern const char* const s_AMSTR_OVERLAYON; +extern const char* const s_AMSTR_OVERLAYOFF; // // ST_stuff.C // //#define STSTR_MUS "Music Change" -extern const char* s_STSTR_MUS; // = STSTR_MUS; +extern const char* const s_STSTR_MUS; // = STSTR_MUS; //#define STSTR_NOMUS "IMPOSSIBLE SELECTION" -extern const char* s_STSTR_NOMUS; // = STSTR_NOMUS; +extern const char* const s_STSTR_NOMUS; // = STSTR_NOMUS; //#define STSTR_DQDON "Degreelessness Mode On" -extern const char* s_STSTR_DQDON; // = STSTR_DQDON; +extern const char* const s_STSTR_DQDON; // = STSTR_DQDON; //#define STSTR_DQDOFF "Degreelessness Mode Off" -extern const char* s_STSTR_DQDOFF; // = STSTR_DQDOFF; +extern const char* const s_STSTR_DQDOFF; // = STSTR_DQDOFF; //#define STSTR_KFAADDED "Very Happy Ammo Added" -extern const char* s_STSTR_KFAADDED; // = STSTR_KFAADDED; +extern const char* const s_STSTR_KFAADDED; // = STSTR_KFAADDED; //#define STSTR_FAADDED "Ammo (no keys) Added" -extern const char* s_STSTR_FAADDED; // = STSTR_FAADDED; +extern const char* const s_STSTR_FAADDED; // = STSTR_FAADDED; //#define STSTR_NCON "No Clipping Mode ON" -extern const char* s_STSTR_NCON; // = STSTR_NCON; +extern const char* const s_STSTR_NCON; // = STSTR_NCON; //#define STSTR_NCOFF "No Clipping Mode OFF" -extern const char* s_STSTR_NCOFF; // = STSTR_NCOFF; +extern const char* const s_STSTR_NCOFF; // = STSTR_NCOFF; //#define STSTR_BEHOLD "inVuln, Str, Inviso, Rad, Allmap, or Lite-amp" -extern const char* s_STSTR_BEHOLD; // = STSTR_BEHOLD; +extern const char* const s_STSTR_BEHOLD; // = STSTR_BEHOLD; //#define STSTR_BEHOLDX "Power-up Toggled" -extern const char* s_STSTR_BEHOLDX; // = STSTR_BEHOLDX; +extern const char* const s_STSTR_BEHOLDX; // = STSTR_BEHOLDX; //#define STSTR_CHOPPERS "... doesn't suck - GM" -extern const char* s_STSTR_CHOPPERS; // = STSTR_CHOPPERS; +extern const char* const s_STSTR_CHOPPERS; // = STSTR_CHOPPERS; //#define STSTR_CLEV "Changing Level..." -extern const char* s_STSTR_CLEV; // = STSTR_CLEV; +extern const char* const s_STSTR_CLEV; // = STSTR_CLEV; // // F_Finale.C @@ -673,7 +673,7 @@ extern const char* s_STSTR_CLEV; // = STSTR_CLEV; "The Shores of Hell and its amazing\n"\ "sequel, Inferno!\n" */ -extern const char* s_E1TEXT; // = E1TEXT; +extern const char* const s_E1TEXT; // = E1TEXT; /* @@ -696,7 +696,7 @@ extern const char* s_E1TEXT; // = E1TEXT; "Now, it's on to the final chapter of\n"\ "DOOM! -- Inferno." */ -extern const char* s_E2TEXT; // = E2TEXT; +extern const char* const s_E2TEXT; // = E2TEXT; /* @@ -719,7 +719,7 @@ extern const char* s_E2TEXT; // = E2TEXT; "spawn could have come through that\n"\ "door with you ..." */ -extern const char* s_E3TEXT; // = E3TEXT; +extern const char* const s_E3TEXT; // = E3TEXT; /* @@ -741,7 +741,7 @@ extern const char* s_E3TEXT; // = E3TEXT; "\n"\ "next stop, hell on earth!" */ -extern const char* s_E4TEXT; // = E4TEXT; +extern const char* const s_E4TEXT; // = E4TEXT; // after level 6, put this: @@ -761,7 +761,7 @@ extern const char* s_E4TEXT; // = E4TEXT; "SWITCH WHICH HOLDS EARTH'S POPULATION\n" \ "HOSTAGE." */ -extern const char* s_C1TEXT; // = C1TEXT; +extern const char* const s_C1TEXT; // = C1TEXT; // After level 11, put this: @@ -785,7 +785,7 @@ extern const char* s_C1TEXT; // = C1TEXT; "STARPORT.\" SLOWLY AND PAINFULLY YOU GET\n"\ "UP AND RETURN TO THE FRAY." */ -extern const char* s_C2TEXT; // = C2TEXT; +extern const char* const s_C2TEXT; // = C2TEXT; // After level 20, put this: @@ -802,7 +802,7 @@ extern const char* s_C2TEXT; // = C2TEXT; "OTHER SIDE. WHAT DO YOU CARE IF YOU'VE\n"\ "GOT TO GO THROUGH HELL TO GET TO IT?" */ -extern const char* s_C3TEXT; // = C3TEXT; +extern const char* const s_C3TEXT; // = C3TEXT; // After level 29, put this: @@ -825,7 +825,7 @@ extern const char* s_C3TEXT; // = C3TEXT; "HOME. REBUILDING EARTH OUGHT TO BE A\n"\ "LOT MORE FUN THAN RUINING IT WAS.\n" */ -extern const char* s_C4TEXT; // = C4TEXT; +extern const char* const s_C4TEXT; // = C4TEXT; @@ -839,7 +839,7 @@ extern const char* s_C4TEXT; // = C4TEXT; "WHO THE INMATES OF THIS CORNER OF HELL\n"\ "WILL BE." */ -extern const char* s_C5TEXT; // = C5TEXT; +extern const char* const s_C5TEXT; // = C5TEXT; // Before level 32, put this: @@ -850,7 +850,7 @@ extern const char* s_C5TEXT; // = C5TEXT; "SUPER SECRET LEVEL! YOU'D BETTER\n"\ "BLAZE THROUGH THIS ONE!\n" */ -extern const char* s_C6TEXT; // = C6TEXT; +extern const char* const s_C6TEXT; // = C6TEXT; // after map 06 @@ -870,7 +870,7 @@ extern const char* s_C6TEXT; // = C6TEXT; "moving, keep fighting, keep killing.\n"\ "Oh yes, keep living, too." */ -extern const char* s_P1TEXT; // = P1TEXT; +extern const char* const s_P1TEXT; // = P1TEXT; // after map 11 @@ -884,7 +884,7 @@ extern const char* s_P1TEXT; // = P1TEXT; "\n"\ "You're good at that kind of thing." */ -extern const char* s_P2TEXT; // = P2TEXT; +extern const char* const s_P2TEXT; // = P2TEXT; // after map 20 @@ -902,7 +902,7 @@ extern const char* s_P2TEXT; // = P2TEXT; "get ready to give the bastard a little Hell\n"\ "of your own making!" */ -extern const char* s_P3TEXT; // = P3TEXT; +extern const char* const s_P3TEXT; // = P3TEXT; // after map 30 @@ -921,7 +921,7 @@ extern const char* s_P3TEXT; // = P3TEXT; "when you die, you'll need it for some\n"\ "final cleaning-up ..." */ -extern const char* s_P4TEXT; // = P4TEXT; +extern const char* const s_P4TEXT; // = P4TEXT; // before map 31 @@ -932,7 +932,7 @@ extern const char* s_P4TEXT; // = P4TEXT; "two previous. If not, be prepared to die\n"\ "aplenty. For master marines only." */ -extern const char* s_P5TEXT; // = P5TEXT; +extern const char* const s_P5TEXT; // = P5TEXT; // before map 32 @@ -942,7 +942,7 @@ extern const char* s_P5TEXT; // = P5TEXT; "level we had ready for ya? Now you know.\n"\ "No one gets out alive." */ -extern const char* s_P6TEXT; // = P6TEXT; +extern const char* const s_P6TEXT; // = P6TEXT; /* @@ -960,7 +960,7 @@ extern const char* s_P6TEXT; // = P6TEXT; "complex still has some warlike ordnance\n"\ "laying around." */ -extern const char* s_T1TEXT; // = T1TEXT; +extern const char* const s_T1TEXT; // = T1TEXT; /* @@ -975,7 +975,7 @@ extern const char* s_T1TEXT; // = T1TEXT; "\n"\ "You don't plan to go down easy." */ -extern const char* s_T2TEXT; // = T2TEXT; +extern const char* const s_T2TEXT; // = T2TEXT; /* @@ -989,7 +989,7 @@ extern const char* s_T2TEXT; // = T2TEXT; "Hefting your gun, an evil grin trickles\n"\ "onto your face. Time to take some names." */ -extern const char* s_T3TEXT; // = T3TEXT; +extern const char* const s_T3TEXT; // = T3TEXT; /* #define T4TEXT \ @@ -1005,7 +1005,7 @@ extern const char* s_T3TEXT; // = T3TEXT; "A blue light begins to glow inside the\n"\ "ruined skull of the demon-spitter." */ -extern const char* s_T4TEXT; // = T4TEXT; +extern const char* const s_T4TEXT; // = T4TEXT; /* @@ -1016,7 +1016,7 @@ extern const char* s_T4TEXT; // = T4TEXT; "than usual. Can it? Or maybe it's best\n"\ "to let sleeping gods lie.." */ -extern const char* s_T5TEXT; // = T5TEXT; +extern const char* const s_T5TEXT; // = T5TEXT; /* @@ -1032,82 +1032,82 @@ extern const char* s_T5TEXT; // = T5TEXT; "As you step off the transport, you hear\n"\ "the stomp of a cyberdemon's iron shoe." */ -extern const char* s_T6TEXT; // = T6TEXT; +extern const char* const s_T6TEXT; // = T6TEXT; // // Character cast strings F_FINALE.C // //#define CC_ZOMBIE "ZOMBIEMAN" -extern const char* s_CC_ZOMBIE; // = CC_ZOMBIE; +extern const char* const s_CC_ZOMBIE; // = CC_ZOMBIE; //#define CC_SHOTGUN "SHOTGUN GUY" -extern const char* s_CC_SHOTGUN; // = CC_SHOTGUN; +extern const char* const s_CC_SHOTGUN; // = CC_SHOTGUN; //#define CC_HEAVY "HEAVY WEAPON DUDE" -extern const char* s_CC_HEAVY; // = CC_HEAVY; +extern const char* const s_CC_HEAVY; // = CC_HEAVY; //#define CC_IMP "IMP" -extern const char* s_CC_IMP; // = CC_IMP; +extern const char* const s_CC_IMP; // = CC_IMP; //#define CC_DEMON "DEMON" -extern const char* s_CC_DEMON; // = CC_DEMON; +extern const char* const s_CC_DEMON; // = CC_DEMON; //#define CC_LOST "LOST SOUL" -extern const char* s_CC_LOST; // = CC_LOST; +extern const char* const s_CC_LOST; // = CC_LOST; //#define CC_CACO "CACODEMON" -extern const char* s_CC_CACO; // = CC_CACO; +extern const char* const s_CC_CACO; // = CC_CACO; //#define CC_HELL "HELL KNIGHT" -extern const char* s_CC_HELL; // = CC_HELL; +extern const char* const s_CC_HELL; // = CC_HELL; //#define CC_BARON "BARON OF HELL" -extern const char* s_CC_BARON; // = CC_BARON; +extern const char* const s_CC_BARON; // = CC_BARON; //#define CC_ARACH "ARACHNOTRON" -extern const char* s_CC_ARACH; // = CC_ARACH; +extern const char* const s_CC_ARACH; // = CC_ARACH; //#define CC_PAIN "PAIN ELEMENTAL" -extern const char* s_CC_PAIN; // = CC_PAIN; +extern const char* const s_CC_PAIN; // = CC_PAIN; //#define CC_REVEN "REVENANT" -extern const char* s_CC_REVEN; // = CC_REVEN; +extern const char* const s_CC_REVEN; // = CC_REVEN; //#define CC_MANCU "MANCUBUS" -extern const char* s_CC_MANCU; // = CC_MANCU; +extern const char* const s_CC_MANCU; // = CC_MANCU; //#define CC_ARCH "ARCH-VILE" -extern const char* s_CC_ARCH; // = CC_ARCH; +extern const char* const s_CC_ARCH; // = CC_ARCH; //#define CC_SPIDER "THE SPIDER MASTERMIND" -extern const char* s_CC_SPIDER; // = CC_SPIDER; +extern const char* const s_CC_SPIDER; // = CC_SPIDER; //#define CC_CYBER "THE CYBERDEMON" -extern const char* s_CC_CYBER; // = CC_CYBER; +extern const char* const s_CC_CYBER; // = CC_CYBER; //#define CC_HERO "OUR HERO" -extern const char* s_CC_HERO; // = CC_HERO; +extern const char* const s_CC_HERO; // = CC_HERO; // Ty 03/30/98 - new substitutions for background textures during int screens // char* bgflatE1 = "FLOOR4_8"; -extern const char* bgflatE1; +extern const char* const bgflatE1; // char* bgflatE2 = "SFLR6_1"; -extern const char* bgflatE2; +extern const char* const bgflatE2; // char* bgflatE3 = "MFLR8_4"; -extern const char* bgflatE3; +extern const char* const bgflatE3; // char* bgflatE4 = "MFLR8_3"; -extern const char* bgflatE4; +extern const char* const bgflatE4; // char* bgflat06 = "SLIME16"; -extern const char* bgflat06; +extern const char* const bgflat06; // char* bgflat11 = "RROCK14"; -extern const char* bgflat11; +extern const char* const bgflat11; // char* bgflat20 = "RROCK07"; -extern const char* bgflat20; +extern const char* const bgflat20; // char* bgflat30 = "RROCK17"; -extern const char* bgflat30; +extern const char* const bgflat30; // char* bgflat15 = "RROCK13"; -extern const char* bgflat15; +extern const char* const bgflat15; // char* bgflat31 = "RROCK19"; -extern const char* bgflat31; +extern const char* const bgflat31; // char* bgcastcall = "BOSSBACK"; // panel behind cast call -extern const char* bgcastcall; +extern const char* const bgcastcall; // ignored if blank, general purpose startup announcements // char* startup1 = ""; -extern const char* startup1; +extern const char* const startup1; // char* startup2 = ""; -extern const char* startup2; +extern const char* const startup2; // char* startup3 = ""; -extern const char* startup3; +extern const char* const startup3; // char* startup4 = ""; -extern const char* startup4; +extern const char* const startup4; // char* startup5 = ""; -extern const char* startup5; +extern const char* const startup5; #endif diff --git a/components/doom/prboom/hu_stuff.c b/components/doom/prboom/hu_stuff.c index 129fb66..e5c5942 100644 --- a/components/doom/prboom/hu_stuff.c +++ b/components/doom/prboom/hu_stuff.c @@ -156,7 +156,7 @@ const char* player_names[] = }; //jff 3/17/98 translate player colmap to text color ranges -int plyrcoltran[MAXPLAYERS]={CR_GREEN,CR_GRAY,CR_BROWN,CR_RED}; +const int plyrcoltran[MAXPLAYERS]={CR_GREEN,CR_GRAY,CR_BROWN,CR_RED}; char chat_char; // remove later. static player_t* plr; @@ -208,16 +208,16 @@ int hudcolor_list; // list of messages color int hud_list_bgon; // enable for solid window background for message list //jff 2/16/98 initialization strings for ammo, health, armor widgets -static char hud_coordstrx[32]; -static char hud_coordstry[32]; -static char hud_coordstrz[32]; -static char hud_ammostr[80]; -static char hud_healthstr[80]; -static char hud_armorstr[80]; -static char hud_weapstr[80]; -static char hud_keysstr[80]; -static char hud_gkeysstr[80]; //jff 3/7/98 add support for graphic key display -static char hud_monsecstr[80]; +char *hud_coordstrx = NULL; // [ 32]; +char *hud_coordstry = NULL; // [ 32]; +char *hud_coordstrz = NULL; // [ 32]; +char *hud_ammostr = NULL; // [ 80]; +char *hud_healthstr = NULL; // [ 80]; +char *hud_armorstr = NULL; // [ 80]; +char *hud_weapstr = NULL; // [ 80]; +char *hud_keysstr = NULL; // [ 80]; +char *hud_gkeysstr = NULL; // [ 80]; //jff 3/7/98 add support for graphic key display +char *hud_monsecstr = NULL; // [ 80]; // // Builtin map names. @@ -1391,7 +1391,7 @@ void HU_Ticker(void) #define QUEUESIZE 128 -static char chatchars[QUEUESIZE]; +char *chatchars = NULL; // [QUEUESIZE]; static int head = 0; static int tail = 0; diff --git a/components/doom/prboom/m_cheat.c b/components/doom/prboom/m_cheat.c index ef716e1..f941e62 100644 --- a/components/doom/prboom/m_cheat.c +++ b/components/doom/prboom/m_cheat.c @@ -108,7 +108,8 @@ static void cheat_health(); // //----------------------------------------------------------------------------- -struct cheat_s cheat[] = { +struct cheat_s *cheat = NULL; +const struct cheat_s init_cheat[] = { {"idmus", "Change music", always, cheat_mus, -2}, @@ -258,6 +259,7 @@ struct cheat_s cheat[] = { {NULL} // end-of-list marker }; +const size_t init_cheat_bytes = sizeof(init_cheat); //----------------------------------------------------------------------------- diff --git a/components/doom/prboom/m_cheat.h b/components/doom/prboom/m_cheat.h index f7bafce..8655d63 100644 --- a/components/doom/prboom/m_cheat.h +++ b/components/doom/prboom/m_cheat.h @@ -51,7 +51,7 @@ extern struct cheat_s { void (*const func)(); const int arg; uint_64_t code, mask; -} cheat[]; +} *cheat; boolean M_FindCheats(int key); diff --git a/components/doom/prboom/m_menu.c b/components/doom/prboom/m_menu.c index 584acaf..928b77e 100644 --- a/components/doom/prboom/m_menu.c +++ b/components/doom/prboom/m_menu.c @@ -213,7 +213,7 @@ static void M_ClearMenus(void); static void M_Trans(void); -static menuitem_t MainMenu[] = +static const menuitem_t MainMenu[] = { {1,"M_NGAME", M_NewGame, 'n'}, {1,"M_OPTION",M_Options, 'o'}, @@ -223,7 +223,7 @@ static menuitem_t MainMenu[] = {1,"M_QUITG", M_QuitDOOM,'q'}, }; -static menu_t MainDef = +static const menu_t MainDef = { sizeof(MainMenu) / sizeof(menuitem_t), // number of menu items NULL, // previous menu screen @@ -233,17 +233,17 @@ static menu_t MainDef = 0 // last menu item the user was on }; -static menuitem_t ReadMenu1[] = +static const menuitem_t ReadMenu1[] = { {1,"",M_ReadThis2,0}, }; -static menuitem_t ReadMenu2[]= +static const menuitem_t ReadMenu2[]= { {1,"",M_FinishReadThis,0}, }; -static menu_t ReadDef1 = +static const menu_t ReadDef1 = { 1, &MainDef, @@ -253,7 +253,7 @@ static menu_t ReadDef1 = 0 }; -static menu_t ReadDef2 = +static const menu_t ReadDef2 = { 1, &ReadDef1, @@ -263,12 +263,12 @@ static menu_t ReadDef2 = 0 }; -static menuitem_t HelpMenu[]= // killough 10/98 +static const menuitem_t HelpMenu[]= // killough 10/98 { {1,"",M_FinishHelp,0}, }; -static menu_t HelpDef = // killough 10/98 +static const menu_t HelpDef = // killough 10/98 { 1, &HelpDef, @@ -278,7 +278,7 @@ static menu_t HelpDef = // killough 10/98 0 }; -static menuitem_t EpisodeMenu[]= +static const menuitem_t EpisodeMenu[]= { {1,"M_EPI1", M_Episode,'k'}, {1,"M_EPI2", M_Episode,'t'}, @@ -298,7 +298,7 @@ static menu_t EpiDef = 0 // lastOn }; -static menuitem_t NewGameMenu[]= +static const menuitem_t NewGameMenu[]= { {1,"M_JKILL", M_ChooseSkill, 'i'}, {1,"M_ROUGH", M_ChooseSkill, 'h'}, @@ -351,7 +351,7 @@ static menuitem_t SaveMenu[]= {1,"", M_SaveSelect,'8'}, }; -static menu_t SaveDef = +static const menu_t SaveDef = { sizeof(SaveMenu) / sizeof(menuitem_t), &MainDef, @@ -361,7 +361,7 @@ static menu_t SaveDef = 0 }; -static menuitem_t OptionsMenu[]= +static const menuitem_t OptionsMenu[]= { {1,"M_SETUP", M_Setup, 's'}, {2,"M_SCRNSZ", M_SizeDisplay,'s'}, @@ -373,7 +373,7 @@ static menuitem_t OptionsMenu[]= {1,"M_ENDGAM", M_EndGame,'e'}, }; -static menu_t OptionsDef = +static const menu_t OptionsDef = { sizeof(OptionsMenu) / sizeof(menuitem_t), &MainDef, @@ -419,7 +419,7 @@ static menuitem_t CheatsMenu[]= {1, "", M_CheatSelect, '9'}, }; -static menu_t CheatsDef = +static const menu_t CheatsDef = { sizeof(CheatsMenu) / sizeof(menuitem_t), &OptionsDef, @@ -429,7 +429,7 @@ static menu_t CheatsDef = 0 }; -static menuitem_t SoundMenu[]= +static const menuitem_t SoundMenu[]= { {2,"M_SFXVOL",M_SfxVol,'s'}, {-1,"",0}, @@ -437,7 +437,7 @@ static menuitem_t SoundMenu[]= {-1,"",0} }; -static menu_t SoundDef = +static const menu_t SoundDef = { sizeof(SoundMenu) / sizeof(menuitem_t), &OptionsDef, @@ -447,12 +447,12 @@ static menu_t SoundDef = 0 }; -static menuitem_t SetupMenu[] = +static const menuitem_t SetupMenu[] = { {1,"",M_DoNothing,0} }; -static menu_t SetupDef = +static const menu_t SetupDef = { 1, &OptionsDef, @@ -462,7 +462,7 @@ static menu_t SetupDef = 0 }; -static setup_menu_t gen_settings3[] = // General Settings +static const setup_menu_t gen_settings3[] = // General Settings { {"GENERAL",S_SKIP|S_TITLE,m_null,200,G_Y}, {"Enable Translucency", S_YESNO, m_null, G_X, G_Y + 1*G_H, {"translucency"}, M_Trans}, @@ -485,7 +485,7 @@ static setup_menu_t gen_settings3[] = // General Settings {0,S_SKIP|S_END,m_null} }; -static setup_menu_t weap_settings1[] = // Weapons Settings screen +static const setup_menu_t weap_settings1[] = // Weapons Settings screen { {"WEAPONS",S_SKIP|S_TITLE,m_null,200,G_Y}, {"ENABLE RECOIL", S_YESNO,m_null,G_X, G_Y+1*G_H, {"weapon_recoil"}}, @@ -506,7 +506,7 @@ static setup_menu_t weap_settings1[] = // Weapons Settings screen {0,S_SKIP|S_END,m_null} }; -static setup_menu_t stat_settings1[] = // Status Bar and HUD Settings screen +static const setup_menu_t stat_settings1[] = // Status Bar and HUD Settings screen { {"STATUS BAR" ,S_SKIP|S_TITLE,m_null,200,G_Y}, {"Use Red Numbers" ,S_YESNO, m_null,G_X,G_Y+ 1*G_H, {"sts_always_red"}}, @@ -524,7 +524,7 @@ static setup_menu_t stat_settings1[] = // Status Bar and HUD Settings screen {0,S_SKIP|S_END,m_null} }; -static setup_menu_t enem_settings1[] = // Enemy Settings screen +static const setup_menu_t enem_settings1[] = // Enemy Settings screen { {"ENEMIES" ,S_SKIP|S_TITLE,m_null,200,G_Y}, {"Monster Infighting When Provoked",S_YESNO,m_null,G_X,G_Y+ 1*G_H, {"monster_infighting"}}, @@ -543,7 +543,7 @@ static setup_menu_t enem_settings1[] = // Enemy Settings screen {0,S_SKIP|S_END,m_null} }; -static setup_menu_t comp_settings1[] = // Compatibility Settings screen #1 +static const setup_menu_t comp_settings1[] = // Compatibility Settings screen #1 { {"COMPAT 1/1",S_SKIP|S_TITLE,m_null,200,G_Y}, {"Any monster can telefrag on MAP30", S_YESNO, m_null, G_X, G_Y + 1*G_H, {"comp_telefrag"}}, @@ -561,7 +561,7 @@ static setup_menu_t comp_settings1[] = // Compatibility Settings screen #1 {0,S_SKIP|S_END,m_null} }; -static setup_menu_t comp_settings2[] = // Compatibility Settings screen #2 +static const setup_menu_t comp_settings2[] = // Compatibility Settings screen #2 { {"COMPAT 2/2",S_SKIP|S_TITLE,m_null,200,G_Y}, {"Lost souls don't bounce off flat surfaces", S_YESNO, m_null, G_X, G_Y + 1*G_H, {"comp_soul"}}, @@ -579,7 +579,7 @@ static setup_menu_t comp_settings2[] = // Compatibility Settings screen #2 {0,S_SKIP|S_END,m_null} }; -static setup_menu_t keys_settings1[] = // Key Binding screen strings +static const setup_menu_t keys_settings1[] = // Key Binding screen strings { {"KEYBOARD 1/2",S_SKIP|S_TITLE,m_null,200,G_Y}, {"MOVEMENT" ,S_SKIP|S_TITLE,m_null,G_X,G_Y+1*G_H}, @@ -602,7 +602,7 @@ static setup_menu_t keys_settings1[] = // Key Binding screen strings {0,S_SKIP|S_END,m_null} }; -static setup_menu_t keys_settings2[] = // Key Binding screen strings +static const setup_menu_t keys_settings2[] = // Key Binding screen strings { {"KEYBOARD 2/2",S_SKIP|S_TITLE,m_null,200,G_Y}, {"SCREEN" ,S_SKIP|S_TITLE,m_null,G_X,G_Y+1*G_H}, @@ -626,7 +626,7 @@ static setup_menu_t keys_settings2[] = // Key Binding screen strings {0,S_SKIP|S_END,m_null} }; -static setup_menu_t helpstrings[] = // HELP screen strings +static const setup_menu_t helpstrings[] = // HELP screen strings { {"SCREEN" ,S_SKIP|S_TITLE,m_null,KT_X1,KT_Y1}, {"HELP" ,S_SKIP|S_KEY,m_null,KT_X1,KT_Y1+ 1*8,{&key_help}}, @@ -691,7 +691,7 @@ static setup_menu_t helpstrings[] = // HELP screen strings enum {prog, prog_stub, prog_stub1, prog_stub2, adcr}; enum {cr_prog, cr_stub, cr_adcr}; -static setup_menu_t cred_settings[] = +static const setup_menu_t cred_settings[] = { {"Programmers",S_SKIP|S_CREDIT|S_LEFTJUST,m_null, CR_X, CR_Y + CR_S*prog + CR_SH*cr_prog}, {"Florian 'Proff' Schulze",S_SKIP|S_CREDIT|S_LEFTJUST,m_null, CR_X2, CR_Y + CR_S*(prog+1) + CR_SH*cr_prog}, diff --git a/components/doom/prboom/m_misc.c b/components/doom/prboom/m_misc.c index a17d887..c57f448 100644 --- a/components/doom/prboom/m_misc.c +++ b/components/doom/prboom/m_misc.c @@ -155,7 +155,7 @@ extern const char* chat_macros[]; extern int map_point_coordinates; -static default_t defaults[] = +static const default_t defaults[] = { {"Misc settings",{NULL},{0},UL,UL,def_none,ss_none}, {"default_compatibility_level",{(int*)&default_compatibility_level}, diff --git a/components/doom/prboom/r_things.c b/components/doom/prboom/r_things.c index e0c7d4b..5330365 100644 --- a/components/doom/prboom/r_things.c +++ b/components/doom/prboom/r_things.c @@ -69,8 +69,8 @@ fixed_t pspriteyscale; // constant arrays // used for psprite clipping and initializing clipping -int negonearray[MAX_SCREENWIDTH]; // killough 2/8/98: // dropoff overflow -int screenheightarray[MAX_SCREENWIDTH]; // change to MAX_* // dropoff overflow +int *negonearray = NULL; // [MAX_SCREENWIDTH]; // killough 2/8/98: // dropoff overflow +int *screenheightarray = NULL; // [MAX_SCREENWIDTH]; // change to MAX_* // dropoff overflow // // INITIALIZATION FUNCTIONS @@ -83,7 +83,7 @@ int numsprites; #define MAX_SPRITE_FRAMES 29 /* Macroized -- killough 1/25/98 */ -static spriteframe_t sprtemp[MAX_SPRITE_FRAMES]; +spriteframe_t *sprtemp = NULL; // [MAX_SPRITE_FRAMES]; static int maxframe; // diff --git a/components/doom/prboom/r_things.h b/components/doom/prboom/r_things.h index a6c504e..98c218c 100644 --- a/components/doom/prboom/r_things.h +++ b/components/doom/prboom/r_things.h @@ -42,8 +42,8 @@ /* Constant arrays used for psprite clipping and initializing clipping. */ -extern int negonearray[MAX_SCREENWIDTH]; /* killough 2/8/98: */ // dropoff overflow -extern int screenheightarray[MAX_SCREENWIDTH]; /* change to MAX_* */ // dropoff overflow +extern int *negonearray; // [MAX_SCREENWIDTH]; /* killough 2/8/98: */ // dropoff overflow +extern int *screenheightarray; // [MAX_SCREENWIDTH]; /* change to MAX_* */ // dropoff overflow /* Vars for R_DrawMaskedColumn */ diff --git a/components/doom/prboom/sounds.c b/components/doom/prboom/sounds.c index cc68a3c..fa294d7 100644 --- a/components/doom/prboom/sounds.c +++ b/components/doom/prboom/sounds.c @@ -45,7 +45,8 @@ // Information about all the music // -musicinfo_t S_music[] = { +musicinfo_t *S_music = NULL; +const musicinfo_t init_S_music[] = { { 0 }, { "e1m1", 0 }, { "e1m2", 0 }, @@ -115,13 +116,13 @@ musicinfo_t S_music[] = { { "dm2ttl", 0 }, { "dm2int", 0 }, }; - +const size_t s_music_bytes = sizeof(init_S_music); // // Information about all the sfx // - -sfxinfo_t S_sfx[] = { +sfxinfo_t *S_sfx = NULL; +const sfxinfo_t init_S_sfx[] = { // S_sfx[0] needs to be a dummy for odd reasons. { "none", false, 0, 0, -1, -1, 0 }, @@ -210,7 +211,7 @@ sfxinfo_t S_sfx[] = { { "punch", false, 64, 0, -1, -1, 0 }, { "hoof", false, 70, 0, -1, -1, 0 }, { "metal", false, 70, 0, -1, -1, 0 }, - { "chgun", false, 64, &S_sfx[sfx_pistol], 150, 0, 0 }, + { "chgun", false, 64, 0, 150, 0, 0 }, // &S_sfx[sfx_pistol] { "tink", false, 60, 0, -1, -1, 0 }, { "bdopn", false, 100, 0, -1, -1, 0 }, { "bdcls", false, 100, 0, -1, -1, 0 }, @@ -243,3 +244,4 @@ sfxinfo_t S_sfx[] = { { "dgpain", false, 96, 0, -1, -1, 0 }, #endif }; +const size_t s_sfx_bytes = sizeof(init_S_sfx); diff --git a/components/doom/prboom/sounds.h b/components/doom/prboom/sounds.h index db276f4..7cc823b 100644 --- a/components/doom/prboom/sounds.h +++ b/components/doom/prboom/sounds.h @@ -88,10 +88,10 @@ typedef struct { } musicinfo_t; // the complete set of sound effects -extern sfxinfo_t S_sfx[]; +extern sfxinfo_t *S_sfx; // the complete set of music -extern musicinfo_t S_music[]; +extern musicinfo_t *S_music; // // Identifiers for all music in game. diff --git a/components/doom/prboom/st_stuff.c b/components/doom/prboom/st_stuff.c index 5312431..3d56be9 100644 --- a/components/doom/prboom/st_stuff.c +++ b/components/doom/prboom/st_stuff.c @@ -75,20 +75,6 @@ // for tall numbers later on #define ST_TALLNUMWIDTH (tallnum[0]->width) -// Number of status faces. -#define ST_NUMPAINFACES 5 -#define ST_NUMSTRAIGHTFACES 3 -#define ST_NUMTURNFACES 2 -#define ST_NUMSPECIALFACES 3 - -#define ST_FACESTRIDE \ - (ST_NUMSTRAIGHTFACES+ST_NUMTURNFACES+ST_NUMSPECIALFACES) - -#define ST_NUMEXTRAFACES 2 - -#define ST_NUMFACES \ - (ST_FACESTRIDE*ST_NUMPAINFACES+ST_NUMEXTRAFACES) - #define ST_TURNOFFSET (ST_NUMSTRAIGHTFACES) #define ST_OUCHOFFSET (ST_TURNOFFSET + ST_NUMTURNFACES) #define ST_EVILGRINOFFSET (ST_OUCHOFFSET + 1) @@ -293,14 +279,14 @@ static patchnum_t tallnum[10]; static patchnum_t tallpercent; // 0-9, short, yellow (,different!) numbers -static patchnum_t shortnum[10]; +patchnum_t *shortnum = NULL; // [10]; // 3 key-cards, 3 skulls, 3 card/skull combos // jff 2/24/98 extend number of patches by three skull/card combos -static patchnum_t keys[NUMCARDS+3]; +patchnum_t *keys = NULL; // [NUMCARDS+3]; // face status patches -static patchnum_t faces[ST_NUMFACES]; +patchnum_t *faces = NULL; // [ST_NUMFACES]; // face background static patchnum_t faceback; // CPhipps - single background, translated for different players @@ -312,7 +298,7 @@ static patchnum_t stbarbg; static patchnum_t armsbg; // weapon ownership patches -static patchnum_t arms[6][2]; +patchnum_t *arms = NULL; // [6][2]; // ready-weapon widget static st_number_t w_ready; @@ -896,11 +882,16 @@ static void ST_loadGraphics(boolean doload) { sprintf(namebuf, "STGNUM%d", i+2); - // gray # - R_SetPatchNum(&arms[i][0], namebuf); + // // gray # + // R_SetPatchNum(&arms[i][0], namebuf); + + // // yellow # + // arms[i][1] = shortnum[i+2]; + + R_SetPatchNum(&arms[ sizeof(patchnum_t) * i], namebuf); // gray # // yellow # - arms[i][1] = shortnum[i+2]; + arms[sizeof(patchnum_t) * i + 6 * sizeof(patchnum_t)] = shortnum[i+2]; } // face backgrounds for different color players @@ -1001,7 +992,7 @@ static void ST_createWidgets(void) STlib_initMultIcon(&w_arms[i], ST_ARMSX+(i%3)*ST_ARMSXSPACE, ST_ARMSY+(i/3)*ST_ARMSYSPACE, - arms[i], (int *) &plyr->weaponowned[i+1], + &arms[i * sizeof(patchnum_t)], (int *) &plyr->weaponowned[i+1], &st_armson); } diff --git a/components/doom/prboom/st_stuff.h b/components/doom/prboom/st_stuff.h index 83ba51e..9711a5d 100644 --- a/components/doom/prboom/st_stuff.h +++ b/components/doom/prboom/st_stuff.h @@ -50,6 +50,20 @@ #define ST_SCALED_WIDTH SCREENWIDTH #define ST_SCALED_Y (SCREENHEIGHT - ST_SCALED_HEIGHT) +// Number of status faces. +#define ST_NUMPAINFACES 5 +#define ST_NUMSTRAIGHTFACES 3 +#define ST_NUMTURNFACES 2 +#define ST_NUMSPECIALFACES 3 + +#define ST_FACESTRIDE \ + (ST_NUMSTRAIGHTFACES+ST_NUMTURNFACES+ST_NUMSPECIALFACES) + +#define ST_NUMEXTRAFACES 2 + +#define ST_NUMFACES \ + (ST_FACESTRIDE*ST_NUMPAINFACES+ST_NUMEXTRAFACES) + // // STATUS BAR // diff --git a/components/doom/prboom/wi_stuff.c b/components/doom/prboom/wi_stuff.c index 8cfc84b..ef97686 100644 --- a/components/doom/prboom/wi_stuff.c +++ b/components/doom/prboom/wi_stuff.c @@ -174,7 +174,7 @@ typedef struct } anim_t; -static point_t lnodes[NUMEPISODES][NUMMAPS] = +static const point_t lnodes[NUMEPISODES][NUMMAPS] = { // Episode 0 World Map { @@ -222,7 +222,7 @@ static point_t lnodes[NUMEPISODES][NUMMAPS] = // Using patches saves a lot of space, // as they replace 320x200 full screen frames. // -static anim_t epsd0animinfo[] = +static const anim_t epsd0animinfo[] = { { ANIM_ALWAYS, TICRATE/3, 3, { 224, 104 } }, { ANIM_ALWAYS, TICRATE/3, 3, { 184, 160 } }, @@ -236,7 +236,7 @@ static anim_t epsd0animinfo[] = { ANIM_ALWAYS, TICRATE/3, 3, { 64, 24 } } }; -static anim_t epsd1animinfo[] = +static const anim_t epsd1animinfo[] = { { ANIM_LEVEL, TICRATE/3, 1, { 128, 136 }, 1 }, { ANIM_LEVEL, TICRATE/3, 1, { 128, 136 }, 2 }, @@ -249,7 +249,7 @@ static anim_t epsd1animinfo[] = { ANIM_LEVEL, TICRATE/3, 1, { 128, 136 }, 8 } }; -static anim_t epsd2animinfo[] = +static const anim_t epsd2animinfo[] = { { ANIM_ALWAYS, TICRATE/3, 3, { 104, 168 } }, { ANIM_ALWAYS, TICRATE/3, 3, { 40, 136 } }, @@ -259,14 +259,14 @@ static anim_t epsd2animinfo[] = { ANIM_ALWAYS, TICRATE/4, 3, { 40, 0 } } }; -static int NUMANIMS[NUMEPISODES] = +static const int NUMANIMS[NUMEPISODES] = { sizeof(epsd0animinfo)/sizeof(anim_t), sizeof(epsd1animinfo)/sizeof(anim_t), sizeof(epsd2animinfo)/sizeof(anim_t) }; -static anim_t *anims[NUMEPISODES] = +static const anim_t * const anims[NUMEPISODES] = { epsd0animinfo, epsd1animinfo, diff --git a/components/doom/src/doom.cpp b/components/doom/src/doom.cpp index 903f961..2c30164 100644 --- a/components/doom/src/doom.cpp +++ b/components/doom/src/doom.cpp @@ -536,6 +536,37 @@ extern patchnum_t *hu_font2; // [HU_FONTSIZE]; extern patchnum_t *hu_fontk; // [HU_FONTSIZE];//jff 3/7/98 added for graphic key indicators extern patchnum_t *hu_msgbg; // [9]; //jff 2/26/98 add patches for message background +extern musicinfo_t *S_music; +extern const size_t s_music_bytes; +extern const musicinfo_t init_S_music[]; +extern sfxinfo_t *S_sfx; +extern const sfxinfo_t init_S_sfx[]; +extern const size_t s_sfx_bytes; + +extern struct cheat_s *cheat; +extern const struct cheat_s init_cheat[]; +extern size_t init_cheat_bytes; + +extern char *hud_coordstrx; // [ 32]; +extern char *hud_coordstry; // [ 32]; +extern char *hud_coordstrz; // [ 32]; +extern char *hud_ammostr; // [ 80]; +extern char *hud_healthstr; // [ 80]; +extern char *hud_armorstr; // [ 80]; +extern char *hud_weapstr; // [ 80]; +extern char *hud_keysstr; // [ 80]; +extern char *hud_gkeysstr; // [ 80]; //jff 3/7/98 add support for graphic key display +extern char *hud_monsecstr; // [ 80]; +extern char *chatchars; // [QUEUESIZE]; [128] + +extern int *negonearray; // [MAX_SCREENWIDTH]; // killough 2/8/98: // dropoff overflow +extern int *screenheightarray; // [MAX_SCREENWIDTH]; // change to MAX_* // dropoff overflow +extern spriteframe_t *sprtemp; // [MAX_SPRITE_FRAMES]; [29] + +extern patchnum_t *shortnum; // [10]; +extern patchnum_t *keys; // [NUMCARDS+3]; +extern patchnum_t *faces; // [ST_NUMFACES]; +extern patchnum_t *arms; // [6][2]; void init_doom(const std::string& wad_filename, uint8_t *wad_data, size_t wad_data_size) { itemrespawnque = (mapthing_t *)shared_malloc(sizeof(mapthing_t) * ITEMQUESIZE); @@ -584,6 +615,36 @@ void init_doom(const std::string& wad_filename, uint8_t *wad_data, size_t wad_da hu_fontk = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * HU_FONTSIZE); hu_msgbg = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * 9); + S_music = (musicinfo_t *)shared_malloc(s_music_bytes); + memcpy(S_music, init_S_music, s_music_bytes); + S_sfx = (sfxinfo_t *)shared_malloc(s_sfx_bytes); + memcpy(S_sfx, init_S_sfx, s_sfx_bytes); + S_sfx[86].link = &S_sfx[sfx_pistol]; + + cheat = (struct cheat_s *)shared_malloc(init_cheat_bytes); + memcpy(cheat, init_cheat, init_cheat_bytes); + + hud_coordstrx = (char *)shared_malloc(32); + hud_coordstry = (char *)shared_malloc(32); + hud_coordstrz = (char *)shared_malloc(32); + hud_ammostr = (char *)shared_malloc(80); + hud_healthstr = (char *)shared_malloc(80); + hud_armorstr = (char *)shared_malloc(80); + hud_weapstr = (char *)shared_malloc(80); + hud_keysstr = (char *)shared_malloc(80); + hud_gkeysstr = (char *)shared_malloc(80); //jff 3/7/98 add support for graphic key display + hud_monsecstr = (char *)shared_malloc(80); + chatchars = (char *)shared_malloc(128); // [128] + + negonearray = (int *)shared_malloc(sizeof(int) * MAX_SCREENWIDTH); // killough 2/8/98: // dropoff overflow + screenheightarray = (int *)shared_malloc(sizeof(int) * MAX_SCREENWIDTH); // change to MAX_* // dropoff overflow + sprtemp = (spriteframe_t *)shared_malloc(sizeof(spriteframe_t) * 29); // [29] + + shortnum = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * 10); + keys = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * (NUMCARDS + 3)); + faces = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * ST_NUMFACES); + arms = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * 6 * 2); + // Initialize system interface if (!I_StartDisplay()) { ESP_LOGE(TAG, "Failed to initialize display"); From 1a5fb84d77e234e6678de37d876f64fa69425b7d Mon Sep 17 00:00:00 2001 From: William Emfinger Date: Thu, 17 Apr 2025 10:09:45 -0500 Subject: [PATCH 14/39] move more into shared memory --- components/doom/prboom/hu_stuff.c | 226 +++++++++++++++--------------- components/doom/src/doom.cpp | 35 ++++- 2 files changed, 147 insertions(+), 114 deletions(-) diff --git a/components/doom/prboom/hu_stuff.c b/components/doom/prboom/hu_stuff.c index e5c5942..53eda63 100644 --- a/components/doom/prboom/hu_stuff.c +++ b/components/doom/prboom/hu_stuff.c @@ -168,21 +168,21 @@ patchnum_t *hu_fontk = NULL; // [HU_FONTSIZE];//jff 3/7/98 added for graphic key patchnum_t *hu_msgbg = NULL; // [9]; //jff 2/26/98 add patches for message background // widgets -static hu_textline_t w_title; -static hu_stext_t w_message; -static hu_itext_t w_chat; -static hu_itext_t w_inputbuffer[MAXPLAYERS]; -static hu_textline_t w_coordx; //jff 2/16/98 new coord widget for automap -static hu_textline_t w_coordy; //jff 3/3/98 split coord widgets automap -static hu_textline_t w_coordz; //jff 3/3/98 split coord widgets automap -static hu_textline_t w_ammo; //jff 2/16/98 new ammo widget for hud -static hu_textline_t w_health; //jff 2/16/98 new health widget for hud -static hu_textline_t w_armor; //jff 2/16/98 new armor widget for hud -static hu_textline_t w_weapon; //jff 2/16/98 new weapon widget for hud -static hu_textline_t w_keys; //jff 2/16/98 new keys widget for hud -static hu_textline_t w_gkeys; //jff 3/7/98 graphic keys widget for hud -static hu_textline_t w_monsec; //jff 2/16/98 new kill/secret widget for hud -static hu_mtext_t w_rtext; //jff 2/26/98 text message refresh widget +hu_textline_t *w_title = NULL; +hu_stext_t *w_message = NULL; +hu_itext_t *w_chat = NULL; +hu_itext_t *w_inputbuffer = NULL; // [MAXPLAYERS]; +hu_textline_t *w_coordx = NULL; //jff 2/16/98 new coord widget for automap +hu_textline_t *w_coordy = NULL; //jff 3/3/98 split coord widgets automap +hu_textline_t *w_coordz = NULL; //jff 3/3/98 split coord widgets automap +hu_textline_t *w_ammo = NULL; //jff 2/16/98 new ammo widget for hud +hu_textline_t *w_health = NULL; //jff 2/16/98 new health widget for hud +hu_textline_t *w_armor = NULL; //jff 2/16/98 new armor widget for hud +hu_textline_t *w_weapon = NULL; //jff 2/16/98 new weapon widget for hud +hu_textline_t *w_keys = NULL; //jff 2/16/98 new keys widget for hud +hu_textline_t *w_gkeys = NULL; //jff 3/7/98 graphic keys widget for hud +hu_textline_t *w_monsec = NULL; //jff 2/16/98 new kill/secret widget for hud +hu_mtext_t *w_rtext = NULL; //jff 2/26/98 text message refresh widget static boolean always_off = false; static char chat_dest[MAXPLAYERS]; @@ -411,7 +411,7 @@ void HU_Start(void) // messages to player in upper-left of screen HUlib_initSText ( - &w_message, + w_message, HU_MSGX, HU_MSGY, HU_MSGHEIGHT, @@ -425,7 +425,7 @@ void HU_Start(void) // create the map title widget - map title display in lower left of automap HUlib_initTextLine ( - &w_title, + w_title, HU_TITLEX, HU_TITLEY, hu_font, @@ -438,7 +438,7 @@ void HU_Start(void) // lower left or upper right of screen HUlib_initTextLine ( - &w_health, + w_health, hud_distributed? HU_HEALTHX_D : HU_HEALTHX, //3/4/98 distribute hud_distributed? HU_HEALTHY_D : HU_HEALTHY, hu_font2, @@ -451,7 +451,7 @@ void HU_Start(void) // lower left or upper right of screen HUlib_initTextLine ( - &w_armor, + w_armor, hud_distributed? HU_ARMORX_D : HU_ARMORX, //3/4/98 distribute hud_distributed? HU_ARMORY_D : HU_ARMORY, hu_font2, @@ -464,7 +464,7 @@ void HU_Start(void) // lower left or lower right of screen HUlib_initTextLine ( - &w_ammo, + w_ammo, hud_distributed? HU_AMMOX_D : HU_AMMOX, //3/4/98 distribute hud_distributed? HU_AMMOY_D : HU_AMMOY, hu_font2, @@ -477,7 +477,7 @@ void HU_Start(void) // lower left or lower right of screen HUlib_initTextLine ( - &w_weapon, + w_weapon, hud_distributed? HU_WEAPX_D : HU_WEAPX, //3/4/98 distribute hud_distributed? HU_WEAPY_D : HU_WEAPY, hu_font2, @@ -490,7 +490,7 @@ void HU_Start(void) // lower left of screen HUlib_initTextLine ( - &w_keys, + w_keys, hud_distributed? HU_KEYSX_D : HU_KEYSX, //3/4/98 distribute hud_distributed? HU_KEYSY_D : HU_KEYSY, hu_font2, @@ -503,7 +503,7 @@ void HU_Start(void) // lower left of screen HUlib_initTextLine ( - &w_gkeys, + w_gkeys, hud_distributed? HU_KEYSGX_D : HU_KEYSGX, //3/4/98 distribute hud_distributed? HU_KEYSY_D : HU_KEYSY, hu_fontk, @@ -516,7 +516,7 @@ void HU_Start(void) // lower left of screen HUlib_initTextLine ( - &w_monsec, + w_monsec, hud_distributed? HU_MONSECX_D : HU_MONSECX, //3/4/98 distribute hud_distributed? HU_MONSECY_D : HU_MONSECY, hu_font2, @@ -533,7 +533,7 @@ void HU_Start(void) //jff 2/26/98 add the text refresh widget initialization HUlib_initMText ( - &w_rtext, + w_rtext, 0, 0, 320, @@ -563,14 +563,14 @@ void HU_Start(void) break; } else s = ""; while (*s) - HUlib_addCharToTextLine(&w_title, *(s++)); + HUlib_addCharToTextLine(w_title, *(s++)); // create the automaps coordinate widget // jff 3/3/98 split coord widget into three lines: x,y,z // jff 2/16/98 added HUlib_initTextLine ( - &w_coordx, + w_coordx, HU_COORDX, HU_COORDX_Y, hu_font, @@ -579,7 +579,7 @@ void HU_Start(void) ); HUlib_initTextLine ( - &w_coordy, + w_coordy, HU_COORDX, HU_COORDY_Y, hu_font, @@ -588,7 +588,7 @@ void HU_Start(void) ); HUlib_initTextLine ( - &w_coordz, + w_coordz, HU_COORDX, HU_COORDZ_Y, hu_font, @@ -603,40 +603,40 @@ void HU_Start(void) sprintf(hud_coordstrx,"X: %-5d",0); //jff 2/22/98 added z s = hud_coordstrx; while (*s) - HUlib_addCharToTextLine(&w_coordx, *(s++)); + HUlib_addCharToTextLine(w_coordx, *(s++)); sprintf(hud_coordstry,"Y: %-5d",0); //jff 3/3/98 split x,y,z s = hud_coordstry; while (*s) - HUlib_addCharToTextLine(&w_coordy, *(s++)); + HUlib_addCharToTextLine(w_coordy, *(s++)); sprintf(hud_coordstrz,"Z: %-5d",0); //jff 3/3/98 split x,y,z s = hud_coordstrz; while (*s) - HUlib_addCharToTextLine(&w_coordz, *(s++)); + HUlib_addCharToTextLine(w_coordz, *(s++)); } //jff 2/16/98 initialize ammo widget strcpy(hud_ammostr,"AMM "); s = hud_ammostr; while (*s) - HUlib_addCharToTextLine(&w_ammo, *(s++)); + HUlib_addCharToTextLine(w_ammo, *(s++)); //jff 2/16/98 initialize health widget strcpy(hud_healthstr,"HEL "); s = hud_healthstr; while (*s) - HUlib_addCharToTextLine(&w_health, *(s++)); + HUlib_addCharToTextLine(w_health, *(s++)); //jff 2/16/98 initialize armor widget strcpy(hud_armorstr,"ARM "); s = hud_armorstr; while (*s) - HUlib_addCharToTextLine(&w_armor, *(s++)); + HUlib_addCharToTextLine(w_armor, *(s++)); //jff 2/17/98 initialize weapons widget strcpy(hud_weapstr,"WEA "); s = hud_weapstr; while (*s) - HUlib_addCharToTextLine(&w_weapon, *(s++)); + HUlib_addCharToTextLine(w_weapon, *(s++)); //jff 2/17/98 initialize keys widget if (!deathmatch) //jff 3/17/98 show frags in deathmatch mode @@ -645,24 +645,24 @@ void HU_Start(void) strcpy(hud_keysstr,"FRG "); s = hud_keysstr; while (*s) - HUlib_addCharToTextLine(&w_keys, *(s++)); + HUlib_addCharToTextLine(w_keys, *(s++)); //jff 2/17/98 initialize graphic keys widget strcpy(hud_gkeysstr," "); s = hud_gkeysstr; while (*s) - HUlib_addCharToTextLine(&w_gkeys, *(s++)); + HUlib_addCharToTextLine(w_gkeys, *(s++)); //jff 2/17/98 initialize kills/items/secret widget strcpy(hud_monsecstr,"STS "); s = hud_monsecstr; while (*s) - HUlib_addCharToTextLine(&w_monsec, *(s++)); + HUlib_addCharToTextLine(w_monsec, *(s++)); // create the chat widget HUlib_initIText ( - &w_chat, + w_chat, HU_INPUTX, HU_INPUTY, hu_font, @@ -705,20 +705,20 @@ void HU_MoveHud(void) //jff 3/4/98 move displays around on F5 changing hud_distributed if (hud_distributed!=ohud_distributed) { - w_ammo.x = hud_distributed? HU_AMMOX_D : HU_AMMOX; - w_ammo.y = hud_distributed? HU_AMMOY_D : HU_AMMOY; - w_weapon.x = hud_distributed? HU_WEAPX_D : HU_WEAPX; - w_weapon.y = hud_distributed? HU_WEAPY_D : HU_WEAPY; - w_keys.x = hud_distributed? HU_KEYSX_D : HU_KEYSX; - w_keys.y = hud_distributed? HU_KEYSY_D : HU_KEYSY; - w_gkeys.x = hud_distributed? HU_KEYSGX_D : HU_KEYSGX; - w_gkeys.y = hud_distributed? HU_KEYSY_D : HU_KEYSY; - w_monsec.x = hud_distributed? HU_MONSECX_D : HU_MONSECX; - w_monsec.y = hud_distributed? HU_MONSECY_D : HU_MONSECY; - w_health.x = hud_distributed? HU_HEALTHX_D : HU_HEALTHX; - w_health.y = hud_distributed? HU_HEALTHY_D : HU_HEALTHY; - w_armor.x = hud_distributed? HU_ARMORX_D : HU_ARMORX; - w_armor.y = hud_distributed? HU_ARMORY_D : HU_ARMORY; + w_ammo->x = hud_distributed? HU_AMMOX_D : HU_AMMOX; + w_ammo->y = hud_distributed? HU_AMMOY_D : HU_AMMOY; + w_weapon->x = hud_distributed? HU_WEAPX_D : HU_WEAPX; + w_weapon->y = hud_distributed? HU_WEAPY_D : HU_WEAPY; + w_keys->x = hud_distributed? HU_KEYSX_D : HU_KEYSX; + w_keys->y = hud_distributed? HU_KEYSY_D : HU_KEYSY; + w_gkeys->x = hud_distributed? HU_KEYSGX_D : HU_KEYSGX; + w_gkeys->y = hud_distributed? HU_KEYSY_D : HU_KEYSY; + w_monsec->x = hud_distributed? HU_MONSECX_D : HU_MONSECX; + w_monsec->y = hud_distributed? HU_MONSECY_D : HU_MONSECY; + w_health->x = hud_distributed? HU_HEALTHX_D : HU_HEALTHX; + w_health->y = hud_distributed? HU_HEALTHY_D : HU_HEALTHY; + w_armor->x = hud_distributed? HU_ARMORX_D : HU_ARMORX; + w_armor->y = hud_distributed? HU_ARMORY_D : HU_ARMORY; } ohud_distributed = hud_distributed; } @@ -744,37 +744,37 @@ void HU_Drawer(void) if (automapmode & am_active) { // map title - HUlib_drawTextLine(&w_title, false); + HUlib_drawTextLine(w_title, false); //jff 2/16/98 output new coord display // x-coord if (map_point_coordinates) { sprintf(hud_coordstrx,"X: %-5d", (plr->mo->x)>>FRACBITS); - HUlib_clearTextLine(&w_coordx); + HUlib_clearTextLine(w_coordx); s = hud_coordstrx; while (*s) - HUlib_addCharToTextLine(&w_coordx, *(s++)); - HUlib_drawTextLine(&w_coordx, false); + HUlib_addCharToTextLine(w_coordx, *(s++)); + HUlib_drawTextLine(w_coordx, false); //jff 3/3/98 split coord display into x,y,z lines // y-coord sprintf(hud_coordstry,"Y: %-5d", (plr->mo->y)>>FRACBITS); - HUlib_clearTextLine(&w_coordy); + HUlib_clearTextLine(w_coordy); s = hud_coordstry; while (*s) - HUlib_addCharToTextLine(&w_coordy, *(s++)); - HUlib_drawTextLine(&w_coordy, false); + HUlib_addCharToTextLine(w_coordy, *(s++)); + HUlib_drawTextLine(w_coordy, false); //jff 3/3/98 split coord display into x,y,z lines //jff 2/22/98 added z // z-coord sprintf(hud_coordstrz,"Z: %-5d", (plr->mo->z)>>FRACBITS); - HUlib_clearTextLine(&w_coordz); + HUlib_clearTextLine(w_coordz); s = hud_coordstrz; while (*s) - HUlib_addCharToTextLine(&w_coordz, *(s++)); - HUlib_drawTextLine(&w_coordz, false); + HUlib_addCharToTextLine(w_coordz, *(s++)); + HUlib_drawTextLine(w_coordz, false); } } @@ -796,12 +796,12 @@ void HU_Drawer(void) // do the hud ammo display // clear the widgets internal line - HUlib_clearTextLine(&w_ammo); + HUlib_clearTextLine(w_ammo); strcpy(hud_ammostr,"AMM "); if (weaponinfo[plr->readyweapon].ammo == am_noammo) { // special case for weapon with no ammo selected - blank bargraph + N/A strcat(hud_ammostr,"\x7f\x7f\x7f\x7f\x7f\x7f\x7f N/A"); - w_ammo.cm = CR_GRAY; + w_ammo->cm = CR_GRAY; } else { @@ -839,19 +839,19 @@ void HU_Drawer(void) // set the display color from the percentage of total ammo held if (ammopctcm = CR_RED; else if (ammopctcm = CR_GOLD; else - w_ammo.cm = CR_GREEN; + w_ammo->cm = CR_GREEN; } // transfer the init string to the widget s = hud_ammostr; while (*s) - HUlib_addCharToTextLine(&w_ammo, *(s++)); + HUlib_addCharToTextLine(w_ammo, *(s++)); } // display the ammo widget every frame - HUlib_drawTextLine(&w_ammo, false); + HUlib_drawTextLine(w_ammo, false); // do the hud health display if (doit) @@ -860,7 +860,7 @@ void HU_Drawer(void) int healthbars = health>100? 25 : health/4; // clear the widgets internal line - HUlib_clearTextLine(&w_health); + HUlib_clearTextLine(w_health); // build the numeric amount init string sprintf(healthstr,"%3d",health); @@ -891,21 +891,21 @@ void HU_Drawer(void) // set the display color from the amount of health posessed if (healthcm = CR_RED; else if (healthcm = CR_GOLD; else if (health<=health_green) - w_health.cm = CR_GREEN; + w_health->cm = CR_GREEN; else - w_health.cm = CR_BLUE; + w_health->cm = CR_BLUE; // transfer the init string to the widget s = hud_healthstr; while (*s) - HUlib_addCharToTextLine(&w_health, *(s++)); + HUlib_addCharToTextLine(w_health, *(s++)); } // display the health widget every frame - HUlib_drawTextLine(&w_health, false); + HUlib_drawTextLine(w_health, false); // do the hud armor display if (doit) @@ -914,7 +914,7 @@ void HU_Drawer(void) int armorbars = armor>100? 25 : armor/4; // clear the widgets internal line - HUlib_clearTextLine(&w_armor); + HUlib_clearTextLine(w_armor); // build the numeric amount init string sprintf(armorstr,"%3d",armor); // build the bargraph string @@ -944,21 +944,21 @@ void HU_Drawer(void) // set the display color from the amount of armor posessed if (armorcm = CR_RED; else if (armorcm = CR_GOLD; else if (armor<=armor_green) - w_armor.cm = CR_GREEN; + w_armor->cm = CR_GREEN; else - w_armor.cm = CR_BLUE; + w_armor->cm = CR_BLUE; // transfer the init string to the widget s = hud_armorstr; while (*s) - HUlib_addCharToTextLine(&w_armor, *(s++)); + HUlib_addCharToTextLine(w_armor, *(s++)); } // display the armor widget every frame - HUlib_drawTextLine(&w_armor, false); + HUlib_drawTextLine(w_armor, false); // do the hud weapon display if (doit) @@ -967,7 +967,7 @@ void HU_Drawer(void) int ammo,fullammo,ammopct; // clear the widgets internal line - HUlib_clearTextLine(&w_weapon); + HUlib_clearTextLine(w_weapon); i=4; hud_weapstr[i] = '\0'; //jff 3/7/98 make sure ammo goes away // do each weapon that exists in current gamemode @@ -1020,10 +1020,10 @@ void HU_Drawer(void) // transfer the init string to the widget s = hud_weapstr; while (*s) - HUlib_addCharToTextLine(&w_weapon, *(s++)); + HUlib_addCharToTextLine(w_weapon, *(s++)); } // display the weapon widget every frame - HUlib_drawTextLine(&w_weapon, false); + HUlib_drawTextLine(w_weapon, false); if (doit && hud_active>1) { @@ -1203,14 +1203,14 @@ void HU_Drawer(void) // display the keys/frags line each frame if (hud_active>1) { - HUlib_clearTextLine(&w_keys); // clear the widget strings - HUlib_clearTextLine(&w_gkeys); + HUlib_clearTextLine(w_keys); // clear the widget strings + HUlib_clearTextLine(w_gkeys); // transfer the built string (frags or key title) to the widget s = hud_keysstr; //jff 3/7/98 display key titles/key text or frags while (*s) - HUlib_addCharToTextLine(&w_keys, *(s++)); - HUlib_drawTextLine(&w_keys, false); + HUlib_addCharToTextLine(w_keys, *(s++)); + HUlib_drawTextLine(w_keys, false); //jff 3/17/98 show graphic keys in non-DM only if (!deathmatch) //jff 3/7/98 display graphic keys @@ -1218,9 +1218,9 @@ void HU_Drawer(void) // transfer the graphic key text to the widget s = hud_gkeysstr; while (*s) - HUlib_addCharToTextLine(&w_gkeys, *(s++)); + HUlib_addCharToTextLine(w_gkeys, *(s++)); // display the widget - HUlib_drawTextLine(&w_gkeys, false); + HUlib_drawTextLine(w_gkeys, false); } } @@ -1230,7 +1230,7 @@ void HU_Drawer(void) if (hud_active>1 && doit) { // clear the internal widget text buffer - HUlib_clearTextLine(&w_monsec); + HUlib_clearTextLine(w_monsec); //jff 3/26/98 use ESC not '\' for paths // build the init string with fixed colors sprintf( @@ -1243,11 +1243,11 @@ void HU_Drawer(void) // transfer the init string to the widget s = hud_monsecstr; while (*s) - HUlib_addCharToTextLine(&w_monsec, *(s++)); + HUlib_addCharToTextLine(w_monsec, *(s++)); } // display the kills/items/secrets each frame, if optioned if (hud_active>1) - HUlib_drawTextLine(&w_monsec, false); + HUlib_drawTextLine(w_monsec, false); } } @@ -1261,14 +1261,14 @@ void HU_Drawer(void) // if the message review not enabled, show the standard message widget if (!message_list) - HUlib_drawSText(&w_message); + HUlib_drawSText(w_message); // if the message review is enabled show the scrolling message review if (hud_msg_lines>1 && message_list) - HUlib_drawMText(&w_rtext); + HUlib_drawMText(w_rtext); // display the interactive buffer for chat entry - HUlib_drawIText(&w_chat); + HUlib_drawIText(w_chat); } // @@ -1282,15 +1282,15 @@ void HU_Erase(void) { // erase the message display or the message review display if (!message_list) - HUlib_eraseSText(&w_message); + HUlib_eraseSText(w_message); else - HUlib_eraseMText(&w_rtext); + HUlib_eraseMText(w_rtext); // erase the interactive text buffer for chat entry - HUlib_eraseIText(&w_chat); + HUlib_eraseIText(w_chat); // erase the automap title - HUlib_eraseTextLine(&w_title); + HUlib_eraseTextLine(w_title); } // @@ -1315,7 +1315,7 @@ void HU_Ticker(void) message_nottobefuckedwith = false; } if (bsdown && bscounter++ > 9) { - HUlib_keyInIText(&w_chat, (unsigned char)key_backspace); + HUlib_keyInIText(w_chat, (unsigned char)key_backspace); bscounter = 8; } @@ -1328,9 +1328,9 @@ void HU_Ticker(void) || (plr->message && message_dontfuckwithme)) { //post the message to the message widget - HUlib_addMessageToSText(&w_message, 0, plr->message); + HUlib_addMessageToSText(w_message, 0, plr->message); //jff 2/26/98 add message to refresh text widget too - HUlib_addMessageToMText(&w_rtext, 0, plr->message); + HUlib_addMessageToMText(w_rtext, 0, plr->message); // clear the message to avoid posting multiple times plr->message = 0; @@ -1368,7 +1368,7 @@ void HU_Ticker(void) && (chat_dest[i] == consoleplayer+1 || chat_dest[i] == HU_BROADCAST)) { - HUlib_addMessageToSText(&w_message, + HUlib_addMessageToSText(w_message, player_names[i], w_inputbuffer[i].l.l); @@ -1507,7 +1507,7 @@ boolean HU_Responder(event_t *ev) if (ev->data1 == key_chat) { eatkey = chat_on = true; - HUlib_resetIText(&w_chat); + HUlib_resetIText(w_chat); HU_queueChatChar(HU_BROADCAST); } else if (numplayers > 2) @@ -1519,7 +1519,7 @@ boolean HU_Responder(event_t *ev) if (playeringame[i] && i!=consoleplayer) { eatkey = chat_on = true; - HUlib_resetIText(&w_chat); + HUlib_resetIText(w_chat); HU_queueChatChar((char)(i+1)); break; } @@ -1571,16 +1571,16 @@ boolean HU_Responder(event_t *ev) { if (shiftdown || (c >= 'a' && c <= 'z')) c = shiftxform[c]; - eatkey = HUlib_keyInIText(&w_chat, c); + eatkey = HUlib_keyInIText(w_chat, c); if (eatkey) HU_queueChatChar(c); if (c == key_enter) // phares { chat_on = false; - if (w_chat.l.len) + if (w_chat->l.len) { - strcpy(lastmessage, w_chat.l.l); + strcpy(lastmessage, w_chat->l.l); plr->message = lastmessage; } } diff --git a/components/doom/src/doom.cpp b/components/doom/src/doom.cpp index 2c30164..7ea45e9 100644 --- a/components/doom/src/doom.cpp +++ b/components/doom/src/doom.cpp @@ -49,6 +49,7 @@ extern "C" { #include #include +#include #include ///////////////////////////////////////////// @@ -526,7 +527,7 @@ extern fixed_t *yslope; // [MAX_SCREENHEIGHT]; extern fixed_t *distscale; // [MAX_SCREENWIDTH]; extern mobjinfo_t *mobjinfo; // [NUMMOBJTYPES]; -extern const mobjinfo_t *init_mobjinfo; +extern const mobjinfo_t init_mobjinfo[]; extern player_t *players; // [MAXPLAYERS]; extern byte *gamekeydown; // [NUMKEYS]; @@ -568,6 +569,22 @@ extern patchnum_t *keys; // [NUMCARDS+3]; extern patchnum_t *faces; // [ST_NUMFACES]; extern patchnum_t *arms; // [6][2]; +extern hu_textline_t *w_title; +extern hu_stext_t *w_message; +extern hu_itext_t *w_chat; +extern hu_itext_t *w_inputbuffer; // [MAXPLAYERS]; +extern hu_textline_t *w_coordx; //jff 2/16/98 new coord widget for automap +extern hu_textline_t *w_coordy; //jff 3/3/98 split coord widgets automap +extern hu_textline_t *w_coordz; //jff 3/3/98 split coord widgets automap +extern hu_textline_t *w_ammo; //jff 2/16/98 new ammo widget for hud +extern hu_textline_t *w_health; //jff 2/16/98 new health widget for hud +extern hu_textline_t *w_armor; //jff 2/16/98 new armor widget for hud +extern hu_textline_t *w_weapon; //jff 2/16/98 new weapon widget for hud +extern hu_textline_t *w_keys; //jff 2/16/98 new keys widget for hud +extern hu_textline_t *w_gkeys; //jff 3/7/98 graphic keys widget for hud +extern hu_textline_t *w_monsec; //jff 2/16/98 new kill/secret widget for hud +extern hu_mtext_t *w_rtext; //jff 2/26/98 text message refresh widget + void init_doom(const std::string& wad_filename, uint8_t *wad_data, size_t wad_data_size) { itemrespawnque = (mapthing_t *)shared_malloc(sizeof(mapthing_t) * ITEMQUESIZE); itemrespawntime = (int *)shared_malloc(sizeof(int) * ITEMQUESIZE); @@ -645,6 +662,22 @@ void init_doom(const std::string& wad_filename, uint8_t *wad_data, size_t wad_da faces = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * ST_NUMFACES); arms = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * 6 * 2); + w_title = (hu_textline_t *)shared_malloc(sizeof(hu_textline_t)); + w_message = (hu_stext_t *)shared_malloc(sizeof(hu_stext_t)); + w_chat = (hu_itext_t *)shared_malloc(sizeof(hu_itext_t)); + w_inputbuffer = (hu_itext_t *)shared_malloc(sizeof(hu_itext_t) * MAXPLAYERS); + w_coordx = (hu_textline_t *)shared_malloc(sizeof(hu_textline_t)); + w_coordy = (hu_textline_t *)shared_malloc(sizeof(hu_textline_t)); + w_coordz = (hu_textline_t *)shared_malloc(sizeof(hu_textline_t)); + w_ammo = (hu_textline_t *)shared_malloc(sizeof(hu_textline_t)); + w_health = (hu_textline_t *)shared_malloc(sizeof(hu_textline_t)); + w_armor = (hu_textline_t *)shared_malloc(sizeof(hu_textline_t)); + w_weapon = (hu_textline_t *)shared_malloc(sizeof(hu_textline_t)); + w_keys = (hu_textline_t *)shared_malloc(sizeof(hu_textline_t)); + w_gkeys = (hu_textline_t *)shared_malloc(sizeof(hu_textline_t)); //jff 3/7/98 graphic keys widget for hud + w_monsec = (hu_textline_t *)shared_malloc(sizeof(hu_textline_t)); + w_rtext = (hu_mtext_t *)shared_malloc(sizeof(hu_mtext_t)); + // Initialize system interface if (!I_StartDisplay()) { ESP_LOGE(TAG, "Failed to initialize display"); From 0ac9b42fd91d9bae474a872e4d80beaea260fd67 Mon Sep 17 00:00:00 2001 From: William Emfinger Date: Thu, 17 Apr 2025 13:13:16 -0500 Subject: [PATCH 15/39] wip --- components/doom/prboom/st_stuff.c | 2 ++ components/doom/src/doom.cpp | 21 ++++++++++----------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/components/doom/prboom/st_stuff.c b/components/doom/prboom/st_stuff.c index 3d56be9..93c4a23 100644 --- a/components/doom/prboom/st_stuff.c +++ b/components/doom/prboom/st_stuff.c @@ -299,6 +299,7 @@ static patchnum_t armsbg; // weapon ownership patches patchnum_t *arms = NULL; // [6][2]; +// static patchnum_t arms[6][2]; // ready-weapon widget static st_number_t w_ready; @@ -992,6 +993,7 @@ static void ST_createWidgets(void) STlib_initMultIcon(&w_arms[i], ST_ARMSX+(i%3)*ST_ARMSXSPACE, ST_ARMSY+(i/3)*ST_ARMSYSPACE, + // arms[i], (int *) &plyr->weaponowned[i+1], &arms[i * sizeof(patchnum_t)], (int *) &plyr->weaponowned[i+1], &st_armson); } diff --git a/components/doom/src/doom.cpp b/components/doom/src/doom.cpp index 7ea45e9..3c970fb 100644 --- a/components/doom/src/doom.cpp +++ b/components/doom/src/doom.cpp @@ -380,14 +380,14 @@ void I_InitSound(void) auto& box = BoxEmu::get(); box.audio_sample_rate(snd_samplerate); - // rg_task_create("doom_sound", &soundTask, NULL, 2048, RG_TASK_PRIORITY_2, 1); - // espp::task::run_on_core_nonblocking(soundTask, 1, 2048, 10, "doom_sound"); + audio_task.reset(); audio_task = espp::Task::make_unique(espp::Task::Config{ .callback = soundTask, .task_config = { .name = "doom_sound", .stack_size_bytes = 2048, .priority = 10, + .core_id = 1, } }); } @@ -489,9 +489,10 @@ void I_Init(void) } } // extern "C" +static std::string doom_wad_path = ""; void reset_doom() { - // Reset game state - // D_DoomLoop(); + deinit_doom(); + init_doom(doom_wad_path, nullptr, 0); } extern mapthing_t *itemrespawnque; @@ -586,6 +587,8 @@ extern hu_textline_t *w_monsec; //jff 2/16/98 new kill/secret widget for hud extern hu_mtext_t *w_rtext; //jff 2/26/98 text message refresh widget void init_doom(const std::string& wad_filename, uint8_t *wad_data, size_t wad_data_size) { + doom_wad_path = wad_filename; + itemrespawnque = (mapthing_t *)shared_malloc(sizeof(mapthing_t) * ITEMQUESIZE); itemrespawntime = (int *)shared_malloc(sizeof(int) * ITEMQUESIZE); opl_chip = (Chip *)shared_malloc(sizeof(Chip)); @@ -636,7 +639,7 @@ void init_doom(const std::string& wad_filename, uint8_t *wad_data, size_t wad_da memcpy(S_music, init_S_music, s_music_bytes); S_sfx = (sfxinfo_t *)shared_malloc(s_sfx_bytes); memcpy(S_sfx, init_S_sfx, s_sfx_bytes); - S_sfx[86].link = &S_sfx[sfx_pistol]; + S_sfx[sfx_chgun].link = &S_sfx[sfx_pistol]; cheat = (struct cheat_s *)shared_malloc(init_cheat_bytes); memcpy(cheat, init_cheat, init_cheat_bytes); @@ -678,12 +681,6 @@ void init_doom(const std::string& wad_filename, uint8_t *wad_data, size_t wad_da w_monsec = (hu_textline_t *)shared_malloc(sizeof(hu_textline_t)); w_rtext = (hu_mtext_t *)shared_malloc(sizeof(hu_mtext_t)); - // Initialize system interface - if (!I_StartDisplay()) { - ESP_LOGE(TAG, "Failed to initialize display"); - return; - } - SCREENWIDTH = MAX_SCREENWIDTH; SCREENHEIGHT = MAX_SCREENHEIGHT; @@ -792,6 +789,8 @@ std::vector get_doom_video_buffer() { } void deinit_doom() { + // stop the audio task + audio_task.reset(); // End display I_EndDisplay(); // Free memory From 13c833dffb093567410ff7b6433ab857b2c2f483 Mon Sep 17 00:00:00 2001 From: William Emfinger Date: Thu, 17 Apr 2025 13:13:39 -0500 Subject: [PATCH 16/39] reduce sd card overhead and allow palette access. --- components/box-emu/include/box-emu.hpp | 2 +- components/box-emu/src/box-emu.cpp | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/components/box-emu/include/box-emu.hpp b/components/box-emu/include/box-emu.hpp index d0ccc66..50c6e48 100644 --- a/components/box-emu/include/box-emu.hpp +++ b/components/box-emu/include/box-emu.hpp @@ -154,6 +154,7 @@ class BoxEmu : public espp::BaseComponent { void clear_screen(); void display_size(size_t width, size_t height); void native_size(size_t width, size_t height, int pitch = -1); + const uint16_t *palette() const; void palette(const uint16_t *palette, size_t size = 256); void push_frame(const void* frame); VideoSetting video_setting() const; @@ -185,7 +186,6 @@ class BoxEmu : public espp::BaseComponent { bool is_native() const; int x_offset() const; int y_offset() const; - const uint16_t *palette() const; bool video_task_callback(std::mutex &m, std::condition_variable &cv, bool &task_notified); class InputBase { diff --git a/components/box-emu/src/box-emu.cpp b/components/box-emu/src/box-emu.cpp index b91e487..89e1a50 100644 --- a/components/box-emu/src/box-emu.cpp +++ b/components/box-emu/src/box-emu.cpp @@ -114,7 +114,7 @@ bool BoxEmu::initialize_sdcard() { memset(&mount_config, 0, sizeof(mount_config)); mount_config.format_if_mount_failed = false; mount_config.max_files = 5; - mount_config.allocation_unit_size = 16 * 1024; + mount_config.allocation_unit_size = 2 * 1024; // Use settings defined above to initialize SD card and mount FAT filesystem. // Note: esp_vfs_fat_sdmmc/sdspi_mount is all-in-one convenience functions. @@ -136,7 +136,7 @@ bool BoxEmu::initialize_sdcard() { bus_cfg.sclk_io_num = sdcard_sclk; bus_cfg.quadwp_io_num = -1; bus_cfg.quadhd_io_num = -1; - bus_cfg.max_transfer_sz = 8192; + bus_cfg.max_transfer_sz = 4096; spi_host_device_t host_id = (spi_host_device_t)host.slot; ret = spi_bus_initialize(host_id, &bus_cfg, SDSPI_DEFAULT_DMA); if (ret != ESP_OK) { @@ -182,6 +182,8 @@ sdmmc_card_t *BoxEmu::sdcard() const { // Memory ///////////////////////////////////////////////////////////////////////////// +static constexpr size_t memory_size = 6*1024*1024; + extern "C" uint8_t *osd_getromdata() { auto &emu = BoxEmu::get(); return emu.romdata(); @@ -195,7 +197,7 @@ bool BoxEmu::initialize_memory() { logger_.info("Initializing memory (romdata)"); // allocate memory for the ROM and make sure it's on the SPIRAM - romdata_ = (uint8_t*)heap_caps_malloc(4*1024*1024, MALLOC_CAP_8BIT | MALLOC_CAP_SPIRAM); + romdata_ = (uint8_t*)heap_caps_malloc(memory_size, MALLOC_CAP_8BIT | MALLOC_CAP_SPIRAM); if (romdata_ == nullptr) { logger_.error("Couldn't allocate memory for ROM!"); return false; @@ -648,7 +650,7 @@ bool BoxEmu::initialize_usb() { .mount_config = { .format_if_mount_failed = false, .max_files = 5, - .allocation_unit_size = 16 * 1024, // sector size is 512 bytes, this should be between sector size and (128 * sector size). Larger means higher read/write performance and higher overhead for small files. + .allocation_unit_size = 2 * 1024, // sector size is 512 bytes, this should be between sector size and (128 * sector size). Larger means higher read/write performance and higher overhead for small files. .disk_status_check_enable = false, // true if you see issues or are unmounted properly; slows down I/O }, }; From 40e40c3e8f368a833fddd10ad7b2c28e3784d7a6 Mon Sep 17 00:00:00 2001 From: William Emfinger Date: Fri, 18 Apr 2025 15:16:22 -0500 Subject: [PATCH 17/39] abort if error --- components/doom/prboom/lprintf.c | 1 + 1 file changed, 1 insertion(+) diff --git a/components/doom/prboom/lprintf.c b/components/doom/prboom/lprintf.c index 61fab31..c83691a 100644 --- a/components/doom/prboom/lprintf.c +++ b/components/doom/prboom/lprintf.c @@ -77,4 +77,5 @@ void I_Error(const char *error, ...) char buffer[256]; vsnprintf(buffer, sizeof(buffer), error, arg); va_end(arg); + abort(); } From d9e0cd1747eef4cdaac6a284fa2a487631cbc608 Mon Sep 17 00:00:00 2001 From: William Emfinger Date: Sat, 19 Apr 2025 14:48:31 -0500 Subject: [PATCH 18/39] WIP shared memory actually working again --- components/doom/prboom/st_stuff.c | 9 +- components/doom/src/doom.cpp | 150 ++++++++++++++++++------------ 2 files changed, 93 insertions(+), 66 deletions(-) diff --git a/components/doom/prboom/st_stuff.c b/components/doom/prboom/st_stuff.c index 93c4a23..295b56d 100644 --- a/components/doom/prboom/st_stuff.c +++ b/components/doom/prboom/st_stuff.c @@ -889,10 +889,10 @@ static void ST_loadGraphics(boolean doload) // // yellow # // arms[i][1] = shortnum[i+2]; - R_SetPatchNum(&arms[ sizeof(patchnum_t) * i], namebuf); // gray # + R_SetPatchNum(&arms[i * 2], namebuf); // yellow # - arms[sizeof(patchnum_t) * i + 6 * sizeof(patchnum_t)] = shortnum[i+2]; + arms[i * 2 + 1] = shortnum[i+2]; } // face backgrounds for different color players @@ -993,8 +993,9 @@ static void ST_createWidgets(void) STlib_initMultIcon(&w_arms[i], ST_ARMSX+(i%3)*ST_ARMSXSPACE, ST_ARMSY+(i/3)*ST_ARMSYSPACE, - // arms[i], (int *) &plyr->weaponowned[i+1], - &arms[i * sizeof(patchnum_t)], (int *) &plyr->weaponowned[i+1], + // arms[i], + &arms[i * 2], + (int *) &plyr->weaponowned[i+1], &st_armson); } diff --git a/components/doom/src/doom.cpp b/components/doom/src/doom.cpp index 3c970fb..02abd03 100644 --- a/components/doom/src/doom.cpp +++ b/components/doom/src/doom.cpp @@ -370,8 +370,9 @@ void I_InitSound(void) { for (int i = 1; i < NUMSFX; i++) { - if (S_sfx[i].lumpnum != -1) + if (S_sfx[i].lumpnum != -1) { sfx[i] = (const doom_sfx_t*)W_CacheLumpNum(S_sfx[i].lumpnum); + } } music_player->init(snd_samplerate); @@ -495,10 +496,7 @@ void reset_doom() { init_doom(doom_wad_path, nullptr, 0); } -extern mapthing_t *itemrespawnque; -extern int *itemrespawntime; -extern Chip *opl_chip; - +// From dbopl #if ( DBOPL_WAVE == WAVE_HANDLER ) || ( DBOPL_WAVE == WAVE_TABLELOG ) extern Bit16u *ExpTable; #endif @@ -516,6 +514,45 @@ extern Bit8u *TremoloTable; // [ TREMOLO_TABLE ]; extern Bit16u *ChanOffsetTable; // [32]; extern Bit16u *OpOffsetTable; // [64]; +// from doomstat.h / g_game.c +extern player_t *players; // [MAXPLAYERS]; +extern byte *gamekeydown; // [NUMKEYS]; + +// from info.c +extern mobjinfo_t *mobjinfo; // [NUMMOBJTYPES]; +extern const mobjinfo_t init_mobjinfo[NUMMOBJTYPES]; + +// from m_cheat.c/h +extern struct cheat_s *cheat; +extern const struct cheat_s init_cheat[]; +extern size_t init_cheat_bytes; + +// from p_mobj.c +extern mapthing_t *itemrespawnque; +extern int *itemrespawntime; + +// from sounds.c/h +extern musicinfo_t *S_music; +extern const size_t s_music_bytes; +extern const musicinfo_t init_S_music[]; +extern sfxinfo_t *S_sfx; +extern const sfxinfo_t init_S_sfx[]; +extern const size_t s_sfx_bytes; + +// from st_stuff.c/h +extern patchnum_t *shortnum; // [10]; +extern patchnum_t *keys; // [NUMCARDS+3]; +extern patchnum_t *faces; // [ST_NUMFACES]; +extern patchnum_t *arms; // [6][2]; + +// from r_things.c/h +extern int *negonearray; // [MAX_SCREENWIDTH]; // killough 2/8/98: // dropoff overflow +extern int *screenheightarray; // [MAX_SCREENWIDTH]; // change to MAX_* // dropoff overflow +extern spriteframe_t *sprtemp; // [MAX_SPRITE_FRAMES]; [29] + +#if 0 +extern Chip *opl_chip; + extern visplane_t **visplanes; // [MAXVISPLANES]; // killough extern fixed_t *cachedheight; // [MAX_SCREENHEIGHT]; extern fixed_t *cacheddistance; // [MAX_SCREENHEIGHT]; @@ -527,28 +564,11 @@ extern int *ceilingclip; // [MAX_SCREENWIDTH]; extern fixed_t *yslope; // [MAX_SCREENHEIGHT]; extern fixed_t *distscale; // [MAX_SCREENWIDTH]; -extern mobjinfo_t *mobjinfo; // [NUMMOBJTYPES]; -extern const mobjinfo_t init_mobjinfo[]; - -extern player_t *players; // [MAXPLAYERS]; -extern byte *gamekeydown; // [NUMKEYS]; - extern patchnum_t *hu_font; // font[HU_FONTSIZE]; extern patchnum_t *hu_font2; // [HU_FONTSIZE]; extern patchnum_t *hu_fontk; // [HU_FONTSIZE];//jff 3/7/98 added for graphic key indicators extern patchnum_t *hu_msgbg; // [9]; //jff 2/26/98 add patches for message background -extern musicinfo_t *S_music; -extern const size_t s_music_bytes; -extern const musicinfo_t init_S_music[]; -extern sfxinfo_t *S_sfx; -extern const sfxinfo_t init_S_sfx[]; -extern const size_t s_sfx_bytes; - -extern struct cheat_s *cheat; -extern const struct cheat_s init_cheat[]; -extern size_t init_cheat_bytes; - extern char *hud_coordstrx; // [ 32]; extern char *hud_coordstry; // [ 32]; extern char *hud_coordstrz; // [ 32]; @@ -561,15 +581,6 @@ extern char *hud_gkeysstr; // [ 80]; //jff 3/7/98 add support for graphic key di extern char *hud_monsecstr; // [ 80]; extern char *chatchars; // [QUEUESIZE]; [128] -extern int *negonearray; // [MAX_SCREENWIDTH]; // killough 2/8/98: // dropoff overflow -extern int *screenheightarray; // [MAX_SCREENWIDTH]; // change to MAX_* // dropoff overflow -extern spriteframe_t *sprtemp; // [MAX_SPRITE_FRAMES]; [29] - -extern patchnum_t *shortnum; // [10]; -extern patchnum_t *keys; // [NUMCARDS+3]; -extern patchnum_t *faces; // [ST_NUMFACES]; -extern patchnum_t *arms; // [6][2]; - extern hu_textline_t *w_title; extern hu_stext_t *w_message; extern hu_itext_t *w_chat; @@ -586,13 +597,17 @@ extern hu_textline_t *w_gkeys; //jff 3/7/98 graphic keys widget for hud extern hu_textline_t *w_monsec; //jff 2/16/98 new kill/secret widget for hud extern hu_mtext_t *w_rtext; //jff 2/26/98 text message refresh widget +#endif + void init_doom(const std::string& wad_filename, uint8_t *wad_data, size_t wad_data_size) { doom_wad_path = wad_filename; - itemrespawnque = (mapthing_t *)shared_malloc(sizeof(mapthing_t) * ITEMQUESIZE); - itemrespawntime = (int *)shared_malloc(sizeof(int) * ITEMQUESIZE); - opl_chip = (Chip *)shared_malloc(sizeof(Chip)); + // needed for doom.cpp + channels = (channel_t *)shared_malloc(sizeof(channel_t) * NUM_MIX_CHANNELS); + sfx = (const doom_sfx_t **)shared_malloc(sizeof(doom_sfx_t*) * NUMSFX); + mixbuffer = (uint16_t *)shared_malloc(sizeof(uint16_t) * AUDIO_BUFFER_LENGTH); + // needed for dbopl #if ( DBOPL_WAVE == WAVE_HANDLER ) || ( DBOPL_WAVE == WAVE_TABLELOG ) ExpTable = (Bit16u *)shared_malloc(sizeof(Bit16u) * 256); #endif @@ -608,6 +623,43 @@ void init_doom(const std::string& wad_filename, uint8_t *wad_data, size_t wad_da ChanOffsetTable = (Bit16u *)shared_malloc(sizeof(Bit16u) * 32); OpOffsetTable = (Bit16u *)shared_malloc(sizeof(Bit16u) * 64); + // needed for doomstat / g_game + players = (player_t *)shared_malloc(sizeof(player_t) * MAXPLAYERS); + gamekeydown = (byte *)shared_malloc(sizeof(byte) * NUMKEYS); + + // needed for info + mobjinfo = (mobjinfo_t *)shared_malloc(sizeof(mobjinfo_t) * NUMMOBJTYPES); + memcpy(mobjinfo, init_mobjinfo, sizeof(mobjinfo_t) * NUMMOBJTYPES); + + // needed for m_cheat + cheat = (struct cheat_s *)shared_malloc(init_cheat_bytes); + memcpy(cheat, init_cheat, init_cheat_bytes); + + // needed for p_mobj.c + itemrespawnque = (mapthing_t *)shared_malloc(sizeof(mapthing_t) * ITEMQUESIZE); + itemrespawntime = (int *)shared_malloc(sizeof(int) * ITEMQUESIZE); + + // needed for sounds.c/h + S_music = (musicinfo_t *)shared_malloc(s_music_bytes); + memcpy(S_music, init_S_music, s_music_bytes); + S_sfx = (sfxinfo_t *)shared_malloc(s_sfx_bytes); + memcpy(S_sfx, init_S_sfx, s_sfx_bytes); + S_sfx[sfx_chgun].link = &S_sfx[sfx_pistol]; + + // needed for st_stuff.c/h + shortnum = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * 10); + keys = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * (NUMCARDS + 3)); + faces = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * ST_NUMFACES); + arms = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * 6 * 2); + + // needed for r_things.c/h + negonearray = (int *)shared_malloc(sizeof(int) * MAX_SCREENWIDTH); // killough 2/8/98: // dropoff overflow + screenheightarray = (int *)shared_malloc(sizeof(int) * MAX_SCREENWIDTH); // change to MAX_* // dropoff overflow + sprtemp = (spriteframe_t *)shared_malloc(sizeof(spriteframe_t) * 29); // [29] + +#if 0 + opl_chip = (Chip *)shared_malloc(sizeof(Chip)); + visplanes = (visplane_t **)shared_malloc(sizeof(visplane_t *) * MAXVISPLANES); cachedheight = (fixed_t *)shared_malloc(sizeof(fixed_t) * MAX_SCREENHEIGHT); cacheddistance = (fixed_t *)shared_malloc(sizeof(fixed_t) * MAX_SCREENHEIGHT); @@ -620,30 +672,11 @@ void init_doom(const std::string& wad_filename, uint8_t *wad_data, size_t wad_da yslope = (fixed_t *)shared_malloc(sizeof(fixed_t) * MAX_SCREENHEIGHT); distscale = (fixed_t *)shared_malloc(sizeof(fixed_t) * MAX_SCREENWIDTH); - channels = (channel_t *)shared_malloc(sizeof(channel_t) * NUM_MIX_CHANNELS); - sfx = (const doom_sfx_t **)shared_malloc(sizeof(doom_sfx_t*) * NUMSFX); - mixbuffer = (uint16_t *)shared_malloc(sizeof(uint16_t) * AUDIO_BUFFER_LENGTH); - - mobjinfo = (mobjinfo_t *)shared_malloc(sizeof(mobjinfo_t) * NUMMOBJTYPES); - memcpy(mobjinfo, init_mobjinfo, sizeof(mobjinfo_t) * NUMMOBJTYPES); - - players = (player_t *)shared_malloc(sizeof(player_t) * MAXPLAYERS); - gamekeydown = (byte *)shared_malloc(sizeof(byte) * NUMKEYS); - hu_font = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * HU_FONTSIZE); hu_font2 = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * HU_FONTSIZE); hu_fontk = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * HU_FONTSIZE); hu_msgbg = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * 9); - S_music = (musicinfo_t *)shared_malloc(s_music_bytes); - memcpy(S_music, init_S_music, s_music_bytes); - S_sfx = (sfxinfo_t *)shared_malloc(s_sfx_bytes); - memcpy(S_sfx, init_S_sfx, s_sfx_bytes); - S_sfx[sfx_chgun].link = &S_sfx[sfx_pistol]; - - cheat = (struct cheat_s *)shared_malloc(init_cheat_bytes); - memcpy(cheat, init_cheat, init_cheat_bytes); - hud_coordstrx = (char *)shared_malloc(32); hud_coordstry = (char *)shared_malloc(32); hud_coordstrz = (char *)shared_malloc(32); @@ -656,15 +689,6 @@ void init_doom(const std::string& wad_filename, uint8_t *wad_data, size_t wad_da hud_monsecstr = (char *)shared_malloc(80); chatchars = (char *)shared_malloc(128); // [128] - negonearray = (int *)shared_malloc(sizeof(int) * MAX_SCREENWIDTH); // killough 2/8/98: // dropoff overflow - screenheightarray = (int *)shared_malloc(sizeof(int) * MAX_SCREENWIDTH); // change to MAX_* // dropoff overflow - sprtemp = (spriteframe_t *)shared_malloc(sizeof(spriteframe_t) * 29); // [29] - - shortnum = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * 10); - keys = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * (NUMCARDS + 3)); - faces = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * ST_NUMFACES); - arms = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * 6 * 2); - w_title = (hu_textline_t *)shared_malloc(sizeof(hu_textline_t)); w_message = (hu_stext_t *)shared_malloc(sizeof(hu_stext_t)); w_chat = (hu_itext_t *)shared_malloc(sizeof(hu_itext_t)); @@ -681,6 +705,8 @@ void init_doom(const std::string& wad_filename, uint8_t *wad_data, size_t wad_da w_monsec = (hu_textline_t *)shared_malloc(sizeof(hu_textline_t)); w_rtext = (hu_mtext_t *)shared_malloc(sizeof(hu_mtext_t)); +#endif + SCREENWIDTH = MAX_SCREENWIDTH; SCREENHEIGHT = MAX_SCREENHEIGHT; From d80bc52c33307d3d5cfebf52f3b768be7ac56eac Mon Sep 17 00:00:00 2001 From: William Emfinger Date: Sat, 19 Apr 2025 14:51:38 -0500 Subject: [PATCH 19/39] fix sizeof issue --- components/doom/prboom/r_things.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/doom/prboom/r_things.c b/components/doom/prboom/r_things.c index 5330365..ab51453 100644 --- a/components/doom/prboom/r_things.c +++ b/components/doom/prboom/r_things.c @@ -187,7 +187,7 @@ static void R_InitSpriteDefs(const char * const * namelist) if (j >= 0) { - memset(sprtemp, -1, sizeof(sprtemp)); + memset(sprtemp, -1, sizeof(spriteframe_t) * MAX_SPRITE_FRAMES); maxframe = -1; do { From e673647e11e40695cab2818d604ae9fd6ff22e0a Mon Sep 17 00:00:00 2001 From: William Emfinger Date: Sat, 19 Apr 2025 15:00:11 -0500 Subject: [PATCH 20/39] more WIP and working shared memory --- components/doom/src/doom.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/components/doom/src/doom.cpp b/components/doom/src/doom.cpp index 02abd03..26a75cc 100644 --- a/components/doom/src/doom.cpp +++ b/components/doom/src/doom.cpp @@ -550,9 +550,10 @@ extern int *negonearray; // [MAX_SCREENWIDTH]; // killough 2/8/98: // dro extern int *screenheightarray; // [MAX_SCREENWIDTH]; // change to MAX_* // dropoff overflow extern spriteframe_t *sprtemp; // [MAX_SPRITE_FRAMES]; [29] -#if 0 +// from opl.c extern Chip *opl_chip; +// from r_plane.c/h extern visplane_t **visplanes; // [MAXVISPLANES]; // killough extern fixed_t *cachedheight; // [MAX_SCREENHEIGHT]; extern fixed_t *cacheddistance; // [MAX_SCREENHEIGHT]; @@ -564,11 +565,11 @@ extern int *ceilingclip; // [MAX_SCREENWIDTH]; extern fixed_t *yslope; // [MAX_SCREENHEIGHT]; extern fixed_t *distscale; // [MAX_SCREENWIDTH]; +// from hu_stuff.c/h extern patchnum_t *hu_font; // font[HU_FONTSIZE]; extern patchnum_t *hu_font2; // [HU_FONTSIZE]; extern patchnum_t *hu_fontk; // [HU_FONTSIZE];//jff 3/7/98 added for graphic key indicators extern patchnum_t *hu_msgbg; // [9]; //jff 2/26/98 add patches for message background - extern char *hud_coordstrx; // [ 32]; extern char *hud_coordstry; // [ 32]; extern char *hud_coordstrz; // [ 32]; @@ -580,7 +581,6 @@ extern char *hud_keysstr; // [ 80]; extern char *hud_gkeysstr; // [ 80]; //jff 3/7/98 add support for graphic key display extern char *hud_monsecstr; // [ 80]; extern char *chatchars; // [QUEUESIZE]; [128] - extern hu_textline_t *w_title; extern hu_stext_t *w_message; extern hu_itext_t *w_chat; @@ -597,6 +597,7 @@ extern hu_textline_t *w_gkeys; //jff 3/7/98 graphic keys widget for hud extern hu_textline_t *w_monsec; //jff 2/16/98 new kill/secret widget for hud extern hu_mtext_t *w_rtext; //jff 2/26/98 text message refresh widget +#if 0 #endif void init_doom(const std::string& wad_filename, uint8_t *wad_data, size_t wad_data_size) { @@ -657,26 +658,26 @@ void init_doom(const std::string& wad_filename, uint8_t *wad_data, size_t wad_da screenheightarray = (int *)shared_malloc(sizeof(int) * MAX_SCREENWIDTH); // change to MAX_* // dropoff overflow sprtemp = (spriteframe_t *)shared_malloc(sizeof(spriteframe_t) * 29); // [29] -#if 0 + // needed for opl.c opl_chip = (Chip *)shared_malloc(sizeof(Chip)); + // needed for r_plane.c/h visplanes = (visplane_t **)shared_malloc(sizeof(visplane_t *) * MAXVISPLANES); cachedheight = (fixed_t *)shared_malloc(sizeof(fixed_t) * MAX_SCREENHEIGHT); cacheddistance = (fixed_t *)shared_malloc(sizeof(fixed_t) * MAX_SCREENHEIGHT); cachedxstep = (fixed_t *)shared_malloc(sizeof(fixed_t) * MAX_SCREENHEIGHT); cachedystep = (fixed_t *)shared_malloc(sizeof(fixed_t) * MAX_SCREENHEIGHT); - spanstart = (int *)shared_malloc(sizeof(int) * MAX_SCREENHEIGHT); floorclip = (int *)shared_malloc(sizeof(int) * MAX_SCREENWIDTH); ceilingclip = (int *)shared_malloc(sizeof(int) * MAX_SCREENWIDTH); yslope = (fixed_t *)shared_malloc(sizeof(fixed_t) * MAX_SCREENHEIGHT); distscale = (fixed_t *)shared_malloc(sizeof(fixed_t) * MAX_SCREENWIDTH); + // needed for hu_stuff.c/h hu_font = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * HU_FONTSIZE); hu_font2 = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * HU_FONTSIZE); hu_fontk = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * HU_FONTSIZE); hu_msgbg = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * 9); - hud_coordstrx = (char *)shared_malloc(32); hud_coordstry = (char *)shared_malloc(32); hud_coordstrz = (char *)shared_malloc(32); @@ -688,7 +689,6 @@ void init_doom(const std::string& wad_filename, uint8_t *wad_data, size_t wad_da hud_gkeysstr = (char *)shared_malloc(80); //jff 3/7/98 add support for graphic key display hud_monsecstr = (char *)shared_malloc(80); chatchars = (char *)shared_malloc(128); // [128] - w_title = (hu_textline_t *)shared_malloc(sizeof(hu_textline_t)); w_message = (hu_stext_t *)shared_malloc(sizeof(hu_stext_t)); w_chat = (hu_itext_t *)shared_malloc(sizeof(hu_itext_t)); @@ -705,6 +705,7 @@ void init_doom(const std::string& wad_filename, uint8_t *wad_data, size_t wad_da w_monsec = (hu_textline_t *)shared_malloc(sizeof(hu_textline_t)); w_rtext = (hu_mtext_t *)shared_malloc(sizeof(hu_mtext_t)); +#if 0 #endif SCREENWIDTH = MAX_SCREENWIDTH; From 7f7d9d3022a771cef15d5750d36434bd4a06f11d Mon Sep 17 00:00:00 2001 From: William Emfinger Date: Sat, 19 Apr 2025 15:00:23 -0500 Subject: [PATCH 21/39] increase shared memory again --- components/shared_memory/src/shared_memory.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/shared_memory/src/shared_memory.c b/components/shared_memory/src/shared_memory.c index c879026..dec55f6 100644 --- a/components/shared_memory/src/shared_memory.c +++ b/components/shared_memory/src/shared_memory.c @@ -3,7 +3,7 @@ #include // Total shared memory size - can be tuned based on needs -#define TOTAL_MEMORY_SIZE (150 * 1024) // 256KB total shared memory +#define TOTAL_MEMORY_SIZE (100 * 1024) // 256KB total shared memory // Aligned memory pool static uint8_t memory_pool_[TOTAL_MEMORY_SIZE] __attribute__((aligned(32))); From 350da33513387ffac60ccd8d0ee406ed5a29e99f Mon Sep 17 00:00:00 2001 From: William Emfinger Date: Mon, 21 Apr 2025 06:18:45 -0500 Subject: [PATCH 22/39] enable doom --- CMakeLists.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ccbcfbc..68d0c55 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,9 +21,6 @@ set(GBC_COMPONENTS "gbc") ### SMS ### set(SMS_COMPONENTS "sms") -### SNES ### -# set(SNES_COMPONENTS "snes") - ### MSX ### set(MSX_COMPONENTS "msx") @@ -31,7 +28,10 @@ set(MSX_COMPONENTS "msx") set(GENESIS_COMPONENTS "genesis") ### DOOM ### -# set(DOOM_COMPONENTS "doom") +set(DOOM_COMPONENTS "doom") + +### SNES ### +# set(SNES_COMPONENTS "snes") add_compile_definitions(BOARD_HAS_PSRAM) From 9d5c714c8794f4189afc7d615a53c9cee26a6dcf Mon Sep 17 00:00:00 2001 From: William Emfinger Date: Mon, 21 Apr 2025 08:42:05 -0500 Subject: [PATCH 23/39] moving more and more into shared memory --- components/doom/prboom/f_wipe.c | 2 +- components/doom/prboom/g_game.c | 7 +- components/doom/prboom/g_game.h | 2 + components/doom/prboom/p_mobj.c | 3 +- components/doom/prboom/r_bsp.c | 2 +- components/doom/prboom/r_bsp.h | 2 +- components/doom/prboom/r_draw.c | 13 ++- components/doom/prboom/r_draw.h | 2 + components/doom/prboom/r_main.c | 2 +- components/doom/prboom/r_state.h | 2 +- components/doom/prboom/st_stuff.c | 2 +- components/doom/src/doom.cpp | 40 +++++++- components/msx/fmsx/msxfix.c | 20 ++-- components/msx/fmsx/src/fMSX/V9938.c | 18 ++-- components/msx/src/msx.cpp | 35 ++++--- components/nes/include/nes_external.h | 5 +- components/nes/nofrendo/nes/nes_pal.c | 2 +- components/nes/nofrendo/nes/nes_pal.h | 2 +- components/nes/nofrendo/sndhrdw/mmc5_snd.c | 112 +++++++-------------- components/nes/nofrendo/sndhrdw/mmc5_snd.h | 36 +++++++ components/nes/nofrendo/sndhrdw/nes_apu.c | 10 +- components/nes/src/nes_shared_memory.c | 45 +++++++-- 22 files changed, 215 insertions(+), 149 deletions(-) diff --git a/components/doom/prboom/f_wipe.c b/components/doom/prboom/f_wipe.c index fc3ac1d..4b303d8 100644 --- a/components/doom/prboom/f_wipe.c +++ b/components/doom/prboom/f_wipe.c @@ -59,7 +59,7 @@ static screeninfo_t wipe_scr_start; static screeninfo_t wipe_scr_end; static screeninfo_t wipe_scr; -static int y_lookup[MAX_SCREENWIDTH]; +int *y_lookup = NULL; // [MAX_SCREENWIDTH]; static int wipe_initMelt(int ticks) diff --git a/components/doom/prboom/g_game.c b/components/doom/prboom/g_game.c index 2af6fc8..8c4e212 100644 --- a/components/doom/prboom/g_game.c +++ b/components/doom/prboom/g_game.c @@ -2876,15 +2876,14 @@ boolean G_CheckDemoStatus (void) // killough 3/6/98: Made limit static to allow z_zone functions to call // this function, without calling realloc(), which seems to cause problems. -#define MAX_MESSAGE_SIZE 1024 +char *doom_player_msg = NULL; // [MAX_MESSAGE_SIZE]; // CPhipps - renamed to doom_printf to avoid name collision with glibc void doom_printf(const char *s, ...) { - static char msg[MAX_MESSAGE_SIZE]; va_list v; va_start(v,s); - vsnprintf(msg,sizeof(msg),s,v); /* print message in buffer */ + vsnprintf(doom_player_msg,MAX_MESSAGE_SIZE,s,v); /* print message in buffer */ va_end(v); - players[consoleplayer].message = msg; // set new message + players[consoleplayer].message = doom_player_msg; // set new message } diff --git a/components/doom/prboom/g_game.h b/components/doom/prboom/g_game.h index 7e6630e..3410d8f 100644 --- a/components/doom/prboom/g_game.h +++ b/components/doom/prboom/g_game.h @@ -45,6 +45,8 @@ #define NUMKEYS 512 +#define MAX_MESSAGE_SIZE 1024 + boolean G_Responder(event_t *ev); boolean G_CheckDemoStatus(void); void G_DeathMatchSpawnPlayer(int playernum); diff --git a/components/doom/prboom/p_mobj.c b/components/doom/prboom/p_mobj.c index 176bb37..8d4f686 100644 --- a/components/doom/prboom/p_mobj.c +++ b/components/doom/prboom/p_mobj.c @@ -53,13 +53,14 @@ // Returns true if the mobj is still present. // +statenum_t *seenstate_tab; // [NUMSTATES]; // fast transition table + boolean P_SetMobjState(mobj_t* mobj,statenum_t state) { state_t* st; // killough 4/9/98: remember states seen, to detect cycles: - static statenum_t seenstate_tab[NUMSTATES]; // fast transition table statenum_t *seenstate = seenstate_tab; // pointer to table static int recursion; // detects recursion statenum_t i = state; // initial state diff --git a/components/doom/prboom/r_bsp.c b/components/doom/prboom/r_bsp.c index 1661666..898e384 100644 --- a/components/doom/prboom/r_bsp.c +++ b/components/doom/prboom/r_bsp.c @@ -69,7 +69,7 @@ void R_ClearDrawSegs(void) // Instead of clipsegs, let's try using an array with one entry for each column, // indicating whether it's blocked by a solid wall yet or not. -byte solidcol[MAX_SCREENWIDTH]; +byte *solidcol = NULL; // [MAX_SCREENWIDTH]; // CPhipps - // R_ClipWallSegment diff --git a/components/doom/prboom/r_bsp.h b/components/doom/prboom/r_bsp.h index 4ba9190..4cdbb12 100644 --- a/components/doom/prboom/r_bsp.h +++ b/components/doom/prboom/r_bsp.h @@ -50,7 +50,7 @@ extern sector_t *backsector; extern drawseg_t *drawsegs; extern unsigned maxdrawsegs; -extern byte solidcol[MAX_SCREENWIDTH]; +extern byte *solidcol; // [MAX_SCREENWIDTH]; extern drawseg_t *ds_p; diff --git a/components/doom/prboom/r_draw.c b/components/doom/prboom/r_draw.c index 06b230d..8bb076c 100644 --- a/components/doom/prboom/r_draw.c +++ b/components/doom/prboom/r_draw.c @@ -90,10 +90,10 @@ typedef enum static int temp_x = 0; static int tempyl[4], tempyh[4]; -static byte byte_tempbuf[MAX_SCREENHEIGHT * 4]; +byte *byte_tempbuf = NULL; // [MAX_SCREENHEIGHT * 4]; #ifndef NOTRUECOLOR -static unsigned short short_tempbuf[MAX_SCREENHEIGHT * 4]; -static unsigned int int_tempbuf[MAX_SCREENHEIGHT * 4]; +unsigned short *short_tempbuf = NULL; // [MAX_SCREENHEIGHT * 4]; +unsigned int *int_tempbuf = NULL; // [MAX_SCREENHEIGHT * 4]; #endif static int startx = 0; static int temptype = COL_NONE; @@ -106,7 +106,6 @@ static const byte *tempfuzzmap; // Spectre/Invisibility. // -#define FUZZTABLE 50 // proff 08/17/98: Changed for high-res //#define FUZZOFF (SCREENWIDTH) #define FUZZOFF 1 @@ -121,7 +120,7 @@ static const int fuzzoffset_org[FUZZTABLE] = { FUZZOFF,FUZZOFF,-FUZZOFF,FUZZOFF,FUZZOFF,-FUZZOFF,FUZZOFF }; -static int fuzzoffset[FUZZTABLE]; +int *fuzzoffset = NULL; // [FUZZTABLE]; static int fuzzpos = 0; @@ -487,7 +486,7 @@ byte translationtables[3 * 256]; #undef R_DRAWCOLUMN_PIPELINE_BASE #undef R_DRAWCOLUMN_PIPELINE_TYPE -static R_DrawColumn_f drawcolumnfuncs[VID_MODEMAX][RDRAW_FILTER_MAXFILTERS][RDRAW_FILTER_MAXFILTERS][RDC_PIPELINE_MAXPIPELINES] = { +static const R_DrawColumn_f drawcolumnfuncs[VID_MODEMAX][RDRAW_FILTER_MAXFILTERS][RDRAW_FILTER_MAXFILTERS][RDC_PIPELINE_MAXPIPELINES] = { { { {NULL, NULL, NULL, NULL,}, @@ -877,7 +876,7 @@ void R_InitTranslationTables (void) #include "r_drawspan.inl" #endif -static R_DrawSpan_f drawspanfuncs[VID_MODEMAX][RDRAW_FILTER_MAXFILTERS][RDRAW_FILTER_MAXFILTERS] = { +static const R_DrawSpan_f drawspanfuncs[VID_MODEMAX][RDRAW_FILTER_MAXFILTERS][RDRAW_FILTER_MAXFILTERS] = { { { NULL, diff --git a/components/doom/prboom/r_draw.h b/components/doom/prboom/r_draw.h index 67c28f8..c1f131c 100644 --- a/components/doom/prboom/r_draw.h +++ b/components/doom/prboom/r_draw.h @@ -40,6 +40,8 @@ #pragma interface #endif +#define FUZZTABLE 50 + enum column_pipeline_e { RDC_PIPELINE_STANDARD, RDC_PIPELINE_TRANSLUCENT, diff --git a/components/doom/prboom/r_main.c b/components/doom/prboom/r_main.c index b274c47..e1ead40 100644 --- a/components/doom/prboom/r_main.c +++ b/components/doom/prboom/r_main.c @@ -97,7 +97,7 @@ int *viewangletox; // to the lowest viewangle that maps back to x ranges // from clipangle to -clipangle. -angle_t xtoviewangle[MAX_SCREENWIDTH+1]; // killough 2/8/98 +angle_t *xtoviewangle = NULL; // [MAX_SCREENWIDTH+1]; // killough 2/8/98 // killough 3/20/98: Support dynamic colormaps, e.g. deep water // killough 4/4/98: support dynamic number of them as well diff --git a/components/doom/prboom/r_state.h b/components/doom/prboom/r_state.h index c4ad147..55f9207 100644 --- a/components/doom/prboom/r_state.h +++ b/components/doom/prboom/r_state.h @@ -103,7 +103,7 @@ extern angle_t viewangle; extern player_t *viewplayer; extern angle_t clipangle; extern int *viewangletox; -extern angle_t xtoviewangle[MAX_SCREENWIDTH+1]; // killough 2/8/98 +extern angle_t *xtoviewangle; // [MAX_SCREENWIDTH+1]; // killough 2/8/98 extern fixed_t rw_distance; extern angle_t rw_normalangle; diff --git a/components/doom/prboom/st_stuff.c b/components/doom/prboom/st_stuff.c index 295b56d..1b18049 100644 --- a/components/doom/prboom/st_stuff.c +++ b/components/doom/prboom/st_stuff.c @@ -273,7 +273,7 @@ static boolean st_armson; static boolean st_fragson; // 0-9, tall numbers -static patchnum_t tallnum[10]; +patchnum_t *tallnum = NULL; // [10]; // tall % sign static patchnum_t tallpercent; diff --git a/components/doom/src/doom.cpp b/components/doom/src/doom.cpp index 26a75cc..228961f 100644 --- a/components/doom/src/doom.cpp +++ b/components/doom/src/doom.cpp @@ -4,8 +4,6 @@ #include "esp_log.h" #include "shared_memory.h" -static const char* TAG = "DOOM"; - static uint16_t* displayBuffer[2]; static uint8_t currentBuffer = 0; static uint16_t* framebuffer = nullptr; @@ -517,6 +515,7 @@ extern Bit16u *OpOffsetTable; // [64]; // from doomstat.h / g_game.c extern player_t *players; // [MAXPLAYERS]; extern byte *gamekeydown; // [NUMKEYS]; +extern char *doom_player_msg; // [MAX_MESSAGE_SIZE] // from info.c extern mobjinfo_t *mobjinfo; // [NUMMOBJTYPES]; @@ -530,6 +529,7 @@ extern size_t init_cheat_bytes; // from p_mobj.c extern mapthing_t *itemrespawnque; extern int *itemrespawntime; +extern statenum_t *seenstate_tab; // [NUMSTATES] // from sounds.c/h extern musicinfo_t *S_music; @@ -540,6 +540,7 @@ extern const sfxinfo_t init_S_sfx[]; extern const size_t s_sfx_bytes; // from st_stuff.c/h +extern patchnum_t *tallnum; // [10]; extern patchnum_t *shortnum; // [10]; extern patchnum_t *keys; // [NUMCARDS+3]; extern patchnum_t *faces; // [ST_NUMFACES]; @@ -597,8 +598,22 @@ extern hu_textline_t *w_gkeys; //jff 3/7/98 graphic keys widget for hud extern hu_textline_t *w_monsec; //jff 2/16/98 new kill/secret widget for hud extern hu_mtext_t *w_rtext; //jff 2/26/98 text message refresh widget -#if 0 +// from r_draw.c/h +extern byte *byte_tempbuf; // [MAX_SCREENHEIGHT * 4]; +#ifndef NOTRUECOLOR +extern unsigned short *short_tempbuf; // [MAX_SCREENHEIGHT * 4]; +extern unsigned int *int_tempbuf; // ol[MAX_SCREENHEIGHT * 4]; #endif +extern int *fuzzoffset; // [FUZZTABLE]; + +// from f_wipe.c +extern int *y_lookup; // [MAXSCREENWIDTH] + +// from r_main.c/r_state.h +extern angle_t *xtoviewangle; // [MAX_SCREENWIDTH+1]; // killough 2/8/98 + +// from r_bsp.c +extern byte *solidcol; // [MAX_SCREENWIDTH]; void init_doom(const std::string& wad_filename, uint8_t *wad_data, size_t wad_data_size) { doom_wad_path = wad_filename; @@ -627,6 +642,7 @@ void init_doom(const std::string& wad_filename, uint8_t *wad_data, size_t wad_da // needed for doomstat / g_game players = (player_t *)shared_malloc(sizeof(player_t) * MAXPLAYERS); gamekeydown = (byte *)shared_malloc(sizeof(byte) * NUMKEYS); + doom_player_msg = (char*)shared_malloc(MAX_MESSAGE_SIZE); // needed for info mobjinfo = (mobjinfo_t *)shared_malloc(sizeof(mobjinfo_t) * NUMMOBJTYPES); @@ -639,6 +655,7 @@ void init_doom(const std::string& wad_filename, uint8_t *wad_data, size_t wad_da // needed for p_mobj.c itemrespawnque = (mapthing_t *)shared_malloc(sizeof(mapthing_t) * ITEMQUESIZE); itemrespawntime = (int *)shared_malloc(sizeof(int) * ITEMQUESIZE); + seenstate_tab = (statenum_t *)shared_malloc(sizeof(statenum_t)*NUMSTATES); // needed for sounds.c/h S_music = (musicinfo_t *)shared_malloc(s_music_bytes); @@ -648,6 +665,7 @@ void init_doom(const std::string& wad_filename, uint8_t *wad_data, size_t wad_da S_sfx[sfx_chgun].link = &S_sfx[sfx_pistol]; // needed for st_stuff.c/h + tallnum = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * 10); shortnum = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * 10); keys = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * (NUMCARDS + 3)); faces = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * ST_NUMFACES); @@ -705,8 +723,22 @@ void init_doom(const std::string& wad_filename, uint8_t *wad_data, size_t wad_da w_monsec = (hu_textline_t *)shared_malloc(sizeof(hu_textline_t)); w_rtext = (hu_mtext_t *)shared_malloc(sizeof(hu_mtext_t)); -#if 0 + // needed for r_draw.c/h + byte_tempbuf = (byte*)shared_malloc(MAX_SCREENHEIGHT * 4); +#ifndef NOTRUECOLOR + short_tempbuf = (short*)shared_malloc(MAX_SCREENHEIGHT * 4 * sizeof(short)); + int_tempbuf = (int*)shared_malloc(MAX_SCREENHEIGHT * 4 * sizeof(int)); #endif + fuzzoffset = (int *)shared_malloc(sizeof(int) * FUZZTABLE); // [FUZZTABLE]; + + // needed for f_wipe.c + y_lookup = (int*)shared_malloc(MAX_SCREENWIDTH * sizeof(int)); + + // needed for r_main.c/r_state.h + xtoviewangle = (angle_t*)shared_malloc((MAX_SCREENWIDTH+1) * sizeof(angle_t)); + + // needed for r_bsp.c + solidcol = (byte *)shared_malloc(MAX_SCREENWIDTH); SCREENWIDTH = MAX_SCREENWIDTH; SCREENHEIGHT = MAX_SCREENHEIGHT; diff --git a/components/msx/fmsx/msxfix.c b/components/msx/fmsx/msxfix.c index ec8fa81..7906cd4 100644 --- a/components/msx/fmsx/msxfix.c +++ b/components/msx/fmsx/msxfix.c @@ -21,8 +21,8 @@ char **ARGV; #include "carts_sha.h" -static char path_buffer[100]; -static char path_cwd[100] = "/sdcard/"; +char *msx_path_buffer = NULL; // [100]; +char *msx_path_cwd = NULL; // [100] = "/sdcard/"; static struct dirent dirent_cache; const char *msx_ignore_files = ""; // "DEFAULT.FNT DEFAULT.CAS DRIVEA.DSK DRIVEB.DSK CARTA.ROM CARTB.ROM"; @@ -30,26 +30,26 @@ const char *msx_ignore_files = ""; // "DEFAULT.FNT DEFAULT.CAS DRIVEA.DSK DRIVEB static const char *get_path(const char *path) { if (strcmp(path, ".") == 0) - strcpy(path_buffer, path_cwd); + strcpy(msx_path_buffer, msx_path_cwd); else if (path[0] == '/') - strcpy(path_buffer, path); + strcpy(msx_path_buffer, path); else - sprintf(path_buffer, "%s/%s", path_cwd, path); - return path_buffer; + sprintf(msx_path_buffer, "%s/%s", msx_path_cwd, path); + return msx_path_buffer; } int msx_chdir(const char *path) { - strcpy(path_cwd, get_path(path)); + strcpy(msx_path_cwd, get_path(path)); return 0; } char *msx_getcwd(char *buf, size_t size) { if (!buf) - return strdup(path_cwd); - if (strlen(path_cwd) < size) - return strcpy(buf, path_cwd); + return strdup(msx_path_cwd); + if (strlen(msx_path_cwd) < size) + return strcpy(buf, msx_path_cwd); return NULL; } diff --git a/components/msx/fmsx/src/fMSX/V9938.c b/components/msx/fmsx/src/fMSX/V9938.c index 87d851c..87f7ee4 100644 --- a/components/msx/fmsx/src/fMSX/V9938.c +++ b/components/msx/fmsx/src/fMSX/V9938.c @@ -143,7 +143,7 @@ static void VDPpset(register byte SM, register int DX, register int DY, register byte CL, register byte OP); -static int GetVdpTimingValue(register int *); +static int GetVdpTimingValue(const int *); static void SrchEngine(void); static void LineEngine(void); @@ -169,19 +169,19 @@ static void (*VdpEngine)(void)=0; /* SprOn SprOn SprOf SprOf */ /* ScrOf ScrOn ScrOf ScrOn */ -static int srch_timing[8]={ 818, 1025, 818, 830, /* ntsc */ +static const int srch_timing[8]={ 818, 1025, 818, 830, /* ntsc */ 696, 854, 696, 684 }; /* pal */ -static int line_timing[8]={ 1063, 1259, 1063, 1161, +static const int line_timing[8]={ 1063, 1259, 1063, 1161, 904, 1026, 904, 953 }; -static int hmmv_timing[8]={ 439, 549, 439, 531, +static const int hmmv_timing[8]={ 439, 549, 439, 531, 366, 439, 366, 427 }; -static int lmmv_timing[8]={ 873, 1135, 873, 1056, +static const int lmmv_timing[8]={ 873, 1135, 873, 1056, 732, 909, 732, 854 }; -static int ymmm_timing[8]={ 586, 952, 586, 610, +static const int ymmm_timing[8]={ 586, 952, 586, 610, 488, 720, 488, 500 }; -static int hmmm_timing[8]={ 818, 1111, 818, 854, +static const int hmmm_timing[8]={ 818, 1111, 818, 854, 684, 879, 684, 708 }; -static int lmmm_timing[8]={ 1160, 1599, 1160, 1172, +static const int lmmm_timing[8]={ 1160, 1599, 1160, 1172, 964, 1257, 964, 977 }; @@ -334,7 +334,7 @@ INLINE void VDPpset(byte SM, int DX, int DY, byte CL, byte OP) /** GetVdpTimingValue() **************************************/ /** Get timing value for a certain VDP command **/ /*************************************************************/ -static int GetVdpTimingValue(register int *timing_values) +static int GetVdpTimingValue(const int *timing_values) { return(timing_values[((VDP[1]>>6)&1)|(VDP[8]&2)|((VDP[9]<<1)&4)]); } diff --git a/components/msx/src/msx.cpp b/components/msx/src/msx.cpp index 3c4ae36..d2a92ab 100644 --- a/components/msx/src/msx.cpp +++ b/components/msx/src/msx.cpp @@ -45,8 +45,8 @@ static char *PendingLoadSTA = NULL; void PutImage(void); -uint16_t BPal[256]; -uint16_t XPal[80]; +uint16_t *BPal; // [256]; +uint16_t *XPal; // [80]; uint16_t XPal0; uint16_t *XBuf; @@ -65,7 +65,7 @@ uint16_t *XBuf; #include "Hunt.h" }; -static Image NormScreen; +static Image *NormScreen; const char *Title = "fMSX 6.0"; const char *Disks[2][MAXDISKS + 1]; @@ -235,7 +235,7 @@ int ProcessEvents(int Wait) int InitMachine(void) { - NormScreen = (Image){ + *NormScreen = (Image){ .Data = framebuffer, .W = WIDTH, .H = HEIGHT, @@ -243,9 +243,9 @@ int InitMachine(void) .D = 16, }; - XBuf = NormScreen.Data; - SetScreenDepth(NormScreen.D); - SetVideo(&NormScreen, 0, 0, WIDTH, HEIGHT); + XBuf = NormScreen->Data; + SetScreenDepth(NormScreen->D); + SetVideo(NormScreen, 0, 0, WIDTH, HEIGHT); for (int J = 0; J < 80; J++) SetColor(J, 0, 0, 0); @@ -290,8 +290,8 @@ static inline void SubmitFrame(void) // swap buffers currentBuffer = currentBuffer ? 0 : 1; framebuffer = displayBuffer[currentBuffer]; - NormScreen.Data = framebuffer; - XBuf = NormScreen.Data; + NormScreen->Data = framebuffer; + XBuf = NormScreen->Data; frame_complete = true; } @@ -299,11 +299,11 @@ static inline void SubmitFrame(void) void PutImage(void) { if (InKeyboard) - DrawKeyboard(&NormScreen, KBDKeys[KeyboardRow][KeyboardCol]); + DrawKeyboard(NormScreen, KBDKeys[KeyboardRow][KeyboardCol]); SubmitFrame(); - XBuf = NormScreen.Data; + XBuf = NormScreen->Data; } unsigned int Joystick(void) @@ -431,8 +431,17 @@ extern CheatCode *CheatCodes; // MAXCHEATS extern HUNTEntry *Buf; extern RPLState *RPLData; // [RPL_BUFSIZE] = {{0}}; +extern char *msx_path_buffer; // [100]; +extern char *msx_path_cwd; // [100] = "/sdcard/"; + void init_msx(const std::string& rom_filename, uint8_t *romdata, size_t rom_data_size) { // init shared memory + msx_path_buffer = (char*)shared_malloc(100); + msx_path_cwd = (char*)shared_malloc(100); + snprintf(msx_path_cwd, strlen("/sdcard/") + 1, "%s", "/sdcard/"); + BPal = (uint16_t*)shared_malloc(256 * sizeof(uint16_t)); + XPal = (uint16_t*)shared_malloc(80 * sizeof(uint16_t)); + NormScreen = (Image*)shared_malloc(sizeof(Image)); CPU = (Z80*)shared_malloc(sizeof(Z80)); Chunks = (void**)shared_malloc(sizeof(void*) * MAXCHUNKS); PPI = (I8255*)shared_malloc(sizeof(I8255)); @@ -493,8 +502,6 @@ void init_msx(const std::string& rom_filename, uint8_t *romdata, size_t rom_data } -static bool load_save = false; -static std::string save_path_to_load; void IRAM_ATTR run_msx_rom() { auto start = esp_timer_get_time(); @@ -518,8 +525,6 @@ void IRAM_ATTR run_msx_rom() { } void load_msx(std::string_view save_path) { - save_path_to_load = save_path; - load_save = true; if (PendingLoadSTA) free(PendingLoadSTA); PendingLoadSTA = strdup(save_path.data()); diff --git a/components/nes/include/nes_external.h b/components/nes/include/nes_external.h index b77675a..896ee04 100644 --- a/components/nes/include/nes_external.h +++ b/components/nes/include/nes_external.h @@ -6,6 +6,9 @@ extern "C" { #endif #include +#include +#include +#include // External declaration of the NES context that will be defined in shared memory extern nes_t nes; @@ -14,4 +17,4 @@ extern nes_t nes; } #endif -#endif /* _NES_EXTERNAL_H_ */ \ No newline at end of file +#endif /* _NES_EXTERNAL_H_ */ diff --git a/components/nes/nofrendo/nes/nes_pal.c b/components/nes/nofrendo/nes/nes_pal.c index eb087cf..5ee9fb8 100644 --- a/components/nes/nofrendo/nes/nes_pal.c +++ b/components/nes/nofrendo/nes/nes_pal.c @@ -61,7 +61,7 @@ const rgb_t shady_palette[] = */ /* our global palette */ -rgb_t nes_palette[64]; +rgb_t *nes_palette = NULL; // [64]; static float hue = 334.0f; diff --git a/components/nes/nofrendo/nes/nes_pal.h b/components/nes/nofrendo/nes/nes_pal.h index eb4828e..2af2334 100644 --- a/components/nes/nofrendo/nes/nes_pal.h +++ b/components/nes/nofrendo/nes/nes_pal.h @@ -26,7 +26,7 @@ #ifndef _NESPAL_H_ #define _NESPAL_H_ -extern rgb_t nes_palette[]; +extern rgb_t *nes_palette; extern const rgb_t shady_palette[]; extern void pal_generate(void); diff --git a/components/nes/nofrendo/sndhrdw/mmc5_snd.c b/components/nes/nofrendo/sndhrdw/mmc5_snd.c index 60e8c9b..8b4b46e 100644 --- a/components/nes/nofrendo/sndhrdw/mmc5_snd.c +++ b/components/nes/nofrendo/sndhrdw/mmc5_snd.c @@ -34,8 +34,8 @@ #define APU_VOLUME_DECAY(x) ((x) -= ((x) >> 7)) /* look up table madness */ -static int32 decay_lut[16]; -static int vbl_lut[32]; +int32 *mmc5_decay_lut = NULL; // [16]; +int *mmc5_vbl_lut = NULL; // [32]; /* various sound constants for sound emulation */ /* vblank length table used for rectangles, triangle, noise */ @@ -65,43 +65,7 @@ static const int duty_lut[4] = #define MMC5_WRB3 0x5007 #define MMC5_SMASK 0x5015 -typedef struct mmc5rectangle_s -{ - uint8 regs[4]; - - bool enabled; - - float accum; - int32 freq; - int32 output_vol; - bool fixed_envelope; - bool holdnote; - uint8 volume; - - int32 env_phase; - int32 env_delay; - uint8 env_vol; - - int vbl_length; - uint8 adder; - int duty_flip; -} mmc5rectangle_t; - -typedef struct mmc5dac_s -{ - int32 output; - bool enabled; -} mmc5dac_t; - - -static struct -{ - float incsize; - uint8 mul[2]; - mmc5rectangle_t rect[2]; - mmc5dac_t dac; -} mmc5; - +mmc5_t *mmc5 = NULL; #define MMC5_RECTANGLE_OUTPUT chan->output_vol static int32 mmc5_rectangle(mmc5rectangle_t *chan) @@ -143,7 +107,7 @@ static int32 mmc5_rectangle(mmc5rectangle_t *chan) if (chan->freq < 4) return MMC5_RECTANGLE_OUTPUT; - chan->accum -= mmc5.incsize; /* # of cycles per sample */ + chan->accum -= mmc5->incsize; /* # of cycles per sample */ if (chan->accum >= 0) return MMC5_RECTANGLE_OUTPUT; @@ -192,7 +156,7 @@ static uint8 mmc5_read(uint32 address) { uint32 retval; - retval = (uint32) (mmc5.mul[0] * mmc5.mul[1]); + retval = (uint32) (mmc5->mul[0] * mmc5->mul[1]); switch (address) { @@ -212,10 +176,10 @@ static int32 mmc5_process(void) { int32 accum; - accum = mmc5_rectangle(&mmc5.rect[0]); - accum += mmc5_rectangle(&mmc5.rect[1]); - if (mmc5.dac.enabled) - accum += mmc5.dac.output; + accum = mmc5_rectangle(&mmc5->rect[0]); + accum += mmc5_rectangle(&mmc5->rect[1]); + if (mmc5->dac.enabled) + accum += mmc5->dac.output; return accum; } @@ -231,13 +195,13 @@ static void mmc5_write(uint32 address, uint8 value) case MMC5_WRA0: case MMC5_WRB0: chan = (address & 4) ? 1 : 0; - mmc5.rect[chan].regs[0] = value; + mmc5->rect[chan].regs[0] = value; - mmc5.rect[chan].volume = value & 0x0F; - mmc5.rect[chan].env_delay = decay_lut[value & 0x0F]; - mmc5.rect[chan].holdnote = (value & 0x20) ? true : false; - mmc5.rect[chan].fixed_envelope = (value & 0x10) ? true : false; - mmc5.rect[chan].duty_flip = duty_lut[value >> 6]; + mmc5->rect[chan].volume = value & 0x0F; + mmc5->rect[chan].env_delay = mmc5_decay_lut[value & 0x0F]; + mmc5->rect[chan].holdnote = (value & 0x20) ? true : false; + mmc5->rect[chan].fixed_envelope = (value & 0x10) ? true : false; + mmc5->rect[chan].duty_flip = duty_lut[value >> 6]; break; case MMC5_WRA1: @@ -247,65 +211,65 @@ static void mmc5_write(uint32 address, uint8 value) case MMC5_WRA2: case MMC5_WRB2: chan = (address & 4) ? 1 : 0; - mmc5.rect[chan].regs[2] = value; - if (mmc5.rect[chan].enabled) - mmc5.rect[chan].freq = (((mmc5.rect[chan].regs[3] & 7) << 8) + value) + 1; + mmc5->rect[chan].regs[2] = value; + if (mmc5->rect[chan].enabled) + mmc5->rect[chan].freq = (((mmc5->rect[chan].regs[3] & 7) << 8) + value) + 1; break; case MMC5_WRA3: case MMC5_WRB3: chan = (address & 4) ? 1 : 0; - mmc5.rect[chan].regs[3] = value; + mmc5->rect[chan].regs[3] = value; - if (mmc5.rect[chan].enabled) + if (mmc5->rect[chan].enabled) { - mmc5.rect[chan].vbl_length = vbl_lut[value >> 3]; - mmc5.rect[chan].env_vol = 0; - mmc5.rect[chan].freq = (((value & 7) << 8) + mmc5.rect[chan].regs[2]) + 1; - mmc5.rect[chan].adder = 0; + mmc5->rect[chan].vbl_length = mmc5_vbl_lut[value >> 3]; + mmc5->rect[chan].env_vol = 0; + mmc5->rect[chan].freq = (((value & 7) << 8) + mmc5->rect[chan].regs[2]) + 1; + mmc5->rect[chan].adder = 0; } break; case MMC5_SMASK: if (value & 0x01) { - mmc5.rect[0].enabled = true; + mmc5->rect[0].enabled = true; } else { - mmc5.rect[0].enabled = false; - mmc5.rect[0].vbl_length = 0; + mmc5->rect[0].enabled = false; + mmc5->rect[0].vbl_length = 0; } if (value & 0x02) { - mmc5.rect[1].enabled = true; + mmc5->rect[1].enabled = true; } else { - mmc5.rect[1].enabled = false; - mmc5.rect[1].vbl_length = 0; + mmc5->rect[1].enabled = false; + mmc5->rect[1].vbl_length = 0; } break; case 0x5010: if (value & 0x01) - mmc5.dac.enabled = true; + mmc5->dac.enabled = true; else - mmc5.dac.enabled = false; + mmc5->dac.enabled = false; break; case 0x5011: - mmc5.dac.output = (value ^ 0x80) << 8; + mmc5->dac.output = (value ^ 0x80) << 8; break; case 0x5205: - mmc5.mul[0] = value; + mmc5->mul[0] = value; break; case 0x5206: - mmc5.mul[1] = value; + mmc5->mul[1] = value; break; case 0x5114: @@ -327,7 +291,7 @@ static void mmc5_reset(void) /* get the phase period from the apu */ apu_getcontext(&apu); - mmc5.incsize = apu.cycle_rate; + mmc5->incsize = apu.cycle_rate; for (i = 0x5000; i < 0x5008; i++) mmc5_write(i, 0); @@ -346,11 +310,11 @@ static int mmc5_init(void) /* lut used for enveloping and frequency sweeps */ for (i = 0; i < 16; i++) - decay_lut[i] = num_samples * (i + 1); + mmc5_decay_lut[i] = num_samples * (i + 1); /* used for note length, based on vblanks and size of audio buffer */ for (i = 0; i < 32; i++) - vbl_lut[i] = vbl_length[i] * num_samples; + mmc5_vbl_lut[i] = vbl_length[i] * num_samples; return 0; } diff --git a/components/nes/nofrendo/sndhrdw/mmc5_snd.h b/components/nes/nofrendo/sndhrdw/mmc5_snd.h index 996496f..0a6d50d 100644 --- a/components/nes/nofrendo/sndhrdw/mmc5_snd.h +++ b/components/nes/nofrendo/sndhrdw/mmc5_snd.h @@ -30,6 +30,42 @@ extern apuext_t mmc5_ext; +typedef struct mmc5rectangle_s +{ + uint8 regs[4]; + + bool enabled; + + float accum; + int32 freq; + int32 output_vol; + bool fixed_envelope; + bool holdnote; + uint8 volume; + + int32 env_phase; + int32 env_delay; + uint8 env_vol; + + int vbl_length; + uint8 adder; + int duty_flip; +} mmc5rectangle_t; + +typedef struct mmc5dac_s +{ + int32 output; + bool enabled; +} mmc5dac_t; + +typedef struct mmc5_s +{ + float incsize; + uint8 mul[2]; + mmc5rectangle_t rect[2]; + mmc5dac_t dac; +} mmc5_t; + #endif /* !_MMC5_SND_H_ */ /* diff --git a/components/nes/nofrendo/sndhrdw/nes_apu.c b/components/nes/nofrendo/sndhrdw/nes_apu.c index 0e137c4..a02dc28 100644 --- a/components/nes/nofrendo/sndhrdw/nes_apu.c +++ b/components/nes/nofrendo/sndhrdw/nes_apu.c @@ -45,14 +45,14 @@ static apu_t *apu = NULL; /* look up table madness */ -static int32 decay_lut[16]; -static int vbl_lut[32]; -static int trilength_lut[128]; +int32 *decay_lut = NULL; // [16]; +int *vbl_lut = NULL; // [32]; +int *trilength_lut = NULL; // [128]; /* noise lookups for both modes */ #ifndef REALTIME_NOISE -static int8 noise_long_lut[APU_NOISE_32K]; -static int8 noise_short_lut[APU_NOISE_93]; +int8 *noise_long_lut = NULL; // [APU_NOISE_32K]; +int8 *noise_short_lut = NULL; // [APU_NOISE_93]; #endif /* !REALTIME_NOISE */ diff --git a/components/nes/src/nes_shared_memory.c b/components/nes/src/nes_shared_memory.c index 61c2ad0..ddc8246 100644 --- a/components/nes/src/nes_shared_memory.c +++ b/components/nes/src/nes_shared_memory.c @@ -11,23 +11,46 @@ static const char *TAG = "nes_shared_memory"; nes_t *nes_context; /* allocates memory and clears it */ -void *_my_malloc(int size) -{ - // get a pointer to the memory pool - shared_mem_request_t request = { - .size = size, - .region = SHARED_MEM_DEFAULT - }; - uint8_t *ptr = shared_mem_allocate(&request); - return ptr; +void *_my_malloc(int size) { + return shared_malloc(size); } /* free a pointer allocated with my_malloc */ -void _my_free(void **data) -{ +void _my_free(void **data) { } +extern int32 *decay_lut; // 16 +extern int *vbl_lut; // [32]; +extern int *trilength_lut; // [128]; + +/* noise lookups for both modes */ +#ifndef REALTIME_NOISE +extern int8 *noise_long_lut; // [APU_NOISE_32K]; +extern int8 *noise_short_lut; // [APU_NOISE_93]; +#endif /* !REALTIME_NOISE */ + +extern int32 *mmc5_decay_lut; // [16]; +extern int *mmc5_vbl_lut; // [32]; +extern mmc5_t *mmc5; + nes_t* nes_init_shared_memory(void) { + nes_palette = (rgb_t*)shared_malloc(sizeof(rgb_t)* 256); + + decay_lut = (int32*)shared_malloc(sizeof(int32)*16); // 16 + vbl_lut = (int*)shared_malloc(sizeof(int)*32); // [32]; + trilength_lut = (int*)shared_malloc(sizeof(int)*128); // [128]; + + /* noise lookups for both modes */ +#ifndef REALTIME_NOISE + noise_long_lut = (int8*)shared_malloc(sizeof(int8)*APU_NOISE_32K); // [APU_NOISE_32K]; + noise_short_lut = (int8*)shared_malloc(sizeof(int8)*APU_NOISE_93); // [APU_NOISE_93]; +#endif /* !REALTIME_NOISE */ + + mmc5_decay_lut = (int32 *)shared_malloc(sizeof(int32) * 16); // [16]; + mmc5_vbl_lut = (int *)shared_malloc(sizeof(int) * 32); // [32]; + + mmc5 = (mmc5_t*)shared_malloc(sizeof(mmc5_t)); + nes_cpu = (nes6502_context *)_my_malloc(sizeof(nes6502_context)); nes_context = nes_create(); From d2fa01e1119caed4af977b955f7ac19861ddc32e Mon Sep 17 00:00:00 2001 From: William Emfinger Date: Mon, 21 Apr 2025 10:04:21 -0600 Subject: [PATCH 24/39] move lcd struct and bgdup into shared memory for gbc --- components/gbc/gnuboy/include/gnuboy/lcd.h | 2 +- components/gbc/gnuboy/src/hw.c | 2 +- components/gbc/gnuboy/src/lcd.c | 44 +++++++++++----------- components/gbc/gnuboy/src/mem.c | 14 +++---- components/gbc/gnuboy/src/save.c | 12 +++--- components/gbc/src/gameboy.cpp | 2 +- components/gbc/src/gbc_shared_memory.cpp | 43 +++++++-------------- 7 files changed, 51 insertions(+), 68 deletions(-) diff --git a/components/gbc/gnuboy/include/gnuboy/lcd.h b/components/gbc/gnuboy/include/gnuboy/lcd.h index a885c97..9ea52f7 100644 --- a/components/gbc/gnuboy/include/gnuboy/lcd.h +++ b/components/gbc/gnuboy/include/gnuboy/lcd.h @@ -44,7 +44,7 @@ struct lcd byte pal[128]; }; -extern struct lcd lcd; +extern struct lcd *lcd; extern struct gbc_scan *scan; diff --git a/components/gbc/gnuboy/src/hw.c b/components/gbc/gnuboy/src/hw.c index fffd959..6728b8e 100644 --- a/components/gbc/gnuboy/src/hw.c +++ b/components/gbc/gnuboy/src/hw.c @@ -54,7 +54,7 @@ void hw_dma(byte b) a = ((addr)b) << 8; for (i = 0; i < 160; i++, a++) - lcd.oam.mem[i] = readb(a); + lcd->oam.mem[i] = readb(a); } diff --git a/components/gbc/gnuboy/src/lcd.c b/components/gbc/gnuboy/src/lcd.c index 8f77c9d..d177227 100755 --- a/components/gbc/gnuboy/src/lcd.c +++ b/components/gbc/gnuboy/src/lcd.c @@ -19,7 +19,7 @@ #include "make_color.h" -struct lcd lcd; +struct lcd *lcd = NULL; struct gbc_scan *scan = NULL; @@ -83,7 +83,7 @@ static const byte* get_patpix(int i, int x) int j; int a, c; - const byte* const vram = &lcd.vbank[0]; + const byte* const vram = &lcd->vbank[0]; switch (rotation) { @@ -161,8 +161,8 @@ static void tilebuf() base = ((R_LCDC&0x08)?0x1C00:0x1800) + (T<<5) + S; - tilemap = &lcd.vbank[0] + base; - attrmap = &lcd.vbank[8192] + base; + tilemap = &lcd->vbank[0] + base; + attrmap = &lcd->vbank[8192] + base; tilebuf = BG; wrap = wraptable + S; cnt = ((WX + 7) >> 3) + 1; @@ -209,8 +209,8 @@ static void tilebuf() if (WX >= 160) return; base = ((R_LCDC&0x40)?0x1C00:0x1800) + (WT<<5); - tilemap = &lcd.vbank[0] + base; - attrmap = &lcd.vbank[8192] + base; + tilemap = &lcd->vbank[0] + base; + attrmap = &lcd->vbank[8192] + base; tilebuf = WND; cnt = ((160 - WX) >> 3) + 1; @@ -361,7 +361,7 @@ static void bg_scan_pri() i = S; cnt = WX; dest = PRI; - src = &lcd.vbank[8192] + ((R_LCDC&0x08)?0x1C00:0x1800) + (T<<5); + src = &lcd->vbank[8192] + ((R_LCDC&0x08)?0x1C00:0x1800) + (T<<5); if (!priused(src)) { @@ -391,7 +391,7 @@ static void wnd_scan_pri() i = 0; cnt = 160 - WX; dest = PRI + WX; - src = &lcd.vbank[8192] + ((R_LCDC&0x40)?0x1C00:0x1800) + (WT<<5); + src = &lcd->vbank[8192] + ((R_LCDC&0x40)?0x1C00:0x1800) + (WT<<5); if (!priused(src)) { @@ -472,7 +472,7 @@ static void spr_count() NS = 0; if (!(R_LCDC & 0x02)) return; - o = lcd.oam.obj; + o = lcd->oam.obj; for (i = 40; i; i--, o++) { @@ -497,7 +497,7 @@ static void spr_enum() NS = 0; if (!(R_LCDC & 0x02)) return; - o = lcd.oam.obj; + o = lcd->oam.obj; for (i = 40; i; i--, o++) { @@ -567,7 +567,7 @@ static void spr_enum() } -static byte bgdup[256]; +byte *bgdup = NULL; // [256]; static void spr_scan() { @@ -724,8 +724,8 @@ inline static void updatepalette(int i) short c; short r, g, b; //, y, u, v, rr, gg; - short low = lcd.pal[i << 1]; - short high = lcd.pal[(i << 1) | 1]; + short low = lcd->pal[i << 1]; + short high = lcd->pal[(i << 1) | 1]; c = (low | (high << 8)) & 0x7fff; @@ -744,9 +744,9 @@ inline static void updatepalette(int i) inline void pal_write(int i, byte b) { - if (lcd.pal[i] != b) + if (lcd->pal[i] != b) { - lcd.pal[i] = b; + lcd->pal[i] = b; updatepalette(i>>1); } } @@ -778,11 +778,11 @@ void pal_write_dmg(int i, int mapnum, byte d) inline void vram_write(int a, byte b) { - // byte (*vbank_arry)[2][8192] = (byte (*)[2][8192])lcd.vbank; - //if (lcd.vbank[R_VBK&1][a] != b) + // byte (*vbank_arry)[2][8192] = (byte (*)[2][8192])lcd->vbank; + //if (lcd->vbank[R_VBK&1][a] != b) { - // lcd.vbank[R_VBK&1][a] = b; - lcd.vbank[(R_VBK&1) * 8192 + a] = b; + // lcd->vbank[R_VBK&1][a] = b; + lcd->vbank[(R_VBK&1) * 8192 + a] = b; // (*vbank_arry)[R_VBK&1][a] = b; if (a >= 0x1800) return; } @@ -814,10 +814,10 @@ void pal_dirty() void lcd_reset() { // save the vbank pointer - byte *vbank = lcd.vbank; - memset(&lcd, 0, sizeof lcd); + byte *vbank = lcd->vbank; + memset(&lcd, 0, sizeof(struct lcd)); // restore the vbank pointer - lcd.vbank = vbank; + lcd->vbank = vbank; lcd_begin(); vram_dirty(); diff --git a/components/gbc/gnuboy/src/mem.c b/components/gbc/gnuboy/src/mem.c index aef819d..bcd1d09 100644 --- a/components/gbc/gnuboy/src/mem.c +++ b/components/gbc/gnuboy/src/mem.c @@ -60,8 +60,8 @@ void mem_updatemap() //} //else //{ - // map[0x8] = lcd.vbank[R_VBK & 1] - 0x8000; - // map[0x9] = lcd.vbank[R_VBK & 1] - 0x8000; + // map[0x8] = lcd->vbank[R_VBK & 1] - 0x8000; + // map[0x9] = lcd->vbank[R_VBK & 1] - 0x8000; //} // if (mbc.enableram && !(rtc.sel&8)) @@ -210,11 +210,11 @@ void ioreg_write(byte r, byte b) break; case RI_BCPS: R_BCPS = b & 0xBF; - R_BCPD = lcd.pal[b & 0x3F]; + R_BCPD = lcd->pal[b & 0x3F]; break; case RI_OCPS: R_OCPS = b & 0xBF; - R_OCPD = lcd.pal[64 + (b & 0x3F)]; + R_OCPD = lcd->pal[64 + (b & 0x3F)]; break; case RI_BCPD: R_BCPD = b; @@ -543,7 +543,7 @@ void mem_write(int a, byte b) if ((a & 0xFF00) == 0xFE00) { /* if (R_STAT & 0x02) break; */ - if (a < 0xFEA0) lcd.oam.mem[a & 0xFF] = b; + if (a < 0xFEA0) lcd->oam.mem[a & 0xFF] = b; break; } /* return writehi(a & 0xFF, b); */ @@ -589,7 +589,7 @@ byte mem_read(int a) return rom.bank[mbc.rombank][a & 0x3FFF]; case 0x8: /* if ((R_STAT & 0x03) == 0x03) return 0xFF; */ - return lcd.vbank[(R_VBK&1)*8192 + (a & 0x1FFF)]; + return lcd->vbank[(R_VBK&1)*8192 + (a & 0x1FFF)]; case 0xA: if (!mbc.enableram && mbc.type == MBC_HUC3) return 0x01; @@ -615,7 +615,7 @@ byte mem_read(int a) if ((a & 0xFF00) == 0xFE00) { /* if (R_STAT & 0x02) return 0xFF; */ - if (a < 0xFEA0) return lcd.oam.mem[a & 0xFF]; + if (a < 0xFEA0) return lcd->oam.mem[a & 0xFF]; return 0xFF; } /* return readhi(a & 0xFF); */ diff --git a/components/gbc/gnuboy/src/save.c b/components/gbc/gnuboy/src/save.c index 10836af..6fa104a 100644 --- a/components/gbc/gnuboy/src/save.c +++ b/components/gbc/gnuboy/src/save.c @@ -198,8 +198,8 @@ void loadstate(FILE *f) if (hramofs) memcpy(ram.hi+128, gbc_filebuf+hramofs, 127); if (hiofs) memcpy(ram.hi, gbc_filebuf+hiofs, sizeof ram.hi); - if (palofs) memcpy(lcd.pal, gbc_filebuf+palofs, sizeof lcd.pal); - if (oamofs) memcpy(lcd.oam.mem, gbc_filebuf+oamofs, sizeof lcd.oam); + if (palofs) memcpy(lcd->pal, gbc_filebuf+palofs, sizeof lcd->pal); + if (oamofs) memcpy(lcd->oam.mem, gbc_filebuf+oamofs, sizeof lcd->oam); if (wavofs) memcpy(snd.wave, gbc_filebuf+wavofs, sizeof snd.wave); else memcpy(snd.wave, ram.hi+0x30, 16); /* patch data from older files */ @@ -212,7 +212,7 @@ void loadstate(FILE *f) fread(ram.ibank, 4096, irl, f); fseek(f, vramblock<<12, SEEK_SET); - fread(lcd.vbank, 4096, vrl, f); + fread(lcd->vbank, 4096, vrl, f); fseek(f, sramblock<<12, SEEK_SET); @@ -377,8 +377,8 @@ struct svar svars[] = header[i][0] = header[i][1] = 0; memcpy(gbc_filebuf+hiofs, ram.hi, sizeof ram.hi); - memcpy(gbc_filebuf+palofs, lcd.pal, sizeof lcd.pal); - memcpy(gbc_filebuf+oamofs, lcd.oam.mem, sizeof lcd.oam); + memcpy(gbc_filebuf+palofs, lcd->pal, sizeof lcd->pal); + memcpy(gbc_filebuf+oamofs, lcd->oam.mem, sizeof lcd->oam); memcpy(gbc_filebuf+wavofs, snd.wave, sizeof snd.wave); fseek(f, 0, SEEK_SET); @@ -388,7 +388,7 @@ struct svar svars[] = fwrite(ram.ibank, 4096, irl, f); fseek(f, vramblock<<12, SEEK_SET); - fwrite(lcd.vbank, 4096, vrl, f); + fwrite(lcd->vbank, 4096, vrl, f); fseek(f, sramblock<<12, SEEK_SET); diff --git a/components/gbc/src/gameboy.cpp b/components/gbc/src/gameboy.cpp index 179f0ae..cf5de70 100644 --- a/components/gbc/src/gameboy.cpp +++ b/components/gbc/src/gameboy.cpp @@ -113,7 +113,7 @@ void init_gameboy(const std::string& rom_filename, uint8_t *romdata, size_t rom_ gbc_get_memory_regions(&vram, &wram, &audio); // Use shared memory regions - lcd.vbank = vram; + lcd->vbank = vram; ram.ibank = wram; pcm.buf = (int16_t*)audio; static constexpr int GBC_AUDIO_BUFFER_SIZE = GAMEBOY_AUDIO_SAMPLE_RATE * 2 * 2 / 5; // TODO: 5 is a hack to make it work diff --git a/components/gbc/src/gbc_shared_memory.cpp b/components/gbc/src/gbc_shared_memory.cpp index 31d3bcf..ecc3701 100644 --- a/components/gbc/src/gbc_shared_memory.cpp +++ b/components/gbc/src/gbc_shared_memory.cpp @@ -31,13 +31,12 @@ static uint8_t* wram_ptr = nullptr; static uint8_t* audio_ptr = nullptr; struct cpu *cpu = nullptr; +// from lcd.c +extern byte *bgdup; // [256] + void gbc_init_shared_memory(void) { // Allocate VRAM in shared memory - shared_mem_request_t vram_request = { - .size = GBC_VRAM_SIZE, - .region = SHARED_MEM_DEFAULT - }; - vram_ptr = (uint8_t*)shared_mem_allocate(&vram_request); + vram_ptr = (uint8_t*)shared_malloc(GBC_VRAM_SIZE); if (!vram_ptr) { ESP_LOGE(TAG, "Failed to allocate VRAM"); return; @@ -45,11 +44,7 @@ void gbc_init_shared_memory(void) { memset(vram_ptr, 0, GBC_VRAM_SIZE); // Allocate WRAM in shared memory - shared_mem_request_t wram_request = { - .size = GBC_WRAM_SIZE, - .region = SHARED_MEM_DEFAULT - }; - wram_ptr = (uint8_t*)shared_mem_allocate(&wram_request); + wram_ptr = (uint8_t*)shared_malloc(GBC_WRAM_SIZE); if (!wram_ptr) { ESP_LOGE(TAG, "Failed to allocate WRAM"); return; @@ -57,37 +52,25 @@ void gbc_init_shared_memory(void) { memset(wram_ptr, 0, GBC_WRAM_SIZE); // allocate gbc scan object in shared memory - shared_mem_request_t gbc_scan_request = { - .size = sizeof(struct gbc_scan), - .region = SHARED_MEM_DEFAULT - }; - scan = (struct gbc_scan*)shared_mem_allocate(&gbc_scan_request); + scan = (struct gbc_scan*)shared_malloc(sizeof(struct gbc_scan)); // allocate gbc file buf in shared memory - shared_mem_request_t gbc_file_request = { - .size = 4096, - .region = SHARED_MEM_DEFAULT - }; - gbc_filebuf = (uint8_t*)shared_mem_allocate(&gbc_file_request); + gbc_filebuf = (uint8_t*)shared_malloc(4096); // allocate CPU structure in shared memory - shared_mem_request_t cpu_request = { - .size = sizeof(struct cpu), - .region = SHARED_MEM_DEFAULT - }; - cpu = (struct cpu*)shared_mem_allocate(&cpu_request); + cpu = (struct cpu*)shared_malloc(sizeof(struct cpu)); + + lcd = (struct lcd*)shared_malloc(sizeof(struct lcd)); // Allocate audio buffer in shared memory - shared_mem_request_t audio_request = { - .size = GBC_AUDIO_BUFFER_SIZE, - .region = SHARED_MEM_DEFAULT - }; - audio_ptr = (uint8_t*)shared_mem_allocate(&audio_request); + audio_ptr = (uint8_t*)shared_malloc(GBC_AUDIO_BUFFER_SIZE); if (!audio_ptr) { ESP_LOGE(TAG, "Failed to allocate audio buffer"); return; } memset(audio_ptr, 0, GBC_AUDIO_BUFFER_SIZE); + + bgdup = (byte*)shared_malloc(256); } void gbc_free_shared_memory(void) { From a9dce5909d735613b252bdf0d4d14c7518da6fac Mon Sep 17 00:00:00 2001 From: William Emfinger Date: Mon, 21 Apr 2025 15:57:24 -0700 Subject: [PATCH 25/39] fix gbc --- components/gbc/gnuboy/src/lcd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/gbc/gnuboy/src/lcd.c b/components/gbc/gnuboy/src/lcd.c index d177227..5aa7432 100755 --- a/components/gbc/gnuboy/src/lcd.c +++ b/components/gbc/gnuboy/src/lcd.c @@ -815,7 +815,7 @@ void lcd_reset() { // save the vbank pointer byte *vbank = lcd->vbank; - memset(&lcd, 0, sizeof(struct lcd)); + memset(lcd, 0, sizeof(struct lcd)); // restore the vbank pointer lcd->vbank = vbank; From 7509cc15ad5d1353f4a25e642057901be6f9f3c7 Mon Sep 17 00:00:00 2001 From: William Emfinger Date: Mon, 21 Apr 2025 22:31:40 -0700 Subject: [PATCH 26/39] update to better work across multiple emulators --- components/box-emu/include/box-emu.hpp | 1 + components/box-emu/src/box-emu.cpp | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/components/box-emu/include/box-emu.hpp b/components/box-emu/include/box-emu.hpp index 50c6e48..1100e2f 100644 --- a/components/box-emu/include/box-emu.hpp +++ b/components/box-emu/include/box-emu.hpp @@ -126,6 +126,7 @@ class BoxEmu : public espp::BaseComponent { ///////////////////////////////////////////////////////////////////////////// bool initialize_memory(); + void deinitialize_memory(); size_t copy_file_to_romdata(const std::string& filename); uint8_t *romdata() const; diff --git a/components/box-emu/src/box-emu.cpp b/components/box-emu/src/box-emu.cpp index 89e1a50..1fadefe 100644 --- a/components/box-emu/src/box-emu.cpp +++ b/components/box-emu/src/box-emu.cpp @@ -182,7 +182,7 @@ sdmmc_card_t *BoxEmu::sdcard() const { // Memory ///////////////////////////////////////////////////////////////////////////// -static constexpr size_t memory_size = 6*1024*1024; +static constexpr size_t memory_size = 4*1024*1024; extern "C" uint8_t *osd_getromdata() { auto &emu = BoxEmu::get(); @@ -206,6 +206,14 @@ bool BoxEmu::initialize_memory() { return true; } +void BoxEmu::deinitialize_memory() { + if (romdata_) { + logger_.info("Deinitializing memory (romdata)"); + free(romdata_); + romdata_ = nullptr; + } +} + size_t BoxEmu::copy_file_to_romdata(const std::string& filename) { // load the file data and iteratively copy it over std::ifstream romfile(filename, std::ios::binary | std::ios::ate); //open file at end From 61c814bb5fa6c0afe71ddfd3a27bc66f1c0d16cd Mon Sep 17 00:00:00 2001 From: William Emfinger Date: Mon, 21 Apr 2025 22:37:39 -0700 Subject: [PATCH 27/39] fix ppu issue with palette --- components/nes/nofrendo/nes/nes_ppu.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/components/nes/nofrendo/nes/nes_ppu.c b/components/nes/nofrendo/nes/nes_ppu.c index 853ec3f..a5f33f1 100644 --- a/components/nes/nofrendo/nes/nes_ppu.c +++ b/components/nes/nofrendo/nes/nes_ppu.c @@ -123,7 +123,6 @@ void ppu_getcontext(ppu_t *dest_ppu) ppu_t *ppu_create(void) { - static bool pal_generated = false; ppu_t *temp; temp = _my_malloc(sizeof(ppu_t)); @@ -138,11 +137,7 @@ ppu_t *ppu_create(void) temp->drawsprites = true; /* TODO: probably a better way to do this... */ - if (false == pal_generated) - { - pal_generate(); - pal_generated = true; - } + pal_generate(); ppu_setdefaultpal(temp); From 231ce43fe5a1eee344248c4a2622d5ad349013a6 Mon Sep 17 00:00:00 2001 From: William Emfinger Date: Mon, 21 Apr 2025 22:38:02 -0700 Subject: [PATCH 28/39] ensure doom cart frees memory --- main/doom_cart.hpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/main/doom_cart.hpp b/main/doom_cart.hpp index 8e01877..83cfc44 100644 --- a/main/doom_cart.hpp +++ b/main/doom_cart.hpp @@ -9,12 +9,18 @@ class DoomCart : public Cart { public: explicit DoomCart(const Cart::Config& config) : Cart(config) { + // Need to free the romdata used by most carts since doom uses a lot of + // memory for its own data. + BoxEmu::get().deinitialize_memory(); handle_video_setting(); init(); } virtual ~DoomCart() override { deinit(); + // Now that doom is deinitialized, we can reallocate the memory used by most + // carts + BoxEmu::get().initialize_memory(); } // cppcheck-suppress uselessOverride From d6d6b8b1bc4897fce8854e98fe8fded30d690430 Mon Sep 17 00:00:00 2001 From: William Emfinger Date: Tue, 22 Apr 2025 07:51:23 -0700 Subject: [PATCH 29/39] bump shared memory back to 150k for Genesis emulator --- components/shared_memory/src/shared_memory.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/shared_memory/src/shared_memory.c b/components/shared_memory/src/shared_memory.c index dec55f6..c879026 100644 --- a/components/shared_memory/src/shared_memory.c +++ b/components/shared_memory/src/shared_memory.c @@ -3,7 +3,7 @@ #include // Total shared memory size - can be tuned based on needs -#define TOTAL_MEMORY_SIZE (100 * 1024) // 256KB total shared memory +#define TOTAL_MEMORY_SIZE (150 * 1024) // 256KB total shared memory // Aligned memory pool static uint8_t memory_pool_[TOTAL_MEMORY_SIZE] __attribute__((aligned(32))); From 9a655da58e8021d058885c83d7cb52e45aca3041 Mon Sep 17 00:00:00 2001 From: William Emfinger Date: Tue, 22 Apr 2025 08:04:00 -0700 Subject: [PATCH 30/39] 145k for shared memory --- components/shared_memory/src/shared_memory.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/shared_memory/src/shared_memory.c b/components/shared_memory/src/shared_memory.c index c879026..5b5bdfe 100644 --- a/components/shared_memory/src/shared_memory.c +++ b/components/shared_memory/src/shared_memory.c @@ -3,7 +3,7 @@ #include // Total shared memory size - can be tuned based on needs -#define TOTAL_MEMORY_SIZE (150 * 1024) // 256KB total shared memory +#define TOTAL_MEMORY_SIZE (145 * 1024) // 256KB total shared memory // Aligned memory pool static uint8_t memory_pool_[TOTAL_MEMORY_SIZE] __attribute__((aligned(32))); From a33b85443b5475a05dec910aa654b635b85c36d3 Mon Sep 17 00:00:00 2001 From: William Emfinger Date: Wed, 30 Apr 2025 10:25:56 -0500 Subject: [PATCH 31/39] wip using pool allocator for better memory performance accross emulators without having to (re-)allocate the romdata which can fail. update to use menu mutex and to make images spans instead of vectors for better memory performance --- components/box-emu/CMakeLists.txt | 1 + components/box-emu/include/box-emu.hpp | 1 + components/doom/include/doom.hpp | 7 +- components/doom/prboom/lprintf.c | 5 +- components/doom/prboom/m_menu.c | 2 +- components/doom/prboom/m_misc.c | 21 +- components/doom/prboom/z_zone.c | 16 +- components/doom/src/doom.cpp | 726 ++++++++---------- components/gbc/include/gameboy.hpp | 3 +- components/gbc/src/gameboy.cpp | 10 +- components/gbc/src/gbc_shared_memory.cpp | 22 +- components/genesis/include/genesis.hpp | 8 +- components/genesis/src/genesis.cpp | 52 +- .../genesis/src/genesis_shared_memory.cpp | 16 +- components/menu/include/menu.hpp | 14 +- components/menu/src/menu.cpp | 12 +- components/msx/fmsx/src/fMSX/MSX.c | 18 +- components/msx/include/msx.hpp | 3 +- components/msx/src/msx.cpp | 60 +- components/nes/include/nes.hpp | 3 +- components/nes/include/nes_shared_memory.h | 7 +- components/nes/src/nes.cpp | 14 +- components/nes/src/nes_shared_memory.c | 14 +- components/nes/src/video_audio.cpp | 200 ++--- components/pool_allocator/CMakeLists.txt | 5 + .../pool_allocator/include/pool_allocator.h | 26 + .../pool_allocator/src/pool_allocator.c | 80 ++ components/shared_memory/src/shared_memory.c | 10 +- components/sms/include/sms.hpp | 3 +- components/sms/src/sms.cpp | 12 +- main/cart.hpp | 34 +- main/carts.hpp | 1 + main/doom_cart.hpp | 14 +- main/gbc_cart.hpp | 4 +- main/genesis_cart.hpp | 4 +- main/msx_cart.hpp | 4 +- main/nes_cart.hpp | 4 +- main/sms_cart.hpp | 4 +- 38 files changed, 755 insertions(+), 685 deletions(-) create mode 100644 components/pool_allocator/CMakeLists.txt create mode 100644 components/pool_allocator/include/pool_allocator.h create mode 100644 components/pool_allocator/src/pool_allocator.c diff --git a/components/box-emu/CMakeLists.txt b/components/box-emu/CMakeLists.txt index c9017d7..9bece60 100644 --- a/components/box-emu/CMakeLists.txt +++ b/components/box-emu/CMakeLists.txt @@ -30,4 +30,5 @@ idf_component_register( "statistics" "max1704x" "esp-box" + "pool_allocator" ) diff --git a/components/box-emu/include/box-emu.hpp b/components/box-emu/include/box-emu.hpp index 1100e2f..0bc48db 100644 --- a/components/box-emu/include/box-emu.hpp +++ b/components/box-emu/include/box-emu.hpp @@ -36,6 +36,7 @@ #include "video_setting.hpp" #include "make_color.h" +#include "pool_allocator.h" class BoxEmu : public espp::BaseComponent { public: diff --git a/components/doom/include/doom.hpp b/components/doom/include/doom.hpp index cdc6597..be56f7f 100644 --- a/components/doom/include/doom.hpp +++ b/components/doom/include/doom.hpp @@ -1,13 +1,14 @@ #pragma once +#include #include #include #include void reset_doom(); void init_doom(const std::string& rom_filename, uint8_t *romdata, size_t rom_data_size); -void load_doom(std::string_view save_path); -void save_doom(std::string_view save_path); +void load_doom(int save_slot); +void save_doom(int save_slot); void run_doom_rom(); void deinit_doom(); -std::vector get_doom_video_buffer(); +std::span get_doom_video_buffer(); diff --git a/components/doom/prboom/lprintf.c b/components/doom/prboom/lprintf.c index c83691a..2125b14 100644 --- a/components/doom/prboom/lprintf.c +++ b/components/doom/prboom/lprintf.c @@ -74,8 +74,7 @@ void I_Error(const char *error, ...) { va_list arg; va_start(arg, error); - char buffer[256]; - vsnprintf(buffer, sizeof(buffer), error, arg); + vprintf(error, arg); va_end(arg); - abort(); + // abort(); } diff --git a/components/doom/prboom/m_menu.c b/components/doom/prboom/m_menu.c index 928b77e..c330e23 100644 --- a/components/doom/prboom/m_menu.c +++ b/components/doom/prboom/m_menu.c @@ -59,7 +59,7 @@ #include "r_demo.h" #include "r_fps.h" -extern patchnum_t hu_font[HU_FONTSIZE]; +extern patchnum_t *hu_font; // [HU_FONTSIZE]; int showMessages; // Show messages has default, 0 = off, 1 = on bool inhelpscreens; // indicates we are in or just left a help screen diff --git a/components/doom/prboom/m_misc.c b/components/doom/prboom/m_misc.c index c57f448..4cdb25b 100644 --- a/components/doom/prboom/m_misc.c +++ b/components/doom/prboom/m_misc.c @@ -680,7 +680,7 @@ struct default_s *M_LookupDefault(const char *name) for (int i = 0 ; i < numdefaults ; i++) if ((defaults[i].type != def_none) && !strcmp(name, defaults[i].name)) return (default_t*)&defaults[i]; - I_Error("M_LookupDefault: %s not found",name); + // I_Error("M_LookupDefault: '%s' not found\n",name); return NULL; } @@ -690,6 +690,17 @@ struct default_s *M_LookupDefault(const char *name) void M_LoadDefaults(void) { + // set everything to base values + for (int i = 0 ; i < numdefaults ; i++) { + if (defaults[i].type == def_str && defaults[i].location.ppsz) + *defaults[i].location.ppsz = strdup(defaults[i].defaultvalue.psz); + if (defaults[i].type != def_str && defaults[i].location.pi) + *defaults[i].location.pi = defaults[i].defaultvalue.i; + } + + // return early since we have no config file + return; + // check for a custom default file int i = M_CheckParm ("-config"); if (i && i < myargc-1) @@ -699,14 +710,6 @@ void M_LoadDefaults(void) configfile = strcat(strcpy(malloc(strlen(exedir) + 32), exedir), "/prboom.cfg"); } - // set everything to base values - for (int i = 0 ; i < numdefaults ; i++) { - if (defaults[i].type == def_str && defaults[i].location.ppsz) - *defaults[i].location.ppsz = strdup(defaults[i].defaultvalue.psz); - if (defaults[i].type != def_str && defaults[i].location.pi) - *defaults[i].location.pi = defaults[i].defaultvalue.i; - } - // read the file in, overriding any set defaults FILE* f = fopen(configfile, "r"); if (!f) diff --git a/components/doom/prboom/z_zone.c b/components/doom/prboom/z_zone.c index 0b3fdae..b8a6cac 100644 --- a/components/doom/prboom/z_zone.c +++ b/components/doom/prboom/z_zone.c @@ -175,6 +175,18 @@ void Z_Close(void) Z_FreeTags(PU_FREE, PU_MAX); } +#include "pool_allocator.h" + +static void* my_malloc(size_t size) +{ + return pool_alloc(size); +} + +static void my_free(void* p) +{ + pool_free(p); +} + void Z_Init(void) { // Nothing to do @@ -202,7 +214,7 @@ void *(Z_Malloc)(size_t size, int tag, void **user DA(const char *file, int line size = (size+CHUNK_SIZE-1) & ~(CHUNK_SIZE-1); // round to chunk size - while (!(block = (malloc)(size + HEADER_SIZE))) { + while (!(block = (my_malloc)(size + HEADER_SIZE))) { if (!blockbytag[PU_CACHE]) I_Error ("Z_Malloc: Failure trying to allocate %lu bytes" #ifdef INSTRUMENTED @@ -304,7 +316,7 @@ void (Z_Free)(void *p DA(const char *file, int line)) memset(block, gametic & 0xff, block->size + HEADER_SIZE); #endif - (free)(block); + (my_free)(block); #ifdef INSTRUMENTED Z_DrawStats(); // print memory allocation stats diff --git a/components/doom/src/doom.cpp b/components/doom/src/doom.cpp index 228961f..ee142d7 100644 --- a/components/doom/src/doom.cpp +++ b/components/doom/src/doom.cpp @@ -7,20 +7,17 @@ static uint16_t* displayBuffer[2]; static uint8_t currentBuffer = 0; static uint16_t* framebuffer = nullptr; -static uint16_t* audio_buffers[2]; -static uint8_t currentAudioBuffer = 0; -static uint16_t* audio_buffer = nullptr; static uint16_t doom_palette[256]; static std::unique_ptr audio_task; -static bool unlock = false; - static const char *doom_argv[10]; // prboom includes extern "C" { +#include "pool_allocator.h" + #include #include #include @@ -50,442 +47,371 @@ extern "C" { #include #include -///////////////////////////////////////////// -// Copied from retro-go/prboom-go/main/main.c -///////////////////////////////////////////// + ///////////////////////////////////////////// + // Copied from retro-go/prboom-go/main/main.c + ///////////////////////////////////////////// #define AUDIO_SAMPLE_RATE 22050 #define AUDIO_BUFFER_LENGTH (AUDIO_SAMPLE_RATE / TICRATE + 1) #define NUM_MIX_CHANNELS 8 -// Expected variables by doom -int snd_card = 1, mus_card = 1; -int snd_samplerate = AUDIO_SAMPLE_RATE; -int current_palette = 0; - -typedef struct { - uint16_t unused1; - uint16_t samplerate; - uint16_t length; - uint16_t unused2; - byte samples[]; -} doom_sfx_t; - -typedef struct { - const doom_sfx_t *sfx; - size_t pos; - float factor; - int starttic; -} channel_t; - -static channel_t *channels=nullptr; // [NUM_MIX_CHANNELS]; -static const doom_sfx_t **sfx = nullptr; // [NUMSFX]; -static uint16_t *mixbuffer = nullptr; // [AUDIO_BUFFER_LENGTH]; -static const music_player_t *music_player = &opl_synth_player; -static bool musicPlaying = false; - -static const struct {int mask; int *key;} keymap[] = { - {(int)GamepadState::Button::UP, &key_up}, - {(int)GamepadState::Button::DOWN, &key_down}, - {(int)GamepadState::Button::LEFT, &key_left}, - {(int)GamepadState::Button::RIGHT, &key_right}, - {(int)GamepadState::Button::A, &key_fire}, - {(int)GamepadState::Button::A, &key_enter}, - {(int)GamepadState::Button::B, &key_speed}, - {(int)GamepadState::Button::B, &key_strafe}, - {(int)GamepadState::Button::B, &key_backspace}, - {(int)GamepadState::Button::START, &key_escape}, - {(int)GamepadState::Button::SELECT, &key_map}, - {(int)GamepadState::Button::X, &key_use}, - {(int)GamepadState::Button::Y, &key_weapontoggle}, -}; - -// static rg_gui_event_t gamma_update_cb(rg_gui_option_t *option, rg_gui_event_t event) -// { -// int gamma = usegamma; -// int max = 9; - -// if (event == RG_DIALOG_PREV) -// gamma = gamma > 0 ? gamma - 1 : max; - -// if (event == RG_DIALOG_NEXT) -// gamma = gamma < max ? gamma + 1 : 0; - -// if (gamma != usegamma) -// { -// usegamma = gamma; -// rg_settings_set_number(NS_APP, SETTING_GAMMA, gamma); -// I_SetPalette(current_palette); -// return RG_DIALOG_REDRAW; -// } - -// sprintf(option->value, "%d/%d", gamma, max); - -// return RG_DIALOG_VOID; -// } - -void I_StartFrame(void) -{ -} - -void I_UpdateNoBlit(void) -{ -} - -void I_FinishUpdate(void) -{ - static auto& box = BoxEmu::get(); - box.push_frame(framebuffer); - // // swap buffers - // currentBuffer = currentBuffer ? 0 : 1; - // framebuffer = displayBuffer[currentBuffer]; - // screens[0].data = (uint8_t*)framebuffer; -} - -bool I_StartDisplay(void) -{ - return true; -} - -void I_EndDisplay(void) -{ -} + // Expected variables by doom + int snd_card = 1, mus_card = 1; + int snd_samplerate = AUDIO_SAMPLE_RATE; + int current_palette = 0; + + typedef struct { + uint16_t unused1; + uint16_t samplerate; + uint16_t length; + uint16_t unused2; + byte samples[]; + } doom_sfx_t; + + typedef struct { + const doom_sfx_t *sfx; + size_t pos; + float factor; + int starttic; + } channel_t; + + static channel_t *channels=nullptr; // [NUM_MIX_CHANNELS]; + static const doom_sfx_t **sfx = nullptr; // [NUMSFX]; + static uint16_t *mixbuffer = nullptr; // [AUDIO_BUFFER_LENGTH]; + static const music_player_t *music_player = &opl_synth_player; + static bool musicPlaying = false; + + static const struct {int mask; int *key;} keymap[] = { + {(int)GamepadState::Button::UP, &key_up}, + {(int)GamepadState::Button::DOWN, &key_down}, + {(int)GamepadState::Button::LEFT, &key_left}, + {(int)GamepadState::Button::RIGHT, &key_right}, + {(int)GamepadState::Button::A, &key_fire}, + {(int)GamepadState::Button::A, &key_enter}, + {(int)GamepadState::Button::B, &key_speed}, + {(int)GamepadState::Button::B, &key_strafe}, + {(int)GamepadState::Button::B, &key_backspace}, + {(int)GamepadState::Button::START, &key_escape}, + {(int)GamepadState::Button::SELECT, &key_map}, + {(int)GamepadState::Button::X, &key_use}, + {(int)GamepadState::Button::Y, &key_weapontoggle}, + }; + + void I_StartFrame(void) { + } -void I_SetPalette(int pal) -{ - static auto& box = BoxEmu::get(); - uint16_t *palette = (uint16_t*)V_BuildPalette(pal, 16); - if (palette == NULL) { - box.palette(NULL); - return; - } - // copy palette to doom_palette - for (int i = 0; i < 256; i++) { - doom_palette[i] = palette[i]; - } - // release the allocated memory - Z_Free(palette); - // set the palette - box.palette(doom_palette); -} + void I_UpdateNoBlit(void) { + } -void I_InitGraphics(void) -{ - fmt::print("Init graphics\n"); + void I_FinishUpdate(void) { + static auto& box = BoxEmu::get(); + box.push_frame(framebuffer); + // // swap buffers + // currentBuffer = currentBuffer ? 0 : 1; + // framebuffer = displayBuffer[currentBuffer]; + // screens[0].data = (uint8_t*)framebuffer; + } - // Set native size and palette - BoxEmu::get().native_size(SCREENWIDTH, SCREENHEIGHT); + bool I_StartDisplay(void) { + return true; + } - displayBuffer[0] = (uint16_t*)BoxEmu::get().frame_buffer0(); - displayBuffer[1] = (uint16_t*)BoxEmu::get().frame_buffer1(); - currentBuffer = 0; - framebuffer = displayBuffer[currentBuffer]; + void I_EndDisplay(void) { + } - // set first three to standard values - for (int i = 0; i < 3; i++) - { - screens[i].width = SCREENWIDTH; - screens[i].height = SCREENHEIGHT; - screens[i].byte_pitch = SCREENWIDTH; + void I_SetPalette(int pal) { + static auto& box = BoxEmu::get(); + uint16_t *palette = (uint16_t*)V_BuildPalette(pal, 16); + if (palette == NULL) { + box.palette(NULL); + return; + } + // copy palette to doom_palette + for (int i = 0; i < 256; i++) { + doom_palette[i] = palette[i]; + } + // release the allocated memory + Z_Free(palette); + // set the palette + box.palette(doom_palette); } - // Main screen uses internal ram for speed - screens[0].data = (uint8_t*)framebuffer; - screens[0].not_on_heap = true; + void I_InitGraphics(void) { + // Set native size and palette + BoxEmu::get().native_size(SCREENWIDTH, SCREENHEIGHT); - // statusbar - screens[4].width = SCREENWIDTH; - screens[4].height = (ST_SCALED_HEIGHT + 1); - screens[4].byte_pitch = SCREENWIDTH; -} + displayBuffer[0] = (uint16_t*)BoxEmu::get().frame_buffer0(); + displayBuffer[1] = (uint16_t*)BoxEmu::get().frame_buffer1(); + currentBuffer = 0; + framebuffer = displayBuffer[currentBuffer]; -int I_GetTimeMS(void) -{ - return esp_timer_get_time() / 1000; -} + // set first three to standard values + for (int i = 0; i < 3; i++) + { + screens[i].width = SCREENWIDTH; + screens[i].height = SCREENHEIGHT; + screens[i].byte_pitch = SCREENWIDTH; + } -int I_GetTime(void) -{ - return I_GetTimeMS() * TICRATE * realtic_clock_rate / 100000; -} + // Main screen uses internal ram for speed + screens[0].data = (uint8_t*)framebuffer; + screens[0].not_on_heap = true; -void I_uSleep(unsigned long usecs) -{ - // TODO: ? - usleep(usecs); -} + // statusbar + screens[4].width = SCREENWIDTH; + screens[4].height = (ST_SCALED_HEIGHT + 1); + screens[4].byte_pitch = SCREENWIDTH; + } -void I_SafeExit(int rc) -{ - // TODO: -} + int I_GetTimeMS(void) { + return esp_timer_get_time() / 1000; + } -const char *I_DoomExeDir(void) -{ - return ""; -} + int I_GetTime(void) { + return I_GetTimeMS() * TICRATE * realtic_clock_rate / 100000; + } -void I_UpdateSoundParams(int handle, int volume, int seperation, int pitch) -{ -} + void I_uSleep(unsigned long usecs) { + // TODO: ? + usleep(usecs); + } -int I_StartSound(int sfxid, int channel, int vol, int sep, int pitch, int priority) -{ - int oldest = gametic; - int slot = 0; + void I_SafeExit(int rc) { + // TODO: + } - // Unknown sound - if (!sfx[sfxid]) - return -1; + const char *I_DoomExeDir(void) { + return ""; + } - // These sound are played only once at a time. Stop any running ones. - if (sfxid == sfx_sawup || sfxid == sfx_sawidl || sfxid == sfx_sawful - || sfxid == sfx_sawhit || sfxid == sfx_stnmov || sfxid == sfx_pistol) + void I_UpdateSoundParams(int handle, int volume, int seperation, int pitch) { - for (int i = 0; i < NUM_MIX_CHANNELS; i++) - { - if (channels[i].sfx == sfx[sfxid]) - channels[i].sfx = NULL; - } } - // Find available channel or steal the oldest - for (int i = 0; i < NUM_MIX_CHANNELS; i++) - { - if (channels[i].sfx == NULL) - { - slot = i; - break; + int I_StartSound(int sfxid, int channel, int vol, int sep, int pitch, int priority) { + int oldest = gametic; + int slot = 0; + + // Unknown sound + if (!sfx[sfxid]) + return -1; + + // These sound are played only once at a time. Stop any running ones. + if (sfxid == sfx_sawup || sfxid == sfx_sawidl || sfxid == sfx_sawful + || sfxid == sfx_sawhit || sfxid == sfx_stnmov || sfxid == sfx_pistol) { + for (int i = 0; i < NUM_MIX_CHANNELS; i++) { + if (channels[i].sfx == sfx[sfxid]) + channels[i].sfx = NULL; + } } - else if (channels[i].starttic < oldest) - { - slot = i; - oldest = channels[i].starttic; + + // Find available channel or steal the oldest + for (int i = 0; i < NUM_MIX_CHANNELS; i++) { + if (channels[i].sfx == NULL) { + slot = i; + break; + } else if (channels[i].starttic < oldest) { + slot = i; + oldest = channels[i].starttic; + } } - } - channel_t *chan = &channels[slot]; - chan->sfx = sfx[sfxid]; - chan->factor = (float)chan->sfx->samplerate / AUDIO_SAMPLE_RATE; - chan->pos = 0; + channel_t *chan = &channels[slot]; + chan->sfx = sfx[sfxid]; + chan->factor = (float)chan->sfx->samplerate / AUDIO_SAMPLE_RATE; + chan->pos = 0; - return slot; -} + return slot; + } -void I_StopSound(int handle) -{ - if (handle < NUM_MIX_CHANNELS) - channels[handle].sfx = NULL; -} + void I_StopSound(int handle) { + if (handle < NUM_MIX_CHANNELS) + channels[handle].sfx = NULL; + } -bool I_SoundIsPlaying(int handle) -{ - return false; -} + bool I_SoundIsPlaying(int handle) { + return false; + } -bool I_AnySoundStillPlaying(void) -{ - for (int i = 0; i < NUM_MIX_CHANNELS; i++) - if (channels[i].sfx) - return true; - return false; -} + bool I_AnySoundStillPlaying(void) { + for (int i = 0; i < NUM_MIX_CHANNELS; i++) + if (channels[i].sfx) + return true; + return false; + } -static bool soundTask() { - bool haveMusic = snd_MusicVolume > 0 && musicPlaying; - bool haveSFX = snd_SfxVolume > 0 && I_AnySoundStillPlaying(); + static bool soundTask() { + bool haveMusic = snd_MusicVolume > 0 && musicPlaying; + bool haveSFX = snd_SfxVolume > 0 && I_AnySoundStillPlaying(); - if (haveMusic) - { - music_player->render(mixbuffer, AUDIO_BUFFER_LENGTH); - } + if (haveMusic) { + music_player->render(mixbuffer, AUDIO_BUFFER_LENGTH); + } - if (haveSFX) - { + if (haveSFX) { int16_t *audioBuffer = (int16_t *)mixbuffer; int16_t *audioBufferEnd = audioBuffer + AUDIO_BUFFER_LENGTH; - while (audioBuffer < audioBufferEnd) - { - int totalSample = 0; - int totalSources = 0; - int sample; - - for (int i = 0; i < NUM_MIX_CHANNELS; i++) - { - channel_t *chan = &channels[i]; - if (!chan->sfx) - continue; - - size_t pos = (size_t)(chan->pos++ * chan->factor); - - if (pos >= chan->sfx->length) - { - chan->sfx = NULL; - } - else if ((sample = chan->sfx->samples[pos])) - { - totalSample += sample - 127; - totalSources++; - } - } - - totalSample <<= 7; - totalSample /= (16 - snd_SfxVolume); - - if (haveMusic) - { - totalSample += *audioBuffer; - totalSources += (totalSources == 0); - } - - if (totalSources > 0) - totalSample /= totalSources; - - if (totalSample > 32767) - totalSample = 32767; - else if (totalSample < -32768) - totalSample = -32768; - - *audioBuffer++ = totalSample; - // *audioBuffer++ = totalSample; + while (audioBuffer < audioBufferEnd) { + int totalSample = 0; + int totalSources = 0; + int sample; + + for (int i = 0; i < NUM_MIX_CHANNELS; i++) { + channel_t *chan = &channels[i]; + if (!chan->sfx) + continue; + + size_t pos = (size_t)(chan->pos++ * chan->factor); + + if (pos >= chan->sfx->length) { + chan->sfx = NULL; + } else if ((sample = chan->sfx->samples[pos])) { + totalSample += sample - 127; + totalSources++; + } } - } - if (!haveMusic && !haveSFX) - { - memset(mixbuffer, 0, sizeof(mixbuffer)); - } + // totalSample <<= 7; + // totalSample /= (16 - snd_SfxVolume); - // rg_audio_submit(mixbuffer, AUDIO_BUFFER_LENGTH); - static auto& box = BoxEmu::get(); - box.play_audio((const uint8_t*)mixbuffer, AUDIO_BUFFER_LENGTH * sizeof(int16_t)); - // std::this_thread::sleep_for(std::chrono::microseconds(1000 / 60)); - return false; -} + if (haveMusic) { + totalSample += *audioBuffer; + totalSources += (totalSources == 0); + } -void I_InitSound(void) -{ - for (int i = 1; i < NUMSFX; i++) - { - if (S_sfx[i].lumpnum != -1) { - sfx[i] = (const doom_sfx_t*)W_CacheLumpNum(S_sfx[i].lumpnum); + if (totalSources > 0) + totalSample /= totalSources; + + if (totalSample > 32767) + totalSample = 32767; + else if (totalSample < -32768) + totalSample = -32768; + + *audioBuffer++ = totalSample; + // *audioBuffer++ = totalSample; + } } - } - music_player->init(snd_samplerate); - music_player->setvolume(snd_MusicVolume); + if (!haveMusic && !haveSFX) { + memset(mixbuffer, 0, sizeof(mixbuffer)); + } - auto& box = BoxEmu::get(); - box.audio_sample_rate(snd_samplerate); + // rg_audio_submit(mixbuffer, AUDIO_BUFFER_LENGTH); + static auto& box = BoxEmu::get(); + box.play_audio((const uint8_t*)mixbuffer, AUDIO_BUFFER_LENGTH * sizeof(int16_t)); + // std::this_thread::sleep_for(std::chrono::microseconds(1000 / 60)); + return false; + } - audio_task.reset(); - audio_task = espp::Task::make_unique(espp::Task::Config{ - .callback = soundTask, - .task_config = { - .name = "doom_sound", - .stack_size_bytes = 2048, - .priority = 10, - .core_id = 1, + void I_InitSound(void) { + for (int i = 1; i < NUMSFX; i++) { + if (S_sfx[i].lumpnum != -1) { + sfx[i] = (const doom_sfx_t*)W_CacheLumpNum(S_sfx[i].lumpnum); } - }); -} + } -void I_ShutdownSound(void) -{ - music_player->shutdown(); - audio_task.reset(); -} + music_player->init(snd_samplerate); + music_player->setvolume(snd_MusicVolume); + + auto& box = BoxEmu::get(); + box.audio_sample_rate(snd_samplerate); + + // ensure any previous task is stopped and freed + audio_task.reset(); + // make the audio task + audio_task = espp::Task::make_unique(espp::Task::Config{ + .callback = soundTask, + .task_config = { + .name = "doom_sound", + .stack_size_bytes = 2048, + .priority = 10, + .core_id = 1, + } + }); + // now start the task + audio_task->start(); + } -void I_PlaySong(int handle, int looping) -{ - music_player->play((void *)handle, looping); - musicPlaying = true; -} + void I_ShutdownSound(void) { + music_player->shutdown(); + audio_task.reset(); + } -void I_PauseSong(int handle) -{ - music_player->pause(); - musicPlaying = false; -} + void I_PlaySong(int handle, int looping) { + music_player->play((void *)handle, looping); + musicPlaying = true; + } -void I_ResumeSong(int handle) -{ - music_player->resume(); - musicPlaying = true; -} + void I_PauseSong(int handle) { + music_player->pause(); + musicPlaying = false; + } -void I_StopSong(int handle) -{ - music_player->stop(); - musicPlaying = false; -} + void I_ResumeSong(int handle) { + music_player->resume(); + musicPlaying = true; + } -void I_UnRegisterSong(int handle) -{ - music_player->unregistersong((void *)handle); -} + void I_StopSong(int handle) { + music_player->stop(); + musicPlaying = false; + } -int I_RegisterSong(const void *data, size_t len) -{ - uint8_t *mid = NULL; - size_t midlen; - int handle = 0; + void I_UnRegisterSong(int handle) { + music_player->unregistersong((void *)handle); + } - if (mus2mid((const byte*)data, len, &mid, &midlen, 64) == 0) - handle = (int)music_player->registersong(mid, midlen); - else - handle = (int)music_player->registersong(data, len); + int I_RegisterSong(const void *data, size_t len) { + uint8_t *mid = NULL; + size_t midlen; + int handle = 0; - free(mid); + if (mus2mid((const byte*)data, len, &mid, &midlen, 64) == 0) + handle = (int)music_player->registersong(mid, midlen); + else + handle = (int)music_player->registersong(data, len); - return handle; -} + free(mid); -void I_SetMusicVolume(int volume) -{ - static auto& box = BoxEmu::get(); - box.volume(volume / 100.0f); -} + return handle; + } -void I_StartTic(void) -{ - static int64_t last_time = 0; - static int32_t prev_joystick = 0x0000; + void I_SetMusicVolume(int volume) { + music_player->setvolume(volume); + } - static auto& box = BoxEmu::get(); - auto state = box.gamepad_state(); - auto joystick = state.buttons; + void I_StartTic(void) { + static int32_t prev_joystick = 0x0000; - uint32_t changed = prev_joystick ^ joystick; - event_t event = {}; + static auto& box = BoxEmu::get(); + auto state = box.gamepad_state(); + auto joystick = state.buttons; - if (changed) - { - for (int i = 0; i < std::size(keymap); i++) - { - auto key_bit = 1 << keymap[i].mask; - if (changed & key_bit) - { - event.type = (joystick & key_bit) ? ev_keydown : ev_keyup; - event.data1 = *keymap[i].key; - D_PostEvent(&event); + uint32_t changed = prev_joystick ^ joystick; + event_t event = {}; + + if (changed) { + for (int i = 0; i < std::size(keymap); i++) { + auto key_bit = 1 << keymap[i].mask; + if (changed & key_bit) { + event.type = (joystick & key_bit) ? ev_keydown : ev_keyup; + event.data1 = *keymap[i].key; + D_PostEvent(&event); + } } } - } - last_time = esp_timer_get_time(); - prev_joystick = joystick; -} + prev_joystick = joystick; + } -void I_Init(void) -{ - snd_channels = NUM_MIX_CHANNELS; - snd_samplerate = AUDIO_SAMPLE_RATE; - snd_MusicVolume = 15; - snd_SfxVolume = 15; - // usegamma = rg_settings_get_number(NS_APP, SETTING_GAMMA, 0); -} + void I_Init(void) { + snd_channels = NUM_MIX_CHANNELS; + snd_samplerate = AUDIO_SAMPLE_RATE; + snd_MusicVolume = 50; + snd_SfxVolume = 50; + usegamma = 0; + } } // extern "C" static std::string doom_wad_path = ""; @@ -624,16 +550,16 @@ void init_doom(const std::string& wad_filename, uint8_t *wad_data, size_t wad_da mixbuffer = (uint16_t *)shared_malloc(sizeof(uint16_t) * AUDIO_BUFFER_LENGTH); // needed for dbopl - #if ( DBOPL_WAVE == WAVE_HANDLER ) || ( DBOPL_WAVE == WAVE_TABLELOG ) +#if ( DBOPL_WAVE == WAVE_HANDLER ) || ( DBOPL_WAVE == WAVE_TABLELOG ) ExpTable = (Bit16u *)shared_malloc(sizeof(Bit16u) * 256); - #endif - #if ( DBOPL_WAVE == WAVE_HANDLER ) +#endif +#if ( DBOPL_WAVE == WAVE_HANDLER ) SinTable = (Bit16u *)shared_malloc(sizeof(Bit16u) * 512); - #endif +#endif WaveTable = (Bit16s *)shared_malloc(sizeof(Bit16s) * 8 * 512); - #if ( DBOPL_WAVE == WAVE_TABLEMUL ) +#if ( DBOPL_WAVE == WAVE_TABLEMUL ) MulTable = (Bit16u *)shared_malloc(sizeof(Bit16u) * 384); - #endif +#endif KslTable = (Bit8u *)shared_malloc(sizeof(Bit8u) * 8 * 16); TremoloTable = (Bit8u *)shared_malloc(sizeof(Bit8u) * TREMOLO_TABLE); ChanOffsetTable = (Bit16u *)shared_malloc(sizeof(Bit16u) * 32); @@ -756,12 +682,10 @@ void init_doom(const std::string& wad_filename, uint8_t *wad_data, size_t wad_da // doom_argv[6] = pwad; doom_argv[myargc] = 0; - // Some things might be nice to place in internal RAM, but I do not have time to find such - // structures. So for now, prefer external RAM for most things except the framebuffer which - // is allocated above. - heap_caps_malloc_extmem_enable(0); - // Initialize game + void* pool_ptr = (void*)BoxEmu::get().romdata(); + pool_create(pool_ptr, 4 * 1024 * 1024); + // Z_SetPoolPointer(pool_ptr, 4 * 1024 * 1024); Z_Init(); D_DoomMainSetup(); @@ -809,30 +733,27 @@ void run_doom_rom() { auto end = esp_timer_get_time(); uint64_t elapsed = end - start; update_frame_time(elapsed); - // static constexpr uint64_t max_frame_time = 1000000 / 60; - // if (!unlock && elapsed < max_frame_time) { - // auto sleep_time = (max_frame_time - elapsed) / 1e3; - // std::this_thread::sleep_for(sleep_time * std::chrono::milliseconds(1)); - // } } -void load_doom(std::string_view save_path) { - if (save_path.size()) { - // TODO: - // G_LoadGame(save_path.data()); +void load_doom(int save_slot) { + if (save_slot >= 0) { + bool command = false; // TODO: what does this do? + G_LoadGame(save_slot, command); } } -void save_doom(std::string_view save_path) { - if (save_path.size()) { - // TODO: - // G_SaveGame(save_path.data()); +void save_doom(int save_slot) { + if (save_slot >= 0) { + auto description = fmt::format("Save Slot {}", save_slot); + G_SaveGame(save_slot, const_cast(description.c_str())); } } -std::vector get_doom_video_buffer() { +std::span get_doom_video_buffer() { size_t num_pixels = SCREENWIDTH * SCREENHEIGHT; - std::vector frame(num_pixels * sizeof(uint16_t)); + uint8_t *span_ptr = (uint8_t*)(currentBuffer ? displayBuffer[0] : displayBuffer[1]); + + std::span frame(span_ptr, num_pixels * sizeof(uint16_t)); // use the palette to convert the framebuffer to RGB565 const uint8_t *buf = (const uint8_t*)framebuffer; const uint16_t *palette = BoxEmu::get().palette(); @@ -853,8 +774,9 @@ void deinit_doom() { // End display I_EndDisplay(); // Free memory - Z_FreeTags(0, PU_MAX); + Z_Close(); // reset audio state BoxEmu::get().audio_sample_rate(48000); shared_mem_clear(); + pool_destroy(); } diff --git a/components/gbc/include/gameboy.hpp b/components/gbc/include/gameboy.hpp index 4107b68..b108e7d 100644 --- a/components/gbc/include/gameboy.hpp +++ b/components/gbc/include/gameboy.hpp @@ -1,5 +1,6 @@ #pragma once +#include #include #include #include @@ -10,4 +11,4 @@ void load_gameboy(std::string_view save_path); void save_gameboy(std::string_view save_path); void run_gameboy_rom(); void deinit_gameboy(); -std::vector get_gameboy_video_buffer(); +std::span get_gameboy_video_buffer(); diff --git a/components/gbc/src/gameboy.cpp b/components/gbc/src/gameboy.cpp index cf5de70..62dbf16 100644 --- a/components/gbc/src/gameboy.cpp +++ b/components/gbc/src/gameboy.cpp @@ -209,14 +209,8 @@ void save_gameboy(std::string_view save_path) { fclose(f); } -std::vector get_gameboy_video_buffer() { - const uint8_t* frame_buffer = BoxEmu::get().frame_buffer0(); - // copy the frame buffer to a new buffer - auto width = GAMEBOY_SCREEN_WIDTH; - auto height = GAMEBOY_SCREEN_HEIGHT; - std::vector new_frame_buffer(width * 2 * height); - memcpy(new_frame_buffer.data(), frame_buffer, width * 2 * height); - return new_frame_buffer; +std::span get_gameboy_video_buffer() { + return std::span((uint8_t*)framebuffer, GAMEBOY_SCREEN_WIDTH * GAMEBOY_SCREEN_HEIGHT * 2); } void deinit_gameboy() { diff --git a/components/gbc/src/gbc_shared_memory.cpp b/components/gbc/src/gbc_shared_memory.cpp index ecc3701..369a3ca 100644 --- a/components/gbc/src/gbc_shared_memory.cpp +++ b/components/gbc/src/gbc_shared_memory.cpp @@ -1,6 +1,7 @@ +#include "format.hpp" + #include "gbc_shared_memory.hpp" #include "shared_memory.h" -#include "esp_log.h" #include @@ -18,8 +19,6 @@ extern "C" { #include } -static const char *TAG = "gbc_shared_memory"; - // GBC memory sizes #define GBC_VRAM_SIZE (16 * 1024) // 16KB VRAM #define GBC_WRAM_SIZE (32 * 1024) // 32KB WRAM @@ -37,19 +36,9 @@ extern byte *bgdup; // [256] void gbc_init_shared_memory(void) { // Allocate VRAM in shared memory vram_ptr = (uint8_t*)shared_malloc(GBC_VRAM_SIZE); - if (!vram_ptr) { - ESP_LOGE(TAG, "Failed to allocate VRAM"); - return; - } - memset(vram_ptr, 0, GBC_VRAM_SIZE); // Allocate WRAM in shared memory wram_ptr = (uint8_t*)shared_malloc(GBC_WRAM_SIZE); - if (!wram_ptr) { - ESP_LOGE(TAG, "Failed to allocate WRAM"); - return; - } - memset(wram_ptr, 0, GBC_WRAM_SIZE); // allocate gbc scan object in shared memory scan = (struct gbc_scan*)shared_malloc(sizeof(struct gbc_scan)); @@ -64,13 +53,10 @@ void gbc_init_shared_memory(void) { // Allocate audio buffer in shared memory audio_ptr = (uint8_t*)shared_malloc(GBC_AUDIO_BUFFER_SIZE); - if (!audio_ptr) { - ESP_LOGE(TAG, "Failed to allocate audio buffer"); - return; - } - memset(audio_ptr, 0, GBC_AUDIO_BUFFER_SIZE); bgdup = (byte*)shared_malloc(256); + + fmt::print("Num bytes allocated: {}\n", shared_num_bytes_allocated()); } void gbc_free_shared_memory(void) { diff --git a/components/genesis/include/genesis.hpp b/components/genesis/include/genesis.hpp index 7f4cfb5..e091004 100644 --- a/components/genesis/include/genesis.hpp +++ b/components/genesis/include/genesis.hpp @@ -1,10 +1,12 @@ #pragma once +#include +#include +#include #include #include #include -#include -#include + #include "genesis_shared_memory.hpp" #include "z80_shared_memory.hpp" #include "box-emu.hpp" @@ -32,7 +34,7 @@ void run_genesis_rom(); void deinit_genesis(); // Get the Genesis video buffer -std::vector get_genesis_video_buffer(); +std::span get_genesis_video_buffer(); #ifdef __cplusplus } diff --git a/components/genesis/src/genesis.cpp b/components/genesis/src/genesis.cpp index 3af4853..c33a952 100644 --- a/components/genesis/src/genesis.cpp +++ b/components/genesis/src/genesis.cpp @@ -36,7 +36,6 @@ static uint8_t *frame_buffer = nullptr; /// BEGIN GWENESIS EMULATOR -extern unsigned char* VRAM; extern int zclk; static int system_clock; int scan_line; @@ -55,12 +54,7 @@ static int frameskip = full_frameskip; static FILE *savestate_fp = NULL; static int savestate_errors = 0; -uint8_t *M68K_RAM = nullptr; // MAX_RAM_SIZE -uint8_t *ZRAM = nullptr; // MAX_Z80_RAM_SIZE - -int32_t *lfo_pm_table = nullptr; // 128*8*32 - -signed int *tl_tab = nullptr; // 13*2*TL_RES_LEN (13*2*256) +int32_t *lfo_pm_table = nullptr; // 128*8*32*sizeof(int32_t) = 131072 bytes extern unsigned char *gwenesis_vdp_regs; // [0x20]; extern unsigned int gwenesis_vdp_status; @@ -147,32 +141,19 @@ void reset_genesis() { } static void init(uint8_t *romdata, size_t rom_data_size) { - static bool initialized = false; - - VRAM = (uint8_t*)shared_malloc(VRAM_MAX_SIZE); // 0x10000 (64kB) for VRAM - M68K_RAM = (uint8_t*)shared_malloc(MAX_RAM_SIZE); // 0x10000 (64kB) for M68K RAM - // ZRAM = (uint8_t*)shared_malloc(MAX_Z80_RAM_SIZE); // 0x2000 (8kB) for Z80 RAM + genesis_init_shared_memory(); + // local shared memory (used in this file): palette = (uint16_t*)shared_malloc(sizeof(uint16_t) * PALETTE_SIZE); - // gwenesis_sn76489_buffer = (int16_t*)shared_malloc(AUDIO_BUFFER_LENGTH * sizeof(int16_t)); - // gwenesis_ym2612_buffer = (int16_t*)shared_malloc(AUDIO_BUFFER_LENGTH * sizeof(int16_t)); + gwenesis_sn76489_buffer = (int16_t*)shared_malloc(AUDIO_BUFFER_LENGTH * sizeof(int16_t)); + gwenesis_ym2612_buffer = (int16_t*)shared_malloc(AUDIO_BUFFER_LENGTH * sizeof(int16_t)); - genesis_init_shared_memory(); - - if (!initialized) { - gwenesis_sn76489_buffer = (int16_t*)heap_caps_malloc(AUDIO_BUFFER_LENGTH * sizeof(int16_t), MALLOC_CAP_8BIT | MALLOC_CAP_SPIRAM); - gwenesis_ym2612_buffer = (int16_t*)heap_caps_malloc(AUDIO_BUFFER_LENGTH * sizeof(int16_t), MALLOC_CAP_8BIT | MALLOC_CAP_SPIRAM); - // VRAM = (uint8_t*)heap_caps_malloc(VRAM_MAX_SIZE, MALLOC_CAP_8BIT | MALLOC_CAP_SPIRAM); // 0x10000 (64kB) for VRAM - // M68K_RAM = (uint8_t*)heap_caps_malloc(MAX_RAM_SIZE, MALLOC_CAP_8BIT | MALLOC_CAP_SPIRAM); // 0x10000 (64kB) for M68K RAM - ZRAM = (uint8_t*)heap_caps_malloc(MAX_Z80_RAM_SIZE, MALLOC_CAP_8BIT | MALLOC_CAP_SPIRAM); // 0x2000 (8kB) for Z80 RAM - lfo_pm_table = (int32_t*)heap_caps_malloc(128*8*32 * sizeof(int32_t), MALLOC_CAP_8BIT | MALLOC_CAP_SPIRAM); - tl_tab = (signed int*)heap_caps_malloc(13*2*256 * sizeof(signed int), MALLOC_CAP_8BIT | MALLOC_CAP_SPIRAM); - } + // PSRAM (too big for shared mem): + M68K_RAM = (uint8_t*)heap_caps_malloc(MAX_RAM_SIZE, MALLOC_CAP_8BIT | MALLOC_CAP_SPIRAM); // 0x10000 (64kB) for M68K RAM + lfo_pm_table = (int32_t*)heap_caps_malloc(128*8*32 * sizeof(int32_t), MALLOC_CAP_8BIT | MALLOC_CAP_SPIRAM); load_cartridge(romdata, rom_data_size); - power_on(); - reset_genesis(); frame_counter = 0; @@ -185,7 +166,8 @@ static void init(uint8_t *romdata, size_t rom_data_size) { : BoxEmu::get().frame_buffer0(); gwenesis_vdp_set_buffer(frame_buffer); - initialized = true; + fmt::print("Num bytes allocated: {}\n", shared_num_bytes_allocated()); + reset_frame_time(); } @@ -382,10 +364,18 @@ void save_genesis(std::string_view save_path) { fclose(savestate_fp); } -std::vector get_genesis_video_buffer() { +std::span get_genesis_video_buffer() { static constexpr int height = GENESIS_VISIBLE_HEIGHT; static constexpr int width = GENESIS_SCREEN_WIDTH; - std::vector frame(width * height * 2); + + auto *span_buffer = !frame_buffer_index + ? BoxEmu::get().frame_buffer1() + : BoxEmu::get().frame_buffer0(); + + // make a span from the _other_ frame buffer so we can reuse memory + // this is a bit of a hack, but it works + std::span frame(span_buffer, width * height * 2); + // the frame data for genesis is stored in the frame buffer as 8 bit palette // indexes, so we need to convert it to 16 bit color const uint8_t *buffer = (const uint8_t*)frame_buffer; @@ -400,4 +390,6 @@ std::vector get_genesis_video_buffer() { void deinit_genesis() { BoxEmu::get().audio_sample_rate(48000); shared_mem_clear(); + free(M68K_RAM); + free(lfo_pm_table); } diff --git a/components/genesis/src/genesis_shared_memory.cpp b/components/genesis/src/genesis_shared_memory.cpp index c21095a..03a80b2 100644 --- a/components/genesis/src/genesis_shared_memory.cpp +++ b/components/genesis/src/genesis_shared_memory.cpp @@ -11,8 +11,7 @@ extern "C" { #include "gwenesis_vdp.h" } -static const char *TAG = "genesis_shared_memory"; - +extern unsigned char* VRAM; extern unsigned short *CRAM; // [CRAM_MAX_SIZE]; // CRAM - Palettes extern unsigned char *SAT_CACHE; // [SAT_CACHE_MAX_SIZE]; // Sprite cache extern unsigned char *gwenesis_vdp_regs; // [REG_SIZE]; // Registers @@ -20,13 +19,16 @@ extern unsigned short *fifo; // [FIFO_SIZE]; // Fifo extern unsigned short *CRAM565; // [CRAM_MAX_SIZE * 4]; // CRAM - Palettes extern unsigned short *VSRAM; // [VSRAM_MAX_SIZE]; // VSRAM - Scrolling +uint8_t *M68K_RAM = nullptr; // MAX_RAM_SIZE +uint8_t *ZRAM = nullptr; // MAX_Z80_RAM_SIZE +signed int *tl_tab = nullptr; // 13*2*TL_RES_LEN (13*2*256 * sizeof(signed int)) = 26624 bytes + void genesis_init_shared_memory(void) { // allocate m68k cpu state in shared memory m68k = (m68ki_cpu_core*)shared_malloc(sizeof(m68ki_cpu_core)); - if (!m68k) { - ESP_LOGE(TAG, "Failed to allocate M68K CPU state"); - return; - } + + VRAM = (uint8_t*)shared_malloc(VRAM_MAX_SIZE); // 0x10000 (64kB) for VRAM + ZRAM = (uint8_t*)shared_malloc(MAX_Z80_RAM_SIZE); // 0x2000 (8kB) for Z80 RAM ym2612 = (YM2612*)shared_malloc(sizeof(YM2612)); OPNREGS = (uint8_t*)shared_malloc(512); @@ -41,6 +43,8 @@ void genesis_init_shared_memory(void) { fifo = (uint16_t*)shared_malloc(FIFO_SIZE * sizeof(uint16_t)); CRAM565 = (uint16_t*)shared_malloc(CRAM_MAX_SIZE * 4 * sizeof(uint16_t)); VSRAM = (uint16_t*)shared_malloc(VSRAM_MAX_SIZE * sizeof(uint16_t)); + + tl_tab = (signed int*)shared_malloc(13*2*256 * sizeof(signed int)); } void genesis_free_shared_memory(void) { diff --git a/components/menu/include/menu.hpp b/components/menu/include/menu.hpp index 9b4b2ed..271445a 100644 --- a/components/menu/include/menu.hpp +++ b/components/menu/include/menu.hpp @@ -52,9 +52,12 @@ class Menu { } ~Menu() { - espp::EventManager::get().remove_subscriber(mute_button_topic, "menu"); - espp::EventManager::get().remove_subscriber(battery_topic, "menu"); - espp::EventManager::get().remove_subscriber(volume_changed_topic, "menu"); + { + std::lock_guard lk(mutex_); + espp::EventManager::get().remove_subscriber(mute_button_topic, "menu"); + espp::EventManager::get().remove_subscriber(battery_topic, "menu"); + espp::EventManager::get().remove_subscriber(volume_changed_topic, "menu"); + } task_.stop(); deinit_ui(); } @@ -134,6 +137,7 @@ class Menu { VideoSetting get_video_setting(); void on_mute_button_pressed(const std::vector& data) { + std::lock_guard lk(mutex_); set_mute(BoxEmu::get().is_muted()); } @@ -184,8 +188,8 @@ class Menu { lv_image_dsc_t state_image_; lv_image_dsc_t paused_image_; - std::vector state_image_data_; - std::vector paused_image_data_; + std::span state_image_data_; + std::span paused_image_data_; lv_obj_t *previous_screen_{nullptr}; diff --git a/components/menu/src/menu.cpp b/components/menu/src/menu.cpp index 417c12d..0d513b4 100644 --- a/components/menu/src/menu.cpp +++ b/components/menu/src/menu.cpp @@ -112,6 +112,8 @@ void Menu::deinit_ui() { lv_obj_del(ui_Screen1); // delete the group lv_group_del(group_); + // reset the style(s) + lv_style_reset(&button_style_); } void Menu::update_slot_display() { @@ -151,7 +153,8 @@ void Menu::update_slot_image() { height = (header[2] << 8) | (header[3]); logger_.info("Slot image is {}x{}", width, height); int state_image_data_size = size - header_size; - state_image_data_.resize(state_image_data_size); + // state_image_data_.resize(state_image_data_size); + state_image_data_ = std::span(BoxEmu::get().frame_buffer0(), state_image_data_size); file.read((char*)state_image_data_.data(), state_image_data_size); file.close(); memset(&state_image_, 0, sizeof(state_image_)); @@ -190,7 +193,8 @@ void Menu::update_pause_image() { height = (header[2] << 8) | (header[3]); logger_.info("Paused image is {}x{}", width, height); int paused_image_data_size = size - header_size; - paused_image_data_.resize(paused_image_data_size); + // paused_image_data_.resize(paused_image_data_size); + paused_image_data_ = std::span(BoxEmu::get().frame_buffer1(), paused_image_data_size); file.read((char*)paused_image_data_.data(), paused_image_data_size); file.close(); memset(&paused_image_, 0, sizeof(paused_image_)); @@ -327,12 +331,14 @@ void Menu::on_pressed(lv_event_t *e) { } void Menu::on_volume(const std::vector& data) { + std::lock_guard lk(mutex_); // the volume was changed, update our display of the volume lv_bar_set_value(ui_Bar2, BoxEmu::get().volume(), LV_ANIM_ON); } void Menu::on_battery(const std::vector& data) { - // parse the data as a BatteryInfo message + std::lock_guard lk(mutex_); + // parse the data as a BatteryInfo message std::error_code ec; auto battery_info = espp::deserialize(data, ec); if (ec) { diff --git a/components/msx/fmsx/src/fMSX/MSX.c b/components/msx/fmsx/src/fMSX/MSX.c index 1a789be..800b733 100644 --- a/components/msx/fmsx/src/fMSX/MSX.c +++ b/components/msx/fmsx/src/fMSX/MSX.c @@ -345,6 +345,18 @@ static int hasext(const char *FileName,const char *Ext) return(0); } +#include "pool_allocator.h" + +static void* my_malloc(size_t size) +{ + return pool_alloc(size); +} + +static void my_free(void* p) +{ + pool_free(p); +} + /** GetMemory() **********************************************/ /** Allocate a memory chunk of given size using malloc(). **/ /** Store allocated address in Chunks[] for later disposal. **/ @@ -355,7 +367,7 @@ static byte *GetMemory(int Size) byte *P; if((Size<=0)||(NChunks>=MAXCHUNKS)) return(0); - P=(byte *)malloc(Size); + P=(byte *)my_malloc(Size); if(P) Chunks[NChunks++]=P; return(P); @@ -374,7 +386,7 @@ static void FreeMemory(const void *Ptr) for(J=0;(J #include #include #include @@ -15,4 +16,4 @@ void deinit_msx(); void set_msx_video_original(); void set_msx_video_fit(); void set_msx_video_fill(); -std::vector get_msx_video_buffer(); +std::span get_msx_video_buffer(); diff --git a/components/msx/src/msx.cpp b/components/msx/src/msx.cpp index d2a92ab..a24bcad 100644 --- a/components/msx/src/msx.cpp +++ b/components/msx/src/msx.cpp @@ -435,31 +435,36 @@ extern char *msx_path_buffer; // [100]; extern char *msx_path_cwd; // [100] = "/sdcard/"; void init_msx(const std::string& rom_filename, uint8_t *romdata, size_t rom_data_size) { - // init shared memory - msx_path_buffer = (char*)shared_malloc(100); - msx_path_cwd = (char*)shared_malloc(100); - snprintf(msx_path_cwd, strlen("/sdcard/") + 1, "%s", "/sdcard/"); - BPal = (uint16_t*)shared_malloc(256 * sizeof(uint16_t)); - XPal = (uint16_t*)shared_malloc(80 * sizeof(uint16_t)); - NormScreen = (Image*)shared_malloc(sizeof(Image)); - CPU = (Z80*)shared_malloc(sizeof(Z80)); - Chunks = (void**)shared_malloc(sizeof(void*) * MAXCHUNKS); - PPI = (I8255*)shared_malloc(sizeof(I8255)); - FDC = (WD1793*)shared_malloc(sizeof(WD1793)); - FDD = (FDIDisk*)shared_malloc(sizeof(FDIDisk) * 4); - PSG = (AY8910*)shared_malloc(sizeof(AY8910)); - OPLL = (YM2413*)shared_malloc(sizeof(YM2413)); - SCChip= (SCC*)shared_malloc(sizeof(SCC)); - SIO = (I8251*)shared_malloc(sizeof(I8251)); - MCFEntries = (MCFEntry*)shared_malloc(sizeof(MCFEntry) * MAXCHEATS); - CheatCodes = (CheatCode*)shared_malloc(sizeof(CheatCode) * MAXCHEATS); - Buf = (HUNTEntry*)shared_malloc(sizeof(HUNTEntry) * HUNT_BUFSIZE); - RPLData = (RPLState*)shared_malloc(sizeof(RPLState) * RPL_BUFSIZE); + // init shared memory + msx_path_buffer = (char*)shared_malloc(100); + msx_path_cwd = (char*)shared_malloc(100); + memset(msx_path_buffer, 0, 100); + memset(msx_path_cwd, 0, 100); + sprintf(msx_path_cwd, "%s", "/sdcard"); + BPal = (uint16_t*)shared_malloc(256 * sizeof(uint16_t)); + XPal = (uint16_t*)shared_malloc(80 * sizeof(uint16_t)); + NormScreen = (Image*)shared_malloc(sizeof(Image)); + CPU = (Z80*)shared_malloc(sizeof(Z80)); + Chunks = (void**)shared_malloc(sizeof(void*) * MAXCHUNKS); + PPI = (I8255*)shared_malloc(sizeof(I8255)); + FDC = (WD1793*)shared_malloc(sizeof(WD1793)); + FDD = (FDIDisk*)shared_malloc(sizeof(FDIDisk) * 4); + PSG = (AY8910*)shared_malloc(sizeof(AY8910)); + OPLL = (YM2413*)shared_malloc(sizeof(YM2413)); + SCChip= (SCC*)shared_malloc(sizeof(SCC)); + SIO = (I8251*)shared_malloc(sizeof(I8251)); + MCFEntries = (MCFEntry*)shared_malloc(sizeof(MCFEntry) * MAXCHEATS); + CheatCodes = (CheatCode*)shared_malloc(sizeof(CheatCode) * MAXCHEATS); + Buf = (HUNTEntry*)shared_malloc(sizeof(HUNTEntry) * HUNT_BUFSIZE); + RPLData = (RPLState*)shared_malloc(sizeof(RPLState) * RPL_BUFSIZE); + + void* pool_ptr = BoxEmu::get().romdata(); + pool_create(pool_ptr, 4*1024*1024); // reset unlock unlock = false; - // now init the state + // now init the state displayBuffer[0] = (uint16_t*)BoxEmu::get().frame_buffer0(); displayBuffer[1] = (uint16_t*)BoxEmu::get().frame_buffer1(); currentBuffer = 0; @@ -505,8 +510,6 @@ void init_msx(const std::string& rom_filename, uint8_t *romdata, size_t rom_data void IRAM_ATTR run_msx_rom() { auto start = esp_timer_get_time(); - // static constexpr size_t num_cycles_per_frame = 2000; - // for (int i = 0; i < num_cycles_per_frame; i++) { while (!frame_complete) { RunZ80(CPU); } @@ -531,17 +534,11 @@ void load_msx(std::string_view save_path) { } void save_msx(std::string_view save_path) { - // save_sram((char *)save_path.data(), console_msx); SaveSTA((char *)save_path.data()); } -std::vector get_msx_video_buffer() { - // copy the frame buffer to a new buffer - static constexpr auto width = MSX_SCREEN_WIDTH; - static constexpr auto height = MSX_SCREEN_HEIGHT; - std::vector new_frame_buffer(width * 2 * height); - memcpy(new_frame_buffer.data(), framebuffer, width * 2 * height); - return new_frame_buffer; +std::span get_msx_video_buffer() { + return std::span((uint8_t*)framebuffer, MSX_SCREEN_WIDTH * MSX_SCREEN_HEIGHT * 2); } void deinit_msx() { @@ -550,5 +547,6 @@ void deinit_msx() { RPLTrash(); TrashSound(); shared_mem_clear(); + pool_destroy(); BoxEmu::get().audio_sample_rate(48000); } diff --git a/components/nes/include/nes.hpp b/components/nes/include/nes.hpp index c2cde9b..952739a 100644 --- a/components/nes/include/nes.hpp +++ b/components/nes/include/nes.hpp @@ -1,5 +1,6 @@ #pragma once +#include #include #include #include @@ -10,4 +11,4 @@ void load_nes(std::string_view save_path); void save_nes(std::string_view save_path); void run_nes_rom(); void deinit_nes(); -std::vector get_nes_video_buffer(); +std::span get_nes_video_buffer(); diff --git a/components/nes/include/nes_shared_memory.h b/components/nes/include/nes_shared_memory.h index 0f07c34..5b575db 100644 --- a/components/nes/include/nes_shared_memory.h +++ b/components/nes/include/nes_shared_memory.h @@ -11,16 +11,11 @@ extern "C" { #include // Initialize NES shared memory and hardware components -nes_t* nes_init_shared_memory(void); +void nes_init_shared_memory(void); // Free NES shared memory void nes_free_shared_memory(void); -// NES hardware initialization functions -int nes6502_init(void); -int nes_ppu_init(void); -int nes_apu_init(void); - #ifdef __cplusplus } #endif diff --git a/components/nes/src/nes.cpp b/components/nes/src/nes.cpp index f52ad86..878dd14 100644 --- a/components/nes/src/nes.cpp +++ b/components/nes/src/nes.cpp @@ -1,6 +1,8 @@ #include "nes.hpp" #include "nes_shared_memory.h" +#include "shared_memory.h" + static nes_t* console_nes; #include @@ -16,14 +18,18 @@ static bool unlock = false; static uint8_t first_frame = 0; void init_nes(const std::string& rom_filename, uint8_t *romdata, size_t rom_data_size) { + nes_init_shared_memory(); event_init(); osd_init(); vidinfo_t video; osd_getvideoinfo(&video); vid_init(video.default_width, video.default_height, video.driver); - console_nes = nes_init_shared_memory(); + nes_context = nes_create(); + console_nes = nes_context; event_set_system(system_nes); + fmt::print("Num bytes allocated: {}\n", shared_num_bytes_allocated()); + // reset unlock unlock = false; @@ -79,8 +85,10 @@ void save_nes(std::string_view save_path) { save_sram((char *)save_path.data(), console_nes); } -std::vector get_nes_video_buffer() { - std::vector frame(NES_SCREEN_WIDTH * NES_VISIBLE_HEIGHT * 2); +std::span get_nes_video_buffer() { + uint8_t *span_ptr = BoxEmu::get().frame_buffer1(); + std::span frame(span_ptr, NES_SCREEN_WIDTH * NES_VISIBLE_HEIGHT * 2); + // the frame data for the NES is stored in frame_buffer0 as a 8 bit index into the palette // we need to convert this to a 16 bit RGB565 value const uint8_t *frame_buffer0 = BoxEmu::get().frame_buffer0(); diff --git a/components/nes/src/nes_shared_memory.c b/components/nes/src/nes_shared_memory.c index ddc8246..b6eabc0 100644 --- a/components/nes/src/nes_shared_memory.c +++ b/components/nes/src/nes_shared_memory.c @@ -1,12 +1,9 @@ #include "nes_shared_memory.h" #include "nes_external.h" #include "shared_memory.h" -#include "esp_log.h" #include -static const char *TAG = "nes_shared_memory"; - // Define the external nes variable in shared memory nes_t *nes_context; @@ -33,7 +30,7 @@ extern int32 *mmc5_decay_lut; // [16]; extern int *mmc5_vbl_lut; // [32]; extern mmc5_t *mmc5; -nes_t* nes_init_shared_memory(void) { +void nes_init_shared_memory(void) { nes_palette = (rgb_t*)shared_malloc(sizeof(rgb_t)* 256); decay_lut = (int32*)shared_malloc(sizeof(int32)*16); // 16 @@ -52,15 +49,6 @@ nes_t* nes_init_shared_memory(void) { mmc5 = (mmc5_t*)shared_malloc(sizeof(mmc5_t)); nes_cpu = (nes6502_context *)_my_malloc(sizeof(nes6502_context)); - - nes_context = nes_create(); - - if (!nes_context) { - ESP_LOGE("nes_init_shared_memory", "Failed to allocate NES state"); - return NULL; - } - - return nes_context; } void nes_free_shared_memory(void) { diff --git a/components/nes/src/video_audio.cpp b/components/nes/src/video_audio.cpp index eec714a..692598c 100644 --- a/components/nes/src/video_audio.cpp +++ b/components/nes/src/video_audio.cpp @@ -30,7 +30,7 @@ extern "C" { //Seemingly, this will be called only once. Should call func with a freq of frequency, extern "C" int osd_installtimer(int frequency, void *func, int funcsize, void *counter, int countersize) { - return 0; + return 0; } /* @@ -38,37 +38,45 @@ extern "C" int osd_installtimer(int frequency, void *func, int funcsize, void *c */ static void (*audio_callback)(void *buffer, int length) = NULL; +static int num_channels = 2; +static int num_samples = 0; +static int num_bytes = 0; +static int16_t *audio_frame = nullptr; + + extern "C" void do_audio_frame() { - if (audio_callback == NULL) return; - static int num_channels = 2; - static int num_samples = BoxEmu::get().audio_sample_rate() * num_channels / NES_REFRESH_RATE; - static int num_bytes = num_samples * sizeof(int16_t); - static int16_t *audio_frame = (int16_t*)heap_caps_malloc(num_bytes, MALLOC_CAP_8BIT | MALLOC_CAP_SPIRAM); - audio_callback(audio_frame, num_samples); - BoxEmu::get().play_audio((uint8_t*)audio_frame, num_bytes); + if (audio_callback == NULL) return; + audio_callback(audio_frame, num_samples); + BoxEmu::get().play_audio((uint8_t*)audio_frame, num_bytes); } extern "C" void osd_setsound(void (*playfunc)(void *buffer, int length)) { - //Indicates we should call playfunc() to get more data. - audio_callback = playfunc; + //Indicates we should call playfunc() to get more data. + audio_callback = playfunc; } static void osd_stopsound(void) { - audio_callback = NULL; + free(audio_frame); + audio_callback = NULL; } static int osd_init_sound(void) { - audio_callback = NULL; - return 0; + if (audio_frame == nullptr) { + num_samples = BoxEmu::get().audio_sample_rate() * num_channels / NES_REFRESH_RATE; + num_bytes = num_samples * sizeof(int16_t); + audio_frame = (int16_t*)heap_caps_malloc(num_bytes, MALLOC_CAP_8BIT | MALLOC_CAP_SPIRAM); + } + audio_callback = NULL; + return 0; } extern "C" void osd_getsoundinfo(sndinfo_t *info) { - info->sample_rate = BoxEmu::get().audio_sample_rate(); - info->bps = 16; + info->sample_rate = BoxEmu::get().audio_sample_rate(); + info->bps = 16; } /* @@ -85,26 +93,26 @@ static void free_write(int num_dirties, rect_t *dirty_rects); static void custom_blit(const bitmap_t *bmp, int num_dirties, rect_t *dirty_rects); viddriver_t sdlDriver = -{ - "Simple DirectMedia Layer", /* name */ - init, /* init */ - shutdown, /* shutdown */ - set_mode, /* set_mode */ - set_palette, /* set_palette */ - clear, /* clear */ - lock_write, /* lock_write */ - free_write, /* free_write */ - (void (*)(bitmap_t *, int, rect_t *))custom_blit, /* custom_blit */ - false /* invalidate flag */ -}; + { + "Simple DirectMedia Layer", /* name */ + init, /* init */ + shutdown, /* shutdown */ + set_mode, /* set_mode */ + set_palette, /* set_palette */ + clear, /* clear */ + lock_write, /* lock_write */ + free_write, /* free_write */ + (void (*)(bitmap_t *, int, rect_t *))custom_blit, /* custom_blit */ + false /* invalidate flag */ + }; bitmap_t *myBitmap; void osd_getvideoinfo(vidinfo_t *info) { - info->default_width = DEFAULT_WIDTH; - info->default_height = DEFAULT_HEIGHT; - info->driver = &sdlDriver; + info->default_width = DEFAULT_WIDTH; + info->default_height = DEFAULT_HEIGHT; + info->driver = &sdlDriver; } /* flip between full screen and windowed */ @@ -115,7 +123,7 @@ void osd_togglefullscreen(int code) /* initialise video */ static int init(int width, int height) { - return 0; + return 0; } static void shutdown(void) @@ -125,7 +133,7 @@ static void shutdown(void) /* set a video mode */ static int set_mode(int width, int height) { - return 0; + return 0; } uint16 *myPalette = nullptr; @@ -133,23 +141,23 @@ uint16 *myPalette = nullptr; /* copy nes palette over to hardware */ static void set_palette(rgb_t *pal) { - uint16 c; + uint16 c; - int i; + int i; - myPalette = (uint16_t*)_my_malloc(256 * sizeof(uint16)); + myPalette = (uint16_t*)_my_malloc(256 * sizeof(uint16)); - printf("set palette!\n"); - for (i = 0; i < 256; i++) - { + printf("set palette!\n"); + for (i = 0; i < 256; i++) + { c = make_color(pal[i].r, pal[i].g, pal[i].b); myPalette[i]= c; - } + } } uint16_t* get_nes_palette() { - return (uint16_t*)myPalette; + return (uint16_t*)myPalette; } /* clear all frames to a particular color */ @@ -160,27 +168,27 @@ static void clear(uint8 color) /* acquire the directbuffer for writing */ static bitmap_t *lock_write(void) { -// SDL_LockSurface(mySurface); - myBitmap = bmp_createhw((uint8*)BoxEmu::get().frame_buffer1(), DEFAULT_WIDTH, DEFAULT_HEIGHT, DEFAULT_WIDTH*2); - // make sure they don't try to delete the frame buffer lol - myBitmap->hardware = true; - return myBitmap; + // SDL_LockSurface(mySurface); + myBitmap = bmp_createhw((uint8*)BoxEmu::get().frame_buffer1(), DEFAULT_WIDTH, DEFAULT_HEIGHT, DEFAULT_WIDTH*2); + // make sure they don't try to delete the frame buffer lol + myBitmap->hardware = true; + return myBitmap; } /* release the resource */ static void free_write(int num_dirties, rect_t *dirty_rects) { - bmp_destroy(&myBitmap); + bmp_destroy(&myBitmap); } static void custom_blit(const bitmap_t *bmp, int num_dirties, rect_t *dirty_rects) { - uint8_t *lcdfb = BoxEmu::get().frame_buffer0(); - if (bmp->line[0] != NULL) + uint8_t *lcdfb = BoxEmu::get().frame_buffer0(); + if (bmp->line[0] != NULL) { - memcpy(lcdfb, bmp->line[0], 256 * 224); + memcpy(lcdfb, bmp->line[0], 256 * 224); - void* arg = (void*)lcdfb; - BoxEmu::get().push_frame(arg); + void* arg = (void*)lcdfb; + BoxEmu::get().push_frame(arg); } } @@ -190,28 +198,28 @@ static void custom_blit(const bitmap_t *bmp, int num_dirties, rect_t *dirty_rect static int ConvertJoystickInput() { - int result = 0; - - auto state = BoxEmu::get().gamepad_state(); - - if (!state.a) - result |= (1<<13); - if (!state.b) - result |= (1 << 14); - if (!state.select) - result |= (1 << 0); - if (!state.start) - result |= (1 << 3); - if (!state.right) - result |= (1 << 5); - if (!state.left) - result |= (1 << 7); - if (!state.up) - result |= (1 << 4); - if (!state.down) - result |= (1 << 6); - - return result; + int result = 0; + + auto state = BoxEmu::get().gamepad_state(); + + if (!state.a) + result |= (1<<13); + if (!state.b) + result |= (1 << 14); + if (!state.select) + result |= (1 << 0); + if (!state.start) + result |= (1 << 3); + if (!state.right) + result |= (1 << 5); + if (!state.left) + result |= (1 << 7); + if (!state.up) + result |= (1 << 4); + if (!state.down) + result |= (1 << 6); + + return result; } @@ -220,24 +228,24 @@ extern nes6502_context cpu; extern "C" void osd_getinput(void) { - static const int ev[16]={ - event_joypad1_select,0,0,event_joypad1_start,event_joypad1_up,event_joypad1_right,event_joypad1_down,event_joypad1_left, - 0,0,0,0,event_soft_reset,event_joypad1_a,event_joypad1_b,event_hard_reset - }; - static int oldb=0xffff; - int b=ConvertJoystickInput(); - int chg=b^oldb; - int x; - oldb=b; - event_t evh; - for (x=0; x<16; x++) { - if (chg&1) { - evh=event_get(ev[x]); - if (evh) evh((b&1)?INP_STATE_BREAK:INP_STATE_MAKE); - } - chg>>=1; - b>>=1; - } + static const int ev[16]={ + event_joypad1_select,0,0,event_joypad1_start,event_joypad1_up,event_joypad1_right,event_joypad1_down,event_joypad1_left, + 0,0,0,0,event_soft_reset,event_joypad1_a,event_joypad1_b,event_hard_reset + }; + static int oldb=0xffff; + int b=ConvertJoystickInput(); + int chg=b^oldb; + int x; + oldb=b; + event_t evh; + for (x=0; x<16; x++) { + if (chg&1) { + evh=event_get(ev[x]); + if (evh) evh((b&1)?INP_STATE_BREAK:INP_STATE_MAKE); + } + chg>>=1; + b>>=1; + } } // cppcheck-suppress constParameterPointer @@ -252,12 +260,12 @@ extern "C" void osd_getmouse(int *x, int *y, int *button) /* this is at the bottom, to eliminate warnings */ extern "C" void osd_shutdown() { - osd_stopsound(); + osd_stopsound(); } static int logprint(const char *string) { - return printf("%s", string); + return printf("%s", string); } /* @@ -268,7 +276,7 @@ bool forceConsoleReset = false; int osd_init() { - log_chain_logfunc(logprint); - osd_init_sound(); - return 0; + log_chain_logfunc(logprint); + osd_init_sound(); + return 0; } diff --git a/components/pool_allocator/CMakeLists.txt b/components/pool_allocator/CMakeLists.txt new file mode 100644 index 0000000..247af0b --- /dev/null +++ b/components/pool_allocator/CMakeLists.txt @@ -0,0 +1,5 @@ +idf_component_register( + INCLUDE_DIRS "include" + SRC_DIRS "src" + REQUIRES "" +) diff --git a/components/pool_allocator/include/pool_allocator.h b/components/pool_allocator/include/pool_allocator.h new file mode 100644 index 0000000..635bb4a --- /dev/null +++ b/components/pool_allocator/include/pool_allocator.h @@ -0,0 +1,26 @@ +#ifndef POOL_ALLOCATOR_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include +#include +#include + +// This file contains the declaration of a simple memory pool allocator. This +// memory pool is actually designed to be given a single (large) block of memory +// which it will then manage allocations/deallocations within + +void pool_create(void* region, size_t size); +void pool_destroy(); +void* pool_alloc(size_t size); +void pool_free(void* ptr); + +#ifdef __cplusplus +} +#endif + +#endif // POOL_ALLOCATOR_H diff --git a/components/pool_allocator/src/pool_allocator.c b/components/pool_allocator/src/pool_allocator.c new file mode 100644 index 0000000..20ef48d --- /dev/null +++ b/components/pool_allocator/src/pool_allocator.c @@ -0,0 +1,80 @@ +#include "pool_allocator.h" + +#include +#include +#include + +#define ALIGN4(size) (((size) + 3) & ~3) + +typedef struct BlockHeader { + size_t size; + int free; + struct BlockHeader* next; +} BlockHeader; + +#define BLOCK_HEADER_SIZE sizeof(BlockHeader) + +static uint8_t* memory_pool = NULL; +static size_t memory_pool_size = 0; +static BlockHeader* free_list = NULL; + +void pool_create(void* mem, size_t size) { + memory_pool = (uint8_t*)mem; + memory_pool_size = size; + + free_list = (BlockHeader*)memory_pool; + free_list->size = size - BLOCK_HEADER_SIZE; + free_list->free = 1; + free_list->next = NULL; +} + +void* pool_alloc(size_t size) { + size = ALIGN4(size); + BlockHeader* curr = free_list; + + while (curr) { + if (curr->free && curr->size >= size) { + if (curr->size >= size + BLOCK_HEADER_SIZE + 4) { + // Split block + BlockHeader* new_block = (BlockHeader*)((uint8_t*)curr + BLOCK_HEADER_SIZE + size); + new_block->size = curr->size - size - BLOCK_HEADER_SIZE; + new_block->free = 1; + new_block->next = curr->next; + + curr->size = size; + curr->next = new_block; + } + + curr->free = 0; + return (void*)((uint8_t*)curr + BLOCK_HEADER_SIZE); + } + + curr = curr->next; + } + + return NULL; // Out of memory +} + +void pool_free(void* ptr) { + if (!ptr) return; + + BlockHeader* block = (BlockHeader*)((uint8_t*)ptr - BLOCK_HEADER_SIZE); + block->free = 1; + + // Coalesce adjacent free blocks + BlockHeader* curr = free_list; + while (curr && curr->next) { + if (curr->free && curr->next->free) { + curr->size += BLOCK_HEADER_SIZE + curr->next->size; + curr->next = curr->next->next; + } else { + curr = curr->next; + } + } +} + +void pool_destroy() { + memory_pool = NULL; + memory_pool_size = 0; + free_list = NULL; +} diff --git a/components/shared_memory/src/shared_memory.c b/components/shared_memory/src/shared_memory.c index 5b5bdfe..f0a1cf4 100644 --- a/components/shared_memory/src/shared_memory.c +++ b/components/shared_memory/src/shared_memory.c @@ -3,7 +3,15 @@ #include // Total shared memory size - can be tuned based on needs -#define TOTAL_MEMORY_SIZE (145 * 1024) // 256KB total shared memory +// 130KB total shared memory needed. +// +// SMS/GG: 130756 +// Genesis: 121032 +// MSX: 77612 +// Doom: 69724 +// GB/C: 59372 +// NES: 17536 +#define TOTAL_MEMORY_SIZE (130 * 1024) // Aligned memory pool static uint8_t memory_pool_[TOTAL_MEMORY_SIZE] __attribute__((aligned(32))); diff --git a/components/sms/include/sms.hpp b/components/sms/include/sms.hpp index 6897b8a..74ec40d 100644 --- a/components/sms/include/sms.hpp +++ b/components/sms/include/sms.hpp @@ -1,5 +1,6 @@ #pragma once +#include #include #include #include @@ -13,4 +14,4 @@ void load_sms(std::string_view save_path); void save_sms(std::string_view save_path); void run_sms_rom(); void deinit_sms(); -std::vector get_sms_video_buffer(); +std::span get_sms_video_buffer(); diff --git a/components/sms/src/sms.cpp b/components/sms/src/sms.cpp index 320d110..09560d6 100644 --- a/components/sms/src/sms.cpp +++ b/components/sms/src/sms.cpp @@ -71,6 +71,8 @@ static void init_memory() { object_info = (struct obj_info_t*)shared_malloc(sizeof(struct obj_info_t) * 64); sms_snd = (sms_snd_t*)shared_malloc(sizeof(sms_snd_t)); SN76489 = (SN76489_Context*)shared_malloc(sizeof(SN76489_Context) * MAX_SN76489); + + fmt::print("Num bytes allocated: {}\n", shared_num_bytes_allocated()); } static void init(uint8_t *romdata, size_t rom_data_size) { @@ -233,11 +235,17 @@ void save_sms(std::string_view save_path) { fclose(f); } -std::vector get_sms_video_buffer() { +std::span get_sms_video_buffer() { int height = is_gg ? GG_VISIBLE_HEIGHT : SMS_VISIBLE_HEIGHT; int width = is_gg ? GG_SCREEN_WIDTH : SMS_SCREEN_WIDTH; int pitch = SMS_SCREEN_WIDTH; - std::vector frame(width * height * 2); + + uint8_t *span_ptr = !frame_buffer_index + ? (uint8_t*)BoxEmu::get().frame_buffer1() + : (uint8_t*)BoxEmu::get().frame_buffer0(); + + std::span frame(span_ptr, width * height * 2); + // the frame data for the SMS is stored in bitmap.data as a 8 bit index into // the palette we need to convert this to a 16 bit RGB565 value const uint8_t *frame_buffer = bitmap.data + frame_buffer_offset; diff --git a/main/cart.hpp b/main/cart.hpp index 03cdbc0..d198965 100644 --- a/main/cart.hpp +++ b/main/cart.hpp @@ -3,6 +3,9 @@ #include #include #include +#include +#include +#include #include "display.hpp" #include "logger.hpp" @@ -40,11 +43,13 @@ class Cart { // clear the screen BoxEmu::get().clear_screen(); + auto &box = BoxEmu::get(); + // copy the romdata if (config.copy_romdata) { logger_.info("Copying romdata..."); rom_size_bytes_ = BoxEmu::get().copy_file_to_romdata(get_rom_filename()); - romdata_ = BoxEmu::get().romdata(); + romdata_ = box.romdata(); } else { logger_.info("Not copying romdata..."); } @@ -130,14 +135,7 @@ class Cart { uint16_t width = size.first; uint16_t height = size.second; logger_.debug("frame buffer size: {}x{}", width, height); - std::vector frame = get_video_buffer(); - - // save it to the file - std::ofstream file(filename.data(), std::ios::binary); - if (!file.is_open()) { - logger_.error("Failed to open file: {}", filename); - return false; - } + std::span frame = get_video_buffer(); uint8_t header[4] = { (uint8_t)(width >> 8), @@ -145,9 +143,15 @@ class Cart { (uint8_t)(height >> 8), (uint8_t)(height & 0xFF) }; + + // save it to the file + std::ofstream file(filename.data(), std::ios::binary); + if (!file.is_open()) { + logger_.error("Failed to open file: {}", filename); + return false; + } // write the header file.write((char*)header, sizeof(header)); - // write the data file.write((char*)frame.data(), frame.size()); // make sure to close the file @@ -248,10 +252,10 @@ class Cart { return std::make_pair(320, 240); } - virtual std::vector get_video_buffer() const { + virtual std::span get_video_buffer() const { // subclass should override this method to return the frame buffer // as a vector of uint16_t - return std::vector(); + return std::span(); } // subclass should override these methods @@ -276,12 +280,16 @@ class Cart { } } + int get_selected_save_slot() const { + return menu_->get_selected_slot(); + } + std::string get_save_path(bool bypass_exist_check=false) const { namespace fs = std::filesystem; auto save_path = savedir_ + "/" + fs::path(get_rom_filename()).stem().string() + - fmt::format("_{}", menu_->get_selected_slot()) + + fmt::format("_{}", get_selected_save_slot()) + get_save_extension(); if (bypass_exist_check || fs::exists(save_path)) { return save_path; diff --git a/main/carts.hpp b/main/carts.hpp index 43d849b..7c6538f 100644 --- a/main/carts.hpp +++ b/main/carts.hpp @@ -44,6 +44,7 @@ std::unique_ptr make_cart(const RomInfo& info, std::shared_ptr(Cart::Config{ .info = info, + .copy_romdata = false, .display = display, .verbosity = espp::Logger::Verbosity::WARN }); diff --git a/main/doom_cart.hpp b/main/doom_cart.hpp index 83cfc44..dadb6ab 100644 --- a/main/doom_cart.hpp +++ b/main/doom_cart.hpp @@ -9,18 +9,12 @@ class DoomCart : public Cart { public: explicit DoomCart(const Cart::Config& config) : Cart(config) { - // Need to free the romdata used by most carts since doom uses a lot of - // memory for its own data. - BoxEmu::get().deinitialize_memory(); handle_video_setting(); init(); } virtual ~DoomCart() override { deinit(); - // Now that doom is deinitialized, we can reallocate the memory used by most - // carts - BoxEmu::get().initialize_memory(); } // cppcheck-suppress uselessOverride @@ -35,7 +29,7 @@ class DoomCart : public Cart { virtual void load() override { Cart::load(); #if defined(ENABLE_DOOM) - load_doom(get_save_path()); + load_doom(get_selected_save_slot()); #endif } @@ -43,7 +37,7 @@ class DoomCart : public Cart { virtual void save() override { Cart::save(); #if defined(ENABLE_DOOM) - save_doom(get_save_path(true)); + save_doom(get_selected_save_slot()); #endif } @@ -100,11 +94,11 @@ class DoomCart : public Cart { } // cppcheck-suppress uselessOverride - virtual std::vector get_video_buffer() const override { + virtual std::span get_video_buffer() const override { #if defined(ENABLE_DOOM) return get_doom_video_buffer(); #else - return std::vector(); + return std::span(); #endif } diff --git a/main/gbc_cart.hpp b/main/gbc_cart.hpp index 829b920..1739bfc 100644 --- a/main/gbc_cart.hpp +++ b/main/gbc_cart.hpp @@ -95,11 +95,11 @@ class GbcCart : public Cart { } // cppcheck-suppress uselessOverride - virtual std::vector get_video_buffer() const override { + virtual std::span get_video_buffer() const override { #if defined(ENABLE_GBC) return get_gameboy_video_buffer(); #else - return std::vector(); + return std::span(); #endif } diff --git a/main/genesis_cart.hpp b/main/genesis_cart.hpp index 639f613..1499f07 100644 --- a/main/genesis_cart.hpp +++ b/main/genesis_cart.hpp @@ -108,11 +108,11 @@ class GenesisCart : public Cart { } // cppcheck-suppress uselessOverride - virtual std::vector get_video_buffer() const override { + virtual std::span get_video_buffer() const override { #if defined(ENABLE_GENESIS) return get_genesis_video_buffer(); #else - return std::vector(); + return std::span(); #endif } diff --git a/main/msx_cart.hpp b/main/msx_cart.hpp index 3f1df49..a7a3947 100644 --- a/main/msx_cart.hpp +++ b/main/msx_cart.hpp @@ -96,11 +96,11 @@ class MsxCart : public Cart { } // cppcheck-suppress uselessOverride - virtual std::vector get_video_buffer() const override { + virtual std::span get_video_buffer() const override { #if defined(ENABLE_MSX) return get_msx_video_buffer(); #else - return std::vector(); + return std::span(); #endif } diff --git a/main/nes_cart.hpp b/main/nes_cart.hpp index 6f30919..37926f5 100644 --- a/main/nes_cart.hpp +++ b/main/nes_cart.hpp @@ -87,11 +87,11 @@ class NesCart : public Cart { } // cppcheck-suppress uselessOverride - virtual std::vector get_video_buffer() const override { + virtual std::span get_video_buffer() const override { #if defined(ENABLE_NES) return get_nes_video_buffer(); #else - return std::vector(); + return std::span(); #endif } diff --git a/main/sms_cart.hpp b/main/sms_cart.hpp index a5476ac..3b62201 100644 --- a/main/sms_cart.hpp +++ b/main/sms_cart.hpp @@ -113,11 +113,11 @@ class SmsCart : public Cart { } // cppcheck-suppress uselessOverride - virtual std::vector get_video_buffer() const override { + virtual std::span get_video_buffer() const override { #if defined(ENABLE_SMS) return get_sms_video_buffer(); #else - return std::vector(); + return std::span(); #endif } From 28ef4f6249904d7eb6906664503f8e2e37ceb332 Mon Sep 17 00:00:00 2001 From: William Emfinger Date: Wed, 30 Apr 2025 10:32:01 -0500 Subject: [PATCH 32/39] update log --- components/doom/prboom/m_menu.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/components/doom/prboom/m_menu.c b/components/doom/prboom/m_menu.c index c330e23..c6d4a7c 100644 --- a/components/doom/prboom/m_menu.c +++ b/components/doom/prboom/m_menu.c @@ -1241,10 +1241,11 @@ static void M_InitDefaults(void) while ((t = *(p++))) for (; !(t->m_flags & S_END); t++) if (t->m_flags & S_HASDEFPTR) { - if (!(dp = M_LookupDefault(t->var.name))) - I_Error("M_InitDefaults: Couldn't find config variable %s", t->var.name); - else + if (!(dp = M_LookupDefault(t->var.name))) { + I_Error("M_InitDefaults: Couldn't find config variable '%s'\n", t->var.name); + } else { t->var.def = dp; + } } } From 0cb1b48fd5240f74d755665b87f795ad1d809047 Mon Sep 17 00:00:00 2001 From: William Emfinger Date: Thu, 1 May 2025 08:52:09 -0500 Subject: [PATCH 33/39] update readme --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index d4de786..b74eab8 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,7 @@ ESP32-S3-BOX-3 which provides: - Unlocked mode (fastest execution), toggled with the X button - Genesis emulator (gwenesis) - full speed / buttery smooth when muted; unmuted it runs a little slower but has nice sound - Regular Controls (D-Pad/A/B/C/Start/Select) (note: A is mapped to B, B is mapped to A, and C is mapped to Y) + - Doom engine (prboom) - full speed with audio and control inputs. A is fire/enter, B is strafe/backspace, X is use, Y is weapontoggle, START is escape, and SELECT is map. - LVGL main menu with rom select (including boxart display) and settings page (all generated from Squareline Studio) - LVGL emulation paused menu with save slot select, save slot image display, @@ -84,8 +85,9 @@ This project has the following features (still WIP): - [x] Sega Master System (SMS) / GameGear (GG) emulator - [x] MSX emulator - [x] Sega Mega Drive / Genesis emulator + - [x] Doom + - [ ] Dark Forces (WIP) - [ ] SNES emulator (WIP) - - [ ] Doom (WIP) - [x] uSD card (FAT) filesystem over SPI - [x] TinyUSB MSC device for optionally exposing the uSD to the attached USB host - [x] Memory mapping of selected rom data from storage into raw data partition From 8938a75ab0d4d0cea899885742796118a7ed5412 Mon Sep 17 00:00:00 2001 From: William Emfinger Date: Thu, 1 May 2025 08:53:50 -0500 Subject: [PATCH 34/39] update espp --- components/espp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/espp b/components/espp index 6d0d0f6..279283f 160000 --- a/components/espp +++ b/components/espp @@ -1 +1 @@ -Subproject commit 6d0d0f687c97fe1e6921acb4fe1e16394cd831e7 +Subproject commit 279283f132d8c42828d5d3d1c351bc5d9de01341 From e7e4c0665adcdcfa83cccac1784b9f1c212f9ddc Mon Sep 17 00:00:00 2001 From: William Emfinger Date: Thu, 1 May 2025 09:21:30 -0500 Subject: [PATCH 35/39] ignore prboom in sa --- .github/workflows/static_analysis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/static_analysis.yml b/.github/workflows/static_analysis.yml index ee251e0..8cd2e55 100644 --- a/.github/workflows/static_analysis.yml +++ b/.github/workflows/static_analysis.yml @@ -29,4 +29,4 @@ jobs: esp_idf_version: release/v5.4 # (Optional) cppcheck args - cppcheck_args: -i$GITHUB_WORKSPACE/components/gbc/gnuboy -i$GITHUB_WORKSPACE/components/nes/nofrendo -i$GITHUB_WORKSPACE/components/msx/fmsx -i$GITHUB_WORKSPACE/components/sms/smsplus -i$GITHUB_WORKSPACE/components/genesis/gwenesis -i$GITHUB_WORKSPACE/components/gui/generated -i$GITHUB_WORKSPACE/components/menu/generated -i$GITHUB_WORKSPACE/components/jpegdec --check-level=exhaustive --force --enable=all --inline-suppr --inconclusive --platform=mips32 --std=c++17 --suppressions-list=$GITHUB_WORKSPACE/suppressions.txt + cppcheck_args: -i$GITHUB_WORKSPACE/components/gbc/gnuboy -i$GITHUB_WORKSPACE/components/nes/nofrendo -i$GITHUB_WORKSPACE/components/msx/fmsx -i$GITHUB_WORKSPACE/components/doom/prboom -i$GITHUB_WORKSPACE/components/sms/smsplus -i$GITHUB_WORKSPACE/components/genesis/gwenesis -i$GITHUB_WORKSPACE/components/gui/generated -i$GITHUB_WORKSPACE/components/menu/generated -i$GITHUB_WORKSPACE/components/jpegdec --check-level=exhaustive --force --enable=all --inline-suppr --inconclusive --platform=mips32 --std=c++17 --suppressions-list=$GITHUB_WORKSPACE/suppressions.txt From 74e7b4da346fe01be46aff7ee6df1daa3e32481e Mon Sep 17 00:00:00 2001 From: William Emfinger Date: Thu, 1 May 2025 09:21:36 -0500 Subject: [PATCH 36/39] fix audio memset issue --- components/doom/src/doom.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/doom/src/doom.cpp b/components/doom/src/doom.cpp index ee142d7..e8d426c 100644 --- a/components/doom/src/doom.cpp +++ b/components/doom/src/doom.cpp @@ -294,7 +294,7 @@ extern "C" { } if (!haveMusic && !haveSFX) { - memset(mixbuffer, 0, sizeof(mixbuffer)); + memset(mixbuffer, 0, AUDIO_BUFFER_LENGTH * sizeof(int16_t)); } // rg_audio_submit(mixbuffer, AUDIO_BUFFER_LENGTH); From 5b9ae33ad88dba130e9767585a1ecae22e59ee24 Mon Sep 17 00:00:00 2001 From: William Emfinger Date: Thu, 1 May 2025 10:29:09 -0500 Subject: [PATCH 37/39] fix sound emulation in doom; update to pause sound when doom is paused; update to have menu / game perform better (doom) by adding appropriate sleeps in the main loop and audio task; update pool to be able to query if pointer is in pool or not --- components/doom/include/doom.hpp | 3 + components/doom/prboom/z_zone.c | 10 +- components/doom/src/doom.cpp | 355 ++++-------------- components/doom/src/doom_shared_memory.cpp | 274 ++++++++++++++ components/gbc/src/gameboy.cpp | 4 +- .../pool_allocator/include/pool_allocator.h | 1 + .../pool_allocator/src/pool_allocator.c | 9 + main/doom_cart.hpp | 2 + 8 files changed, 366 insertions(+), 292 deletions(-) create mode 100644 components/doom/src/doom_shared_memory.cpp diff --git a/components/doom/include/doom.hpp b/components/doom/include/doom.hpp index be56f7f..94a09af 100644 --- a/components/doom/include/doom.hpp +++ b/components/doom/include/doom.hpp @@ -7,6 +7,9 @@ void reset_doom(); void init_doom(const std::string& rom_filename, uint8_t *romdata, size_t rom_data_size); +void doom_init_shared_memory(); +void pause_doom_tasks(); +void resume_doom_tasks(); void load_doom(int save_slot); void save_doom(int save_slot); void run_doom_rom(); diff --git a/components/doom/prboom/z_zone.c b/components/doom/prboom/z_zone.c index b8a6cac..f206a29 100644 --- a/components/doom/prboom/z_zone.c +++ b/components/doom/prboom/z_zone.c @@ -179,12 +179,18 @@ void Z_Close(void) static void* my_malloc(size_t size) { - return pool_alloc(size); + void * ptr = pool_alloc(size); + if (!ptr) ptr = (malloc)(size); + return ptr; } static void my_free(void* p) { - pool_free(p); + if (pool_contains(p)) { + pool_free(p); + } else { + (free)(p); + } } void Z_Init(void) diff --git a/components/doom/src/doom.cpp b/components/doom/src/doom.cpp index e8d426c..720b942 100644 --- a/components/doom/src/doom.cpp +++ b/components/doom/src/doom.cpp @@ -1,13 +1,18 @@ #include "doom.hpp" + #include "box-emu.hpp" -#include "statistics.hpp" -#include "esp_log.h" +#include "pool_allocator.h" #include "shared_memory.h" +#include "statistics.hpp" + +using namespace std::chrono_literals; static uint16_t* displayBuffer[2]; static uint8_t currentBuffer = 0; static uint16_t* framebuffer = nullptr; +static bool unlock = false; + static uint16_t doom_palette[256]; static std::unique_ptr audio_task; @@ -16,42 +21,33 @@ static const char *doom_argv[10]; // prboom includes extern "C" { -#include "pool_allocator.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include - ///////////////////////////////////////////// // Copied from retro-go/prboom-go/main/main.c ///////////////////////////////////////////// -#define AUDIO_SAMPLE_RATE 22050 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define AUDIO_SAMPLE_RATE (22050 / 2) #define AUDIO_BUFFER_LENGTH (AUDIO_SAMPLE_RATE / TICRATE + 1) #define NUM_MIX_CHANNELS 8 @@ -107,10 +103,6 @@ extern "C" { void I_FinishUpdate(void) { static auto& box = BoxEmu::get(); box.push_frame(framebuffer); - // // swap buffers - // currentBuffer = currentBuffer ? 0 : 1; - // framebuffer = displayBuffer[currentBuffer]; - // screens[0].data = (uint8_t*)framebuffer; } bool I_StartDisplay(void) { @@ -147,12 +139,11 @@ extern "C" { framebuffer = displayBuffer[currentBuffer]; // set first three to standard values - for (int i = 0; i < 3; i++) - { - screens[i].width = SCREENWIDTH; - screens[i].height = SCREENHEIGHT; - screens[i].byte_pitch = SCREENWIDTH; - } + for (int i = 0; i < 3; i++) { + screens[i].width = SCREENWIDTH; + screens[i].height = SCREENHEIGHT; + screens[i].byte_pitch = SCREENWIDTH; + } // Main screen uses internal ram for speed screens[0].data = (uint8_t*)framebuffer; @@ -272,8 +263,8 @@ extern "C" { } } - // totalSample <<= 7; - // totalSample /= (16 - snd_SfxVolume); + totalSample <<= 7; + totalSample /= (16 - snd_SfxVolume); if (haveMusic) { totalSample += *audioBuffer; @@ -289,7 +280,7 @@ extern "C" { totalSample = -32768; *audioBuffer++ = totalSample; - // *audioBuffer++ = totalSample; + *audioBuffer++ = totalSample; } } @@ -297,10 +288,9 @@ extern "C" { memset(mixbuffer, 0, AUDIO_BUFFER_LENGTH * sizeof(int16_t)); } - // rg_audio_submit(mixbuffer, AUDIO_BUFFER_LENGTH); static auto& box = BoxEmu::get(); box.play_audio((const uint8_t*)mixbuffer, AUDIO_BUFFER_LENGTH * sizeof(int16_t)); - // std::this_thread::sleep_for(std::chrono::microseconds(1000 / 60)); + std::this_thread::sleep_for(std::chrono::microseconds(1'000'000 / TICRATE)); return false; } @@ -388,6 +378,13 @@ extern "C" { auto state = box.gamepad_state(); auto joystick = state.buttons; + // update unlock based on x button + static bool last_x = false; + if (state.x && !last_x) { + unlock = !unlock; + } + last_x = state.x; + uint32_t changed = prev_joystick ^ joystick; event_t event = {}; @@ -420,251 +417,18 @@ void reset_doom() { init_doom(doom_wad_path, nullptr, 0); } -// From dbopl -#if ( DBOPL_WAVE == WAVE_HANDLER ) || ( DBOPL_WAVE == WAVE_TABLELOG ) -extern Bit16u *ExpTable; -#endif -#if ( DBOPL_WAVE == WAVE_HANDLER ) -//PI table used by WAVEHANDLER -extern Bit16u *SinTable; -#endif -extern Bit16s *WaveTable; // [ 8 * 512 ]; -#if ( DBOPL_WAVE == WAVE_TABLEMUL ) -extern Bit16u *MulTable; // [ 384 ]; -#endif - -extern Bit8u *KslTable; // [ 8 * 16 ]; -extern Bit8u *TremoloTable; // [ TREMOLO_TABLE ]; -extern Bit16u *ChanOffsetTable; // [32]; -extern Bit16u *OpOffsetTable; // [64]; - -// from doomstat.h / g_game.c -extern player_t *players; // [MAXPLAYERS]; -extern byte *gamekeydown; // [NUMKEYS]; -extern char *doom_player_msg; // [MAX_MESSAGE_SIZE] - -// from info.c -extern mobjinfo_t *mobjinfo; // [NUMMOBJTYPES]; -extern const mobjinfo_t init_mobjinfo[NUMMOBJTYPES]; - -// from m_cheat.c/h -extern struct cheat_s *cheat; -extern const struct cheat_s init_cheat[]; -extern size_t init_cheat_bytes; - -// from p_mobj.c -extern mapthing_t *itemrespawnque; -extern int *itemrespawntime; -extern statenum_t *seenstate_tab; // [NUMSTATES] - -// from sounds.c/h -extern musicinfo_t *S_music; -extern const size_t s_music_bytes; -extern const musicinfo_t init_S_music[]; -extern sfxinfo_t *S_sfx; -extern const sfxinfo_t init_S_sfx[]; -extern const size_t s_sfx_bytes; - -// from st_stuff.c/h -extern patchnum_t *tallnum; // [10]; -extern patchnum_t *shortnum; // [10]; -extern patchnum_t *keys; // [NUMCARDS+3]; -extern patchnum_t *faces; // [ST_NUMFACES]; -extern patchnum_t *arms; // [6][2]; - -// from r_things.c/h -extern int *negonearray; // [MAX_SCREENWIDTH]; // killough 2/8/98: // dropoff overflow -extern int *screenheightarray; // [MAX_SCREENWIDTH]; // change to MAX_* // dropoff overflow -extern spriteframe_t *sprtemp; // [MAX_SPRITE_FRAMES]; [29] - -// from opl.c -extern Chip *opl_chip; - -// from r_plane.c/h -extern visplane_t **visplanes; // [MAXVISPLANES]; // killough -extern fixed_t *cachedheight; // [MAX_SCREENHEIGHT]; -extern fixed_t *cacheddistance; // [MAX_SCREENHEIGHT]; -extern fixed_t *cachedxstep; // [MAX_SCREENHEIGHT]; -extern fixed_t *cachedystep; // [MAX_SCREENHEIGHT]; -extern int *spanstart; // [MAX_SCREENHEIGHT]; // killough 2/8/98 -extern int *floorclip; // [MAX_SCREENWIDTH]; -extern int *ceilingclip; // [MAX_SCREENWIDTH]; -extern fixed_t *yslope; // [MAX_SCREENHEIGHT]; -extern fixed_t *distscale; // [MAX_SCREENWIDTH]; - -// from hu_stuff.c/h -extern patchnum_t *hu_font; // font[HU_FONTSIZE]; -extern patchnum_t *hu_font2; // [HU_FONTSIZE]; -extern patchnum_t *hu_fontk; // [HU_FONTSIZE];//jff 3/7/98 added for graphic key indicators -extern patchnum_t *hu_msgbg; // [9]; //jff 2/26/98 add patches for message background -extern char *hud_coordstrx; // [ 32]; -extern char *hud_coordstry; // [ 32]; -extern char *hud_coordstrz; // [ 32]; -extern char *hud_ammostr; // [ 80]; -extern char *hud_healthstr; // [ 80]; -extern char *hud_armorstr; // [ 80]; -extern char *hud_weapstr; // [ 80]; -extern char *hud_keysstr; // [ 80]; -extern char *hud_gkeysstr; // [ 80]; //jff 3/7/98 add support for graphic key display -extern char *hud_monsecstr; // [ 80]; -extern char *chatchars; // [QUEUESIZE]; [128] -extern hu_textline_t *w_title; -extern hu_stext_t *w_message; -extern hu_itext_t *w_chat; -extern hu_itext_t *w_inputbuffer; // [MAXPLAYERS]; -extern hu_textline_t *w_coordx; //jff 2/16/98 new coord widget for automap -extern hu_textline_t *w_coordy; //jff 3/3/98 split coord widgets automap -extern hu_textline_t *w_coordz; //jff 3/3/98 split coord widgets automap -extern hu_textline_t *w_ammo; //jff 2/16/98 new ammo widget for hud -extern hu_textline_t *w_health; //jff 2/16/98 new health widget for hud -extern hu_textline_t *w_armor; //jff 2/16/98 new armor widget for hud -extern hu_textline_t *w_weapon; //jff 2/16/98 new weapon widget for hud -extern hu_textline_t *w_keys; //jff 2/16/98 new keys widget for hud -extern hu_textline_t *w_gkeys; //jff 3/7/98 graphic keys widget for hud -extern hu_textline_t *w_monsec; //jff 2/16/98 new kill/secret widget for hud -extern hu_mtext_t *w_rtext; //jff 2/26/98 text message refresh widget - -// from r_draw.c/h -extern byte *byte_tempbuf; // [MAX_SCREENHEIGHT * 4]; -#ifndef NOTRUECOLOR -extern unsigned short *short_tempbuf; // [MAX_SCREENHEIGHT * 4]; -extern unsigned int *int_tempbuf; // ol[MAX_SCREENHEIGHT * 4]; -#endif -extern int *fuzzoffset; // [FUZZTABLE]; - -// from f_wipe.c -extern int *y_lookup; // [MAXSCREENWIDTH] - -// from r_main.c/r_state.h -extern angle_t *xtoviewangle; // [MAX_SCREENWIDTH+1]; // killough 2/8/98 - -// from r_bsp.c -extern byte *solidcol; // [MAX_SCREENWIDTH]; - void init_doom(const std::string& wad_filename, uint8_t *wad_data, size_t wad_data_size) { doom_wad_path = wad_filename; + // reset unlock + unlock = false; + // needed for doom.cpp channels = (channel_t *)shared_malloc(sizeof(channel_t) * NUM_MIX_CHANNELS); sfx = (const doom_sfx_t **)shared_malloc(sizeof(doom_sfx_t*) * NUMSFX); mixbuffer = (uint16_t *)shared_malloc(sizeof(uint16_t) * AUDIO_BUFFER_LENGTH); - // needed for dbopl -#if ( DBOPL_WAVE == WAVE_HANDLER ) || ( DBOPL_WAVE == WAVE_TABLELOG ) - ExpTable = (Bit16u *)shared_malloc(sizeof(Bit16u) * 256); -#endif -#if ( DBOPL_WAVE == WAVE_HANDLER ) - SinTable = (Bit16u *)shared_malloc(sizeof(Bit16u) * 512); -#endif - WaveTable = (Bit16s *)shared_malloc(sizeof(Bit16s) * 8 * 512); -#if ( DBOPL_WAVE == WAVE_TABLEMUL ) - MulTable = (Bit16u *)shared_malloc(sizeof(Bit16u) * 384); -#endif - KslTable = (Bit8u *)shared_malloc(sizeof(Bit8u) * 8 * 16); - TremoloTable = (Bit8u *)shared_malloc(sizeof(Bit8u) * TREMOLO_TABLE); - ChanOffsetTable = (Bit16u *)shared_malloc(sizeof(Bit16u) * 32); - OpOffsetTable = (Bit16u *)shared_malloc(sizeof(Bit16u) * 64); - - // needed for doomstat / g_game - players = (player_t *)shared_malloc(sizeof(player_t) * MAXPLAYERS); - gamekeydown = (byte *)shared_malloc(sizeof(byte) * NUMKEYS); - doom_player_msg = (char*)shared_malloc(MAX_MESSAGE_SIZE); - - // needed for info - mobjinfo = (mobjinfo_t *)shared_malloc(sizeof(mobjinfo_t) * NUMMOBJTYPES); - memcpy(mobjinfo, init_mobjinfo, sizeof(mobjinfo_t) * NUMMOBJTYPES); - - // needed for m_cheat - cheat = (struct cheat_s *)shared_malloc(init_cheat_bytes); - memcpy(cheat, init_cheat, init_cheat_bytes); - - // needed for p_mobj.c - itemrespawnque = (mapthing_t *)shared_malloc(sizeof(mapthing_t) * ITEMQUESIZE); - itemrespawntime = (int *)shared_malloc(sizeof(int) * ITEMQUESIZE); - seenstate_tab = (statenum_t *)shared_malloc(sizeof(statenum_t)*NUMSTATES); - - // needed for sounds.c/h - S_music = (musicinfo_t *)shared_malloc(s_music_bytes); - memcpy(S_music, init_S_music, s_music_bytes); - S_sfx = (sfxinfo_t *)shared_malloc(s_sfx_bytes); - memcpy(S_sfx, init_S_sfx, s_sfx_bytes); - S_sfx[sfx_chgun].link = &S_sfx[sfx_pistol]; - - // needed for st_stuff.c/h - tallnum = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * 10); - shortnum = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * 10); - keys = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * (NUMCARDS + 3)); - faces = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * ST_NUMFACES); - arms = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * 6 * 2); - - // needed for r_things.c/h - negonearray = (int *)shared_malloc(sizeof(int) * MAX_SCREENWIDTH); // killough 2/8/98: // dropoff overflow - screenheightarray = (int *)shared_malloc(sizeof(int) * MAX_SCREENWIDTH); // change to MAX_* // dropoff overflow - sprtemp = (spriteframe_t *)shared_malloc(sizeof(spriteframe_t) * 29); // [29] - - // needed for opl.c - opl_chip = (Chip *)shared_malloc(sizeof(Chip)); - - // needed for r_plane.c/h - visplanes = (visplane_t **)shared_malloc(sizeof(visplane_t *) * MAXVISPLANES); - cachedheight = (fixed_t *)shared_malloc(sizeof(fixed_t) * MAX_SCREENHEIGHT); - cacheddistance = (fixed_t *)shared_malloc(sizeof(fixed_t) * MAX_SCREENHEIGHT); - cachedxstep = (fixed_t *)shared_malloc(sizeof(fixed_t) * MAX_SCREENHEIGHT); - cachedystep = (fixed_t *)shared_malloc(sizeof(fixed_t) * MAX_SCREENHEIGHT); - spanstart = (int *)shared_malloc(sizeof(int) * MAX_SCREENHEIGHT); - floorclip = (int *)shared_malloc(sizeof(int) * MAX_SCREENWIDTH); - ceilingclip = (int *)shared_malloc(sizeof(int) * MAX_SCREENWIDTH); - yslope = (fixed_t *)shared_malloc(sizeof(fixed_t) * MAX_SCREENHEIGHT); - distscale = (fixed_t *)shared_malloc(sizeof(fixed_t) * MAX_SCREENWIDTH); - - // needed for hu_stuff.c/h - hu_font = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * HU_FONTSIZE); - hu_font2 = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * HU_FONTSIZE); - hu_fontk = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * HU_FONTSIZE); - hu_msgbg = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * 9); - hud_coordstrx = (char *)shared_malloc(32); - hud_coordstry = (char *)shared_malloc(32); - hud_coordstrz = (char *)shared_malloc(32); - hud_ammostr = (char *)shared_malloc(80); - hud_healthstr = (char *)shared_malloc(80); - hud_armorstr = (char *)shared_malloc(80); - hud_weapstr = (char *)shared_malloc(80); - hud_keysstr = (char *)shared_malloc(80); - hud_gkeysstr = (char *)shared_malloc(80); //jff 3/7/98 add support for graphic key display - hud_monsecstr = (char *)shared_malloc(80); - chatchars = (char *)shared_malloc(128); // [128] - w_title = (hu_textline_t *)shared_malloc(sizeof(hu_textline_t)); - w_message = (hu_stext_t *)shared_malloc(sizeof(hu_stext_t)); - w_chat = (hu_itext_t *)shared_malloc(sizeof(hu_itext_t)); - w_inputbuffer = (hu_itext_t *)shared_malloc(sizeof(hu_itext_t) * MAXPLAYERS); - w_coordx = (hu_textline_t *)shared_malloc(sizeof(hu_textline_t)); - w_coordy = (hu_textline_t *)shared_malloc(sizeof(hu_textline_t)); - w_coordz = (hu_textline_t *)shared_malloc(sizeof(hu_textline_t)); - w_ammo = (hu_textline_t *)shared_malloc(sizeof(hu_textline_t)); - w_health = (hu_textline_t *)shared_malloc(sizeof(hu_textline_t)); - w_armor = (hu_textline_t *)shared_malloc(sizeof(hu_textline_t)); - w_weapon = (hu_textline_t *)shared_malloc(sizeof(hu_textline_t)); - w_keys = (hu_textline_t *)shared_malloc(sizeof(hu_textline_t)); - w_gkeys = (hu_textline_t *)shared_malloc(sizeof(hu_textline_t)); //jff 3/7/98 graphic keys widget for hud - w_monsec = (hu_textline_t *)shared_malloc(sizeof(hu_textline_t)); - w_rtext = (hu_mtext_t *)shared_malloc(sizeof(hu_mtext_t)); - - // needed for r_draw.c/h - byte_tempbuf = (byte*)shared_malloc(MAX_SCREENHEIGHT * 4); -#ifndef NOTRUECOLOR - short_tempbuf = (short*)shared_malloc(MAX_SCREENHEIGHT * 4 * sizeof(short)); - int_tempbuf = (int*)shared_malloc(MAX_SCREENHEIGHT * 4 * sizeof(int)); -#endif - fuzzoffset = (int *)shared_malloc(sizeof(int) * FUZZTABLE); // [FUZZTABLE]; - - // needed for f_wipe.c - y_lookup = (int*)shared_malloc(MAX_SCREENWIDTH * sizeof(int)); - - // needed for r_main.c/r_state.h - xtoviewangle = (angle_t*)shared_malloc((MAX_SCREENWIDTH+1) * sizeof(angle_t)); - - // needed for r_bsp.c - solidcol = (byte *)shared_malloc(MAX_SCREENWIDTH); + doom_init_shared_memory(); SCREENWIDTH = MAX_SCREENWIDTH; SCREENHEIGHT = MAX_SCREENHEIGHT; @@ -698,8 +462,7 @@ void run_doom_rom() { auto start = esp_timer_get_time(); // Update game state - // From: - // D_DoomLoop(); + // Copied From: D_DoomLoop(); WasRenderedInTryRunTics = false; // frame syncronous IO operations @@ -733,6 +496,22 @@ void run_doom_rom() { auto end = esp_timer_get_time(); uint64_t elapsed = end - start; update_frame_time(elapsed); + + static constexpr uint64_t max_frame_time = 1'000'000 / TICRATE; + if (!unlock && elapsed < max_frame_time) { + auto sleep_time = (max_frame_time - elapsed); + std::this_thread::sleep_for(sleep_time * 1us); + } +} + +void pause_doom_tasks() { + snd_MusicVolume = 0; + snd_SfxVolume = 0; +} + +void resume_doom_tasks() { + snd_MusicVolume = 50; + snd_SfxVolume = 50; } void load_doom(int save_slot) { diff --git a/components/doom/src/doom_shared_memory.cpp b/components/doom/src/doom_shared_memory.cpp new file mode 100644 index 0000000..110b3e6 --- /dev/null +++ b/components/doom/src/doom_shared_memory.cpp @@ -0,0 +1,274 @@ +#include "doom.hpp" + +#include "shared_memory.h" + +extern "C" { +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +// From dbopl +#if ( DBOPL_WAVE == WAVE_HANDLER ) || ( DBOPL_WAVE == WAVE_TABLELOG ) +extern Bit16u *ExpTable; +#endif +#if ( DBOPL_WAVE == WAVE_HANDLER ) +//PI table used by WAVEHANDLER +extern Bit16u *SinTable; +#endif +extern Bit16s *WaveTable; // [ 8 * 512 ]; +#if ( DBOPL_WAVE == WAVE_TABLEMUL ) +extern Bit16u *MulTable; // [ 384 ]; +#endif + +extern Bit8u *KslTable; // [ 8 * 16 ]; +extern Bit8u *TremoloTable; // [ TREMOLO_TABLE ]; +extern Bit16u *ChanOffsetTable; // [32]; +extern Bit16u *OpOffsetTable; // [64]; + +// from doomstat.h / g_game.c +extern player_t *players; // [MAXPLAYERS]; +extern byte *gamekeydown; // [NUMKEYS]; +extern char *doom_player_msg; // [MAX_MESSAGE_SIZE] + +// from info.c +extern mobjinfo_t *mobjinfo; // [NUMMOBJTYPES]; +extern const mobjinfo_t init_mobjinfo[NUMMOBJTYPES]; + +// from m_cheat.c/h +extern struct cheat_s *cheat; +extern const struct cheat_s init_cheat[]; +extern size_t init_cheat_bytes; + +// from p_mobj.c +extern mapthing_t *itemrespawnque; +extern int *itemrespawntime; +extern statenum_t *seenstate_tab; // [NUMSTATES] + +// from sounds.c/h +extern musicinfo_t *S_music; +extern const size_t s_music_bytes; +extern const musicinfo_t init_S_music[]; +extern sfxinfo_t *S_sfx; +extern const sfxinfo_t init_S_sfx[]; +extern const size_t s_sfx_bytes; + +// from st_stuff.c/h +extern patchnum_t *tallnum; // [10]; +extern patchnum_t *shortnum; // [10]; +extern patchnum_t *keys; // [NUMCARDS+3]; +extern patchnum_t *faces; // [ST_NUMFACES]; +extern patchnum_t *arms; // [6][2]; + +// from r_things.c/h +extern int *negonearray; // [MAX_SCREENWIDTH]; // killough 2/8/98: // dropoff overflow +extern int *screenheightarray; // [MAX_SCREENWIDTH]; // change to MAX_* // dropoff overflow +extern spriteframe_t *sprtemp; // [MAX_SPRITE_FRAMES]; [29] + +// from opl.c +extern Chip *opl_chip; + +// from r_plane.c/h +extern visplane_t **visplanes; // [MAXVISPLANES]; // killough +extern fixed_t *cachedheight; // [MAX_SCREENHEIGHT]; +extern fixed_t *cacheddistance; // [MAX_SCREENHEIGHT]; +extern fixed_t *cachedxstep; // [MAX_SCREENHEIGHT]; +extern fixed_t *cachedystep; // [MAX_SCREENHEIGHT]; +extern int *spanstart; // [MAX_SCREENHEIGHT]; // killough 2/8/98 +extern int *floorclip; // [MAX_SCREENWIDTH]; +extern int *ceilingclip; // [MAX_SCREENWIDTH]; +extern fixed_t *yslope; // [MAX_SCREENHEIGHT]; +extern fixed_t *distscale; // [MAX_SCREENWIDTH]; + +// from hu_stuff.c/h +extern patchnum_t *hu_font; // font[HU_FONTSIZE]; +extern patchnum_t *hu_font2; // [HU_FONTSIZE]; +extern patchnum_t *hu_fontk; // [HU_FONTSIZE];//jff 3/7/98 added for graphic key indicators +extern patchnum_t *hu_msgbg; // [9]; //jff 2/26/98 add patches for message background +extern char *hud_coordstrx; // [ 32]; +extern char *hud_coordstry; // [ 32]; +extern char *hud_coordstrz; // [ 32]; +extern char *hud_ammostr; // [ 80]; +extern char *hud_healthstr; // [ 80]; +extern char *hud_armorstr; // [ 80]; +extern char *hud_weapstr; // [ 80]; +extern char *hud_keysstr; // [ 80]; +extern char *hud_gkeysstr; // [ 80]; //jff 3/7/98 add support for graphic key display +extern char *hud_monsecstr; // [ 80]; +extern char *chatchars; // [QUEUESIZE]; [128] +extern hu_textline_t *w_title; +extern hu_stext_t *w_message; +extern hu_itext_t *w_chat; +extern hu_itext_t *w_inputbuffer; // [MAXPLAYERS]; +extern hu_textline_t *w_coordx; //jff 2/16/98 new coord widget for automap +extern hu_textline_t *w_coordy; //jff 3/3/98 split coord widgets automap +extern hu_textline_t *w_coordz; //jff 3/3/98 split coord widgets automap +extern hu_textline_t *w_ammo; //jff 2/16/98 new ammo widget for hud +extern hu_textline_t *w_health; //jff 2/16/98 new health widget for hud +extern hu_textline_t *w_armor; //jff 2/16/98 new armor widget for hud +extern hu_textline_t *w_weapon; //jff 2/16/98 new weapon widget for hud +extern hu_textline_t *w_keys; //jff 2/16/98 new keys widget for hud +extern hu_textline_t *w_gkeys; //jff 3/7/98 graphic keys widget for hud +extern hu_textline_t *w_monsec; //jff 2/16/98 new kill/secret widget for hud +extern hu_mtext_t *w_rtext; //jff 2/26/98 text message refresh widget + +// from r_draw.c/h +extern byte *byte_tempbuf; // [MAX_SCREENHEIGHT * 4]; +#ifndef NOTRUECOLOR +extern unsigned short *short_tempbuf; // [MAX_SCREENHEIGHT * 4]; +extern unsigned int *int_tempbuf; // ol[MAX_SCREENHEIGHT * 4]; +#endif +extern int *fuzzoffset; // [FUZZTABLE]; + +// from f_wipe.c +extern int *y_lookup; // [MAXSCREENWIDTH] + +// from r_main.c/r_state.h +extern angle_t *xtoviewangle; // [MAX_SCREENWIDTH+1]; // killough 2/8/98 + +// from r_bsp.c +extern byte *solidcol; // [MAX_SCREENWIDTH]; +} // extern "C" + +void doom_init_shared_memory() { + // needed for dbopl +#if ( DBOPL_WAVE == WAVE_HANDLER ) || ( DBOPL_WAVE == WAVE_TABLELOG ) + ExpTable = (Bit16u *)shared_malloc(sizeof(Bit16u) * 256); +#endif +#if ( DBOPL_WAVE == WAVE_HANDLER ) + SinTable = (Bit16u *)shared_malloc(sizeof(Bit16u) * 512); +#endif + WaveTable = (Bit16s *)shared_malloc(sizeof(Bit16s) * 8 * 512); +#if ( DBOPL_WAVE == WAVE_TABLEMUL ) + MulTable = (Bit16u *)shared_malloc(sizeof(Bit16u) * 384); +#endif + KslTable = (Bit8u *)shared_malloc(sizeof(Bit8u) * 8 * 16); + TremoloTable = (Bit8u *)shared_malloc(sizeof(Bit8u) * TREMOLO_TABLE); + ChanOffsetTable = (Bit16u *)shared_malloc(sizeof(Bit16u) * 32); + OpOffsetTable = (Bit16u *)shared_malloc(sizeof(Bit16u) * 64); + + // needed for doomstat / g_game + players = (player_t *)shared_malloc(sizeof(player_t) * MAXPLAYERS); + gamekeydown = (byte *)shared_malloc(sizeof(byte) * NUMKEYS); + doom_player_msg = (char*)shared_malloc(MAX_MESSAGE_SIZE); + + // needed for info + mobjinfo = (mobjinfo_t *)shared_malloc(sizeof(mobjinfo_t) * NUMMOBJTYPES); + memcpy(mobjinfo, init_mobjinfo, sizeof(mobjinfo_t) * NUMMOBJTYPES); + + // needed for m_cheat + cheat = (struct cheat_s *)shared_malloc(init_cheat_bytes); + memcpy(cheat, init_cheat, init_cheat_bytes); + + // needed for p_mobj.c + itemrespawnque = (mapthing_t *)shared_malloc(sizeof(mapthing_t) * ITEMQUESIZE); + itemrespawntime = (int *)shared_malloc(sizeof(int) * ITEMQUESIZE); + seenstate_tab = (statenum_t *)shared_malloc(sizeof(statenum_t)*NUMSTATES); + + // needed for sounds.c/h + S_music = (musicinfo_t *)shared_malloc(s_music_bytes); + memcpy(S_music, init_S_music, s_music_bytes); + S_sfx = (sfxinfo_t *)shared_malloc(s_sfx_bytes); + memcpy(S_sfx, init_S_sfx, s_sfx_bytes); + S_sfx[sfx_chgun].link = &S_sfx[sfx_pistol]; + + // needed for st_stuff.c/h + tallnum = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * 10); + shortnum = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * 10); + keys = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * (NUMCARDS + 3)); + faces = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * ST_NUMFACES); + arms = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * 6 * 2); + + // needed for r_things.c/h + negonearray = (int *)shared_malloc(sizeof(int) * MAX_SCREENWIDTH); // killough 2/8/98: // dropoff overflow + screenheightarray = (int *)shared_malloc(sizeof(int) * MAX_SCREENWIDTH); // change to MAX_* // dropoff overflow + sprtemp = (spriteframe_t *)shared_malloc(sizeof(spriteframe_t) * 29); // [29] + + // needed for opl.c + opl_chip = (Chip *)shared_malloc(sizeof(Chip)); + + // needed for r_plane.c/h + visplanes = (visplane_t **)shared_malloc(sizeof(visplane_t *) * MAXVISPLANES); + cachedheight = (fixed_t *)shared_malloc(sizeof(fixed_t) * MAX_SCREENHEIGHT); + cacheddistance = (fixed_t *)shared_malloc(sizeof(fixed_t) * MAX_SCREENHEIGHT); + cachedxstep = (fixed_t *)shared_malloc(sizeof(fixed_t) * MAX_SCREENHEIGHT); + cachedystep = (fixed_t *)shared_malloc(sizeof(fixed_t) * MAX_SCREENHEIGHT); + spanstart = (int *)shared_malloc(sizeof(int) * MAX_SCREENHEIGHT); + floorclip = (int *)shared_malloc(sizeof(int) * MAX_SCREENWIDTH); + ceilingclip = (int *)shared_malloc(sizeof(int) * MAX_SCREENWIDTH); + yslope = (fixed_t *)shared_malloc(sizeof(fixed_t) * MAX_SCREENHEIGHT); + distscale = (fixed_t *)shared_malloc(sizeof(fixed_t) * MAX_SCREENWIDTH); + + // needed for hu_stuff.c/h + hu_font = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * HU_FONTSIZE); + hu_font2 = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * HU_FONTSIZE); + hu_fontk = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * HU_FONTSIZE); + hu_msgbg = (patchnum_t *)shared_malloc(sizeof(patchnum_t) * 9); + hud_coordstrx = (char *)shared_malloc(32); + hud_coordstry = (char *)shared_malloc(32); + hud_coordstrz = (char *)shared_malloc(32); + hud_ammostr = (char *)shared_malloc(80); + hud_healthstr = (char *)shared_malloc(80); + hud_armorstr = (char *)shared_malloc(80); + hud_weapstr = (char *)shared_malloc(80); + hud_keysstr = (char *)shared_malloc(80); + hud_gkeysstr = (char *)shared_malloc(80); //jff 3/7/98 add support for graphic key display + hud_monsecstr = (char *)shared_malloc(80); + chatchars = (char *)shared_malloc(128); // [128] + w_title = (hu_textline_t *)shared_malloc(sizeof(hu_textline_t)); + w_message = (hu_stext_t *)shared_malloc(sizeof(hu_stext_t)); + w_chat = (hu_itext_t *)shared_malloc(sizeof(hu_itext_t)); + w_inputbuffer = (hu_itext_t *)shared_malloc(sizeof(hu_itext_t) * MAXPLAYERS); + w_coordx = (hu_textline_t *)shared_malloc(sizeof(hu_textline_t)); + w_coordy = (hu_textline_t *)shared_malloc(sizeof(hu_textline_t)); + w_coordz = (hu_textline_t *)shared_malloc(sizeof(hu_textline_t)); + w_ammo = (hu_textline_t *)shared_malloc(sizeof(hu_textline_t)); + w_health = (hu_textline_t *)shared_malloc(sizeof(hu_textline_t)); + w_armor = (hu_textline_t *)shared_malloc(sizeof(hu_textline_t)); + w_weapon = (hu_textline_t *)shared_malloc(sizeof(hu_textline_t)); + w_keys = (hu_textline_t *)shared_malloc(sizeof(hu_textline_t)); + w_gkeys = (hu_textline_t *)shared_malloc(sizeof(hu_textline_t)); //jff 3/7/98 graphic keys widget for hud + w_monsec = (hu_textline_t *)shared_malloc(sizeof(hu_textline_t)); + w_rtext = (hu_mtext_t *)shared_malloc(sizeof(hu_mtext_t)); + + // needed for r_draw.c/h + byte_tempbuf = (byte*)shared_malloc(MAX_SCREENHEIGHT * 4); +#ifndef NOTRUECOLOR + short_tempbuf = (short*)shared_malloc(MAX_SCREENHEIGHT * 4 * sizeof(short)); + int_tempbuf = (int*)shared_malloc(MAX_SCREENHEIGHT * 4 * sizeof(int)); +#endif + fuzzoffset = (int *)shared_malloc(sizeof(int) * FUZZTABLE); // [FUZZTABLE]; + + // needed for f_wipe.c + y_lookup = (int*)shared_malloc(MAX_SCREENWIDTH * sizeof(int)); + + // needed for r_main.c/r_state.h + xtoviewangle = (angle_t*)shared_malloc((MAX_SCREENWIDTH+1) * sizeof(angle_t)); + + // needed for r_bsp.c + solidcol = (byte *)shared_malloc(MAX_SCREENWIDTH); +} diff --git a/components/gbc/src/gameboy.cpp b/components/gbc/src/gameboy.cpp index 62dbf16..c07b725 100644 --- a/components/gbc/src/gameboy.cpp +++ b/components/gbc/src/gameboy.cpp @@ -185,8 +185,8 @@ void run_gameboy_rom() { update_frame_time(elapsed); static constexpr uint64_t max_frame_time = 1000000 / 60; if (!unlock && elapsed < max_frame_time) { - auto sleep_time = (max_frame_time - elapsed) / 1e3; - std::this_thread::sleep_for(sleep_time * 1ms); + auto sleep_time = (max_frame_time - elapsed); + std::this_thread::sleep_for(sleep_time * 1us); } } diff --git a/components/pool_allocator/include/pool_allocator.h b/components/pool_allocator/include/pool_allocator.h index 635bb4a..86ec5d4 100644 --- a/components/pool_allocator/include/pool_allocator.h +++ b/components/pool_allocator/include/pool_allocator.h @@ -16,6 +16,7 @@ extern "C" { void pool_create(void* region, size_t size); void pool_destroy(); +int pool_contains(void* ptr); void* pool_alloc(size_t size); void pool_free(void* ptr); diff --git a/components/pool_allocator/src/pool_allocator.c b/components/pool_allocator/src/pool_allocator.c index 20ef48d..96851d3 100644 --- a/components/pool_allocator/src/pool_allocator.c +++ b/components/pool_allocator/src/pool_allocator.c @@ -28,6 +28,10 @@ void pool_create(void* mem, size_t size) { free_list->next = NULL; } +int pool_contains(void* ptr) { + return (ptr >= memory_pool && ptr < memory_pool + memory_pool_size); +} + void* pool_alloc(size_t size) { size = ALIGN4(size); BlockHeader* curr = free_list; @@ -58,6 +62,11 @@ void* pool_alloc(size_t size) { void pool_free(void* ptr) { if (!ptr) return; + if (!pool_contains(ptr)) { + // Pointer is not in the memory pool + return; + } + BlockHeader* block = (BlockHeader*)((uint8_t*)ptr - BLOCK_HEADER_SIZE); block->free = 1; diff --git a/main/doom_cart.hpp b/main/doom_cart.hpp index dadb6ab..14f1114 100644 --- a/main/doom_cart.hpp +++ b/main/doom_cart.hpp @@ -71,6 +71,7 @@ class DoomCart : public Cart { Cart::pre_menu(); #if defined(ENABLE_DOOM) logger_.info("doom::pre_menu()"); + pause_doom_tasks(); #endif } @@ -79,6 +80,7 @@ class DoomCart : public Cart { Cart::post_menu(); #if defined(ENABLE_DOOM) logger_.info("doom::post_menu()"); + resume_doom_tasks(); #endif } From 7a41159c266c4709ed7e8236ea62961f068a67ea Mon Sep 17 00:00:00 2001 From: William Emfinger Date: Thu, 1 May 2025 12:18:13 -0500 Subject: [PATCH 38/39] better reliability and working save/load game in box-emu menu --- components/doom/include/doom.hpp | 4 +- components/doom/prboom/doomstat.c | 3 +- components/doom/prboom/doomstat.h | 3 +- components/doom/prboom/g_game.c | 34 ++++++++- components/doom/prboom/g_game.h | 3 +- components/doom/prboom/m_menu.c | 58 ++++++++++------ components/doom/prboom/m_misc.c | 7 +- components/doom/src/doom.cpp | 23 ++++--- components/doom/src/doom_shared_memory.cpp | 72 ++++++++++++++++++++ components/shared_memory/src/shared_memory.c | 3 +- main/cart.hpp | 6 +- main/doom_cart.hpp | 4 +- 12 files changed, 175 insertions(+), 45 deletions(-) diff --git a/components/doom/include/doom.hpp b/components/doom/include/doom.hpp index 94a09af..f5c835d 100644 --- a/components/doom/include/doom.hpp +++ b/components/doom/include/doom.hpp @@ -10,8 +10,8 @@ void init_doom(const std::string& rom_filename, uint8_t *romdata, size_t rom_dat void doom_init_shared_memory(); void pause_doom_tasks(); void resume_doom_tasks(); -void load_doom(int save_slot); -void save_doom(int save_slot); +void load_doom(std::string_view save_path, int save_slot); +void save_doom(std::string_view save_path, int save_slot); void run_doom_rom(); void deinit_doom(); std::span get_doom_video_buffer(); diff --git a/components/doom/prboom/doomstat.c b/components/doom/prboom/doomstat.c index 1b66ef7..dca5f93 100644 --- a/components/doom/prboom/doomstat.c +++ b/components/doom/prboom/doomstat.c @@ -49,7 +49,8 @@ boolean modifiedgame; // CPhipps - compatibility vars complevel_t compatibility_level, default_compatibility_level; -int comp[COMP_TOTAL], default_comp[COMP_TOTAL]; // killough 10/98 +int comp[COMP_TOTAL]; +const int default_comp[COMP_TOTAL]; // killough 10/98 // v1.1-like pitched sounds int pitched_sounds; // killough diff --git a/components/doom/prboom/doomstat.h b/components/doom/prboom/doomstat.h index 5a59a3b..ca5059f 100644 --- a/components/doom/prboom/doomstat.h +++ b/components/doom/prboom/doomstat.h @@ -114,7 +114,8 @@ enum { COMP_TOTAL=32 // Some extra room for additional variables }; -extern int comp[COMP_TOTAL], default_comp[COMP_TOTAL]; +extern int comp[COMP_TOTAL]; +extern const int default_comp[COMP_TOTAL]; // ------------------------------------------- // Selected skill type, map etc. diff --git a/components/doom/prboom/g_game.c b/components/doom/prboom/g_game.c index 8c4e212..4e6c7b3 100644 --- a/components/doom/prboom/g_game.c +++ b/components/doom/prboom/g_game.c @@ -1500,6 +1500,10 @@ static const struct { static const size_t num_version_headers = sizeof(version_headers) / sizeof(version_headers[0]); +// used for the cart to be able to explicitly set its own save/load game paths +char *save_game_name = NULL; +int save_game_name_len = 0; + void G_DoLoadGame(void) { lprintf(LO_INFO, "G_DoLoadGame... \n"); @@ -1508,7 +1512,15 @@ void G_DoLoadGame(void) char name[PATH_MAX+1]; // killough 3/22/98 int savegame_compatibility = -1; - G_SaveGameName(name,sizeof(name),savegameslot, demoplayback); + if (save_game_name_len) { + strncpy(name, save_game_name, save_game_name_len); + name[save_game_name_len] = '\0'; // ensure null termination + // now unset the name so that we don't use it again + save_game_name_len = 0; + } else { + G_SaveGameName(name,sizeof(name),savegameslot); + } + gameaction = ga_nothing; length = M_ReadFile(name, &savebuffer); @@ -1682,7 +1694,14 @@ void (CheckSaveGame)(size_t size, const char* file, int line) * cph - Avoid possible buffer overflow problems by passing * size to this function and using snprintf */ -void G_SaveGameName(char *name, size_t size, int slot, boolean demoplayback) +void G_SetSaveGameFileName(char *name, size_t size) +{ + strncpy(save_game_name, name, size); + save_game_name[size] = '\0'; // ensure null termination + save_game_name_len = strlen(save_game_name); +} + +void G_SaveGameName(char *name, size_t size, int slot) { snprintf(name, size, "%s/sav%d-%d.dsg", basesavegame, gamemission, slot); } @@ -1699,7 +1718,16 @@ static void G_DoSaveGame (boolean menu) gameaction = ga_nothing; // cph - cancel savegame at top of this function, // in case later problems cause a premature exit - G_SaveGameName(name,sizeof(name),savegameslot, demoplayback && !menu); + // if the cart has set the name, use it instead + if (save_game_name_len) { + strncpy(name, save_game_name, save_game_name_len); + name[save_game_name_len] = '\0'; // ensure null termination + // now unset the name so that we don't use it again + save_game_name_len = 0; + } else { + // fall back on original name / use (used by game's menu) + G_SaveGameName(name,sizeof(name),savegameslot); + } description = savedescription; diff --git a/components/doom/prboom/g_game.h b/components/doom/prboom/g_game.h index 3410d8f..76aa8b3 100644 --- a/components/doom/prboom/g_game.h +++ b/components/doom/prboom/g_game.h @@ -66,7 +66,8 @@ void G_WorldDone(void); void G_EndGame(void); /* cph - make m_menu.c call a G_* function for this */ void G_Ticker(void); void G_ReloadDefaults(void); // killough 3/1/98: loads game defaults -void G_SaveGameName(char *, size_t, int, boolean); /* killough 3/22/98: sets savegame filename */ +void G_SetSaveGameFileName(char *name, size_t size); +void G_SaveGameName(char *, size_t, int slot); /* killough 3/22/98: sets savegame filename */ void G_SetFastParms(int); // killough 4/10/98: sets -fast parameters void G_DoNewGame(void); void G_DoReborn(int playernum); diff --git a/components/doom/prboom/m_menu.c b/components/doom/prboom/m_menu.c index c6d4a7c..0328164 100644 --- a/components/doom/prboom/m_menu.c +++ b/components/doom/prboom/m_menu.c @@ -462,7 +462,8 @@ static const menu_t SetupDef = 0 }; -static const setup_menu_t gen_settings3[] = // General Settings +setup_menu_t *gen_settings3 = NULL; +const setup_menu_t gen_settings3_init[] = // General Settings { {"GENERAL",S_SKIP|S_TITLE,m_null,200,G_Y}, {"Enable Translucency", S_YESNO, m_null, G_X, G_Y + 1*G_H, {"translucency"}, M_Trans}, @@ -484,8 +485,10 @@ static const setup_menu_t gen_settings3[] = // General Settings {0,S_SKIP|S_END,m_null} }; +const int num_gen_settings3 = sizeof(gen_settings3_init) / sizeof(gen_settings3_init[0]); -static const setup_menu_t weap_settings1[] = // Weapons Settings screen +setup_menu_t *weap_settings1 = NULL; +const setup_menu_t weap_settings1_init[] = // Weapons Settings screen { {"WEAPONS",S_SKIP|S_TITLE,m_null,200,G_Y}, {"ENABLE RECOIL", S_YESNO,m_null,G_X, G_Y+1*G_H, {"weapon_recoil"}}, @@ -505,8 +508,10 @@ static const setup_menu_t weap_settings1[] = // Weapons Settings screen {0,S_SKIP|S_END,m_null} }; +const int num_weap_settings1 = sizeof(weap_settings1_init) / sizeof(weap_settings1_init[0]); -static const setup_menu_t stat_settings1[] = // Status Bar and HUD Settings screen +setup_menu_t *stat_settings1 = NULL; +const setup_menu_t stat_settings1_init[] = // Status Bar and HUD Settings screen { {"STATUS BAR" ,S_SKIP|S_TITLE,m_null,200,G_Y}, {"Use Red Numbers" ,S_YESNO, m_null,G_X,G_Y+ 1*G_H, {"sts_always_red"}}, @@ -523,8 +528,10 @@ static const setup_menu_t stat_settings1[] = // Status Bar and HUD Settings scr {0,S_SKIP|S_END,m_null} }; +const int num_stat_settings1 = sizeof(stat_settings1_init) / sizeof(stat_settings1_init[0]); -static const setup_menu_t enem_settings1[] = // Enemy Settings screen +setup_menu_t *enem_settings1 = NULL; +const setup_menu_t enem_settings1_init[] = // Enemy Settings screen { {"ENEMIES" ,S_SKIP|S_TITLE,m_null,200,G_Y}, {"Monster Infighting When Provoked",S_YESNO,m_null,G_X,G_Y+ 1*G_H, {"monster_infighting"}}, @@ -542,8 +549,10 @@ static const setup_menu_t enem_settings1[] = // Enemy Settings screen {0,S_SKIP|S_END,m_null} }; +const int num_enem_settings1 = sizeof(enem_settings1_init) / sizeof(enem_settings1_init[0]); -static const setup_menu_t comp_settings1[] = // Compatibility Settings screen #1 +setup_menu_t *comp_settings1 = NULL; +const setup_menu_t comp_settings1_init[] = // Compatibility Settings screen #1 { {"COMPAT 1/1",S_SKIP|S_TITLE,m_null,200,G_Y}, {"Any monster can telefrag on MAP30", S_YESNO, m_null, G_X, G_Y + 1*G_H, {"comp_telefrag"}}, @@ -560,8 +569,10 @@ static const setup_menu_t comp_settings1[] = // Compatibility Settings screen # {0,S_SKIP|S_END,m_null} }; +const int num_comp_settings1 = sizeof(comp_settings1_init) / sizeof(comp_settings1_init[0]); -static const setup_menu_t comp_settings2[] = // Compatibility Settings screen #2 +setup_menu_t *comp_settings2 = NULL; +const setup_menu_t comp_settings2_init[] = // Compatibility Settings screen #2 { {"COMPAT 2/2",S_SKIP|S_TITLE,m_null,200,G_Y}, {"Lost souls don't bounce off flat surfaces", S_YESNO, m_null, G_X, G_Y + 1*G_H, {"comp_soul"}}, @@ -578,8 +589,10 @@ static const setup_menu_t comp_settings2[] = // Compatibility Settings screen # {0,S_SKIP|S_END,m_null} }; +const int num_comp_settings2 = sizeof(comp_settings2_init) / sizeof(comp_settings2_init[0]); -static const setup_menu_t keys_settings1[] = // Key Binding screen strings +setup_menu_t *keys_settings1 = NULL; +const setup_menu_t keys_settings1_init[] = // Key Binding screen strings { {"KEYBOARD 1/2",S_SKIP|S_TITLE,m_null,200,G_Y}, {"MOVEMENT" ,S_SKIP|S_TITLE,m_null,G_X,G_Y+1*G_H}, @@ -601,8 +614,10 @@ static const setup_menu_t keys_settings1[] = // Key Binding screen strings {0,S_SKIP|S_END,m_null} }; +const int num_keys_settings1 = sizeof(keys_settings1_init) / sizeof(keys_settings1_init[0]); -static const setup_menu_t keys_settings2[] = // Key Binding screen strings +setup_menu_t *keys_settings2 = NULL; +const setup_menu_t keys_settings2_init[] = // Key Binding screen strings { {"KEYBOARD 2/2",S_SKIP|S_TITLE,m_null,200,G_Y}, {"SCREEN" ,S_SKIP|S_TITLE,m_null,G_X,G_Y+1*G_H}, @@ -625,6 +640,7 @@ static const setup_menu_t keys_settings2[] = // Key Binding screen strings {0,S_SKIP|S_END,m_null} }; +const int num_keys_settings2 = sizeof(keys_settings2_init) / sizeof(keys_settings2_init[0]); static const setup_menu_t helpstrings[] = // HELP screen strings { @@ -713,19 +729,20 @@ static const setup_menu_t cred_settings[] = {0,S_SKIP|S_END,m_null}, }; -static setup_menu_t *setup_screens[] = -{ - gen_settings3, - weap_settings1, - stat_settings1, - enem_settings1, - comp_settings1, - comp_settings2, - keys_settings1, - keys_settings2, +setup_menu_t **setup_screens = NULL; +const setup_menu_t *setup_screens_init[] = +{ + NULL, // gen_settings3, + NULL, // weap_settings1, + NULL, // stat_settings1, + NULL, // enem_settings1, + NULL, // comp_settings1, + NULL, // comp_settings2, + NULL, // keys_settings1, + NULL, // keys_settings2, NULL }; - +const int num_setup_screens = sizeof(setup_screens_init) / sizeof(setup_menu_t*); static void M_SetupNextMenu(menu_t *menudef) { @@ -1244,6 +1261,7 @@ static void M_InitDefaults(void) if (!(dp = M_LookupDefault(t->var.name))) { I_Error("M_InitDefaults: Couldn't find config variable '%s'\n", t->var.name); } else { + // I_Error("M_InitDefaults: found config variable '%s'\n", t->var.name); t->var.def = dp; } } @@ -1379,7 +1397,7 @@ static void M_ReadSaveStrings(void) char name[PATH_MAX+1]; FILE *fp; - G_SaveGameName(name,sizeof(name),i,false); + G_SaveGameName(name,sizeof(name),i); if ((fp = fopen(name, "rb"))) { fread(&savegamestrings[i], SAVESTRINGSIZE, 1, fp); diff --git a/components/doom/prboom/m_misc.c b/components/doom/prboom/m_misc.c index 4cdb25b..515cead 100644 --- a/components/doom/prboom/m_misc.c +++ b/components/doom/prboom/m_misc.c @@ -155,7 +155,9 @@ extern const char* chat_macros[]; extern int map_point_coordinates; -static const default_t defaults[] = +default_t *defaults = NULL; + +const default_t defaults_init[] = { {"Misc settings",{NULL},{0},UL,UL,def_none,ss_none}, {"default_compatibility_level",{(int*)&default_compatibility_level}, @@ -631,7 +633,8 @@ static const default_t defaults[] = }; -static const int numdefaults = sizeof(defaults)/sizeof(defaults[0]); +const int numdefaults_bytes = sizeof(defaults_init); +const int numdefaults = sizeof(defaults_init)/sizeof(defaults_init[0]); static const char* configfile; // diff --git a/components/doom/src/doom.cpp b/components/doom/src/doom.cpp index 720b942..480626c 100644 --- a/components/doom/src/doom.cpp +++ b/components/doom/src/doom.cpp @@ -15,6 +15,7 @@ static bool unlock = false; static uint16_t doom_palette[256]; +static constexpr int DEFAULT_AUDIO_VOLUME = 15; static std::unique_ptr audio_task; static const char *doom_argv[10]; @@ -405,8 +406,8 @@ extern "C" { void I_Init(void) { snd_channels = NUM_MIX_CHANNELS; snd_samplerate = AUDIO_SAMPLE_RATE; - snd_MusicVolume = 50; - snd_SfxVolume = 50; + snd_MusicVolume = DEFAULT_AUDIO_VOLUME; + snd_SfxVolume = DEFAULT_AUDIO_VOLUME; usegamma = 0; } } // extern "C" @@ -439,7 +440,7 @@ void init_doom(const std::string& wad_filename, uint8_t *wad_data, size_t wad_da myargc = 5; doom_argv[0] = "doom"; doom_argv[1] = "-save"; - doom_argv[2] = "/sdcard/doom"; + doom_argv[2] = "/sdcard/saves"; doom_argv[3] = "-iwad"; doom_argv[4] = wad_filename.c_str(); // doom_argv[5] = "-file"; @@ -510,19 +511,25 @@ void pause_doom_tasks() { } void resume_doom_tasks() { - snd_MusicVolume = 50; - snd_SfxVolume = 50; + snd_MusicVolume = DEFAULT_AUDIO_VOLUME; + snd_SfxVolume = DEFAULT_AUDIO_VOLUME; } -void load_doom(int save_slot) { +void load_doom(std::string_view save_path, int save_slot) { if (save_slot >= 0) { - bool command = false; // TODO: what does this do? + // set the save game file name + G_SetSaveGameFileName(const_cast(save_path.data()), save_path.size()); + // load the game + bool command = false; G_LoadGame(save_slot, command); } } -void save_doom(int save_slot) { +void save_doom(std::string_view save_path, int save_slot) { if (save_slot >= 0) { + // set the save game file name + G_SetSaveGameFileName(const_cast(save_path.data()), save_path.size()); + // save the game auto description = fmt::format("Save Slot {}", save_slot); G_SaveGame(save_slot, const_cast(description.c_str())); } diff --git a/components/doom/src/doom_shared_memory.cpp b/components/doom/src/doom_shared_memory.cpp index 110b3e6..58320f2 100644 --- a/components/doom/src/doom_shared_memory.cpp +++ b/components/doom/src/doom_shared_memory.cpp @@ -3,6 +3,7 @@ #include "shared_memory.h" extern "C" { +#include #include #include #include @@ -54,6 +55,8 @@ extern Bit16u *OpOffsetTable; // [64]; extern player_t *players; // [MAXPLAYERS]; extern byte *gamekeydown; // [NUMKEYS]; extern char *doom_player_msg; // [MAX_MESSAGE_SIZE] +extern char *save_game_name; // [PATH_MAX+1] +extern int save_game_name_len; // from info.c extern mobjinfo_t *mobjinfo; // [NUMMOBJTYPES]; @@ -152,6 +155,40 @@ extern angle_t *xtoviewangle; // [MAX_SCREENWIDTH+1]; // killough 2/8/98 // from r_bsp.c extern byte *solidcol; // [MAX_SCREENWIDTH]; + +// from m_misc.c +extern default_t *defaults; // [numdefaults] +extern const default_t defaults_init[]; +extern const int numdefaults; + +// from m_menu.c +extern setup_menu_t *gen_settings3; +extern const setup_menu_t gen_settings3_init[]; +extern const int num_gen_settings3; +extern setup_menu_t *weap_settings1; +extern const setup_menu_t weap_settings1_init[]; +extern const int num_weap_settings1; +extern setup_menu_t *stat_settings1; +extern const setup_menu_t stat_settings1_init[]; +extern const int num_stat_settings1; +extern setup_menu_t *enem_settings1; +extern const setup_menu_t enem_settings1_init[]; +extern const int num_enem_settings1; +extern setup_menu_t *comp_settings1; +extern const setup_menu_t comp_settings1_init[]; +extern const int num_comp_settings1; +extern setup_menu_t *comp_settings2; +extern const setup_menu_t comp_settings2_init[]; +extern const int num_comp_settings2; +extern setup_menu_t *keys_settings1; +extern const setup_menu_t keys_settings1_init[]; +extern const int num_keys_settings1; +extern setup_menu_t *keys_settings2; +extern const setup_menu_t keys_settings2_init[]; +extern const int num_keys_settings2; + +extern const int num_setup_screens; +extern setup_menu_t **setup_screens; // [num_setup_screens]; } // extern "C" void doom_init_shared_memory() { @@ -175,6 +212,8 @@ void doom_init_shared_memory() { players = (player_t *)shared_malloc(sizeof(player_t) * MAXPLAYERS); gamekeydown = (byte *)shared_malloc(sizeof(byte) * NUMKEYS); doom_player_msg = (char*)shared_malloc(MAX_MESSAGE_SIZE); + save_game_name = (char*)shared_malloc(PATH_MAX + 1); + save_game_name_len = 0; // needed for info mobjinfo = (mobjinfo_t *)shared_malloc(sizeof(mobjinfo_t) * NUMMOBJTYPES); @@ -271,4 +310,37 @@ void doom_init_shared_memory() { // needed for r_bsp.c solidcol = (byte *)shared_malloc(MAX_SCREENWIDTH); + + // needed for m_misc.c + defaults = (default_t *)shared_malloc(sizeof(default_t) * numdefaults); + memcpy(defaults, defaults_init, sizeof(default_t) * numdefaults); + + // needed for m_menu.c + gen_settings3 = (setup_menu_t *)shared_malloc(sizeof(setup_menu_t) * num_gen_settings3); + memcpy(gen_settings3, gen_settings3_init, sizeof(setup_menu_t) * num_gen_settings3); + weap_settings1 = (setup_menu_t *)shared_malloc(sizeof(setup_menu_t) * num_weap_settings1); + memcpy(weap_settings1, weap_settings1_init, sizeof(setup_menu_t) * num_weap_settings1); + stat_settings1 = (setup_menu_t *)shared_malloc(sizeof(setup_menu_t) * num_stat_settings1); + memcpy(stat_settings1, stat_settings1_init, sizeof(setup_menu_t) * num_stat_settings1); + enem_settings1 = (setup_menu_t *)shared_malloc(sizeof(setup_menu_t) * num_enem_settings1); + memcpy(enem_settings1, enem_settings1_init, sizeof(setup_menu_t) * num_enem_settings1); + comp_settings1 = (setup_menu_t *)shared_malloc(sizeof(setup_menu_t) * num_comp_settings1); + memcpy(comp_settings1, comp_settings1_init, sizeof(setup_menu_t) * num_comp_settings1); + comp_settings2 = (setup_menu_t *)shared_malloc(sizeof(setup_menu_t) * num_comp_settings2); + memcpy(comp_settings2, comp_settings2_init, sizeof(setup_menu_t) * num_comp_settings2); + keys_settings1 = (setup_menu_t *)shared_malloc(sizeof(setup_menu_t) * num_keys_settings1); + memcpy(keys_settings1, keys_settings1_init, sizeof(setup_menu_t) * num_keys_settings1); + keys_settings2 = (setup_menu_t *)shared_malloc(sizeof(setup_menu_t) * num_keys_settings2); + memcpy(keys_settings2, keys_settings2_init, sizeof(setup_menu_t) * num_keys_settings2); + // setup_screens is a list of all the setup screens + setup_screens = (setup_menu_t **)shared_malloc(sizeof(setup_menu_t*) * num_setup_screens); + setup_screens[0] = gen_settings3; + setup_screens[1] = weap_settings1; + setup_screens[2] = stat_settings1; + setup_screens[3] = enem_settings1; + setup_screens[4] = comp_settings1; + setup_screens[5] = comp_settings2; + setup_screens[6] = keys_settings1; + setup_screens[7] = keys_settings2; + setup_screens[8] = NULL; // [num_setup_screens } diff --git a/components/shared_memory/src/shared_memory.c b/components/shared_memory/src/shared_memory.c index f0a1cf4..a7457c7 100644 --- a/components/shared_memory/src/shared_memory.c +++ b/components/shared_memory/src/shared_memory.c @@ -70,8 +70,7 @@ void* shared_mem_allocate(const shared_mem_request_t* request) { void shared_mem_clear(void) { printf("Num bytes allocated: %d\n", current_offset_); - // Use SIMD-accelerated memset from ESP32 - // heap_caps_memset(memory_pool_, 0, TOTAL_MEMORY_SIZE); + // TODO: Use SIMD-accelerated memset from ESP32s3 vector instructions memset(memory_pool_, 0, TOTAL_MEMORY_SIZE); current_offset_ = 0; } diff --git a/main/cart.hpp b/main/cart.hpp index d198965..8d406e4 100644 --- a/main/cart.hpp +++ b/main/cart.hpp @@ -284,7 +284,7 @@ class Cart { return menu_->get_selected_slot(); } - std::string get_save_path(bool bypass_exist_check=false) const { + virtual std::string get_save_path(bool bypass_exist_check=false) const { namespace fs = std::filesystem; auto save_path = savedir_ + "/" + @@ -297,7 +297,7 @@ class Cart { return ""; } - std::string get_paused_image_path() const { + virtual std::string get_paused_image_path() const { namespace fs = std::filesystem; auto save_path = savedir_ + "/paused" + @@ -305,7 +305,7 @@ class Cart { return save_path; } - std::string get_screenshot_path(bool bypass_exist_check=false) const { + virtual std::string get_screenshot_path(bool bypass_exist_check=false) const { auto save_path = get_save_path(bypass_exist_check); if (!save_path.empty()) { return save_path + get_screenshot_extension(); diff --git a/main/doom_cart.hpp b/main/doom_cart.hpp index 14f1114..71ef824 100644 --- a/main/doom_cart.hpp +++ b/main/doom_cart.hpp @@ -29,7 +29,7 @@ class DoomCart : public Cart { virtual void load() override { Cart::load(); #if defined(ENABLE_DOOM) - load_doom(get_selected_save_slot()); + load_doom(get_save_path(), get_selected_save_slot()); #endif } @@ -37,7 +37,7 @@ class DoomCart : public Cart { virtual void save() override { Cart::save(); #if defined(ENABLE_DOOM) - save_doom(get_selected_save_slot()); + save_doom(get_save_path(true), get_selected_save_slot()); #endif } From ca66ce19971a3668e23c997643b332f1820cb5b1 Mon Sep 17 00:00:00 2001 From: William Emfinger Date: Thu, 1 May 2025 15:36:40 -0500 Subject: [PATCH 39/39] update readme and improve sound a little; also make it so the game saves/loads while still in menu --- README.md | 36 +++++++++++++++++++++++++++++++++ components/doom/prboom/g_game.c | 3 +-- components/doom/prboom/g_game.h | 1 + components/doom/prboom/z_zone.c | 2 +- components/doom/src/doom.cpp | 3 +++ 5 files changed, 42 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index b74eab8..21067ef 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,32 @@ +![image](https://github.com/user-attachments/assets/209ed9aa-22f0-4ee0-9868-65abb1b64bbc) + +https://github.com/user-attachments/assets/2d3da6ea-2e80-42c3-bbd6-5a2c59601201 + + +**Table of Contents** + +- [esp-box-emu](#esp-box-emu) + - [Overview](#overview) + - [Images and Videos](#images-and-videos) + - [Parts](#parts) + - [Features](#features) + - [Cloning](#cloning) + - [Build and Flash](#build-and-flash) + - [Rom Setup and Configuration (uSD Card)](#rom-setup-and-configuration-usd-card) + - [ROM Images](#rom-images) + - [Metadata.csv format](#metadatacsv-format) + - [References and Inspiration:](#references-and-inspiration) + - [Other NES Emulators](#other-nes-emulators) + - [Other Genesis Emulators](#other-genesis-emulators) + - [Useful Background / Information](#useful-background--information) + + + +## Overview + The ESP-BOX-EMU is a gameboy-inspired add-on for the ESP32-S3-BOX and ESP32-S3-BOX-3 which provides: - Game Controller (gamepad input with a/b/x/y, start/select, d-pad) @@ -37,10 +63,20 @@ ESP32-S3-BOX-3 which provides: and configuration (sound, brightness, display, etc.). (all generated from Squareline Studio) +## Images and Videos + +![image](https://github.com/user-attachments/assets/d867d5fa-4c22-42e3-b04f-1edd5288c5d2) +![image](https://github.com/user-attachments/assets/ad892905-37d4-4e16-8d5f-a7ff8d2a2c52) +![image](https://github.com/user-attachments/assets/b141daab-2cda-481c-98c2-980b012f177e) + +![image](https://github.com/user-attachments/assets/d23659b6-10d4-4375-8017-675e156a1a4b) + https://github.com/esp-cpp/esp-box-emu/assets/213467/3b77f6bd-4c42-417a-9eb7-a648f31b4008 https://github.com/esp-cpp/esp-box-emu/assets/213467/a3d18d03-c6a1-4911-89d1-e18119e8cc03 +## Parts + This project is designed to be in the same form factor as the Gameboy Color and to reuse the same button plastics and membranes for a good play feel. diff --git a/components/doom/prboom/g_game.c b/components/doom/prboom/g_game.c index 4e6c7b3..972910b 100644 --- a/components/doom/prboom/g_game.c +++ b/components/doom/prboom/g_game.c @@ -253,7 +253,6 @@ int defaultskill; //note 1-based int bodyqueslot, bodyquesize; // killough 2/8/98 mobj_t **bodyque = 0; // phares 8/10/98 -static void G_DoSaveGame (boolean menu); static const byte* G_ReadDemoHeader(const byte* demo_p, size_t size, boolean failonerror); // @@ -1706,7 +1705,7 @@ void G_SaveGameName(char *name, size_t size, int slot) snprintf(name, size, "%s/sav%d-%d.dsg", basesavegame, gamemission, slot); } -static void G_DoSaveGame (boolean menu) +void G_DoSaveGame (boolean menu) { lprintf(LO_INFO, "G_DoSaveGame... \n"); diff --git a/components/doom/prboom/g_game.h b/components/doom/prboom/g_game.h index 76aa8b3..7590cd0 100644 --- a/components/doom/prboom/g_game.h +++ b/components/doom/prboom/g_game.h @@ -57,6 +57,7 @@ void G_LoadGame(int slot, boolean is_command); // killough 5/15/98 void G_ForcedLoadGame(void); // killough 5/15/98: forced loadgames void G_DoLoadGame(void); void G_SaveGame(int slot, char *description); // Called by M_Responder. +void G_DoSaveGame(boolean menu); void G_BeginRecording(void); // CPhipps - const on these string params void G_RecordDemo(const char *name); // Only called by startup code. diff --git a/components/doom/prboom/z_zone.c b/components/doom/prboom/z_zone.c index f206a29..680a417 100644 --- a/components/doom/prboom/z_zone.c +++ b/components/doom/prboom/z_zone.c @@ -363,7 +363,7 @@ void (Z_ChangeTag)(void *ptr, int tag DA(const char *file, int line)) { memblock_t *block = (memblock_t *)((char *) ptr - HEADER_SIZE); - if (!ptr || tag == block->tag) + if (!ptr || !block || tag == block->tag) return; #ifdef INSTRUMENTED diff --git a/components/doom/src/doom.cpp b/components/doom/src/doom.cpp index 480626c..f080672 100644 --- a/components/doom/src/doom.cpp +++ b/components/doom/src/doom.cpp @@ -15,6 +15,7 @@ static bool unlock = false; static uint16_t doom_palette[256]; +// Range is [0, 15] static constexpr int DEFAULT_AUDIO_VOLUME = 15; static std::unique_ptr audio_task; @@ -522,6 +523,7 @@ void load_doom(std::string_view save_path, int save_slot) { // load the game bool command = false; G_LoadGame(save_slot, command); + G_DoLoadGame(); } } @@ -532,6 +534,7 @@ void save_doom(std::string_view save_path, int save_slot) { // save the game auto description = fmt::format("Save Slot {}", save_slot); G_SaveGame(save_slot, const_cast(description.c_str())); + G_DoSaveGame(true); } }
  • 1QC0zdZ>D@>|2eq3$|7N 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