Git Product home page Git Product logo

chimera's People

Contributors

aerocatia avatar cambidd avatar mangofizz avatar num0005 avatar pr0ps avatar sledmine avatar snowymouse avatar surrealwaffle avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

chimera's Issues

Missing Spanish strings

Basically these need translated and added

Warning: Localization file 1 is missing key chimera_allow_all_passengers_command_help.
Warning: Localization file 1 is missing key chimera_block_auto_center_command_help.
Warning: Localization file 1 is missing key chimera_block_button_quotes_command_help.
Warning: Localization file 1 is missing key chimera_block_equipment_rotation_command_help.
Warning: Localization file 1 is missing key chimera_block_extra_weapon_blocked.
Warning: Localization file 1 is missing key chimera_block_extra_weapon_error_cannot_get_object.
Warning: Localization file 1 is missing key chimera_block_extra_weapon_error_cannot_get_weapon.
Warning: Localization file 1 is missing key chimera_block_extra_weapon_error_not_enough_weapons.
Warning: Localization file 1 is missing key chimera_block_extra_weapon_error_weapon_already_blocked.
Warning: Localization file 1 is missing key chimera_block_extra_weapon_help.
Warning: Localization file 1 is missing key chimera_delete_empty_weapons_help.
Warning: Localization file 1 is missing key chimera_error_cannot_download_retail_maps_1.
Warning: Localization file 1 is missing key chimera_error_cannot_download_retail_maps_2.
Warning: Localization file 1 is missing key chimera_error_failed_to_open_init.
Warning: Localization file 1 is missing key chimera_error_must_be_in_a_server.
Warning: Localization file 1 is missing key chimera_fov_cinematic_command_help.
Warning: Localization file 1 is missing key chimera_fov_error_invalid_fov_given.
Warning: Localization file 1 is missing key chimera_fov_vehicle_command_help.
Warning: Localization file 1 is missing key chimera_fp_reverb_command_help.
Warning: Localization file 1 is missing key chimera_send_chat_message_help.
Warning: Localization file 1 is missing key chimera_send_chat_message_invalid_channel.
Warning: Localization file 1 is missing key chimera_send_chat_message_throttled.
Warning: Localization file 1 is missing key chimera_set_color_command_help.
Warning: Localization file 1 is missing key chimera_set_color_command_invalid_color.
Warning: Localization file 1 is missing key chimera_set_name_invalid_name_error.
Warning: Localization file 1 is missing key chimera_tag_map_is_protected.
Warning: Localization file 1 is missing key chimera_teleport_dead.
Warning: Localization file 1 is missing key chimera_teleport_dead_self.
Warning: Localization file 1 is missing key chimera_teleport_help.
Warning: Localization file 1 is missing key chimera_teleport_invalid_arguments.
Warning: Localization file 1 is missing key chimera_teleport_success_mp.
Warning: Localization file 1 is missing key chimera_teleport_success_sp.
Warning: Localization file 1 is missing key chimera_unblock_all_extra_weapons_fail.
Warning: Localization file 1 is missing key chimera_unblock_all_extra_weapons_help.
Warning: Localization file 1 is missing key chimera_unblock_all_extra_weapons_success.
Warning: Localization file 1 is missing key chimera_widescreen_fix_command_warning_cannot_disable_font_override_enabled.
Warning: Localization file 1 is missing key custom_edition_netcode_command_error_needs_custom_edition_map_support.
Warning: Localization file 1 is missing key custom_edition_netcode_command_help.

Add option to disable/enable custom_chat.

Add chimera's "custom chat" disable option in chimera.ini, because it's a bit annoying and I like the original more.

Example:

chimera.ini
[custom_chat]

;================================================= ==============================
; Custom chat configuration
;
; This is the custom chat and server chat. Fonts can be either system, console,
; small, or large, and will be map-specific.
;================================================= ==============================
; Enable custom chat
;enabled=0

Make WAV/uncompressed sound tags work without memeing the base sound format

Halo PC can play sound tags containing uncompressed PCM data, but for whatever reason, Gearbox (or Bungie?) completely botched this and added a check that specifically disables this functionality.

If the sound format in the base struct of the Sound tag is set to "Uncompressed" then the sound tag will not work. However, if it's set to anything else, then it will work even if the sound, itself, is actually uncompressed.

