snowymouse / chimera Goto Github PK
View Code? Open in Web Editor NEWThe update to Halo PC that never was
Home Page: https://chimera.opencarnage.net
License: GNU General Public License v3.0
The update to Halo PC that never was
Home Page: https://chimera.opencarnage.net
License: GNU General Public License v3.0
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
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.
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.
Or so it seems! (using chimera_af variable)
Perfectly working on the same maps in Halo Combat Evolved (I use the lastest release of Vaporeon refined maps for Halo Combat Evolved).
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.
A zero byte file with the map name is also created in the maps directory.
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.
This breaks using sv_map in init.txt on both the client and the dedicated server.
I also tested this with a script in ui.map, it only works if you sleep for a few ticks first so I assume it is due to Chimera fast loading.
The devcam cannot be moved at game_speed 0 with interpolation on.
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
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
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.
Every time you join an MP game there is a chance the number will be loaded in such a way that the number fix will be acting in reverse and corrupting the numbers rather than causing them to be scaled.
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
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
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
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.
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.
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: fade when perpendicular
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.
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.
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.
where?
The compressed header was changed to keep the demo layout but Chimera does not support this.
It would be great to have this work on the original retail release of Halo PC too.
https://cdn.discordapp.com/attachments/381219820877643786/777769577416622080/2020-11-16_00-35-40.mp4
temporary camera impulse settings in damage effect being skipped above 30 fps (different from camera shaking)
above is a custom example
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.
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.
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.
Ideally if it is possible these features should be (optionally) restored:
This command could be used to show some information about the currently loaded map in the console.
Some things could be:
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.
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.
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.
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.
The scoreboard is too slow when viewed at a low frame rate.
chimera/src/chimera/localization/language/0
Lines 197 to 222 in 21deaba
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
Some recent change has broken this feature.
Add a command to set your color with the console to pair with chimera_set_name
.
.orig.bak
suffix and extension,I really don't type that fast. What's going on?
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.
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:
Disadvantages:
"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.
This will require:
Image: https://i.imgur.com/EGJaMFE.png
An easy way to fix this would be to disable the block if show_hud
is 0
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).
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.
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.
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.
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.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.