Reimplement strings.dll's exception strings

  • Make a list of all the string resources in strings.dll.
  • Figure out how Halo accesses those string. Does it load the resources from the assembly or access them some other way?

Halo: Broken active camo tinting

The tinting of active camo doesnt work the same as it does on Xbox, on PC

original hardware
https://youtu.be/jnzf0Riv01A?t=1934

emulated
https://youtu.be/e6MRmi4E8jY

PC
unknown (1)
unknown

Xbox appears to be tinting the entire object, while pc is only tinting it partially. The alpha channel for the active_camouflage_distortion texture in /rasterizer acts as a mask for the tint values found in globals.globals on PC, white in the alpha are areas of color, black there is no color and the background color is used. Tinting in halo refers to multiplying a color over the background color.

I have attempted to invert the alpha to no acceptable results, the closest i got to it was by making the alpha completely white
unknown (2)

Fixing this globally through chimera would be ideal as it requires a new texture currently.

start of discord discussion in rebel army
https://discord.com/channels/331642419953139713/576156733538566160/773572435039092788

ps: if i should be labeling these issues differently to separate them into being possible feature implementations lmk

pss: the refraction amount might be getting set wrong on pc as well, PC seems to refract too much

Allow setting -path in chimera.ini

I think chimera would be useful if you could set -path in chimera.ini This way you could have the game run completely self contained by having a relative path to the profiles without having to always start the game with an argument.

Only apply "shrink_empty_weapons" to multiplayer.

The campaign has empty weapons placed around many levels that get broken by this, for instance the AR's resting on the Pillar of Autumn's weapon racks. Since the feature was intended as a client-side way to somewhat apply Xbox MP behaviour of removing empty weapons from play it should not apply to Campaign.

Add feature to load external font tags.

HEK format font tags could be loaded form a fonts directory local to the executable.
Using libinvader the font tag would be compiled and then injected into the game overwriting the referenced fonts. Options would be configured in the ini. This could also allow us to potentially have high definition fonts without having to do nasty things to maps directly.

Example of options.

[font]
enable_external_fonts=1 ; enable or disable
system_font=interstate_large ; name of font tag(s) in fonts directory
system_font_scale=0.25 ;scale to render it. we could only use one global value if it turns out scaling individual fonts does not work.
console_font=interstate_mono
console_font_scale=0.25
large_font=interstate_large
large_font_scale=0.25
small_font=interstate_small
small_font_scale=0.25

Advantages:

  • You can ensure you always have a monospace console
  • Option to use HD fonts that look nicer and allowing feature parity with with DX injection mods.
  • You can ensure chat, sever messages and scoreboards always look correct with your setup as fonts would always be consistent.

Disadvantages:

  • We would be completely disregarding tag data currently in the map. this is gross.

Controller Support: OG Xbox S Controller via XBCD

Based on this XBCD profile.

https://youtu.be/KgzZmZC6JFA
Mirror: https://cdn.discordapp.com/attachments/633041207865376788/801999771711569930/2021-01-21_17-54-14.mkv.webm

; Xbox S via XBCD
axis_5_n=Left Stick Up
axis_5_p=Left Stick Down
axis_6_n=Left Stick Left
axis_6_p=Left Stick Right

axis_2_n=Right Stick Up
axis_2_p=Right Stick Down
axis_3_n=Right Stick Left
axis_3_p=Right Stick Right

axis_4_p=Left Trigger
axis_1_p=Right Trigger

button_1=A
button_2=B
button_3=X
button_4=Y
button_5=White
button_6=Black
button_7=Back
button_8=Start
button_9=Left Stick
button_10=Right Stick

pov_1_w=D-Pad Left
pov_1_e=D-Pad Right
pov_1_n=D-Pad Up
pov_1_s=D-Pad Down

Halo: Broken multiply blend mode

The Multiply blend mode in shader transparent chicago/extended for Halo PC does not render as it should. Initially assumed to not be rendering at all, i found out it is only not rendering while the framebuffer fade mode is set to "none". Setting the fade modes to fade when parallel or perpendicular will properly render the shader.

framebuffer fade mode: none
a_hobov102_y5StGpyIUa

framebuffer fade mode: fade when perpendicular
a_hobov102_75XqHvEGst

This affects a number of shaders in the game that are currently using workarounds, such as the halo ring inner shadow, the guilty spark blood pools, the pillar of autumn cryo glass.

Currently the new workaround is to either use one of these modes, or to duplicate the shader and set the duplicate to the other fade mode and have that shader as an extra layer.

Windows XP SP3 compatibility

When using Chimera's latest version on Windows XP SP3, Halo Retail with the 1.10 retail patch - starting the game with Chimera properly installed gives this windows error:
"The procedure entry point GetFinalPathNameByHandleW could not be located in the dynamic link library KERNEL32.dll"

Essentially more modern versions of Chimera rely on calling a function in KERNEL32.dll that was first introduced with Windows Vista.
Would it be possible to offer an alternative call that is windows xp Sp3 safe and functional?

This could be relevant for supporting chimera on legacy Halo Combat Evolved Retail hardware from the time of its release! I would happily test any changes on this legacy period correct PC.
Thanks.

BINK cinematics playback

I put all *.bik files from retail version into the Halo CE root directory. When I use Chimera's strings.dll, nothing plays at startup (as if haloce.exe was invoked with -novideo parameter).

Are only intro cinematics disabled? What about ending.bik? Either way, it'd be nice to have a config setting for this.

Halo: transparent chicago flag

image

"first map is in screenspace" seems to be having incorrect additional behavior when compared to xbox. the first bitmaps UV offsets and animation period changes with camera distance. UV offset is shifted down when the camera moves away and up when the camera gets closer. The animation period increases as the camera moves away and decreases when the camera gets closer, almost to the point where there stops being animation. This is a problem for some hologram shaders created for halo, as they stop appearing correctly depending on where you are viewing them from, cortana is an example.

original hardware
https://youtu.be/nJVYKCsOVHU?t=610

she has a scrolling scanline that rolls down her body, it should be visible and animate from the distance the camera is from her in cutscenes.

to simplify this visually i've stripped the rest of the bitmap components to cortana's body shader and only left the bitmap flagged as in screenspace

https://cdn.discordapp.com/attachments/576156733538566160/774009908244774962/2020-11-05_15-38-01.mp4

the scrolling effect almost stops completely, making it near impossible to see up close.

https://cdn.discordapp.com/attachments/381219820877643786/774091133852319744/2020-11-05_21-01-21.mp4

the period scaling behavior needs to not happen, and the UV offsetting should probably also not happen in case it affects looping of the animation. the flag should only orient the bitmap in the cameras facing, which it does seem to do already. this may be something that needs to be investigated on original hardware or an emulator.

Crash when 'multiple_instances' is enabled and a campaign checkpoint is triggered

The game will crash when trying to save a checkpoint with multiple_instances enabled. This is due to the patch that stops the game writing to the profiles path. Interestingly this crash also happens on Halo trial despite that version disabling checkpoint writes, maybe sniffing around this code path can help us enable checkpoints on Halo Trial too.

Implement map downloading

Custom maps are not really usable without some kind of automatic downloading of them. There are just too many maps for users to manually manage and unless you are crazy enough to have every possible map installed at once you are highly likely to end up kicked from a custom map server due to not having one of its maps.

Due to hosting costs and management time needed to maintain a repo, I think it would be pragmatic to just use the existing HAC2 repo, as much as it has problems it does not seem like it is going anywhere in a hurry.

Allow setting the the Chimera map download path.

Currently it is set to <path>/chimera/maps. This makes sense and is fine for a default client install as it guarantees Chimera will have write access to that location. I think this is not always so ideal for the dedicated server though, as every -path instance would then have its own maps folder. It would also be nice to move the maps out of the path location if we do have write access to the main game directory. Paths should be either absolute or relative to the game directory.

Fix 44.1 kHz mono tags not working.

The game will not play 44.1 kHz mono tags for some reason, leading people to edit tags to lie about the sample rate and meme the pitch to convince the game to play it. Since this ugly workaround does indeed work, I assume there should be a condition where a sane tag could also be made to work.

I'm not sure if having a mod fix this would help much, but this is a shitty bug to have in the game.

Custom Chat will render in a weird way when certain characters are in player names.

When some characters are in player names the text will move back to the beginning of the line, causing text to be overlapped.

I assume this has something to do with the converting of the text from utf-16 to utf-8 having some overlap for special characters.

I'm thinking the easiest solution would be to set a range for allowed characters and prune everything outside of that.

Implement a "chimera_map_info" command.

This command could be used to show some information about the currently loaded map in the console.
Some things could be:

  • current map name
  • current map build string (to show what made it)
  • current map size (even show % of buffer used if using maps in RAM
  • tag count, tag data usage
  • protected status of the map (this check should be exposed to the Lua API too so lua scripts can check if a map is protected before running.)

Map compression/de-compression tool.

Since support for zstd compressed maps was removed from invader there should be a standalone tool provided here that can extract or compress these maps.

Remove D3DX dependency; Use Direct2D + DirectWrite instead

This would allow Chimera to run without requiring the DirectX June 2010 redistribution.
The D3DX library (including LPD3DXFONT) has been retired and is no longer maintained nor included with the rest of Windows' native DirectX packages.

I recommend looking into DirectWrite + Direct2D and/or DirectXTK SpriteFont as a possible alternative. The latter could be used for gamepad button sprites, too.

D3DX can be found...
...in [src/chimera/output/draw_text.cpp]
Line 4: #include <d3dx9.h>
...in [src/monolith/monolith.cmake]
Line 15, Column 235: .../libzstd.a -l d3dx9

Links:
D3DX retirement
Text via DirectWrite + Direct2D
DirectXTK

The base halo games exits on trying to load missing maps

when halo tries to join a server that hosts a map the client does not have, it will display a missing map error in the UI, but then immediately quit afterwards with no input.

This could be handled by instead sending the event to go back one menu in the UI rather than quitting, making it work like Custom Edition.

Add build instruction

I feel it is a nightmare, not sarcastic since halloween just happend, to build chimera.
I did once, with great pain, now it doesn't compile.

Add option to configure the font used for player names when targeting them.

Chimera can now change the scoreboard font allowing us to use monospace console fonts again, however the font that is used when you aim on another player is still incorrectly tired to the globals "terminal" font reference. We should allow for changing this too, and it should also default to the "multiplayer" HUD globals reference so it looks as intended.

Unlock disabled features on Halo demo (If possible)

Ideally if it is possible these features should be (optionally) restored:

  • Listing all campaign levels
  • Saving campaign checkpoints
  • Loading campaign checkpoints
  • Listing and loading custom/missing gametypes
  • Multiplayer gametype editor

Try and fix the glass from within Halo

Halo uses the wrong sampler type in the glass shader causing it to fail to render on anything that does not allow for that. If Chimera could correct it game-side then we would not have to depend on wrappers like dgVoodoo and DXVK to have working glass.

Add queue to enter a server.

If it is possible to add queue to enter a server that is full
when there is a free slot (function of HAC 2 or similar).

Add automatic video mode option

Add an option to have Chimera use the current desktop video mode settings for Halo.
This would allow the same install to be run from many different systems without having to change the configuration.

Explicitly remove the multitexture overlays from the stock sniper rifle.

For some reason the full version of the game removes these at runtime because the tag is broken.
For some other reason Custom Edition does not remove them anymore, but the tag is still broken.

Restoring this would be better. Custom tags would be unaffected just as they are on the full game.

EDIT: Seems retail does try to draw the ticks but it just so happens that every PC card ever released fails with them natively, so Chimera could/should just Jason Jones them away everywhere.

English localization missing keys

chimera_widescreen_fix_command_warning_cannot_disable_font_override_enabled Cannot disable widescreen fix while font_override is enabled
chimera_lua_reload_scripts_command_help Reload all Lua scripts.
chimera_lua_scripts_were_reloaded Lua scripts were reloaded.
chimera_lua_warning_script_too_updated %s was made for a newer version of Chimera.
chimera_lua_warning_script_too_outdated %s was made for a much older version of Chimera.
chimera_lua_warning_script_possibly_not_work It may possibly not work as intended.
chimera_lua_warning_script_undefined_api_version %s does not have clua_version global defined.
chimera_lua_error_failed_to_load_script Failed to load %s
chimera_lua_error_wrong_number_of_arguments wrong number of arguments in %s
chimera_lua_error_invalid_function_argument invalid argument #%d in %s
chimera_lua_error_scope_path invalid path (filesystem functions are scoped to script data directory)
chimera_lua_error_invalid_object_id invalid object ID
chimera_lua_error_invalid_callback invalid callback %s given in set_callback.
chimera_lua_error_global_not_found global not found or not implemented
chimera_lua_error_expected_number expected a number in argument #%d
chimera_lua_error_expected_number_or_boolean expected a number or boolean in argument #%d
chimera_lua_error_invalid_timer_argument timer argument must be boolean, string, number, or nil
chimera_lua_error_minimum_timer_interval interval must be at least 0.1 millseconds
chimera_lua_error_timer_does_not_exists timer with that ID does not exist
chimera_lua_error_spawn_object_invalid_id invalid tag ID specified in spawn_object
chimera_lua_error_spawn_object_invalid_path invalid tag path specified in spawn_object
chimera_lua_error_minimum_tick_rate tick rate must be at least 0.01
chimera_lua_error_script_sandbox_invalid_address invalid address specified (script is sandboxed)
chimera_lua_error_draw_text_invalid_font_id invalid font tag id in draw_text
chimera_lua_error_draw_text_invalid_alignment invalid text alignment in draw_text

chimera_spam_to_join_command_help 
chimera_spam_to_join_retrying     

chimera_lua_error_draw_text_invalid_alignment
chimera_lua_error_draw_text_invalid_font_id
chimera_lua_error_expected_number
chimera_lua_error_expected_number_or_boolean
chimera_lua_error_global_not_found
chimera_lua_error_invalid_callback
chimera_lua_error_invalid_function_argument
chimera_lua_error_invalid_object_id
chimera_lua_error_invalid_timer_argument
chimera_lua_error_minimum_tick_rate
chimera_lua_error_minimum_timer_interval
chimera_lua_error_scope_path
chimera_lua_error_script_sandbox_invalid_address
chimera_lua_error_spawn_object_invalid_id
chimera_lua_error_spawn_object_invalid_path
chimera_lua_error_timer_does_not_exists
chimera_lua_error_wrong_number_of_arguments
chimera_lua_warning_script_undefined_api_version
chimera_lua_error_scope_path

Add a "fix" to disable Halo's update check.

You can disable the check by editing the UI tags, but if there is a clean way to skip it using an engine mod then perhaps that would be better.

There is no good reason to have the update check enabled. If a 1.11 update ends up happening despite the very slim chance, you would still be much better off NOT having the game attempt to install it automatically. At this point the mods we all use are much more important than any official update that could potentially be released. There is also the fact Halo Trial never had an update in its entire life.

For these reasons the update check is just a waste of time for people who do not use custom UI's.

Some issues with the background_playback feature.

1: The game will crash if the current game changes while tabbed out.
I remember that this issue was in a previous version, it happens right after the new game connects.

2: The game will immediately try to grab focus again when the game is tabbed out in full-screen mode. when this happens you will lose input to the game so your only option is to exit with ALT-F4 as you have no other control over the system. This only happens when using native d3d9 as dgVoodoo2 hides this bug by wrapping the video output and window handling.

Failed to Open Init File/Eager Command Line Parsing

chimera does not reproduce Halo's behavior when reading the argument supplied for the -exec switch.
For instance, when supplying -exec "init.txt", chimera will attempt to load the file "init.txt", double quotes included. Furthermore, -exec "in it.txt" will result in loading the file "in, double quote included.
This isn't exactly a major issue; simply avoid whitespace in your init file paths and do not supply those paths in quotes.

Relevant function in source.

Patch the LAA flag of a copy of the current process' PE, then start anew

  1. Make a copy of HaloCE.exe/Halo.exe,
  2. Patch that file's LAA flag,
  3. Rename the current process's halo.exe/haloce.exe, adding a .orig.bak suffix and extension,
  4. Rename the copy to the original name.
  5. LAA patch the copy.
  6. Start a new process with the copy, using the current process's Working Directory and startup args.
  7. Wait for the sub-process to end before allowing the current process to end. This is particularly useful if another application starts Halo and checks if it ran successfully.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.