From 3eeba720cba5e23a4a8762875d897d21aa8b96b1 Mon Sep 17 00:00:00 2001 From: Logan Shire Date: Mon, 12 Oct 2026 18:02:31 -0400 Subject: [PATCH 01/29] Complete Apple imports, controls and diagnostics on the innerhat runtime Adapt the earlier Apple contributions while preserving upstream branding and defaults. Includes private game imports, iPhone/iPad controls, graphics diagnostics, simulator ABI support, IPA tooling and settings fixes. Attribution and validation are recorded in docs/apple-ios-migration.md. --- .github/workflows/apple.yml | 4 + docs/apple-ios-migration.md | 69 ++++ port/apple/game_store.h | 7 + port/apple/game_store.m | 86 ++++ port/apple/game_store_probe.m | 10 + port/apple/host_debug.h | 22 ++ port/apple/host_debug.m | 310 +++++++++++++++ port/apple/host_gl_diagnostics.c | 25 ++ port/apple/host_gl_dispatch.h | 18 + port/apple/host_graphics.c | 51 +++ port/apple/host_graphics.h | 18 + port/apple/host_metalfx.m | 161 ++++++++ port/apple/host_shader_cache.h | 4 + port/apple/host_shader_cache.m | 107 +++++ port/apple/xiso.c | 249 ++++++++++++ port/apple/xiso.h | 17 + ...tup.player_profile_edit.mouse_settings.xml | 4 +- .../AppArtwork.imageset/AppArtwork.png | Bin 0 -> 1768507 bytes .../AppArtwork.imageset/Contents.json | 1 + port/ios/CMakeLists.txt | 55 ++- port/ios/Info.plist.in | 5 +- port/ios/README.md | 254 +++--------- port/ios/RESIGNING.md | 92 +++++ port/ios/host/host_controls.m | 368 +++++++++++------- port/ios/host/host_import.m | 194 +++++++++ port/ios/host/host_main.m | 57 ++- port/ios/host/host_orientation.h | 11 + port/ios/host/host_orientation.m | 82 ++++ port/ios/host_imports.list | 5 + port/ios/tests/xiso_probe.c | 23 ++ port/linux/game/menu_functions.c | 2 +- port/linux/game/menu_tags.c | 2 +- port/linux/src/d3d8_gl.c | 7 + port/linux/src/port_config.c | 37 +- port/linux/src/xinput_sdl.c | 4 +- port/macos/dependencies.json | 5 + port/macos/host/host.h | 4 + port/macos/host/host_gl.c | 5 + port/macos/host/host_sdl.c | 43 +- port/macos/host_imports.list | 2 + port/macos/native/HaloPreferences.m | 21 +- port/macos/native/host_menu.m | 14 +- port/macos/tests/menu_preferences.m | 15 +- tools/android_build.py | 11 +- tools/android_gl_stubs.py | 2 +- tools/android_imports.py | 5 +- tools/ios_build.py | 28 +- tools/ios_extract_assets.py | 72 ++++ tools/ios_guest_cc.py | 7 +- tools/ios_package.py | 44 +++ tools/ios_resign.py | 138 +++++++ tools/ios_resign.sh | 4 + tools/ios_xiso_test.py | 128 ++++++ tools/macos_build.py | 5 +- tools/port_settings.py | 5 +- tools/test_config_defaults.py | 47 +++ tools/test_linux_port.py | 5 + 57 files changed, 2560 insertions(+), 411 deletions(-) create mode 100644 docs/apple-ios-migration.md create mode 100644 port/apple/game_store.h create mode 100644 port/apple/game_store.m create mode 100644 port/apple/game_store_probe.m create mode 100644 port/apple/host_debug.h create mode 100644 port/apple/host_debug.m create mode 100644 port/apple/host_gl_diagnostics.c create mode 100644 port/apple/host_gl_dispatch.h create mode 100644 port/apple/host_graphics.c create mode 100644 port/apple/host_graphics.h create mode 100644 port/apple/host_metalfx.m create mode 100644 port/apple/host_shader_cache.h create mode 100644 port/apple/host_shader_cache.m create mode 100644 port/apple/xiso.c create mode 100644 port/apple/xiso.h create mode 100644 port/ios/Assets.xcassets/AppArtwork.imageset/AppArtwork.png create mode 100644 port/ios/Assets.xcassets/AppArtwork.imageset/Contents.json create mode 100644 port/ios/RESIGNING.md create mode 100644 port/ios/host/host_import.m create mode 100644 port/ios/host/host_orientation.h create mode 100644 port/ios/host/host_orientation.m create mode 100644 port/ios/host_imports.list create mode 100644 port/ios/tests/xiso_probe.c create mode 100644 tools/ios_extract_assets.py create mode 100644 tools/ios_package.py create mode 100644 tools/ios_resign.py create mode 100755 tools/ios_resign.sh create mode 100644 tools/ios_xiso_test.py create mode 100644 tools/test_config_defaults.py diff --git a/.github/workflows/apple.yml b/.github/workflows/apple.yml index 781029c577..60f015e1cc 100644 --- a/.github/workflows/apple.yml +++ b/.github/workflows/apple.yml @@ -50,6 +50,10 @@ jobs: run: python3 tools/test_macos_runtime.py --standalone - name: Signed iOS instruction image run: python3 tools/test_ios_runtime.py + - name: iOS ISO importer safety checks + run: | + python3 tools/ios_xiso_test.py + python3 -m unittest tools.test_config_defaults - name: Controls, rendering and workload verification run: python3 -m unittest tools.test_input_bindings tools.test_visibility_queries tools.test_geometry_cache tools.test_presentation tools.test_macos_preflight tools.test_macos_benchmark - name: Version 11 network protocol diff --git a/docs/apple-ios-migration.md b/docs/apple-ios-migration.md new file mode 100644 index 0000000000..1f7f2f419a --- /dev/null +++ b/docs/apple-ios-migration.md @@ -0,0 +1,69 @@ +# Apple integration onto innerhat/OpenCE + +## Bases and attribution + +- New base: [innerhat-dev/OpenCE main](https://github.com/innerhat-dev/OpenCE/tree/036b9fe609bdba518711464ce24d2a2d9a3d7caf), `036b9fe609bdba518711464ce24d2a2d9a3d7caf`. + This fork already has Mac and iOS signed-code runtimes, compiler lowering, + renderer fixes, native menus, co-op and newer native/browser networking. +- Previous contribution: [AttilaTheFun/halo-ce-universal](https://github.com/AttilaTheFun/halo-ce-universal/commit/6702fb72efd8d97a780939d9b4bc04ab78d05aaf), `6702fb72efd8d97a780939d9b4bc04ab78d05aaf`, formerly PR #64 in OpenCommunityEdition/OpenCE. +- Earlier iOS foundation: [NicholasDominici/halo-ce-ios ios-port](https://github.com/NicholasDominici/halo-ce-ios/tree/3f2c14101d3ae1c7f0c0a11993a43407fadbeb46). +- Earlier browser foundation: [fqlx/halo-ce-universal fqlx/browser-webgl-stream-batching](https://github.com/fqlx/halo-ce-universal/tree/eaa82e6803f3d3e67c91d7f2fa2b15ee04e195f5), upstream PR #12. +- Shared decompilation lineage: OpenCommunityEdition/OpenCE and bnunu/halo-1. + +This is a selective port of the earlier Apple additions onto the requested +new base, not a replacement of innerhat's engine with the older PR #12 tree. +The old branch has a local backup and bundle before it is retired. + +## Decisions + +| Earlier contribution | Decision | +| --- | --- | +| Assembly-rewritten ILP32 runtime, memory and ABI bridges | Superseded by innerhat's LLVM-pass runtime and shared Mac/iOS bridges; retain upstream's Extended Virtual Addressing device requirement. | +| Game/network rejoin, lifecycle, migration and compatibility patches | Retain the newer base's game/network implementation; do not reintroduce protocol-6/11 compatibility or old migration structures. | +| WebKit room-code UI, browser relay, WASM build scaffolding | Retire from this contribution: new base owns browser networking and its protocol. No claim of compatibility with older deployed WASM clients. | +| Missing data importer and distribution separation | Carry over transactional Files ISO/XISO import and private image/map storage; remove default bundling of proprietary maps. | +| Mac disc imports | Retain a SHA-256-verified private ISO/XISO beside extracted maps; store that private image path so later launches and community tooling do not depend on the selected external file. | +| Existing saves/imports | Preserve old branch Documents/save and generation store, plus innerhat's previous extracted-map and save paths. IDs/accounts must remain unchanged for in-place updates. | +| iPad, touch and controller handling | Enable universal device family, bring over touch layout/D-pad/primary-controller routing and landscape handling. Correct the earlier swapped flashlight/grenade labels. | +| Metal / OpenGL switch | Use upstream's shared Metal renderer. The old native OpenGL ES fallback is intentionally retired; no nonfunctional renderer switch is displayed. | +| MetalFX and shader diagnostics | Adapt optional MetalFX, bounded ANGLE blob cache and shareable source/timing reports to the upstream context. Separate Mac graphics window; shake modal on iOS. | +| Mac menus, audio during menus, Quit | Retain upstream's native menu/audio integration rather than overwrite it with the older host. | +| Mouse sensitivity | Carry over 1–100, default 20 (0.10 multiplier), preserving existing config units and vertical SAME. Expand matching menu capacities to 128. | +| App icon/splash | Keep upstream artwork and display names; personal distribution branding lives only on the downstream internal branch. | +| IPA packaging/re-signing | Carry over asset exclusion and local signer; adapt to upstream Halo executable and required memory entitlement. | + +## Validation + +- Native ARM Mac and signed device app compile; simulator builds use a separate + 1-TB guest arena because recent simulators reserve the device's 16-GB range. + The compiler pass, import trampolines and nested GL pointers all use the same + platform bias. Device and simulator images have separate build directories. +- Signed-image ABI/runtime probe passes; 16 ISO/XISO safety tests pass under + ASan/UBSan. A full private retail image was imported in the iPad simulator, + including verification, private copy and extraction; relaunch uses that copy. +- Mac and iPad simulator reach and render the main menu. The iPad graphics + modal is visible, and Mac MetalFX creates its scaler and runs to a clean exit. + Simulator MetalFX is explicitly unavailable, rather than linked against a + framework that the simulator SDK does not provide. +- Menu XML/capacity validation passes for 100 horizontal and 101 vertical entries. + Fresh Mac/iOS config generation, TOML parsing, sensitivity save and process + relaunch pass. Reordered upstream's misplaced display options to prevent + duplicate `[display]` sections that invalidated generated settings on relaunch. +- The broader input, geometry, presentation, visibility, game-settings and audio + fixture run has the same 5 failures, 7 errors and 1 skip on pristine + `036b9fe6` and this branch before the focused config fix. Those outdated fixture + failures are not claimed as passing or suppressed in CI. +- Device signing uses an explicit distribution identifier supplied at build time, + with Extended Virtual Addressing. Packaging excludes game images/maps, saves, + private keys and development configuration. Repository defaults remain unchanged. + +Still to validate on physical hardware: iPhone/iPad startup and gameplay with the +new memory layout, controller connect/disconnect, MetalFX quality/performance, +background/resume, and a full online match with a current matching web client. +No physical devices were installed or launched by the test tooling. The draft +status is intentional; compilation and simulator smoke tests do not establish +retail fidelity or network interoperability with older deployed clients. + +Mac importer regression checks also delete the original selected ISO and verify +that the retained image, extracted maps and reloaded preferences remain usable. +Failed imports leave the previous selection untouched. diff --git a/port/apple/game_store.h b/port/apple/game_store.h new file mode 100644 index 0000000000..cebc8acada --- /dev/null +++ b/port/apple/game_store.h @@ -0,0 +1,7 @@ +#import +#include "xiso.h" +/* The root contains an atomically published generation holding the private + image, integrity manifest and extracted map cache. Saves live outside it. */ +NSString *halo_game_store_current(NSString *root); +BOOL halo_game_store_import(NSURL *image, NSString *root, xiso_progress_proc progress, + void *context, NSString **failure); diff --git a/port/apple/game_store.m b/port/apple/game_store.m new file mode 100644 index 0000000000..be8d74d1fb --- /dev/null +++ b/port/apple/game_store.m @@ -0,0 +1,86 @@ +#import "game_store.h" +#import +#include +#include +#include + +static NSString *digest_file(NSString *path, FILE *copy, xiso_progress_proc progress, + void *context, const char *phase, NSString **failure) { + FILE *input=fopen(path.fileSystemRepresentation,"rb"); + if(!input){*failure=@"Could not read the disc image.";return nil;} + struct stat before,after; + if(fstat(fileno(input),&before) || !S_ISREG(before.st_mode) || before.st_size<=0) { + fclose(input);*failure=@"Choose a non-empty disc image file.";return nil; + } + CC_SHA256_CTX hash;CC_SHA256_Init(&hash); + unsigned char *buffer=malloc(1024*1024);uint64_t done=0;BOOL ok=buffer!=NULL; + while(ok) { + if(progress && !progress(context,phase,done,before.st_size)){*failure=@"Import cancelled.";ok=NO;break;} + size_t count=fread(buffer,1,1024*1024,input); + if(!count){if(ferror(input))ok=NO;break;} + if(copy && fwrite(buffer,1,count,copy)!=count){ok=NO;break;} + CC_SHA256_Update(&hash,buffer,(CC_LONG)count);done+=count; + } + if(fstat(fileno(input),&after) || before.st_size!=after.st_size || done!=(uint64_t)before.st_size || + before.st_mtimespec.tv_sec!=after.st_mtimespec.tv_sec || before.st_mtimespec.tv_nsec!=after.st_mtimespec.tv_nsec)ok=NO; + free(buffer);fclose(input); + if(!ok){if(!*failure)*failure=@"Could not copy the complete image. Check available storage and try again.";return nil;} + unsigned char digest[CC_SHA256_DIGEST_LENGTH];CC_SHA256_Final(digest,&hash); + NSMutableString *result=[NSMutableString new];for(int i=0;i +void halo_debug_present(void); +void halo_debug_install_menu(void); +void halo_debug_initialize(void); +int halo_debug_is_presented(void); +void halo_debug_use_program(uint32_t program); +double halo_debug_draw_begin(void); +void halo_debug_draw_end(double started); +void halo_debug_shader_source(uint32_t shader,int count,const char *const *sources,const int *lengths); +void halo_debug_attach(uint32_t program,uint32_t shader); +double halo_debug_begin(void); +void halo_debug_end(uint32_t object,int program,double started); +void halo_debug_forget(uint32_t object,int program); +int halo_metalfx_enabled(void); +void halo_metalfx_set_enabled(int enabled); +int halo_metalfx_supported(void); +int host_ios_metalfx_present(unsigned int texture,unsigned int width,unsigned int height,unsigned int output_width,unsigned int output_height); +unsigned int host_ios_render_height(void); + +void halo_debug_replay_shader_report(void); +void halo_debug_test_export(void); diff --git a/port/apple/host_debug.m b/port/apple/host_debug.m new file mode 100644 index 0000000000..3cfb5d018a --- /dev/null +++ b/port/apple/host_debug.m @@ -0,0 +1,310 @@ +/* Shader-source diagnostics are exportable data, never game maps or saves. */ +#if !defined(HALO_IOS) +#import +#else +#import +#endif +#import +#include +#import +#include +#include +#include +#include "host_debug.h" +#ifdef HALO_IOS +void host_ios_touch_focus(void); +void host_ios_touch_reset(void); +#endif +#include "host.h" +#include "host_gl_dispatch.h" + +static atomic_bool recording; +static NSMutableDictionary *shaderKeys,*sources,*attachments; +static NSMutableArray *events; +static NSMutableSet *drawnPrograms; +static uint32_t currentProgram; +static NSString *glRenderer; +#ifndef HALO_BUILD_REVISION +#define HALO_BUILD_REVISION "unknown" +#endif +static NSUInteger sourceBytes,dropped; +#if !defined(HALO_IOS) +static BOOL debugPresented; +#else +static __weak UIViewController *debugController; +#endif +void halo_debug_initialize(void) { + NSUserDefaults *settings=NSUserDefaults.standardUserDefaults; + atomic_store(&recording,[settings boolForKey:@"HaloRecordShaderStalls"] || [NSProcessInfo.processInfo.environment[@"HALO_IOS_TEST_SHADER_CAPTURE"] boolValue]); + halo_metalfx_set_enabled([settings boolForKey:@"HaloMetalFX"] || [NSProcessInfo.processInfo.environment[@"HALO_IOS_TEST_METALFX"] boolValue]); +} +static void prepare(void) { + if(!shaderKeys){shaderKeys=[NSMutableDictionary new];sources=[NSMutableDictionary new];attachments=[NSMutableDictionary new];events=[NSMutableArray new];drawnPrograms=[NSMutableSet new];} +} +void halo_debug_shader_source(uint32_t shader,int count,const char *const *strings,const int *lengths) { + prepare();if(!glRenderer){const GLubyte *name=glGetString(GL_RENDERER);if(name)glRenderer=[NSString stringWithUTF8String:(const char *)name];} + [shaderKeys removeObjectForKey:@(shader)];NSMutableData *data=[NSMutableData new]; + for(int i=0;i=0?(NSUInteger)lengths[i]:strlen(strings[i]); + if(length>1024*1024 || data.length+length>1024*1024){dropped++;return;} + [data appendBytes:strings[i] length:length]; + } + unsigned char digest[CC_SHA256_DIGEST_LENGTH];CC_SHA256(data.bytes,(CC_LONG)data.length,digest); + NSMutableString *key=[NSMutableString new];for(int i=0;i32*1024*1024){dropped++;return;} + GLint type=0;glGetShaderiv(shader,GL_SHADER_TYPE,&type); + sources[key]=@{@"source":text,@"type":type==GL_VERTEX_SHADER?@"vertex":@"fragment"};sourceBytes+=data.length; + } + shaderKeys[@(shader)]=key; +} +void halo_debug_attach(uint32_t program,uint32_t shader) { + prepare();NSMutableArray *list=attachments[@(program)]; + if(!list){list=[NSMutableArray new];attachments[@(program)]=list;} + NSString *key=shaderKeys[@(shader)];if(key && ![list containsObject:key])[list addObject:key]; +} +double halo_debug_begin(void) {return CACurrentMediaTime();} +void halo_debug_end(uint32_t object,int program,double started) { + if(!started)return; + GLint ok=0; + if(program)glGetProgramiv(object,GL_LINK_STATUS,&ok);else glGetShaderiv(object,GL_COMPILE_STATUS,&ok); + double ms=(CACurrentMediaTime()-started)*1000; + if(ms<2 && ok)return; + prepare();if(events.count>=4096){dropped++;return;} + NSArray *keys=program?(attachments[@(object)]?:@[]):(shaderKeys[@(object)]?@[shaderKeys[@(object)]]:@[]); + [events addObject:@{@"stage":program?@"link":@"compile",@"milliseconds":@(ms),@"success":@(ok!=0),@"sources":keys,@"time":@([NSDate date].timeIntervalSince1970)}]; +} +void halo_debug_use_program(uint32_t program) {currentProgram=program;} +double halo_debug_draw_begin(void) { + if(!atomic_load(&recording) || !currentProgram)return 0; + prepare();if([drawnPrograms containsObject:@(currentProgram)])return 0; + [drawnPrograms addObject:@(currentProgram)]; + /* Drain older work outside the timed interval. This is deliberately + intrusive diagnostics, never enabled during normal rendering. */ + glFinish();return CACurrentMediaTime(); +} +void halo_debug_draw_end(double started) { + if(!started)return; + glFinish();double ms=(CACurrentMediaTime()-started)*1000; + if(ms<2)return; + if(events.count>=4096){dropped++;return;} + [events addObject:@{@"stage":@"first_draw_wait",@"milliseconds":@(ms),@"sources":[attachments[@(currentProgram)] copy]?:@[],@"time":@([NSDate date].timeIntervalSince1970)}]; +} +#if !defined(HALO_IOS) +int halo_debug_is_presented(void) {return debugPresented;} +#else +int halo_debug_is_presented(void) {return debugController!=nil;} +#endif +void halo_debug_forget(uint32_t object,int program) { + if(program)[drawnPrograms removeObject:@(object)]; + if(program)[attachments removeObjectForKey:@(object)];else [shaderKeys removeObjectForKey:@(object)]; +} +#if !defined(HALO_IOS) +static void exportReport(id presenter) { +#else +static void exportReport(UIViewController *presenter) { +#endif + prepare();struct utsname device;uname(&device); + NSMutableDictionary *programs=[NSMutableDictionary new]; + for(NSNumber *name in attachments)programs[name.stringValue]=[attachments[name] copy]; + NSDictionary *report=@{@"schema":@2,@"renderer":halo_graphics_metal()?@"Metal (ANGLE)":@"OpenGL ES (Apple)",@"gpu":glRenderer?:@"unknown",@"revision":@HALO_BUILD_REVISION,@"metalfx":@(halo_metalfx_enabled()!=0),@"device":[NSString stringWithUTF8String:device.machine],@"os":NSProcessInfo.processInfo.operatingSystemVersionString, + @"build":[NSBundle.mainBundle objectForInfoDictionaryKey:@"CFBundleVersion"]?:@"unknown",@"threshold_ms":@2, + @"note":@"CPU compile/link completion timings are always recorded. Synchronized first-use draw waits are opt-in. First-use waits include draw cost and may include deferred driver compilation; they are not isolated shader-compiler timings. Shader sources can guide warm-up updates.", + @"first_use_gpu_recording":@(atomic_load(&recording)),@"programs":programs, + @"dropped":@(dropped),@"events":[events copy],@"sources":[sources copy]}; + NSError *error=nil;NSData *data=[NSJSONSerialization dataWithJSONObject:report options:NSJSONWritingPrettyPrinted error:&error]; + NSURL *folder=[[NSFileManager.defaultManager URLsForDirectory:NSCachesDirectory inDomains:NSUserDomainMask].firstObject URLByAppendingPathComponent:@"ShaderReports" isDirectory:YES]; + [NSFileManager.defaultManager createDirectoryAtURL:folder withIntermediateDirectories:YES attributes:nil error:&error]; + NSArray *oldReports=[[NSFileManager.defaultManager contentsOfDirectoryAtPath:folder.path error:nil] filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(NSString *name,NSDictionary *bindings){(void)bindings;return [name hasPrefix:@"halo-shaders-"] && [name hasSuffix:@".json"];}]]; + oldReports=[oldReports sortedArrayUsingSelector:@selector(compare:)]; + for(NSUInteger i=0;i+4 +@end +@implementation HaloDebugController +- (void)viewDidLoad { + [super viewDidLoad];self.title=@"Settings"; + self.navigationItem.rightBarButtonItem=[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(done)]; +} +- (void)done {[self dismissViewControllerAnimated:YES completion:^{debugController=nil;host_ios_touch_focus();}];} +- (void)presentationControllerDidDismiss:(UIPresentationController *)presentationController { + (void)presentationController;debugController=nil;host_ios_touch_focus(); +} +- (NSInteger)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section {(void)table;(void)section;return 5;} +- (UITableViewCell *)tableView:(UITableView *)table cellForRowAtIndexPath:(NSIndexPath *)path { + (void)table;UITableViewCell *cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:nil]; + cell.detailTextLabel.numberOfLines=0; + BOOL selectedMetal=halo_graphics_prefer_metal(); + if(path.row==0) { + cell.textLabel.text=@"Renderer"; + cell.detailTextLabel.text=@"Metal via ANGLE (upstream Apple renderer)."; + } else if(selectedMetal && path.row==1) { + UISwitch *toggle=[UISwitch new];toggle.tag=0; + toggle.enabled=halo_graphics_metal() && halo_metalfx_supported();toggle.on=halo_metalfx_enabled(); + cell.textLabel.text=@"MetalFX spatial upscaling"; + cell.detailTextLabel.text=toggle.enabled?@"Upscale the selected render resolution with MetalFX.":(!halo_graphics_metal()?@"Select Metal and relaunch to enable.":@"Unavailable on this device."); + [toggle addTarget:self action:@selector(changed:) forControlEvents:UIControlEventValueChanged];cell.accessoryView=toggle; + } else { + NSInteger action=path.row-(selectedMetal?2:1); + if(action==0) { + UISwitch *toggle=[UISwitch new];toggle.tag=1;toggle.on=atomic_load(&recording); + cell.textLabel.text=@"Record first-use GPU stalls";cell.detailTextLabel.text=@"Compile/link stalls are always recorded. This also times first draws and adds GPU synchronization overhead."; + [toggle addTarget:self action:@selector(changed:) forControlEvents:UIControlEventValueChanged];cell.accessoryView=toggle; + } else if(action==1){cell.textLabel.text=@"Share shader report…";cell.detailTextLabel.text=@"Choose AirDrop in the share sheet to send it to your Mac.";} + else{cell.textLabel.text=@"Clear recorded events";cell.detailTextLabel.text=[NSString stringWithFormat:@"%lu events; %lu dropped",(unsigned long)events.count,(unsigned long)dropped];} + } + return cell; +} +- (void)networkChanged:(UISwitch *)sender {[NSUserDefaults.standardUserDefaults setBool:sender.on forKey:@"HaloBrowserRooms"];} +- (void)rendererChanged:(UISegmentedControl *)sender { + halo_graphics_set_preference(sender.selectedSegmentIndex==1);[self.tableView reloadData]; +} +- (void)changed:(UISwitch *)sender { + if(!sender.tag)halo_metalfx_set_enabled(sender.on);else {atomic_store(&recording,sender.on);[drawnPrograms removeAllObjects];} + [NSUserDefaults.standardUserDefaults setBool:sender.on forKey:sender.tag?@"HaloRecordShaderStalls":@"HaloMetalFX"]; +} +- (void)tableView:(UITableView *)table didSelectRowAtIndexPath:(NSIndexPath *)path { + [table deselectRowAtIndexPath:path animated:YES]; + NSInteger action=path.row-(halo_graphics_prefer_metal()?2:1); + if(action==1)exportReport(self); + else if(action==2){[events removeAllObjects];[drawnPrograms removeAllObjects];dropped=0;[table reloadData];} +} +@end +void halo_debug_present(void) { + if(debugController)return;prepare(); + UIWindow *window=nil;for(UIScene *scene in UIApplication.sharedApplication.connectedScenes)if([scene isKindOfClass:UIWindowScene.class])for(UIWindow *w in ((UIWindowScene*)scene).windows)if(w.isKeyWindow)window=w; + UIViewController *presenter=window.rootViewController; + while(presenter.presentedViewController)presenter=presenter.presentedViewController; + if(!presenter)return; + host_ios_touch_reset();HaloDebugController *controller=[[HaloDebugController alloc]initWithStyle:UITableViewStyleInsetGrouped]; + UINavigationController *navigation=[[UINavigationController alloc]initWithRootViewController:controller]; + navigation.modalPresentationStyle=UIModalPresentationPageSheet;debugController=navigation; + [presenter presentViewController:navigation animated:YES completion:nil]; + navigation.presentationController.delegate=controller; +} + +#endif +#if !defined(HALO_IOS) +@interface HaloDebugActions : NSWindowController +@property NSButton *upscaleButton; +@property NSButton *recordButton; +@property NSTextField *eventCount; +@end +@implementation HaloDebugActions +- (instancetype)init { + NSWindow *window=[[NSWindow alloc]initWithContentRect:NSMakeRect(0,0,480,360) + styleMask:NSWindowStyleMaskTitled|NSWindowStyleMaskClosable backing:NSBackingStoreBuffered defer:NO]; + self=[super initWithWindow:window]; + if(self) { + window.title=@"Graphics Diagnostics";window.releasedWhenClosed=NO;window.delegate=self; + NSStackView *stack=[NSStackView new];stack.orientation=NSUserInterfaceLayoutOrientationVertical; + stack.alignment=NSLayoutAttributeLeading;stack.spacing=14;stack.translatesAutoresizingMaskIntoConstraints=NO; + [window.contentView addSubview:stack]; + [NSLayoutConstraint activateConstraints:@[ + [stack.leadingAnchor constraintEqualToAnchor:window.contentView.leadingAnchor constant:24], + [stack.trailingAnchor constraintEqualToAnchor:window.contentView.trailingAnchor constant:-24], + [stack.topAnchor constraintEqualToAnchor:window.contentView.topAnchor constant:24], + [stack.bottomAnchor constraintLessThanOrEqualToAnchor:window.contentView.bottomAnchor constant:-24]]]; + [stack addArrangedSubview:[NSTextField labelWithString:@"Renderer: Metal (ANGLE)"]]; + self.upscaleButton=[NSButton checkboxWithTitle:@"MetalFX spatial upscaling" target:self action:@selector(upscale:)]; + [stack addArrangedSubview:self.upscaleButton]; + self.recordButton=[NSButton checkboxWithTitle:@"Record first-use GPU stalls" target:self action:@selector(record:)]; + [stack addArrangedSubview:self.recordButton]; + NSTextField *note=[NSTextField wrappingLabelWithString:@"Compile/link stalls are recorded automatically. First-use GPU recording adds synchronization overhead; disable it for normal play."]; + [stack addArrangedSubview:note];[note.widthAnchor constraintEqualToAnchor:stack.widthAnchor].active=YES; + [stack addArrangedSubview:[NSButton buttonWithTitle:@"AirDrop shader report…" target:self action:@selector(share:)]]; + [stack addArrangedSubview:[NSButton buttonWithTitle:@"Clear recorded events" target:self action:@selector(clear:)]]; + self.eventCount=[NSTextField labelWithString:@""];[stack addArrangedSubview:self.eventCount]; + [window center]; + } + return self; +} +-(void)refresh { + self.upscaleButton.enabled=halo_metalfx_supported();self.upscaleButton.state=halo_metalfx_enabled(); + self.recordButton.state=atomic_load(&recording); + self.eventCount.stringValue=[NSString stringWithFormat:@"%lu events; %lu dropped",(unsigned long)events.count,(unsigned long)dropped]; +} +-(void)openSettings:(id)sender { + (void)sender;[self refresh];debugPresented=YES;[self showWindow:nil];[self.window makeKeyAndOrderFront:nil]; + NSString *capture=NSProcessInfo.processInfo.environment[@"HALO_MAC_TEST_SETTINGS_IMAGE"]; + if(capture.length) { + NSView *view=self.window.contentView;[view layoutSubtreeIfNeeded]; + NSBitmapImageRep *bitmap=[view bitmapImageRepForCachingDisplayInRect:view.bounds]; + [view cacheDisplayInRect:view.bounds toBitmapImageRep:bitmap]; + [[bitmap representationUsingType:NSBitmapImageFileTypePNG properties:@{}]writeToFile:capture atomically:YES]; + } +} +-(void)windowWillClose:(NSNotification *)notification {(void)notification;debugPresented=NO;} +-(void)network:(NSButton *)item {[NSUserDefaults.standardUserDefaults setBool:item.state==NSControlStateValueOn forKey:@"HaloBrowserRooms"];} +-(void)upscale:(NSButton *)item {BOOL on=item.state==NSControlStateValueOn;halo_metalfx_set_enabled(on);[NSUserDefaults.standardUserDefaults setBool:on forKey:@"HaloMetalFX"];[self refresh];} +-(void)record:(NSButton *)item {BOOL on=item.state==NSControlStateValueOn;atomic_store(&recording,on);[drawnPrograms removeAllObjects];[NSUserDefaults.standardUserDefaults setBool:on forKey:@"HaloRecordShaderStalls"];[self refresh];} +-(void)share:(id)sender {(void)sender;exportReport(nil);} +-(void)clear:(id)sender {(void)sender;[events removeAllObjects];[drawnPrograms removeAllObjects];dropped=0;[self refresh];} +@end +static HaloDebugActions *actions; +void halo_debug_install_menu(void) { + if(actions)return;prepare();actions=[HaloDebugActions new]; + NSMenu *menu=NSApp.mainMenu.itemArray.firstObject.submenu; + if(!menu)return; + NSMenuItem *item=[[NSMenuItem alloc] initWithTitle:@"Graphics Diagnostics…" action:@selector(openSettings:) keyEquivalent:@""]; + item.target=actions;[menu insertItem:item atIndex:MIN(2,menu.numberOfItems)]; +} +void halo_debug_present(void) {halo_debug_install_menu();[actions openSettings:nil];} +#endif + +/* Developer regression: compile every source in a received report using the + actual bundled driver. No game state, textures or buffers are changed. */ +void halo_debug_replay_shader_report(void) { +#if !defined(HALO_IOS) + NSString *path=NSProcessInfo.processInfo.environment[@"HALO_MAC_TEST_SHADER_REPORT"]; + if(!path.length)return; + NSData *data=[NSData dataWithContentsOfFile:path]; + NSDictionary *report=data?[NSJSONSerialization JSONObjectWithData:data options:0 error:nil]:nil; + NSDictionary *entries=[report isKindOfClass:NSDictionary.class]?report[@"sources"]:nil; + if(![entries isKindOfClass:NSDictionary.class] || entries.count>4096)host_fatal("Invalid shader replay report"); + __typeof__(&glCreateShader) create=halo_graphics_proc("glCreateShader"); + __typeof__(&glShaderSource) source=halo_graphics_proc("glShaderSource"); + __typeof__(&glCompileShader) compile=halo_graphics_proc("glCompileShader"); + __typeof__(&glDeleteShader) destroy=halo_graphics_proc("glDeleteShader"); + __typeof__(&glGetShaderInfoLog) getLog=halo_graphics_proc("glGetShaderInfoLog"); + unsigned passed=0,failed=0; + for(NSString *key in entries) { + NSDictionary *entry=entries[key]; + if(![entry isKindOfClass:NSDictionary.class])host_fatal("Invalid shader replay entry"); + NSString *text=entry[@"source"],*kind=entry[@"type"]; + if(![text isKindOfClass:NSString.class] || text.length>1024*1024 || + (![kind isEqualToString:@"vertex"] && ![kind isEqualToString:@"fragment"]))host_fatal("Invalid shader replay entry"); + GLuint shader=create([kind isEqualToString:@"vertex"]?GL_VERTEX_SHADER:GL_FRAGMENT_SHADER); + const char *utf8=text.UTF8String;source(shader,1,&utf8,NULL);compile(shader); + GLint ok=0;glGetShaderiv(shader,GL_COMPILE_STATUS,&ok); + if(ok)passed++;else {char log[4096];getLog(shader,sizeof(log),NULL,log);host_logf(HOST_LOG_ERROR,"Shader replay %s failed: %s",key.UTF8String,log);failed++;} + destroy(shader); + } + host_logf(HOST_LOG_INFO,"Shader replay: %u compiled, %u failed",passed,failed); +#endif +} + +void halo_debug_test_export(void) { +#if !defined(HALO_IOS) + if(NSProcessInfo.processInfo.environment[@"HALO_MAC_TEST_SHADER_EXPORT"].length)exportReport(nil); +#endif +} diff --git a/port/apple/host_gl_diagnostics.c b/port/apple/host_gl_diagnostics.c new file mode 100644 index 0000000000..ffe7269121 --- /dev/null +++ b/port/apple/host_gl_diagnostics.c @@ -0,0 +1,25 @@ +/* Host GL arguments have already been widened by the shared guest bridge. */ +#include +#include +#include "host_debug.h" +static void shader_source(GLuint shader, GLsizei count, const GLchar *const *text, const GLint *lengths) { + halo_debug_shader_source(shader, count, text, lengths); + glShaderSource(shader, count, text, lengths); +} +static void compile_shader(GLuint shader) { double t=halo_debug_begin(); glCompileShader(shader); halo_debug_end(shader,0,t); } +static void link_program(GLuint program) { double t=halo_debug_begin(); glLinkProgram(program); halo_debug_end(program,1,t); } +static void attach_shader(GLuint program, GLuint shader) { halo_debug_attach(program,shader); glAttachShader(program,shader); } +static void use_program(GLuint program) { halo_debug_use_program(program); glUseProgram(program); } +static void delete_shader(GLuint shader) { halo_debug_forget(shader,0); glDeleteShader(shader); } +static void delete_program(GLuint program) { halo_debug_forget(program,1); glDeleteProgram(program); } +static void draw_arrays(GLenum mode, GLint first, GLsizei count) { double t=halo_debug_draw_begin(); glDrawArrays(mode,first,count); halo_debug_draw_end(t); } +static void draw_elements(GLenum mode, GLsizei count, GLenum type, const void *indices) { double t=halo_debug_draw_begin(); glDrawElements(mode,count,type,indices); halo_debug_draw_end(t); } +void *halo_debug_gl_resolve(const char *name) { +#define WRAP(gl, fn) if (!strcmp(name, #gl)) return (void *)fn + WRAP(glShaderSource,shader_source); WRAP(glCompileShader,compile_shader); WRAP(glLinkProgram,link_program); + WRAP(glAttachShader,attach_shader); WRAP(glUseProgram,use_program); + WRAP(glDeleteShader,delete_shader); WRAP(glDeleteProgram,delete_program); + WRAP(glDrawArrays,draw_arrays); WRAP(glDrawElements,draw_elements); +#undef WRAP + return 0; +} diff --git a/port/apple/host_gl_dispatch.h b/port/apple/host_gl_dispatch.h new file mode 100644 index 0000000000..a3c866f36a --- /dev/null +++ b/port/apple/host_gl_dispatch.h @@ -0,0 +1,18 @@ +/* Include after GL declarations. Driver choice is fixed for the process. */ +#pragma once +#include "host_graphics.h" +#define HALO_GL_PROC(name) ({static __typeof__(&name) fn; if(!fn)fn=(__typeof__(&name))halo_graphics_proc(#name); fn;}) +#define glBindFramebuffer HALO_GL_PROC(glBindFramebuffer) +#define glBindTexture HALO_GL_PROC(glBindTexture) +#define glBlitFramebuffer HALO_GL_PROC(glBlitFramebuffer) +#define glCheckFramebufferStatus HALO_GL_PROC(glCheckFramebufferStatus) +#define glDisable HALO_GL_PROC(glDisable) +#define glEnable HALO_GL_PROC(glEnable) +#define glFinish HALO_GL_PROC(glFinish) +#define glFramebufferTexture2D HALO_GL_PROC(glFramebufferTexture2D) +#define glGenFramebuffers HALO_GL_PROC(glGenFramebuffers) +#define glGetIntegerv HALO_GL_PROC(glGetIntegerv) +#define glGetProgramiv HALO_GL_PROC(glGetProgramiv) +#define glGetShaderiv HALO_GL_PROC(glGetShaderiv) +#define glGetString HALO_GL_PROC(glGetString) +#define glIsEnabled HALO_GL_PROC(glIsEnabled) diff --git a/port/apple/host_graphics.c b/port/apple/host_graphics.c new file mode 100644 index 0000000000..294316f834 --- /dev/null +++ b/port/apple/host_graphics.c @@ -0,0 +1,51 @@ +#include +#include +#include +#include +#include +#include "host_graphics.h" +#include "host_debug.h" +#include "host_shader_cache.h" +static EGLDisplay display; +static EGLConfig config; +static EGLSurface sharedSurface; +static GLuint sharedTexture; +static int sharedBound; +int halo_graphics_metal(void) { return 1; } +int halo_graphics_prefer_metal(void) { return 1; } +void halo_graphics_set_preference(int metal) { (void)metal; } +void *halo_graphics_proc(const char *name) { return (void *)eglGetProcAddress(name); } +void halo_graphics_attach(EGLDisplay current, EGLConfig configuration) { + display=current; config=configuration; + halo_debug_initialize(); + halo_shader_cache_install(display, eglGetProcAddress); +} +unsigned int halo_graphics_shared_create(void *surface,unsigned int w,unsigned int h) { + halo_graphics_shared_destroy(); + EGLint attrs[]={EGL_WIDTH,(EGLint)w,EGL_HEIGHT,(EGLint)h,EGL_IOSURFACE_PLANE_ANGLE,0,EGL_TEXTURE_TARGET,EGL_TEXTURE_2D,EGL_TEXTURE_FORMAT,EGL_TEXTURE_RGBA,EGL_TEXTURE_TYPE_ANGLE,GL_UNSIGNED_BYTE,EGL_TEXTURE_INTERNAL_FORMAT_ANGLE,GL_BGRA_EXT,EGL_NONE}; + sharedSurface=eglCreatePbufferFromClientBuffer(display,EGL_IOSURFACE_ANGLE,surface,config,attrs); + if(!sharedSurface)return 0; + void (*genTextures)(GLsizei,GLuint *)=halo_graphics_proc("glGenTextures");genTextures(1,&sharedTexture); + return halo_graphics_shared_begin()?sharedTexture:0; +} +int halo_graphics_shared_begin(void) { + if(sharedBound)return 1; + if(!sharedSurface)return 0; + void (*bindTexture)(GLenum,GLuint)=halo_graphics_proc("glBindTexture");bindTexture(GL_TEXTURE_2D,sharedTexture); + sharedBound=eglBindTexImage(display,sharedSurface,EGL_BACK_BUFFER);return sharedBound; +} +int halo_graphics_shared_end(void) { + if(!sharedBound)return 1; + EGLBoolean released=eglReleaseTexImage(display,sharedSurface,EGL_BACK_BUFFER); + /* Complete both the rendering and any release-time work before another + Metal command queue reads the IOSurface. */ + void (*finish)(void)=halo_graphics_proc("glFinish");finish(); + if(released)sharedBound=0; + return released; +} +void halo_graphics_shared_destroy(void) { + halo_graphics_shared_end(); + if(sharedTexture){void (*deleteTextures)(GLsizei,const GLuint *)=halo_graphics_proc("glDeleteTextures");deleteTextures(1,&sharedTexture);sharedTexture=0;} + if(sharedSurface){eglDestroySurface(display,sharedSurface);sharedSurface=EGL_NO_SURFACE;} + sharedBound=0; +} diff --git a/port/apple/host_graphics.h b/port/apple/host_graphics.h new file mode 100644 index 0000000000..3aaf4740a7 --- /dev/null +++ b/port/apple/host_graphics.h @@ -0,0 +1,18 @@ +#pragma once +#include +struct SDL_Window; +void halo_graphics_initialize(void); +int halo_graphics_metal(void); +int halo_graphics_prefer_metal(void); +void halo_graphics_set_preference(int metal); +void *halo_graphics_proc(const char *name); +int halo_graphics_has_extension(const char *name); +void *halo_graphics_create(struct SDL_Window *window); +int halo_graphics_make_current(void); +int halo_graphics_swap(void); +int halo_graphics_swap_interval(int interval); +/* IOSurface ownership is transferred to/from ANGLE around each MetalFX copy. */ +unsigned int halo_graphics_shared_create(void *iosurface,unsigned int width,unsigned int height); +int halo_graphics_shared_begin(void); +int halo_graphics_shared_end(void); +void halo_graphics_shared_destroy(void); diff --git a/port/apple/host_metalfx.m b/port/apple/host_metalfx.m new file mode 100644 index 0000000000..25b61e6eed --- /dev/null +++ b/port/apple/host_metalfx.m @@ -0,0 +1,161 @@ +#include +#if TARGET_OS_SIMULATOR +#include "host_debug.h" +int halo_metalfx_supported(void) {return 0;} +int halo_metalfx_enabled(void) {return 0;} +void halo_metalfx_set_enabled(int enabled) {(void)enabled;} +unsigned int host_ios_render_height(void) {return 0;} +int host_ios_metalfx_present(unsigned int t,unsigned int w,unsigned int h,unsigned int ow,unsigned int oh) {(void)t;(void)w;(void)h;(void)ow;(void)oh;return 0;} +#else +/* Optional ANGLE Metal -> IOSurface -> MetalFX presentation. Both APIs share the + input image; explicit completion fences protect ownership across APIs. */ +#if !defined(HALO_IOS) +#import +#else +#import +#endif +#include +#include + +#import +#import +#import +#import +#include "host.h" +#include "host_gl_dispatch.h" +#include "host_debug.h" + +static BOOL enabled; +static id device; +static id queue; +static id pending; +static id scaler; + +static CVMetalTextureCacheRef metalCache; +static CVPixelBufferRef pixels; +static GLuint sharedTexture; +static CVMetalTextureRef metalImage; +static id output; +#if !defined(HALO_IOS) +@interface HaloMetalSurface : NSView +@end +@implementation HaloMetalSurface +-(NSView *)hitTest:(NSPoint)point {(void)point;return nil;} +@end +static NSView *surface; +#else +static UIView *surface; +#endif +static CAMetalLayer *layer; +static GLuint readFBO,writeFBO; +static unsigned inputW,inputH,outputW,outputH; + +int halo_metalfx_supported(void) { + if(!device)device=MTLCreateSystemDefaultDevice(); + return device && [MTLFXSpatialScalerDescriptor supportsDevice:device]; +} +int halo_metalfx_enabled(void) {return enabled;} +void halo_metalfx_set_enabled(int value) { + enabled=value && halo_graphics_metal() && halo_metalfx_supported(); + if(!enabled)surface.hidden=YES; + host_logf(HOST_LOG_INFO,"MetalFX spatial upscaling %s",enabled?"enabled":"disabled"); +} +unsigned int host_ios_render_height(void) {return enabled?720:0;} +static void releaseImages(void) { + [pending waitUntilCompleted];pending=nil; + halo_graphics_shared_destroy();sharedTexture=0; + if(metalImage){CFRelease(metalImage);metalImage=NULL;} + if(pixels){CFRelease(pixels);pixels=NULL;} + if(metalCache)CVMetalTextureCacheFlush(metalCache,0); + scaler=nil;output=nil;inputW=inputH=outputW=outputH=0; +} +static BOOL configure(unsigned w,unsigned h,unsigned ow,unsigned oh) { + releaseImages(); + if(!queue)queue=[device newCommandQueue]; + if(!queue)return NO; + if(!metalCache && CVMetalTextureCacheCreate(NULL,NULL,device,NULL,&metalCache)!=kCVReturnSuccess)return NO; + NSDictionary *attributes=@{(id)kCVPixelBufferIOSurfacePropertiesKey:@{},(id)kCVPixelBufferMetalCompatibilityKey:@YES}; + if(CVPixelBufferCreate(NULL,w,h,kCVPixelFormatType_32BGRA,(__bridge CFDictionaryRef)attributes,&pixels)!=kCVReturnSuccess)return NO; + sharedTexture=halo_graphics_shared_create(CVPixelBufferGetIOSurface(pixels),w,h); + if(!sharedTexture)return NO; + MTLFXSpatialScalerDescriptor *desc=[MTLFXSpatialScalerDescriptor new]; + desc.inputWidth=w;desc.inputHeight=h;desc.outputWidth=ow;desc.outputHeight=oh; + desc.colorTextureFormat=desc.outputTextureFormat=MTLPixelFormatBGRA8Unorm; + desc.colorProcessingMode=MTLFXSpatialScalerColorProcessingModePerceptual; + scaler=[desc newSpatialScalerWithDevice:device];if(!scaler)return NO; + NSDictionary *textureAttributes=@{(id)kCVMetalTextureUsage:@(scaler.colorTextureUsage)}; + if(CVMetalTextureCacheCreateTextureFromImage(NULL,metalCache,pixels,(__bridge CFDictionaryRef)textureAttributes,MTLPixelFormatBGRA8Unorm,w,h,0,&metalImage)!=kCVReturnSuccess)return NO; + MTLTextureDescriptor *texture=[MTLTextureDescriptor texture2DDescriptorWithPixelFormat:MTLPixelFormatBGRA8Unorm width:ow height:oh mipmapped:NO]; + texture.storageMode=MTLStorageModePrivate;texture.usage=scaler.outputTextureUsage; + output=[device newTextureWithDescriptor:texture];if(!output)return NO; + scaler.colorTexture=CVMetalTextureGetTexture(metalImage);scaler.outputTexture=output; + scaler.inputContentWidth=w;scaler.inputContentHeight=h; + if(!readFBO)glGenFramebuffers(1,&readFBO); + if(!writeFBO)glGenFramebuffers(1,&writeFBO); + glBindFramebuffer(GL_DRAW_FRAMEBUFFER,writeFBO); + glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER,GL_COLOR_ATTACHMENT0,GL_TEXTURE_2D,sharedTexture,0); + if(glCheckFramebufferStatus(GL_DRAW_FRAMEBUFFER)!=GL_FRAMEBUFFER_COMPLETE)return NO; + inputW=w;inputH=h;outputW=ow;outputH=oh; + host_logf(HOST_LOG_INFO,"MetalFX configured %ux%u -> %ux%u",w,h,ow,oh); + return YES; +} +int host_ios_metalfx_present(unsigned int texture,unsigned int w,unsigned int h,unsigned int ow,unsigned int oh) { + if(!enabled || !w || !h || !ow || !oh)return 0; + @autoreleasepool { + GLint oldRead,oldWrite,oldTexture;glGetIntegerv(GL_READ_FRAMEBUFFER_BINDING,&oldRead);glGetIntegerv(GL_DRAW_FRAMEBUFFER_BINDING,&oldWrite);glGetIntegerv(GL_TEXTURE_BINDING_2D,&oldTexture); + BOOL scissor=glIsEnabled(GL_SCISSOR_TEST),success=YES; + [pending waitUntilCompleted]; + if(pending.status==MTLCommandBufferStatusError){host_logf(HOST_LOG_ERROR,"MetalFX: %s",pending.error.localizedDescription.UTF8String);success=NO;} + pending=nil; + if(success && (w!=inputW || h!=inputH || ow!=outputW || oh!=outputH))success=configure(w,h,ow,oh); + if(success && !surface) { +#if !defined(HALO_IOS) + extern void *host_macos_game_window(void); + NSWindow *window=(__bridge NSWindow *)host_macos_game_window(); + NSView *root=window.contentView; + if(root){surface=[[HaloMetalSurface alloc]initWithFrame:root.bounds];surface.autoresizingMask=NSViewWidthSizable|NSViewHeightSizable;surface.wantsLayer=YES;layer=[CAMetalLayer layer];layer.device=device;layer.pixelFormat=MTLPixelFormatBGRA8Unorm;layer.framebufferOnly=NO;[surface.layer addSublayer:layer];[root addSubview:surface];} + else success=NO; +#else + UIWindow *window=nil; + for(UIScene *scene in UIApplication.sharedApplication.connectedScenes)if([scene isKindOfClass:UIWindowScene.class])for(UIWindow *candidate in ((UIWindowScene*)scene).windows)if(candidate.isKeyWindow)window=candidate; + UIView *root=window.rootViewController.view; + if(root){surface=[[UIView alloc]initWithFrame:root.bounds];surface.userInteractionEnabled=NO;surface.autoresizingMask=UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;layer=[CAMetalLayer layer];layer.device=device;layer.pixelFormat=MTLPixelFormatBGRA8Unorm;layer.framebufferOnly=NO;[surface.layer addSublayer:layer];[root insertSubview:surface atIndex:0];} + else success=NO; +#endif + } + if(success)success=halo_graphics_shared_begin(); + if(success) { + glBindFramebuffer(GL_READ_FRAMEBUFFER,readFBO);glFramebufferTexture2D(GL_READ_FRAMEBUFFER,GL_COLOR_ATTACHMENT0,GL_TEXTURE_2D,texture,0); + glBindFramebuffer(GL_DRAW_FRAMEBUFFER,writeFBO); + glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER,GL_COLOR_ATTACHMENT0,GL_TEXTURE_2D,sharedTexture,0);glDisable(GL_SCISSOR_TEST); + /* Guest row zero already denotes the top, as Metal expects. */ + glBlitFramebuffer(0,0,w,h,0,0,w,h,GL_COLOR_BUFFER_BIT,GL_NEAREST); + success=halo_graphics_shared_end(); + layer.frame=surface.bounds; +#if !defined(HALO_IOS) + layer.contentsScale=surface.window.backingScaleFactor; +#else + layer.contentsScale=surface.window.screen.scale; +#endif + CGSize size=CGSizeMake(round(surface.bounds.size.width*layer.contentsScale),round(surface.bounds.size.height*layer.contentsScale)); + if(!CGSizeEqualToSize(layer.drawableSize,size))layer.drawableSize=size; + id drawable=[layer nextDrawable]; + if(success && drawable && ow<=drawable.texture.width && oh<=drawable.texture.height) { + id commands=[queue commandBuffer]; + [scaler encodeToCommandBuffer:commands]; + MTLRenderPassDescriptor *pass=[MTLRenderPassDescriptor renderPassDescriptor]; + pass.colorAttachments[0].texture=drawable.texture;pass.colorAttachments[0].loadAction=MTLLoadActionClear;pass.colorAttachments[0].storeAction=MTLStoreActionStore;pass.colorAttachments[0].clearColor=MTLClearColorMake(0,0,0,1); + [[commands renderCommandEncoderWithDescriptor:pass]endEncoding]; + id blit=[commands blitCommandEncoder]; + [blit copyFromTexture:output sourceSlice:0 sourceLevel:0 sourceOrigin:MTLOriginMake(0,0,0) sourceSize:MTLSizeMake(ow,oh,1) toTexture:drawable.texture destinationSlice:0 destinationLevel:0 destinationOrigin:MTLOriginMake((drawable.texture.width-ow)/2,(drawable.texture.height-oh)/2,0)]; + [blit endEncoding];[commands presentDrawable:drawable];[commands commit];pending=commands;surface.hidden=NO; + } else {host_logf(HOST_LOG_WARN,"MetalFX drawable unavailable or too small (%ux%u requested)",ow,oh);surface.hidden=YES;success=NO;} + } + glBindFramebuffer(GL_READ_FRAMEBUFFER,oldRead);glBindFramebuffer(GL_DRAW_FRAMEBUFFER,oldWrite);glBindTexture(GL_TEXTURE_2D,oldTexture); + if(scissor)glEnable(GL_SCISSOR_TEST);else glDisable(GL_SCISSOR_TEST); + if(!success){halo_metalfx_set_enabled(0);releaseImages();} + return success; + } +} + +#endif diff --git a/port/apple/host_shader_cache.h b/port/apple/host_shader_cache.h new file mode 100644 index 0000000000..6fd67ff8e2 --- /dev/null +++ b/port/apple/host_shader_cache.h @@ -0,0 +1,4 @@ +#pragma once +#include +#include +void halo_shader_cache_install(EGLDisplay display, PFNEGLGETPROCADDRESSPROC get_proc); diff --git a/port/apple/host_shader_cache.m b/port/apple/host_shader_cache.m new file mode 100644 index 0000000000..7c670bcf4d --- /dev/null +++ b/port/apple/host_shader_cache.m @@ -0,0 +1,107 @@ +/* ANGLE owns the opaque keys and validates compiled blobs. The application + provides a bounded private disk cache, scoped to the GPU, OS and ANGLE build. + Writes run off the rendering thread; eviction/corruption is just a miss. */ +#import +#import +#import +#include +#include "host_shader_cache.h" +#include "host.h" + +static NSString *cacheDirectory; +static NSCache *memoryCache; +static dispatch_queue_t writer; +static NSLock *pendingLock; +static NSUInteger pendingBytes; +static const NSUInteger maximumBlob=16*1024*1024, maximumDisk=64*1024*1024; +static BOOL loggedHit,loggedStore; + +static NSString *digest(NSData *data) { + unsigned char bytes[CC_SHA256_DIGEST_LENGTH];CC_SHA256(data.bytes,(CC_LONG)data.length,bytes); + NSMutableString *result=[NSMutableString new]; + for(unsigned i=0;i65536)return nil; + return digest([NSData dataWithBytes:key length:(NSUInteger)size]); +} +static void trimDisk(void) { + NSFileManager *files=NSFileManager.defaultManager; + NSArray *urls=[files contentsOfDirectoryAtURL:[NSURL fileURLWithPath:cacheDirectory] + includingPropertiesForKeys:@[NSURLFileSizeKey,NSURLContentModificationDateKey] options:0 error:nil]; + NSMutableArray *entries=[NSMutableArray new];NSUInteger total=0; + for(NSURL *url in urls) { + if(![url.pathExtension isEqualToString:@"blob"])continue; + NSDictionary *values=[url resourceValuesForKeys:@[NSURLFileSizeKey,NSURLContentModificationDateKey] error:nil]; + NSUInteger size=[values[NSURLFileSizeKey] unsignedIntegerValue];total+=size; + [entries addObject:@{@"url":url,@"size":@(size),@"date":values[NSURLContentModificationDateKey]?:NSDate.distantPast}]; + } + [entries sortUsingDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"date" ascending:YES]]]; + for(NSDictionary *entry in entries) { + if(total<=maximumDisk)break; + [files removeItemAtURL:entry[@"url"] error:nil];total-=[entry[@"size"] unsignedIntegerValue]; + } +} +static void storeBlob(const void *key,EGLsizeiANDROID keySize,const void *value,EGLsizeiANDROID valueSize) { + @autoreleasepool { + NSString *name=keyName(key,keySize); + if(!name || !value || valueSize<=0 || valueSize>maximumBlob)return; + NSData *bytes=[NSData dataWithBytes:value length:(NSUInteger)valueSize]; + [memoryCache setObject:bytes forKey:name cost:bytes.length]; + [pendingLock lock]; + BOOL queued=pendingBytes+bytes.length<=maximumDisk; + if(queued)pendingBytes+=bytes.length; + [pendingLock unlock]; + if(!queued)return; + dispatch_async(writer,^{@autoreleasepool { + NSString *path=[cacheDirectory stringByAppendingPathComponent:[name stringByAppendingPathExtension:@"blob"]]; + BOOL ok=[bytes writeToFile:path options:NSDataWritingAtomic error:nil]; + if(ok && !loggedStore){loggedStore=YES;host_logf(HOST_LOG_INFO,"ANGLE shader cache: stored compiled blob");} + trimDisk(); + [pendingLock lock];pendingBytes-=bytes.length;[pendingLock unlock]; + }}); + } +} +static EGLsizeiANDROID getBlob(const void *key,EGLsizeiANDROID keySize,void *value,EGLsizeiANDROID valueSize) { + @autoreleasepool { + NSString *name=keyName(key,keySize);if(!name)return 0; + NSData *bytes=[memoryCache objectForKey:name];BOOL diskHit=NO; + if(!bytes) { + NSString *path=[cacheDirectory stringByAppendingPathComponent:[name stringByAppendingPathExtension:@"blob"]]; + unsigned long long size=[[NSFileManager.defaultManager attributesOfItemAtPath:path error:nil] fileSize]; + if(size==0 || size>maximumBlob)return 0; + bytes=[NSData dataWithContentsOfFile:path options:0 error:nil]; + if(!bytes || bytes.length>maximumBlob)return 0; + [memoryCache setObject:bytes forKey:name cost:bytes.length];diskHit=YES; + } + if(value && valueSize>=0 && (NSUInteger)valueSize>=bytes.length) { + memcpy(value,bytes.bytes,bytes.length); + + } + [pendingLock lock];BOOL log=diskHit && !loggedHit;if(diskHit)loggedHit=YES;[pendingLock unlock]; + if(log)host_logf(HOST_LOG_INFO,"ANGLE shader cache: loaded compiled blob from disk"); + return (EGLsizeiANDROID)bytes.length; + } +} +void halo_shader_cache_install(EGLDisplay display,PFNEGLGETPROCADDRESSPROC get_proc) { + PFNEGLQUERYSTRINGPROC query=(void *)get_proc("eglQueryString"); + const char *extensions=query?query(display,EGL_EXTENSIONS):NULL; + PFNEGLSETBLOBCACHEFUNCSANDROIDPROC install=(void *)get_proc("eglSetBlobCacheFuncsANDROID"); + if(!extensions || !strstr(extensions,"EGL_ANDROID_blob_cache") || !install) { + host_logf(HOST_LOG_INFO,"ANGLE shader cache: extension unavailable");return; + } + NSString *root=[NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES).firstObject + stringByAppendingPathComponent:@"HaloShaderCache-v1"]; + NSString *angle=NSBundle.mainBundle.privateFrameworksPath; + NSDictionary *version=[NSDictionary dictionaryWithContentsOfFile:[angle stringByAppendingPathComponent:@"libGLESv2.framework/Info.plist"]]; + NSString *identity=[NSString stringWithFormat:@"%@|%@|%@|%@",MTLCreateSystemDefaultDevice().name, + NSProcessInfo.processInfo.operatingSystemVersionString,version[@"CFBundleVersion"],version[@"CFBundleShortVersionString"]]; + cacheDirectory=[root stringByAppendingPathComponent:digest([identity dataUsingEncoding:NSUTF8StringEncoding])]; + if(![NSFileManager.defaultManager createDirectoryAtPath:cacheDirectory withIntermediateDirectories:YES attributes:nil error:nil])return; + memoryCache=[NSCache new];memoryCache.totalCostLimit=maximumDisk; + pendingLock=[NSLock new];writer=dispatch_queue_create("org.haloce.shader-cache",DISPATCH_QUEUE_SERIAL); + dispatch_async(writer,^{trimDisk();}); + install(display,storeBlob,getBlob); + host_logf(HOST_LOG_INFO,"ANGLE shader cache: enabled (64 MiB disk budget)"); +} diff --git a/port/apple/xiso.c b/port/apple/xiso.c new file mode 100644 index 0000000000..6fab70e6bf --- /dev/null +++ b/port/apple/xiso.c @@ -0,0 +1,249 @@ +/* +XISO.C + +Copies the maps folder out of an Xbox disc image (an "xiso"), for the +native iOS app's first start without game data. + +The image's file system is XDVDFS, read as extract-xiso does +(https://github.com/XboxDev/extract-xiso, extract-xiso.c, whose format +handling this follows; its license is below and in +port/third_party/extract-xiso/LICENSE.TXT): 2048-byte sectors; a +volume descriptor at 0x10000 that starts and ends with +"MICROSOFT*XBOX*MEDIA" and gives the root directory's sector and size; and +directories whose entries form a binary tree (each entry: left and right +subtree offsets in 4-byte units, the start sector, the size, attributes, the +name's length and the name, 4-byte aligned). Images made from a whole disc +put the game partition further in, at one of the offsets below. + +The native importer validates the complete map set, then writes to a private +staging directory. A failed or cancelled extraction never publishes maps. + +Some parts of this code are copyright in@fishtank.com. This product +includes software developed by in . + + * Copyright (c) 2003 in + * 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 in . + * + * 4. Neither the name of "in" nor the email address "in@fishtank.com" + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED `AS IS' AND ANY EXPRESS OR IMPLIED WARRANTIES + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * AUTHOR OR ANY 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. +*/ + +#include "xiso.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +enum { SECTOR = 2048, MAX_DIRECTORY = 4 << 20, MAX_FILES = 256, COPY_SIZE = 1 << 20 }; +static const char magic[] = "MICROSOFT*XBOX*MEDIA"; +static const uint64_t partitions[] = {0, 0x0FD90000, 0x02080000, 0x18300000}; +static const char *required[] = {"ui.map", "a10.map", "a30.map", "a50.map", "b30.map", "b40.map", + "c10.map", "c20.map", "c40.map", "d20.map", "d40.map"}; +struct entry { char name[256]; uint32_t sector, size; }; +struct image { int fd; uint64_t length, partition; char *error; size_t error_size; }; + +static int fail(struct image *image, const char *format, ...) { + va_list args; va_start(args, format); + if (image->error && image->error_size) vsnprintf(image->error, image->error_size, format, args); + va_end(args); return 0; +} +static uint32_t u32(const unsigned char *p) { + return (uint32_t)p[0] | (uint32_t)p[1]<<8 | (uint32_t)p[2]<<16 | (uint32_t)p[3]<<24; +} +static int read_at(struct image *image, uint64_t offset, void *out, size_t size) { + if (offset > image->length || size > image->length-offset) return 0; + unsigned char *p=out; + while (size) { + ssize_t count=pread(image->fd,p,size,(off_t)offset); + if (count<0 && errno==EINTR) continue; + if (count<=0) return 0; + p+=count; offset+=(uint64_t)count; size-=(size_t)count; + } + return 1; +} +static int cache_header(struct image *image, const unsigned char *header, const char *name, char build[33]) { + if (memcmp(header,"daeh",4) || memcmp(header+2044,"toof",4) || u32(header+4)!=5) + return fail(image,"%s is not an original Xbox Halo map. PC, Custom Edition, and MCC images are unsupported.",name); + memcpy(build,header+64,32); build[32]=0; + if (strcmp(build,"01.01.14.2342") && strcmp(build,"01.10.12.2276")) + return fail(image,"Unsupported Xbox map build in %s. Use Halo: Combat Evolved PAL or NTSC-US.",name); + return 1; +} +int xiso_maps_ready(const char *maps, char *error, size_t error_size) { + struct image image={.error=error,.error_size=error_size}; + char path[2048], expected[33]={0}; + for (size_t i=0;i= (int)sizeof(path)) + return fail(&image,"Game data path is too long."); + image.fd=open(path,O_RDONLY|O_NOFOLLOW); + struct stat st; unsigned char header[2048]; char build[33]; + int ok=image.fd>=0 && !fstat(image.fd,&st) && S_ISREG(st.st_mode) && st.st_size>=2048; + if (ok) {image.length=(uint64_t)st.st_size;ok=read_at(&image,0,header,sizeof(header));} + if (image.fd>=0) close(image.fd); + if (!ok) return fail(&image,"Game data is missing or incomplete. Choose your Halo XISO to import it."); + if (!cache_header(&image,header,required[i],build)) return 0; + if (i && strcmp(build,expected)) return fail(&image,"Game maps contain mixed Xbox releases. Import one complete disc image."); + strcpy(expected,build); + } + return 1; +} +struct walk { struct image *image; const unsigned char *table; unsigned char *visited; + uint32_t size; struct entry *files; int count, directories; }; +static int walk_tree(struct walk *walk, uint32_t offset, unsigned depth) { + if (depth>64 || offset+14>walk->size || (offset&3) || walk->visited[offset/4]) + return fail(walk->image,"The disc image has a damaged directory tree."); + walk->visited[offset/4]=1; + const unsigned char *p=walk->table+offset; + unsigned left=p[0]|p[1]<<8, right=p[2]|p[3]<<8, count=p[13]; + if (left==0xffff) return 1; + if (!count || offset+14+count>walk->size) return fail(walk->image,"The disc image has a damaged filename."); + if (left && !walk_tree(walk,left*4,depth+1)) return 0; + if (!!(p[12]&16)==walk->directories) { + char name[256]; + for (unsigned i=0;i126 || c=='/' || c=='\\' || c==':') + return fail(walk->image,"The disc image contains an unsafe filename."); + name[i]=(char)tolower(c); + } + name[count]=0; + if (!strcmp(name,".") || !strcmp(name,"..")) return fail(walk->image,"The disc image contains an unsafe filename."); + if (walk->directories || (count>4 && !strcmp(name+count-4,".map"))) { + if (walk->count>=MAX_FILES) return fail(walk->image,"The disc image has too many map files."); + for (int i=0;icount;i++) if (!strcmp(walk->files[i].name,name)) + return fail(walk->image,"The disc image contains duplicate filenames."); + struct entry *entry=&walk->files[walk->count++]; + strcpy(entry->name,name); entry->sector=u32(p+4); entry->size=u32(p+8); + uint64_t start=walk->image->partition+(uint64_t)entry->sector*SECTOR; + if (start>walk->image->length || entry->size>walk->image->length-start) + return fail(walk->image,"The disc image is incomplete or truncated."); + } + } + return !right || walk_tree(walk,right*4,depth+1); +} +static int directory(struct image *image, uint32_t sector, uint32_t size, int directories, + struct entry *files, int *count) { + if (!size || size>MAX_DIRECTORY) return fail(image,"The disc image has a damaged directory size."); + unsigned char *table=malloc(size), *visited=calloc((size+3)/4,1); + int ok=0; + if (!table || !visited) {fail(image,"Not enough memory to inspect the disc image.");goto done;} + if (!read_at(image,image->partition+(uint64_t)sector*SECTOR,table,size)) { + fail(image,"Could not read the disc image directory. The image may be incomplete.");goto done; + } + struct walk walk={image,table,visited,size,files,0,directories}; + ok=walk_tree(&walk,0,0); *count=walk.count; +done: free(table);free(visited);return ok; +} +int xiso_extract_maps(const char *image_path, const char *destination, + xiso_progress_proc progress, void *context, char *error, size_t error_size) { + struct image image={.fd=-1,.error=error,.error_size=error_size}; + struct entry *files=calloc(MAX_FILES,sizeof(*files)); + unsigned char *buffer=NULL, header[2048]; + char partial[2048], final[2048], path[2400], expected[33]={0}; + struct stat st; int ok=0,count=0,found=0; + uint32_t root_sector=0,root_size=0; uint64_t total=0,done=0; + if (!files) {fail(&image,"Not enough memory to import the disc image.");goto cleanup;} + image.fd=open(image_path,O_RDONLY); + if (image.fd<0 || fstat(image.fd,&st) || !S_ISREG(st.st_mode)) { + fail(&image,"Could not open the disc image. Download it in Files first, then try again.");goto cleanup; + } + image.length=(uint64_t)st.st_size; + for (size_t i=0;i(uint64_t)space.f_bavail*space.f_frsize) { + fail(&image,"Not enough storage. Free at least %.2f GB for the extracted game maps.",(double)total/1e9);goto cleanup; + } + if (snprintf(partial,sizeof(partial),"%s/maps.partial",destination)>=(int)sizeof(partial) || + snprintf(final,sizeof(final),"%s/maps",destination)>=(int)sizeof(final)) {fail(&image,"Import path is too long.");goto cleanup;} + if (!lstat(final,&st) || errno!=ENOENT) {fail(&image,"The import destination already contains maps.");goto cleanup;} + if (mkdir(partial,0700)) {fail(&image,"Could not create the import folder.");goto cleanup;} + buffer=malloc(COPY_SIZE); + if (!buffer) {fail(&image,"Not enough memory to copy the game maps.");goto cleanup;} + for (int i=0;iCOPY_SIZE?COPY_SIZE:(size_t)remaining; + if (!read_at(&image,start,buffer,chunk)) {fail(&image,"Could not read %s. The image may be incomplete.",files[i].name);copied=0;break;} + size_t written=0; + while (written=0) close(image.fd); + free(buffer);free(files);return ok; +} diff --git a/port/apple/xiso.h b/port/apple/xiso.h new file mode 100644 index 0000000000..8f69a2a390 --- /dev/null +++ b/port/apple/xiso.h @@ -0,0 +1,17 @@ +#ifndef HALO_XISO_H +#define HALO_XISO_H +#include +#include + +/* Return zero to cancel. Called on the extraction thread. */ +typedef int (*xiso_progress_proc)(void *context, const char *file, uint64_t done, uint64_t total); + +/* Validate original Xbox cache headers and the complete campaign map set. */ +int xiso_maps_ready(const char *maps, char *error, size_t error_size); + +/* Extract into a new /maps, staging in maps.partial first. + destination must be a private, existing directory. Existing files are never + replaced. On failure the caller removes its private staging directory. */ +int xiso_extract_maps(const char *image_path, const char *destination, + xiso_progress_proc progress, void *context, char *error, size_t error_size); +#endif diff --git a/port/assets/menus/ce/main_menu.settings_select.player_setup.player_profile_edit.mouse_settings.xml b/port/assets/menus/ce/main_menu.settings_select.player_setup.player_profile_edit.mouse_settings.xml index a359068141..9e1dab7c78 100644 --- a/port/assets/menus/ce/main_menu.settings_select.player_setup.player_profile_edit.mouse_settings.xml +++ b/port/assets/menus/ce/main_menu.settings_select.player_setup.player_profile_edit.mouse_settings.xml @@ -30,7 +30,7 @@ - + @@ -39,7 +39,7 @@ - + diff --git a/port/ios/Assets.xcassets/AppArtwork.imageset/AppArtwork.png b/port/ios/Assets.xcassets/AppArtwork.imageset/AppArtwork.png new file mode 100644 index 0000000000000000000000000000000000000000..db03b85450e68df1ff72ac70805e74fb9093bfe5 GIT binary patch literal 1768507 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

B> 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

Q1xEEJ?_G#8D{-~!k`o^1i8M{v903r; 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ð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 SGDbb&&KmFpx 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
B_O?S1;e)}v1k`}-QHhF~};#)!03)PPXA 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
2gO&Lsztf$a8CjoDl7U! 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 X9_W;i*W#<%%SHXlFY_LT{n69*;m@h5lkYtS;k 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
5x;r&;nCq?8mG$J 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 !P`BVB28-gn?I^q1;lHTj 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%0AXQ-nks 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�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�^e#-?N2>Z%(NX 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

V${-ztMq2HMqr<&u# z@T$63@1zD*co}S46deZ`Q}|`6mSdfQM+P+#D4f!31{>JHx4Z`Z(qNVrqO08M;?dw) zutYWPWTH#0(NNh!2qBmqU!WSYbgO^W|FAi6Z^Xaf8VYFZkFiiW0H$E4tG*2yvnmOCD9bj&=1{oiP@C%yJUwEuw!eo5d0kF zGk0lz7&q6Jj3%;+veDPu=rjn^lC8&?0&9G)^LEmw5PeiXS_@8cJw7_x@9qmKHHK8YFAGc7HEae5dN^&Bozq<# zU7ejw4wp{m?{^=F0TICiQC#*I;E8!Rxod({CBmr(ai#f;iok}?;TJYkIa0LEiL%lh z30xBafNLbW!3SwIs@~L7F^Vc(5cBr*oySSlTB}Dv8>+ndgE(eOCqP=;#6)@&)`!CY ziyAc@iVT&N_wKm@tr9ol;OW89!I4SauJt=9?Va*#eOLsk4$%mKSA#sqFf`I=X=!U`6Db`Xo|cFRl|m|6 zq-r^_LE|_Tl%=BylhQM35DiubpjXg5dSMLvU|VR@Tg{Ka++?TsQDYhyWN=Ar5luP1 z7)XkH5N(lti*jVOX_=LPtC`rCzJMDwOQ!?A04z8iiydB6yG3r~0yEf(rQ@!f4r($` zVvT3l6V81BXZLpY?`-d{FK;f-+Zpd{=?i&3N9Pi!PRvpwQkNFG4BORBY_K+9BHJ(* zc26ifZP#?i@1Z;H2Vp$P4By%<_Fh*sPd1EAh8H|f(`;g1Twq!whAcYeFttmqiCf}F zFbw^VB!dL<{8(+v9wPRKOxkUn7JPWJD1R_eXDn+Aara%B=~XgxS##Uk>tR2;E=m@yWu0+(niiP`8sbhlk_-!SLwa)8of|p-;(TU=;9~ovDE=a+X&jy$JYg zVx#p|F>Fl(Xn#t4!v(-8P8tLVRs#l%$!lPer&ZzNRn|y&MjZKkEg9%=aNgZrmqa*Q zEb?mhZW))*F!e$esnTJNh)PgVn`(55M@$Hnr*sOL`;)Js2^z#7vmPJeB3XxJN1BGE z*Fq7T0XoEh?DuSjx!$_7xnRX{W<@u4n(PA3V>lm}QP8W=(q1<1$fB!Xg-&66S@-}T zgHsX8$!No!YJ^5$I(#;QOHCo~05c3C5DV@goq#m-6U=%ehRR2%q3EW@5OQh#&*vt2b)pRMR8mulwwlb?V1L~}u;U${QJ z`EyTG@kg#-xbczazn!19WMr`t#c<5T{0*lrQV6i2GQNqw@s41T=7LZ+QQB@|&EY82 zN1P>=Od_)2&%iUH2Y4y`BN^*Bz?x;UAcG(iL{*EVK}N`eE!+mvOLohPCT4*@iAJ?J z&y<%Qt`O=uHr3EW!3E=BpdRHT1@hfz5HNU{&Q#F`UsAYvh7q{1*vypSmzb)O^HgfYqz?x*(9wRF6n&E#<48L4Osi%6s)I zk*wrXw54kaAL5$+Ask+QU`p~U2yTH{zumN3-s{wVvHqgx9{K<{* zhTJQlW!MF}+yvXEq=u?wxOhFSpQR#X$^x{&yqF2(tG=aj(oic6chZd6uxOiZf1u`? zj1ovZNKI?%GO!FHd#5@tJ$m`>{=GP8#lE$>OX6LYg;E4ZV7BnxsJDn=Zf1EK7@@ZY zm|>O$%$UB_+{JV=kJ_qPgQk?8U=TnVugUU>xw)Y{Ore?}9G!?2aw};P2d_>=Tt*x+ zE3niJx8Wxqm^!OWQ!q%IdsPxp6n_34@)v~bY1#_3Gp})##o;1Acsg62ef1xF<-7mW zKmPK!zq-8HX10R1xzTv~n*F{=-oaHl9LiP`S}BczZ=6KYm^+0$Iaf|b4%3ybh*<^@ z^_v}Ttj&y)yT{a&C7daV&4aF!SHutUKLZcLAu54#wj>p37=9EGN&wPYT3zXGZE#wP z{E^GtSgZqd<+E5=?KmimertIkY7nD8-Zf(FV0`-D4&FW;3BEl(I63Ky_>uRdH-yw1kXI&Hx|+9m$_h{S9Jw^LmD z|Ey5VW^|F=jlJ+FKKh8$#7U!7jz61kGt6j|h)bS>BnYCK8Wbpr_93`|4o8jepF))6 z*O^5QwW|kG$0Kmt6QU|ZjCrhBc$fh8OmwKQo zQ-rZ(U29Vao6>-!d#pgMa1^p}3(dpyAv>JaZDB=k|IJ(f;eY-26caelFnf+ykOLk; z<5;s$3O@T1?9S^=Kw8c%);88*_UXGpJAm`2P|~j;WDz5RjfWoEM7V^UVV?d2SS*UH z{2+%E_C=kbx|7pKc1VH8@4n0V47;?92+vM?vciIYc8Yr)C&Txw>e$mf=g6&i;xQ8F zM>RGnOlNDGGNK54DB?_<8?^UYspmk5dB(i=IuPl6xJRLD^(v&BLZM^R&4NoXr($|; zDE>qaruT}+o0fM~QeVhHuNWA@&nviJUd-~lw*Ye@O{Szqk)Pp#kjaV;0fm8+l^dHD zfV+?OUwUc()%7JuW6bp@gY#?gKcj&!7ZmRSFz$8s-hAnI?ruI@TkbeA%(hv_L!Az} z|4+sjPE9_CSJKn(tnG6D^Prol;D$bjjl~8CqQ(yk1;U`vd(BTVD-#aWATsDAoLlzQ z)6sNvemQms^P&j2*3HSu5SfAeu}J6>M`W244sUg$i@EECrw31Y!7isW#GVzt(e%u5 zaA(v0!RWE`FyHTApA(&tC-A13NBA6HyH-PdhOY=~-YSc;9gxm5F)lL$AeFexMv@O{v#MC`_mAwb15~sEA=%#h<)RR$s zxG4!OSp|k_0Im`;=r*BLI08H{)sWI7MYRrzLCW`LyzVuRn$Nl)j$jx@kH4zH~(j_FSHcO{A`zk0YYBCedV?%&721axteDMM$wV7_RCt2d5^3sRc&QtA3lB>DRjg?y<(exGQ@8sWRndas zqiP<;;sqH@rJn;)8R){r!);o(r`{muXz)%da-zFX6I+LkH|racc&%`L^tqvXYSysC+&ro1QG0hV}OHSjN!7Ue?) z%IbDl6ST}^=ysN3@-V$DZkD&=yw?ZiZiJz|_R^~_zw)Y#)mSP9DPF>iM9N8Xl>KGV zT?z|KOx#Nh4yaK)n+S}I%7k+1k{LN$Abx(Vnfa9A6@LOQB?v!7-NT)AkkY1WUWp}^ zqJ*no(KB>ar&XRSPx60}Pl3@8GVGiL8h959D+B;VVYyZBWR&TAe)&#C6d!_b=5Dwr zmPxF(E_Pqt{p0Wb;a9%%`vL{V(6^*$a=jT{s9aNG@8+X8UtTOlIam}kbANw-v$OH^ z@EI0e(vANz!Sgr(12gS#4P>#-_bA8dmdO6p8hi**SI;w5u6TJ1Sn_XZkP$T}tY|W~ zmW}dS$coJJa<*yOnIYLvw`=r@wWasq7|07b+Dzsm?@^ywto`#*Z`40IJ2~#3ai!6q zc>ybCYBB2I!G#!U0mRE9hHMWIdN-PFY}uE%YW7Q6MykWxKAqLgCmlw$-@K?J4;zCjM$hOrRBWsL>vEcF0&9nc0#J+qJ~(QuYtYS*b1 z6Y@c$n({i74eg~5g=QH`?uV93dxLGd=&8!9e2CKv6n*7Nn<-5jWDTG$6O904K%BoX zMdpL0#+D<8O}I7Mg=T>t8idfY%be{s&jYK~dTY+k?;tHQFaLrr=@yQS<{H`4a8&e^ z&~e&n84gCRzKn@;Co5p-JUtSeXj5TN3S{=uDrXG_3&g4xBH~G`f+)33KC#)fHxjqc z*wqpCw%G0*Q4D<~@9#>2wPkCs%8&rx(9#7nQkG9sJY5&Awsq&V{Z}9CytKZwvAnPv z7`84(GKu=QlIUs>Q}$wEXKkmmx`Dysap_Ytx#kbo$Px%Oow`o?XNRiZlO*ue00WsU zg_)q7FMoXY^r(L#N?y|c-so(#mCRl6jae)14t3kHjkT-G-V?BlA|AlCO4!YBZU_x- zdu4G|j#_JURQF-Ek#$bo)%q7!mhJD?H-wy3K}v5hBpnXL;uYiJ=;_l#k$ee>P2?st zl074#|0hp-XNLoOg5Yy{j>|#&EJc=@YF5= zOo3~fjJOMl$R~4-uyl~Uk^yxRaGT4v1YV-kPoB9sck}LF&VoJ!m@l zLHD1(*TD3{lE22crY*fHQJV@rsQks+UWAeY-io8M)_JT8#$nH{r>SIuZv7TGZ1|uV zhb7LmD^3Y}RZE(OO2r27B3xW^EX1-z7$`H2oFD;|$L=rZ9QC(Ez}e<6StInK4e{SO zSSLG4<-A{BN`?xD6A_&2II{EVCt-XP5@(}8AsvXC5+)ic=nC*N%HUoI($`{8bw{!M z&V65M+_{sNiwH5XMlq_Yq9K*7tCj}0RZW>}D!tXB)IyqO1yhIBi~q0A<#bP;zU)C| zi&IZ58d?yKgbm{pwIZSbTZ#}^j29en;#qcy8Sk~NTT+uGt|J~q?ne58oMmgBMG>rn zqZ}csq&ZnxT0q)@nE zhcFj1T$+!Cg-7=ueCJR8XyB~)pFJu08t55v4L`(N&WH-vxCLPSR}cic6fT@EfY$dw zIQF^wRaHP-rBZ9bzg}pHm3g3mqJe*2DI{@&wjFFqY8um|K|Tn;#IpTL(adx)Q2ZdG zD$Fw68d|3RsS5k?6X+px=B1oE9?6*e%7d3a_sVPgcOF=Tx2OtHNeiss>Y|Wt8U;c~ ztGOa4tkO#5YT~$OG^jNUFj9{XH6kHQ%oVm7#VF3a;09J(#A4`VWQ^q$01?JjR4B#V zsKG=U1TjjAWN1P*YvCvWtU;LzB@IY_!l?5`P#v6to)u|r67@1Mnk7F1+YBPG(kxJ_ zmI&(XcK+eN_=jKp_U~;z*f!MKpO{@YIl zT_$+Mk29t@HTs~?$G`vBF!PRf!C-B-?>@Q&zI#6_6|Ve(+&lA>F+4gFD%lAC5N zk*_X8G@|(6ts5*X*y7S&@2qtLk)VWw&k|3-R6|DY1mWO1v^3gO*l78|ftceKHALn2>&=^+~tsY&U%XwwK-D&GI;G~mgHmD4g za}K7oj|BpUU=1jWPfW7eL}I0=#MOa-w3)mR*Tmw9F<8uVSWZ}aG^sGi6=GT zNw)MR_o$y|J(GA@OXzm3TM)?V2X-O2$BW5gB=o5?X)-35CwvAcch=yC!bYnh&nFZ%S-`K5I+p{q-F zw#0Tczh>11M5tk9X+11CryP{JOm&MA7{`1@?vWWL>$wT0W4nGGE4H~le{_007>{_H zppB!NFE57<(P#ibuGw?LD%NWPXfB@UWMr~}w@F=HTpo``R1X_Mu;d&Su*4C}#FO8q zW$i-JUe#tXe4!%E5?BylWRh;pJKSn?aBw_6a|DUhJ+V;+r_&rsKe;|VJR2N4_&2)} zbUOzGHqofrJ)C(2)d132Ua&TOjSdelsOEC&ncMYln{7TfGe3hAnxNC{<9!SfV-4TEnw(zc=V^(rF{@6ow*!VM+)Sh)R$L4P%ev#xo&QG779* z592Du7N8jbCa#jf1JNC>l{mm`1r{3AtXYW*o5*%HyI$|EQ0df7HW{6mWm1V&o;R^wQf=JY%7mhR&Zs0{%x#Kzbw& z1xX(Ks|)@P$ja!wbhsNGXK2YkjeLuSN4^deX7o2+;q*(vN0WPS0vS@ggYO+{Q^ z&L5S_S&%_j%8SOIdgI(u4pEWCT!9z|0Cu;#qAbTlhYKcC!N%q$7PG$IdH3CSb?uGU z-_SY%Z(^~S zAbzCR|K8{R^q>Fv7yj^zt(7?m6#{E;Bm`3~zE7B|7sl&d?tdB?niXRf*96-zFVtH+CXJ=2^6KQ;OwRC0OjeP|$=*y;fe)5C&PI$!(+J@UE zwZ*Eq=c}d5@y&49cODSeDOE{6Cuc>mK&5{=HugcoE*IIT9=DOyD?3o zOjZ}J9X6c(#94=wxM|AM*q856I8$rZ-r2ebap)N|H=Q8$DQ&u=b)5EsQay^vdvbb8 zkKS6})I2X9Fgn<)9^;GU>-Sx1$~5$w?m%_D1w&6BvD zC_m1zk5)qzg=~xHH~?s$893&jux$0kw^a-hj5B=FDyDvxFLVU-k~lj|m4DZpfP;hi zkEb~#?OPFO78xw=fj2tM8F>`KrIoqPc1K6zULrPX5fpY{^=mezL=&SPO3Xafu(%eH zSAsfhpM}^xDYhS7Z*_LyH`Eo3uGh)5M8eo%J0033OtkN;Q3yNy_|OpJK>o&F(`u~3 zONh5Lgfw;CVEMw0ifL?u6azDswrWr5-NJ5eX1)HIwZvdq43cGVumNW5Fasw{bCh5p zf|Q0c=Qqpw3tz;25OWaQNNk>|uvv*L;{vlT7TC}$oKnmmJc+&^9+j=b;n*9UPR`5@ zYn&U|FW>7Q9rR}xj#aiXnJe*nI(8V|WOOD&5;U_!5Mf~wf?Z*6+#BW`VEu-n2s~qf)Rs#nCYn7JQog!5 zI~_{RDS``cNEyJSP8e`(ybOeRX~eC$fMzN&bkJOFuVe{DhmvgV8WW&Ytjt!8l$)0#i8s+_prXp(~Jz zZOg-rEa#aJWh~^W{CPc*yQw^q?|JRbEHx$mfBkGm-*hKT>q7wi8r=$_dac2s7vKLZ z!>z_&eCe}(hl?htarS83#Bq7DBTY}3k9rM^`j`l|c&f}B4gqUqT)=1B(d=W$dXeI# zFxD8{z$Id+2SODuPp=I}_27JvGj~MG#04_D76NEy`Bv~6v3_d9gJ6iT0+MMk%mTfI_Qklt4LKJ zK*i6COGF4n?rS$qMw7c3Fj@0rq$X7&WF^Hlx(NSjF2;}bR}0EZ%WDPWYoR_&c?HT- zh@Qm@S$>rcAiW1SUZ1Q2lQ34R7w1N2BNmk+#?G;D?&Q|8*d1mz*D*)*ws=Xu#6+ zyWrfAazV9#SCIZ-XaPH(P~Zx{>t{i)V3*kl{54S^OT9H4si5dO#hPb6gJhXth?Zi| z$W)ZmB?1Y|v$3vhQE#QWrrInEXrq=4)D~o(L9;Ku@#SxP?GLs#x2fe_t0bLneE)Md zgTa97m^+1(5?&IAHA5mSJvcxvVM?%&7(gA2t^{qYWK&w^mrcc)g`0tD&a#zSvBFaI z4L-}4PizI1#xnr4KBU4z4kZ%?3;i3&;D%pl5J|GQj3+d-+iII+&lTn`DkqAz_wUJ7TmGyOkN7` zl{2JP=N{~sN|Uj%v~cg`JFEO>)APBd>vlGU3n@1yr5C#E2rp3ziHQIPJ~%rMV_FLA zS&kdOSP@kZtW3Cp(6+&)qM3rdMiyNYjk6uC!kGYuM|>Sw`1hd*ZKW@e`}$n2q5Jpt zdgsTs_D}~w^zGi?ZXIpDw*PsXAHuLiB@}^VnTnEV6GOHk&|5Ej;VPBjYIEbIrG*WY z9m5JIv9KSX4DibYLe3`$Sf{9iqB!Ap@N<0i&QIPxJ3dV(lYA){+1g2>-OD=axW^SK~_0|k^)Ula|e**;;{aVQul8p%%9=5OFy%qCAM>*a;19jgkO zsPqx$D@-ED^5QOTAPtLdWb#9`VQacwUbBcb@-!^Ww(L$edgZ|5rIt3+qibM$YU3I2j(0KieBy&xYpnMn+oe(g3c5mV@a1;%X$+PmI#ltYc@*+D?0M zRpYTe67eT=Em9vQ)JQ{yF>K753G-pd5eVUm#c+)7YB<3=Pehqnz~^yikXzc?-sn2} zlDXn2woXU1z})D3cx9_^%fi=+WxYibkNUqFBXDxf*a&TCB~zZ*zF1b7+uJJ!Qmm7( zn(Ir+$1LDDJpPSgstA!NDJJ!NxZcCZdggNylKlLX&G1c8*> z_(V{;=mmESr@!XB8(Rn9AIS*I5)6P@qoZgDczutMP5@X45riyMXSW>quN_n0e+!h-3gN3B1rv)Z|-P4;I6AwuAr;Y z`E!dVGS9Pr-hkZb(7;)29gd0jKOlBRvvu}B>X+dUY1?(Xm3-(O$r znqfh+B%WL@{6XnaY+DmJ#o}vH0wq|7FB>i(TpKU{4BXLq@d>Qzl=XdW)mqMc;;U| zfv)^dssj?E1(^(*ABaXeedS9peed7=({KL|-(K2Y6E{{*G(Y~_1edpnwmp0b6AkfPEN_TlZ0JP2^Eb#K8 zH$3~<&)#|GZy%43$1NzIs1hx~0U*q{`86fWKR!9J*egvBS5 z8%<%>xbA>t{ftGYTPQ0mjsqoA#B#6@=L^0VO_y1o?CORndTEtQ7_bs`1cU^6(i2U` zP6lvjE1rX*y=wv~j-nXU;vlBu{=5Crfj)HFcRHPyoC9mE0?X5a>T9lxe3q7+9LD73 zwgpm~MuiiIAYYsIVPtMaU`8`W zTLD*rG_W;+W-z1nzSyMbh*^#h>y}TR@43!KhdpZLgkpdH-ov}w_Zjce##=nO)3eFh zdxwwhbl9+$Zn5*m!#7^N`x>(l9kL1gT;!9ZBdKsE%;hUSqs+X-S?wSp1x zy>!F7B1dV&&s7eurJ7nI5YfsF0r6m%a~MU_;X+os$($TWr-|Cv4%c9~zR@DoK*yMj zWM`hRmaOPn0Dto2narcCNT(W%oa!;Yo;ve)aB+4rx;&5L2Izp1u@{Zkyh?ItKVCK+ zXZ;P&mkA1qF_V!h_L*YIh*YX+T95w8uE>&`(FZ?^dP^NLYuWncwZPCrsH(0^eN2>^ zdUr`}DmYqpeu*7HrBLB&!FGVh@!&(23SFU>)Mm_ioC{l)gfs{4nFw6ht?XLCX)I0G zsuaEXb%-1LwlbddbIaiK?RNtcCl~LLP!fnecug32jHV6@j2eRRT*> zLGuC@q}9*~cFDv6dJ51HhVaNRA(dzCfM^=_a`8H5P_<~<@Vt4&Yx9Uh~siDZ5q?c@NCG3U><2px$s8wvAEDb>py$?G=piT zp-gm3>cUwA-}E;iNv{pWjr_`|7wSv%S!L?(?MDNw5|GX7Xg2Sp75~>&{~Kn_e4$J| zg-EHqnVh_o3s1M@)7v1VMw6XP>Kl}zVFS`tO&EOB zG|V^4u>*^0xYdYEgDFKVySuU_K_yx!+%2`boVvlL0 zZzXH93{AF}t3`t0E7>A|yu zCkKP$;rw)AeU(-by^BNwZM!R}9h1w!y9e*S^WHlmL+0hvqE#Rak7(bCez#OUWg!rg zR>^6|7o+pD<6f2mHn1x$%~}~3IZ%iOK9+)nWlLdxI_Nz;eQJugJ3I2Lcm&6d+`Q0L z{8R|}d!g_#Nba7_1WzlF(j)X+DLZ2lK)B>61LPP~V58mWYlP6eRIeQz%+&Jq z=U~DiK9*pFs7*tbT^dWP&Yz6w5qpTv^cfYJ62H#NjiI#*dQ&by2i3DW^oaO4CrN zE!wjvEb{_Oh*+(pl(B^eq*@0)GAHbF<(`PaXz#B>FfercVLI(~DS+12AKrbm-Q7br zUJ3!Xu6v{2>9~jITQ0LV{q+a0Z?EpAt8>@Gi&1~lJ3T+@PfjndCLFF?o$dYZ-S#{i zce&vz=|A<=*sG@{>$-YwMN(;7XmGup@sHQ zpKTKh&OH+0(_QIqulb2u;pbXsd2`F=Q!8}Fm?eJ0!2>h%38XShus1*nY%*&#%YKCQ zMFuGZS->;eIeH5@gx!hdv+)C~Ti;rTIqfqb%SSB2wgX11XqJB0i`$e+^BWC zLEsv1o;H}1M}=C!qoPCw)Q|%1=UY7v>eW?pH1`PGsLyp9wYim>QQdq=&++uC@;UWX zkB|p)_Y`D85doBDql8=jMyNRqB`ylZFbjmPHeP|E9S`Ey)fE8Aa$ap9Qx%czPfI=`}MDV{afGo_QMCS?%&@fL{x5|wD{54 zP{#y?Qx2r3h+-RkAwbqgE>YFP;nb8anWxNtm?P&!EsJG>pm-!+bb5G!Lg>>PSPPdA znPgC;YRtmywreOTa1J~@%Tx6mofj!W#%ItCqDHKwVaORkG-K1KKGg4gD4Y8qv}N@s z;^gAd@818X|I7FO{9pcAdwWfebPGBNR%7%Vr~)4&Hjuiee2Dc=vX>YKv@vl4gWiz0 z3Fc6%@MX?C3Q!Y@>MhoV0ge(K8`L%Z@>S}&)#`_{PajP zaduXVx4vBHt|cIt%iml`iI@1^oAciEhCg1B`>F*fV!*W-Vqk(Jf=zj8lF>{Fr*BZ zi}o*$1!mSy&BTT;`+#_pqlOv;H#`pfqc~bXVH_|$vqY0%omJy?V9y{CUNzm+9z3zL z#>cxECvBk;!h(Rf2Oc1ZtGm9v*}2=gv8Z9kGPV&7)n}*PP?S`=AXvE`2kn4JsC<2F-$Sfm+m?n$V!5nhmy)G#D9R6pzRl zi#ICd7W|J;$SM$Wa2SRCU^%UfWLFiqVTgtQsmYw+V95X{b$QVHhGRL6UEN3;K@+W| zuem$>`+xGCKfQDJPER_ZVa|_F*C|8c3E}Ssj>Y+cp=sKJl^n`@kG5q{3GtP%vxcB8 zYSWs|CB96ltjRp5yZ({vGDqOgi=iTeOG zeFw?8iv)+^UPapTkLyDTL$!C&}jwqTft2VZ#V{NM| zBKYSI4tm1PWZG@FS6_YYp5bKO=lb&Wq|dxGWK7jwBIY!Aj544hkCW6!Xdl0VZ%Bd~ zzP;IH9>{`}NU9Y}J*}gI-m|C2!&6S1Yw1rf1rd%fr=zQhjsG%U5Tm4Aay>1s$dwA| z95eurn7KCEvCy;qhTgl>*>~UoF&!m>B5Xa1A$du}jtj$@b ztuFHxDs+XJM;5psF+opQ;~3aMfH`-ArC4LMt|*~j$lubj(G{+%+P3rhSxS_5NUqop z34~K&nnTCPQu%~Ja9gmcrcMO~rkv)GWwD%}aA|W#WtY-ba{>Pi_ME!!WYXofcbP`E zY@|m5z7q2W$3xSSD(4LCkgX<)<%Lh@7Y=oc@io+-c5K4xd=R&A-4|CuCBO*ZDHvt+ zDO13!)p^Ce5+Z4?QiHq`{^Z4Av{O{G>xf)Y#9cix!V)u?2e0SVe98CU;&nT#A6Mfq zKKjKwANO7ZhL3;pDR)0><(Z&QspexI{bKRvPU@M zsitT-T3XR|%2ut$9Twk6wOcudHXDyDMj`5{o|eE+Z5*Qd538vQS|TOAOSPta7=)_G z;-aHlz+`5>{pBlkrEP>hk?3tCFYg zXaaBLIFdks8t0D6@pObp0|OLt_u%00@Zb>SGIkdza4SWd%Y@$EOn09H4Qnab2E5Pb z0q~nw^9lerWE%KaCAn96QdLrgZ)=MxAMiFarMW26!Ij&2QBi$QT0lh&Jup;*p?%Qd zOjN^pRHnMb(g4W(=U;pMTi^KO*T3+koxNS5-v9-8gZ@ZLigJfjsvNj>8zexjx1LQi z#(zwsSbuWFP?Ql4qo3x$bQ+*tm9e0b*Eq^B~bz!fI>OJ|I%9mcG5S5L<-XZGbA(=hkX?HOjZNQjJirC;z&ZN>B`3P-~Z=- z{7?S%KY8tUKQADiL=fg7fJFIHN|-uXEDnfEvq#XXMa}PMiV+#dm;4rCWEN9aUG$QS`(SCamWFU8uy4Yr>c zuoabdtXLASbw-clS4kea3;3dEJMK8Y=UcWG*hcA40(&66TiR=o9>nw{wxaQ7=bIcG z&?X#!F9cpCsw2~?aCSbkF)9a)of$F#IqT?LK!Pyl-sos}*%!{ln207>v@cX)cjK;| z0NL9an=>56CRS#}#>U?2($<0yjKvkMdq@Q>FbyxlPm@x?>kHV1;HOfrTJWOZ>x+u8 zWy1cY|Mb8A$D?-v9Wr>-U?bwxqR(`q zkq*(14L^2>M*sk5e$t42synq8l7nPKN$iT?5iJNa46;#zGAR4Vov66z2&CxTODp&8 z-jzhe`2hU)YN3Adl?JTUF|9=7PVyF)KF>Pz-}_t1nHAbh{FO;DJ8WP()3U{rybCG^ zZdgIUUtXKAq4qdCU zRZel@A=Xtlg^O?!H?bvr*x+eTd|b5DSt&l(x;vYD67pgl`e*3|Q8NHcZpXIXg%!E1 zIxCy%w#GF$KRc8C|KjXyaFWwMu4fzV?oQ7Ag^4RcssMmjF5wlJ6M*;*%f;BB$8v7O zt}`6gn(<~vZZ1xT&)#|Vv*W?3wL2!IllCNEl`4l^1DB2Nrd|PnTokhIB0&Ig2*CP^ zJmYwmD8X!RlU+chvXywyJ)S%rhQl3$O` ze4C#4rOeHaIc&kvR{~%l0JtR-)~aDLZZEDdr7Tq9=8T;(uoaM56-d<{vss5{d{H61U036S$bw8(4Zr^~aPXdM~e-qL7RCOEbtfRaVpoa#a|)@GPB6TVr9r7o-kb_YmfpZ zh5$&X^e0r`0Hv`m3UcZ6Z+eBHJg?{Z|EV)L@j~4%e*fUM4jan{KR@=%hx*aSKK_K8 zzogO^-U95O@97KAKH=*pRZgB$vf*eL7_ma1xb;V7cYFpLkOX^}*8v;7uGCq}(=|<| z4~e>3Z8C^Gij3o83{K#?KC+&69letf)v~yg zQMR{s7ghg6#gb;TQ zmRek0=nn@R#uy*x4kbfT$K9LXj4C*gMuKg2PefeJI55p}x>!LGQ73gE`(F!55~`W4 zpGX6d5Tc$cOH=TAsH)aQk&l{T7xJOCsLOmCD5)0#SS&lu7Md3X3dFTQY^16IsigB? zy#CzRU;Fd_@gMxoH{Jw=;U#Aem6zzto%8Cm0&oP{;Fer#>6nt6+#f?q!M&i`oXoCW9f2j3YF=%)Q)Dn3B z5gnGhMI~4jy4~sW(bZ>-Sm&@dOCA&F$)60H;BnSM_;gKv@aS%jvOMaO7 ztGTNMEUOyLAs&SK+<9v>og2)r&ggUFi?QsWwo&3IsDQ(hE|66T+gms)*PME)8(c$I76G)Iap`@=KSjXXmqr-y47B3!we|R zziZwQ5kP^Y?-7i3R+OLNV7dshfud+@Km{8s@hM~N!p7Xo8`()vf^u_`qa+Lu|M4&3 zf7bAA(;X>>%!BiZKLJ+kSauC(sRBgQasrky6jcrNgih)%>1+GPOmg!J^bx;=#Rb5O z0u(Lb_}S6XlLKZMq@>vDr&sll+z#p)N~kKB7FaO=Y!!7mABW_(rBhG7+06a`uC818OYo`GS`>;fy59?N*fi2n*prFLOYj=qF zA&t^L5h)d2+^J!P)+vUSk=%Do8_X%M?;c7 za}}>dI1tRKmCp1Io)>=;)*_yU@tkbkr^A!}bYRMD<~7o#rSr_b`EcuIe*ey{!9IES zeesrCo89*g4({%YzTC2?XgM)F#CUVn{9UM=j9MojP z;H-N0L&g7zI+lPE6nRjfY5Lj+XSycF*F#6C( z6C&a01HQT-hI(Cw3q9P#)2zVx!Z^TFV7^fiKoJ88bco1PTEr+ghE-$*8xh3@#dE?? zbjFmx7ky6%*%FaWUTyAnt>;=62+5~!sXP=)g^*Pxle}P&g!`XzmFU+}ilT!QV~59C z076tzJB%|Z9hqIYogW!oWKTwvZxz*=?vNtcE@LjU-P3c_mC{8vVC`p^K`oT{FD#`5 zUI-OyR5TIfw(v(rmWmitK}eZ7VzPJ@*yxv@<*5tJ=U;y0?ay#&@{@|@(I-4JxPai3 z>-Q)_{nYE17WmY+Kf}XM8QUkk{gDxU&_i$lSaac=)Tkg{FYZ<}omH)TiQO3tLpC+D zhzXHKae=qk21(3(0PemYo?68_aDFrq3ER9A2DIRpp{Y-PsXklgshi8;<_B~?>p@uO0B-fCm z8bWG*rsW{4kEXD`?X#SkyKC14(IQSU~s7g0AnU0H?DoIVs$bJEDc{zt{BG7E#jxZg*B#AlAwwEC#_ghw#8zN zE6=oW^7-aY7il_Dt?SU+w!{n4W=AsE`^Y?V2d#bX)mL75`O){k{{u{{U=^-M^#K{S zL(}=(FZ!;bWOz-<+o9HY6$zBfE-F}tiQE>5vfz7OYPek{p(-&~gsE`?q2a?OHN^CZ z)f6A9Poj-I<$P&dics4zw_qa-d!>Zs`8xB0FDn2 zCH{fJlGTv;LO$?eoZZ?IMRrwY>G?%I8Mdh2M_EboD=MZa-mG6yUb7R+W*Dkyghce9 zaB^(aQgRZ=hwte%ZBAd|7TyJwNHM}E>H%L)#Q##vH^e?`bihV3wO` z&$z(L2bOEFhO6>u9u-<3$6xnu_nZId8-M)0Z+G@KvW1)WlN9N*g$S>C2{$bYaU!Kc znJ^hY@$v@WED)L6w1khBC(KU+VwrO$(KL`g95)@4r1D7PIWaaf#65N~7z_h75|?JK z1}pn2zbt56IN>g&r~~MS&Zj2Yvm798ddTXEeCGH-1rw2i^9z&#=_&0DoS&E2{N}Rt z^u0s!^6>EJ>}YURN&RUIfXgjz2+sLByI6j7j{r?R$kvjG=dUD>(6vA=i|qJywtXdvk!?@2Kb<-Nt)4txm8#2tl@60@B6q1>g} zU+F|*lcGB^f%u{^0q?2=`jOo5nXYA@qtKw;wL3T>of9LnvWPLK-4+WV`vUpoY^4(q ze>NHbb-arl>hp6>WX)tO&LuS=TDx()`rzpB*m+a)?fIX4|403!Q;1Lm8x#$KW$ib9 zZlfddbU|>-O!&IBvyaN1%R}L!50w(lp$Upe6@&u9Q zj?0WIV@rq?6Y*oRA+L8j(lJuq!oG@;`fgPVzX+dG|;lYtdHPccWc26>O3oefXVn=A!nKFAWw z()ETw!^mKNp*L zr(gO;qxslF?j^AQt;~3hBC?KlPgq;ZyZ;A%vOH4;*ArD;$*Q|S_HiaSkx?+yt zSja7c3Ra4A(#=Ty3^=dl3NP@fyRZlHh1kd*T}Y}sHlODy;uYemWfeDTrs6CUE)uX! zrV{!}W8xyeQ)9uUk%iU7XZrY{L%&$sqqOyl58N>=AAA3Wn=cIZg}X0&{iQX$Q1(~& z`eC2bz;D!ump`m6oL6K33}}2g>5}<}mnK&^xDxSTi6%@6ohH;(G%z}s&PebZDQ+$5TX^`Ulk&J=pAm^wrlzvAK%3qF&a6Pqz ziRvF>x|sC)eaD1dw4K^C1sF`2BT64=19$iCeDfP$|LNbpCI2}B*CIMyv`DiWBRq)_ zqsO`e`^;m5HyLj(|GQIwO(8(b^QKh2=4PHYfA!J?1+*EbCvM<;&jo5!p}3Y|T1>D~ zHUxA??6ZS|qob!M z$HxFDy&ADJx3EcXJ3Gxz33(FmXd#HwXGpja#yWRHwq&1#Y(MME+NRj4Ey_f>3Dfxi z6RhX1v-8Z7j-=@(I*A(Xqt!7uBRi9+1lwR}0gbpvK8=#mz*C>`ZGgf}y%HwtN35Ov z45$iTe){V2u2$l~UbueqJ8ypXUw!x9>kl#H(KshzdYxzwYU+8;=F2_xWP{D+W&cb> zZ@`3rEhV#RidAPcIWSbVqB)UcG7Lg`8ivyW^k5E{hy5Xdcek^RWE^juU0W8AWd)5V zUW@vyDL9Yv(L!_}#v6a9SOJPmh5p;h*S4>-E6!iSA9T;%M<7K#GCJG~2n5_Bl*uQI*H@2+p#hy~7-+8De7L zOeU2TkL#a|&Id^}y!X<+S=MC#q|dJiHn0)efo<<-m>qlDZB8{q7eGR6Ls4;bEvY#L zRynBmW`28nc|4mwK0Ua*O?yZ}mfh}lq-^bs0(--*Rgq{7JorXQr@<4&5e5x9&|fvKm0F0#6P#Tx}I9t2}iE*)bNsU7k!|d z;Iz6uk9qk@NwUNQpZQ9&$yEZnPNxE%W3)g_*o2b3i9lk=WKda^^*0OB)7RX zI=DI<4-bcjqpJ~g7rRA*5TY@Xp{M}}Wpg3qm>#lMU+?X2J9r)@QSPnhATNuGp^mvl zM|5!?*tm>!Jbvftn{U3p)?I(^$A|6JWt&_`MtrM!I6*-d+E2~)CY>7?ZQx>bHFn&E zQw^?iu9Q#}zCxsD3IjK8H*`ze@QIp4RK;Hx&lg5Sj+l{qkM=enOp zc!fxyNZ!sSiD2u_!g{6Agk{V->t{;l!kZXOtd8~Ng&ezUhmKBOKnP6+?R5rzB0a}h zFf8TX%69~7aIqL+9YIckW_uVeEyt`yPg+WZPp~>FlSbkTgt`+PsBHfum&*Tp2HlErf;*4$-7!P&mEyy#$&nag3%~pKj+hcvMeI zrMxwyoaxRqVCptdr9pU8Pt3UWtSkbk7EODe>iqj{UV-s%zt-Po4?j}ZuLJL)Zn8R<{>X#yhZY7p$BLkixRM_s2oHYJ}A zKBNn8pd%zo8INO^X4>_zkUirHN(bZf1;OPjy)(LI{;H$uEfqOyQ^*oqanr-p69Gof zX6F!oq80#y`1F*>(s-}=)YAom1ea_E0I+Ds3;YLK3va-^b+48P;x)}uotGRSY0qFB zU7$8N8_HY9ID_bg2ZQ088zfLMp1OxRYqB0}&bxDjNQpOG zpIGUEFNkwv3#CBOk%;q#WBEuQWWbEi{UQ>MvOAW5p2)W`H0v8Pg;`QCSY6@S)=xNO z8LqQ6m9t)8qrp=8bF68!K0U1QX)((wcmh2s171r8uvRwVQBUO9SQ7$kAydt- z#oS9^cdRN7t<&Qk?MDK;U^}P|rLMRV3GvR4es*$r{MuJvU+Z*2F_{HCWO8MrvK&{_ z(}lIU)s5wwGv>AoKUvnc)ti5j?+xYf5uTq-EYL_}io0z+*xA~5pltlIY<0_M(tcB; z1rC{9DrQ`U3riO*#!w3diSaN%K4c1B1*pi+y-pdmdWo{e$9-D@SP@@(`He?A56zCh zRNZK8OZHG&pN~b06WW3-p>}+J1?4aE681U~tmubhp}fy%+Q#82L)@JL;f!ilI>- zC`_Do$0D64=Xcf}wFFIab`pGmX8hOZm*+AK!oc9jeCuR%I(={Qh5K(fsU;Xw=Y=sE zvO!?3HNKn-hN32ta`D~2eSGrdGzz7*vL+i$gTNtJRK|D-=fb5l7#z+_o44GoJm^8s zbOYMw-6BjDpa07X?pC~~1c_cjeA6c&Ba`TF!i>F}*TFXIRtwqvIUNjS+P#uSLeTeQ zB=P?>|Hv>WR0xrQ5n0IrNno`QmuxCgvAB>HtSdpZ;b6$Bgi%3~gq24Cv^Ur0*}#s% zMS2-Ui+-7vIZ6_5z0mMEYrEz;5(gW`es!qGv(y=CbwcleAV`lui~$adVy0b**GR1(JT9U)Wi^dbhadtSFqo#ASmSK55P_4~EYU`bU=(wk0ujQ`kebwi!o% zv`s68G<@fqyIVG~7>*b$b`CE;s}np;4{nm6-l-VBbC5E*|1WiS{v=m+-3Pwb%*wS^ z01b45Y&O}FLMF{7MUO-BjK^U*G!bL}1*8Ae;a?}hcal}E~ZNV-oCb(XY*#kL|&y^%NSsh zrB+$jrDSa}Vd=eB=l1-@E&=y=wPp8;wjkCg$cTg4N})$67m?QiGjCo zU!THa8vJTT35V{u;%0Z)X2?M+$Y3?zrvGF!kxgLzX1hb}u}z12ov9Pn1%D#9c{*g) z$r2@^FvB5%&`)o?7d{fRLd>AhKq;joocnHiu?+Lg>Yc4&OsE28l9@icj(GW@9n*60n9xTFCxh2q&@v0)S%A*VCDm|P*Qqf77qS{x zZl;F~dP7*iYc#nKXIb-9YJ$DMiqBGXtjA#}@sfHAth9n$(sY*2Q@4Mqle2bd0eT%9 zb`Pj6a|0XZe>1~gbNr#I?gaE3c6xhfs|1h&8mQjhExncC=`sv-0Z~LZepsu+ae7#1 zd_H%SQBDGUJ)t9(O=VUjl6YKCPv1(3xH}k*9wtH6pW8p8z88h>4}5#uY@=(I7wkV2sQ z{?m{yxj=M|JhS2vg*jeI4u0oqtvRvR=rrMAtNFzGPotpOVjlVh($J6j$wGvJS@H&9 z1CI4rM|v}spitR60?(Y-oq5o%(KcRxFFUjjZg)Dpz5SuKx%zgx-3$kUBnlz+3K=O6 zj|Cd4KS_?D=A#+ASLg1p?~cDXKK=Tw#T@JAW?bTNX&gyF4q=LMcr+8ZEAgU za>5fhJQ_$Abo|BJ>!}=pJneBSM6f)p?F@VGfBbUzY>&TECi45m1N+TcN;&Sp3P!D~ zp!L(QDdk<%d3iM+9^S@zD)+0jLw4E#V6vO-un9-k6Uw7K(2kk5dDJ3q=$AutYuv~1)EVh6(`uVH^EJ8TvWgaL$}Q9=TaAK5JX z(>)LqnZj<-ZWJcSA6;ABEQ33eoo*t1u?ny}ZV4WgPM`0-i-ke}D8x^B>L`ad$M6a< zf+a(-C?%MqX)SV?q*w8b^1=!O$9fZhAu%WwLRTsBRY1J8GZS|J9F>(!NpMT_E?o-7 zs)IfkK?cF}->5NlXrGp%y;N9Ku^MhEcOw33c|*%YV1<%%BVbhV2T_Hy@iV)?@8jOe zX$E1Kw0vzbCM}6+l47F{@-YTS`VLmOO438)^GpaEBGGU0F~>(h!h7Lx?L8?9S_=vA z`PZkDwa!C-XQ-ZFRMKfU8tnM(_{)>gtI>RmtY)9pd#tCLrguOt*&iv}KEJ(|p=oS=77Kn+kV4X=u2YKgf} z$I0m>%z(^G(J3vCZkeidEq3ZPWLw)h*xy4Sa(069SHH=g0g&gk-rU;RI}|nK{DQgZ zgRD4ErbEJdVN0vE<2R?H(^0&QG+>q%r?5-`cJ)PD8P5FK7thFe@gy1j%r`3|+mMX3=!C=e< zBc2D7t37jDQq1nHC=+FgH^`an`)DG|LHeBBN5UM!kNmCO`LK(5K=;NI!)W1N!VKBZ zkTA0l0g>$f>=?8Fm%!h0rxg|{(Z*-vok6lh!I`grb=>cDcK7-hCnKDVPxaw&I9Z!e zrGR29o3_-$JF+I*0XGm{QPB&b!aAb_$iXQbz(vABNCF@><9?cmaHt3by~@7;HNr3> zd8Z|yrjqV~Mv3y81yx36Dc+&RFq-H|nI83+dti4jYa=SCnt6zs)UCDyy~C68=WqQq zRpndNe{0GAaUTX)P$binPmQ&%{tjO$tk_=#&0~c%xfb=g=nx$AG9%^@if5TV5shJ& zUS=e~3@Cw{0Ch9(I3O87LB%oiVkR&P-f@;#Vhk@&fIfx7g|Hqy5rCdkloBQ^2roz{ zZZ*^#l^SZPn5qF$1ifc}ezP+ySot^bpc#U3xd>qh*3@HKV-&(D1rJSn9to_Od8y&nsZU*6GuINyM=>cNx2D>iZh0aL)Zb3p-1`*yjg5bwcC zx!fL!B5j3TIkKgEPFB72*4;*nHA>>tdud{0lLnwVz^9jp=MQ%RK`{xTA#&Z|^eAhK zWQ*VjckPI6Qg^GJtk*CVBkp*RQ{}m2~Rl znAtcf-Pu}~8#bacy-08FL*Bld%gZbaWDiEd4$n`d(3IcCG8aZ@RUzq;h5A&J>2+Ly z!lccu8yq{UU5N1QC4Bm5iOSzWwai9u~1t!x=yatC$O7X(Tna^!ko|;O5%A?O1zDYE0 z6eCoNLSaj`Eizo`e{|CxHK4_wM~j_)_h|nKn4tImpienfvpKNxKuF*-Vgqc?xIDQm zbyM1_und9GDzxChkNe(-&*T-!A`HKo6&H@jyPJ+&OcbZq?Qn-8GXMPRU$b%#b`Pgl z^4;cO_`d5d`%+${ zKJK*!j3}$H`0Zpd5okpNrLrXYHb z;`IrPFgRNqeet{oTy@frc5Q+TN`~q)AOOguyAvBgCquBh8sPxT;~0wB=}uE1x8mK$ zH(*BWH!orAB3lB<_?bicsTDu88A7nc-NSHi`279nX8+{)zjVkzwrlyG!I4{iY}@|;puNFXX^7ZGz&K6-Bd(P+*)gOdz{et17ExFP*lpz zAIFe^(znzVy0@li*2A#Tlv?wXxum28B-NVM`=lEXh$pHp+q9q)ECIqR+XbRDIUGt< zc@Wf8K;H57)#>cb+359bdBxwp1#4oK>#1NA$Cz}oQq81l_s8>dYhwK6+()JktI-a+ zH4HKU!QNiSzLIt3Y;t@#J$ry$QR6}e7R?f6nAN9SYcMT3&E4x2(fK_{ew&Y;P@QRm(Uk&tJS-6kI2}CdiFK zn|t|5x#2-aE3}`4fN>b$Z(Ex=+<=OoSe+Z=C@Mn@#w1&JMGctMn;az};hFWhs8rCl zs%Z7wX!`ignLW{ZtsA_4%jxpyy`!V&hvd6DA&nCxaG^L>uDRN`a!Npgf;eQ=)fzn0KJ>4Wm=6(g0Y#)Cln!I?$?se! z0z@&r2{gb^HTmj3LWuOLl3sNaGqs{O71V{e%q(otp*<(&5iWsAMnx5riNw+ zYI^rGBhi5W{$VZreLMF!pfp+yf78SNeno$yqu<;xPhQWCpe6?NvFaqUq`sPWp#mHw zW+2m4ZbdMLi*5jdJF(y5TE1twh6}0zy~n$eewoUY$NILTcbdoD-Q9%0s5G(zLPa*# zwt{$3qB9$qqhE)7F2CPha-+bZ;%b6w&;^>1Oyqlrao7q!CTJUM!2rKue zDHd4~%O^Gn#8jfj;;!e2GGRY@>{s|sUJI|R%>eXp00N5QbT$A0Pn5cdj6gZS31LBO?ANyFhb_WV?vb4gak~1R<7$_^IzS`ErkN%2AuUu z<{_2nCh&xxcVF;0HT2?GFE<1Pdi`7?kQB+M60p02{B&Hn^NA?mCQ05e5x z$AYLaTH=ffUF4+am`0j@)Rr1{Z;auY;b|FLElm5ra4g1*$OTrIG69r-8L$-Eb`7}H z{a7`W8jdC4QFC}KIIrJilg7^a@Bh*7{o;>*@!>!EaBXMn?D8`Dd`=*i!8nPwgAQg|1`w?ql|_2QqRC{~ zD9P0%IVF{?;K_=^)Jf1SU5>;Oinf?$bm(9p_-xqW(|P~dbGZvIrxRXLCmK<4RoGc; z_0~Gc$~vB$zdAX4eWC^yh{gYP-u;J%`FIgG)yDeXvwihjBP6Q`QQkR$ZdYfcMSHRQ z!E(6P6~B9WdEpeHr!SsRqTaqa8(&Eg0=B_8t29Ot_T^YlhiIJK+GLp=qc;D^C3rc( zVu(gt=k?j{T;hoZa{R^V?tbt2^JmvQ6f$L-W8)_~nz(r`IBJW`~HAp`N(7C%N+-6&V)6{wtLw<9+V+s<7P0SOC6r0*I z$UvM=ZdP;WcF_Y@_N?28PL7{1u0B2f&8M$kUrZ-I`{>8*jUELcF5KH2CJb%G@m^>f z3E9i>`~zDKb3~wZE$MA-fq3)w_|5A#EF9YZ;`m~5F^Q>N3LggIMZ;7TTuclM3@Q5c zlK^gr_#Iv2Ql>gOYbci>D81R(6*J_ZcV;rold0^XM^J-UXC;CpG^mFdYlWL;=Q=aB zhutSclx4HJ=Nm@c^O^Ox7KBotbpX|FtnmxlpfRo>+l5g z4q9Lll{CCw$3z$!9hNPK4uQ*km-z(`3SpBE0I$xmXlzDZC~}X`H0YWNCZC-ltZ0g? zsH8A#F+A<@+~IX^se4$>e)mu|Dvz$SqIP{UIzAb{oi0aY1pTso(|daGgo76jLEa7f z;Pq{7Yp`>0-LVXHcMZe9U7NQe%i$8(h7l1`KqPqbcm)j*?wYAN`z#5?HqR#@}-ces#qBu&x8`rYF zd9y1xfb}2_R zjmP+KHs-xFNKQ>)b6uTJqOOWJnO@74JrglVnO}S8#*=AgZ})7k=(Lkxf0h8YQf7k2 zamPdjPd@JO%rFO->_TY5>hzi0!zDz%Agyk?!PEqz6rm2zCYgA|~r?_voB#W>?N_*CN zXsAAsSRuoV5bq63)lt3FUd?oBNOykQM`aBS|F#0(-Y?4duAf!^-`2>tFMan_I`LPZ zXsh5|ckB9_=a1n2YcKqFhWX9gx%eBe{*|X5m$xdWAniGxl4RsWz!oBzXC+IE?RgEi zQd^)N|9YZde1~gfDK@%(jJpa0$eLs|j`@(9W{no&0|D&;QcQDbsSr#f*=LFAXqPeH zVMbqDVHX4TuJ?~n_^UmC_wbv$u&Z>J3U6zM-2gMBq_hq`0=F(8tG>g^(6Ap+D&;cb zhUPOVkt!6yII_a;bvw_a!j|z&WW!xrDmOnr?pF2*kXS^iDiEsnLUNWMWg%Fz073;I zCS+&7G5pAj3NQspjbWD*dqCiL0Q{1aaT~$?Zr{O%(zh+*W6px6g_q=b(UE9l8eUtY zbqSs>AA`--JS)k)Al9Fpvq}|=2lWRao>QiDmbT9O#uX|&M4K~0h3{G_r};_-Q~Sflb~g@7J22@fEdGOo-4{pC<)YOeiLmX?)nP`mrKiQ({OqgK)347ijxR@V zCVJO-+LkF}W#@&wB7$CK#u%|QmdGZml1?f2c2A;oQ$r{r_=xN|NSS@{73KqXzeb%4z9@ZZ_#eT&x%v6Z%<^!vBQc%xplvo zE!Q_$#MftM7f@92!}|5z<;hsUIN2WEH0OzK*ixi*^&n430);})5EP;)gzgG+QE~9o z(;{I!F=lNFz^AO4R%yPW(s~mVgkI`AgicpIjO}d94PTAKhxnM#a5#MS!TSWqCDZou z3jZGrhpjc6og|Q1!JAt#2M@m-5L(8eb++o(P>wV>^?AVO8aD#>-5dkXpIHM1OhPxxTs4sl{ zdPEjPA}A4V2_}d;2TmongKs!s0n<1HqP$}1W((WNB0zWpejIO;$oNo98c<}Dw?f4G zU}p~?@3AY_TrVbV)9OBtT$*p96$<29ANGKWPbc+{6?H4+@QB<2@kM2fqCGQ=>H)h zl9X9wHh&1Lo=)Tm4X;K-;A0>+i)CxDEg%m|O5V>LF}8Up5eSb}*agq>#@%d%T1_9P zyBS-}?@39CxgM?`MwgTGx0iC-VB2`FEk-#zSu~H?002M$NklsRgvlg_k2wh|_R}@f2id|aD`wd}97TQOcH?Gv)Z?Ltlj?L+-U6}!pO$Z+jg|$T zaZJo?rmCP^ZanUj$_g5G9ZlF@s1a!uK}NjVO;qm9^an;UU~*pC951kG0ur?CfN0;& zmeYv+99|ZsCr+U9TSR+`856V-JPd{~iB=XGi@eJw3RuM7?~$-MOWMLXDN(nJ`_3?1 ztHFv{feF~eoTcI9UotW&k~E}Na~RBnli36e9SJrg&}0ZVlNaYx?mW^oNRbHibT0>= z{UZT`!>aWOz8k(9s4lL!N2r8%q&eIvMTP5ONSS5fNajy#0bF=UaTM<%)-_5s& z8K)Zm^4)K*p=hSPfbs3!zx!2F?PDwTS~b<^Ro_ufI`ds0Z`A<4>)GGqp5f3`qMt>I zqb3R``xLZ5J2a8Oh6Q8}63J6+KLK+-Wh$t^yaKx2fppvepU(kp>qX5lm5xOoiD<=8 zP=y_=ImseQa1z-U6#lIB<<>dTvI&s zwTdSqLUuEpJxcwSTy^+-chILcC7M6^f42FXs8~VpGPXguus7(9VMK0itrG^i&a;a| zuqsqb=itj+OqY}}ah<#!919?B5u67FvQq@5dzKKR_o7P+r2TW#(o{2CeaDVCR!#ZF z7P0z+AAES8b=&$x#vxn{8B=Sy!4v96@Wf+Zpqh&!fk3eVSMF5JHI+>v^QnC1)X>ak zNVR0#yV>;kvEo!0kqPWZZQAlmwdmTro+EkvP0T~qqtXZ8P&c>>pyz`_ujXq@$~#GwqSC4aShk=Tg+7x#8jgyhL)0=i7PNczXSjWNfwS4SkLq>kL15`eMJ|r^@g3c89$_lmh`XCA#B_&%XH0Uwk>8(085a zc}+lxN{%jdtyKDUU=ywofWzB{LQ4n0 zW6>b!5{bYciM;NlgxuNVz|1+R;%a5jCl2qW!H{q>!8*Y-kP&ob{wPXk$0Jks;`(X- z>Ch^?BL!F*@Nd}di{QCg$X~a1@ML&*`)qP`&a-dR;@792(he`Cio44@U-OXE4dcQaLV11*EQH~G88@B+jsf- z*I&JHsLyB)Ft#ZC*{8o6$f&wARHX`;q2jk`*T(L^Cz`>hpMQFE@N_dN){+~5X2-1n zEL1VUBA3S(;g3NDn9wXgN;?K;6oC<;M#veOZm2(q???R%BW-@YvoI5gB( z1Iwl2rD)a?ZdUUIqnHb$jcJ`hCG=cLkd?*YMZRx$2;pCXXrV!xV8QEbaZtw z*|eM53?`S?eP4#EEX*WxC>Ajo$aY0>mx9b826XGB3+H}e=AnA4XW@Ey8lm5k4{~|& z)|q~z8;lpm(?guvyVo7;+Kv_UWJL;iGqcW68|-)WiUnfPFQGORW=;(kTMme@R31Z7 ze7pgU$Fj#hI2TPSA!iZx`t2|N;w=hD?3^Up4hfmbCuWC<79QIDt<}`xOY$EIzgLe9 z9th|$zc9Jxo-X?Y6F@P#zuvhjT%o|+&&JD19acb|%AR1Y6jE5B*LD5j^oWXKv8NWe zyoIrA8;WqhKp1?y^b8Uof0DnBHxS=L%bN+cbdp`2LxQGiUY%AU31IdSMcuN*t>aQB zPZ?^GE;5y=HKAf0+>He01+(Be+ExiaG|XEHK9!Sx(M$e!W9!%E36iuK73z^X;jGYSZIU0Pb*JA^ zp>;j9K<4#_ea6yce4B`in_Fupx{kHkmxjR#ZDg>h2+tl}jfR4+a%z~ojTYVb$H@Ei zZF|=G=%Wum`|R_Ji!00;nHX2B5Got>+UB8b7b_^$D1x`36yDLm_T9YX0V%KBQR59c z6-4eURyIJq?8vA=C{Rw!IQRYu~$9d?-!Pewr6npy)qS!x@9CM>}xVsmpL00DOq!X3Jws`F?ZyW_$z7SR$*kBXXG9Qqzdag?b#i>T>;ywauZPCU{1_wRhPxkiJ{Nn7K zTEF*fZ+036mOg4Royasa{p}rgH+D80jSTHcKqO!WrO=h)l>1-W5c5d!Hkqb` z_%|=-Z^mq?C$mMX+m5VRyBA<~x4pLeWazj;x~4Sbpo&pAm*CbRX4ARd=9i;$=O2Na zFpsCtp2=+(p|W;=adkOcPPTg;tdrwenyG_>14nVk@+bA+(5>yb6X&+gvIxLQZ)<>a zthz@>djnZ9TRY>i^oOg<$rv@=O>Sl7qZ7~UV7R}(9F3&QG&k5DuWA-~l1Sk8)z$IY z<@w8JFAs-@q}*}_3A4bpb^EZ8RESSKQW#vbl8b6e3XqsZqgn9G!U(JlUo5orB={d) zr62|EvPu`;7_<+`gpyrGwFoujZ8wUZrJBu-d1?n@Y)A}qkOv8)y}G9As9laRX#txki(`e%^6eD{v`JuEx*_`aihFx z42SY^mLt|y-9cyXXv>M*IzY?Er6Cm%3mr+^9EU#FK7Uy@T|~1%k%CVsJxV%;k1b$r z@8IZw$4AYgPWF2Hhl2x^>spJ8d!zMq@ZNs=$z*vhxz5@6&3JivK00GY-Yp*vdPgr0 zzt`Ik4Z`FDk2PBNbaCmx>A}wKUhm1>Eu1&&NggWPO3Ow>hsJ`qkS>=Ougr4HOyyxJ|106CS!|Uj$n(X$cPe4g)-4No0&h0I?Edu zo+>=f8Qv&nxoY>L#M7$HquH{4ySqnX-Z|-rsc|u$2}S1Bf{=rQtOv*roODL?ocp_@ z{jQMP(S=3z#5FKv;jgx0_-!K+30@tHkf1X245&edxS~vYbRN_HsIFiN<(h#iqF32+ zPA{I07d-k924oytLCZIl*ijsvIj20FM}__}Dj)__C8ndkb6nAjvVlB~gJ{Tw#wxt; zM2QiyX<0H7NgC_^4z$!Y4bA5_54@~8uW!g!_ta4C`fxd53rWPmiySfvf5Y5;@(SuP zzmZ0sltkkuiFqBRpaip*RUDnEUUnM@LfHP6-sXO2AC$7UCS5damALOKQaB6*MZ*rU zU$$;U=T^g`;#JH;D=H&;8lr8ew+e)K&}|f%aHRA~%_@oD4ev?ZHM(+5xh(FK4u!l~ z3$^b0je^^A`P<{vHh`Ug)f|hl0SN91KR5PvjJ!fJQWzn(vbQx}hJbus+SN z=K3#vH$eLKMj?-%0f6S-z5Q*0zyDQJsdLGcLweIp9bE zpY+(!GjW)aQc=Pb(^Yy7@a4%P)Dy45Iq4UhoU~2|2R9UDh1M)3bB+;A=2@s?j<9b^ zrw9hKSMU$o6%u0NjwUe?fBgeQ`Bc{f`e3lH$J-w2z6L1b=}|4urT>M8)KP^qFPY}N zt$&_oXhBtVdBb1AAc96wy>wm0(~gh&&Akf`C==8mp9X2!@+!qCg4H}N0{(c-k#7?!%qZkrifa{@~jI`>0*94ZL zQiw&!ctamTed&&Zp5(D7faYhaui4aRq5n^wya2-M)pB%s@%qgh(yr5M%YMo2SiQ_e zwa)jFmE3RxY%_Qrl{h0!l&2a!2;RMGS4VURMMiS{*3P^+luQAsK<{Y_FP}ja-i6|4*-7Tr%)@dZ6$v_eb$L0)=1AEX2yrVp4 zx=6tIu&BbB#7KDe+2kq*v1p5S2=Lp9OcTiN)SaEyu-AR|tu#eAPPscM0F9IIy zm6qlI&wll1@)kXPdN}9|t;XvEqbo8tb%vqp1UH}?%mcO=(;q5Hv~68sd3!BRPe}Lq z%@_ybD5a`DeZD*BNcQz$!O-#qk6-J4>%MQ>;+CXJFz@Tr)6c&8^4Zbh^TTJIUN6Iq zHzG^?0*k>=F0Z-mkX;cDw`L*y?)v`n&8e-{CfU5>MM2-lVX`d5M!121$t_xTuhE5! z!OUcBkd}fmkk(-DV3-(**?i#i zsHX?iS4YEI4e52o|IEMm>`MwLEG7%|F_GNDs%pzkAx5SNhV%WZn1e}YijT&a39W@^ z^1{S|$4p6cP3tn^L9QX)&}%7k#pj^9Zkc@i4(CMhVgGQ@!c`gOROZlq5no0}`>?+a z9DyM^pCgFF-)z1N^OOjyC&Y}wm2F)Xo%Eaqs0048thMbe3UuUYe57=bY?m{{_2t^Y zPS6cWrG#z-eBJHdV7oWEm3}JDxSg%uUgu!*Av<5Ku1iKcSzd_^Avg|thabK7J1>r2 zY~G@AYJOO+ZNZo0x6~ZPlLfl9tA|)+31TmWlbad*!0EBCuU<`8lZ5_frL){Fj*Ww* zHX0CH;S-#&Gyy}j)3lZRqpKSR%Kcsc^mG)HsMh*~s~Dst)TCtlF23`)*zvK(O^(lV zL?p=o4+NB!!z1WK*a`e|5?n;531!b)9k3@o$7o_+<0Y{&?nVS64#s;6 z;5vi93;$D-+3|*+#O5n)mYqr2s0~sYinMLJfl5+cX%1VM5ZrcQkf z=TTYi=WmRjf>8s?wDSXmSH3aw?7}vuPzR z*^Tg5bR|__!qDTS_tYogu#GgQ`f<7f0_RmuP}-4s35HbbjQ$V~?+}wK7!ocO8zG`x zuywMFl*?A|2f?|+Fwkf2mYqJF&sZJyA`1#PTW`=ackBE$wpCG}@TCw@gfT_rFMMugCD$l#f2%6aJrFEha+uW7X=p1G&BwlVKkxeeDYs_qw{qq z0@X$Hvx-!83Mv(f&O52DFr&fHn$~7kiYAI^EILt`B7^e;4&WMj8T-KOv*!tP zpwqMW-rF1Qq2|SGbbS2k?EEd+Cf$_%5pnND6I7A;MD<={qe^?iHuEHpG-cvq|$L!}~w5XiEaf+3TR1h2@nF`T93=HmV zU9xF4MhJ?qZ){^@UI%z(B}xQ{bT^!y>Vv>J&a*aOVf73E$S(h%)r07`V)~Q8Fji&~ z%*B(2UBkWj=Hn~PMsq{9pzVm!{y={57H8VQ-v09^?}63D#f8-5hrK-`Hz)-yU0qzA ze)g*`r1F?tP%u~yHnLYBFbG;L>~*Xy+NdptxPoW}3h#(E)?F3INlX1Dmgs+nFODca zg7#<2d3Ucf9*u9OD~$VklAXWP%h?*0qx3qCT8qk}0+N=cAITl67V*!jw3n3ZXty}Y zaC89NNEUcl8ALQMV9QfD*zX;_*dHDa^pKB`P-Z;|I%+$r@_KfDes+3xg0h4LRNfM% zc}q%DAJ(26Zv@W_|+bluqH(L(;4K;umoyNCMF;HL(s(WA=2ZbRPl|ZL>&f-}Ju6ewe&iRSRag6rj{PO7V z$?yFB#}0*AuoR=%-2@nLuF5|i&14msvI)lf~GO+ zIMSnAxlwE|v4#LEG4q{Vl5w_b4RQ5kzKeS*nsxU1GgjFNJFShI_4z`yP)G)B@cf`6 zLx?Ha+uiRU^x8xC$y?8WXU^>QoJY6MDPWHf-!f%&W|43q$L0FV_g_9cc>Z9I0K36b z9`#B5(cK)S*_|@Ko=mr|Gz@I=K@K~+I?s7ehKQ+4PSy3rcroIGuxP|nUjPn^mw;BU z%eMsruon+`fQ2#V`v=T;raFk45RJ_-oTc0pW<7xU(N*KdIS0I zyIkcA30N6aO@b0C7*9er;v+*zwsQi2*_d8gKfCGdIz5uyZ3(8!Ojxgs}wooq918K>(u2Ru6+h zUS>_fdt_@}pZxa|4-`2Ro@SG==uJFa&j~eVr2gi1dKnr@zvHK*`QZqm7XwhY%cA8F zbA}mWD1n*Zp_96+cnUP%QDX3y+{;b%14LLz-cM`^AQhfRS7<)wz~2Z-^#!!Cpw;88 z807J|m-e6bB3CVWQ|qZsK3+u5)tv}mkcu(mMnj9imAD-6cmhnpvV2fs@w0N$5&bn{ zQf5<<2Q`BY7)3>n2!c#xnMM*t|H32t45h*N#ZfXh3s`{vAWj7qKna-zn< z_Nd)~C8YJwFqI^3GvctM`u~wP<-fX14(iW4_@<2vEP&O$2Fkhf?n*&FoAUXud5{Y7 zBTw`7_+~0e`FKanW`$$vc(5Wc)H%b9HlKt%oIK{Q=8;^ZT!S;A;VHfZ-uy7;59wkP z=obBG2jmrlOT78~SA@`7N80sh=kyABsR>7&VYyZ^b=|m=p}@+(WIFru>#rTSQ*5@T zz2VxM!p8ryveQP;w365OX!#C0T~R62?T=p8g8mB;#O_$umtcVjs`M={|L}x z)`JHvqD}&b5h~PiX}EcKc?|Tm6h51-(tX7;A6r{lQx541q)28V?lj#n1W2p8TSu|W?1U@*}d-?L^Xfg?)(*h91*9AM6tU;0jSCMcE z6fVKST$=izpAtSPN!;dVNoa#hSr0;@VUKymOae5t)=4+28V~cjM<^?lf*jFoO$Ti8 za`Q-QP|tk;zz%suclY+49=f}~2aC?nF6p4WMF|Rx$KCliqRZlOP)VSgUT1Akk2ItW z9549U1P6x~5?#rai3k)01|Ile0#KChQm}ylCN0{(BKU3%FJEDs#DxBt7u>d3lVV}M z8DG>9-x*^VY{siio3rgY``%Aq{FDFv7a#rjhx8ska%13_0HAOfF#t_KvcIpvw?yX9 zY#din{4n~1k{0xEy%n<-REWk~S$7FIf18&@7yCqoS+DzafVVSl! zh-#lDo$hiz-5xs9Yd9Z^mk~8?i)7odr($-pcUGE0836BUKe5o>4VkhCY*=UjHyoSO zg^uDm3`syR5YDp1Q^hn09kqL+1e`py`Q8tXb`Sg5m+&EW1a*Y_Z9E!T+^~;!I-S6I zvux8O&TyBkF%M*cs?J5%a1V*ISgj-{HGzU3VSy9M&^~t{^jN#Tw>m@JnO{$Za71-; zboxVUx9b$U{`~A_celrfAGgZ3AZaE@^8AunFu{f&f!go~z(^L`F4%i-U%lDeb)4Ok zoB7>NTT1q>Qx1ANgZ+bDn?DM+og>Vg^>a=fW2v$F_JW# z^$yq>LFsQaV{jotl5cez#@=scy%DKe9P97*s8qTkq6UO1Z7`wh%XKLRI ze8<%_#7C0>(qz}R4~9>k_1`<}>|&1bLs3={OCTBf^h@qp>)`Zv@(nFE-xh ze1P>%azJcvJLijeNpB&ZIpY?qDGG`2*w&cgk$p4E6bXh{L+cn zRxz;sGy)6G=3&Fa;!X@6XOK&xGb6_=)ikRiSQ3Xcy$ryk(ePWtSU6yTL_{Vl)a)Py zeu-l5p`dJuxt(6+NZup|H6!6p`W46n8V+V>QOr{qORcw|h{|r!RDe}yn=1!T_R&MD z?yO~u0$1Cyb9yg+eO$*f!*=p;NG`Mk8k(>Khk@C~z|i8AK;~e`6f!!|iKYvGlOGiv zZnv=&T+srQZQLgM9STQS1Vie(sKQl928ITD{z5E#gJDl&mCxBxg(M!;!WEMjNb@froEJ>@noCzgcHcxQSMgGzU&Z6l@}Jik%C>t(70zJajXl!E<9GzqXvQ6O z6QS!TF6V-r=dUdih&n;1NeeCvvbq{_ijdB`A=u@r zEoRaR=57TX_)`SG<0``7bd?f=`-R79R3+KUu5SU6pLx5qwtQz`nM!c0nS>Q(hHYj= z)ZBrvcm2_{ojNT(2`6`2HAE=3xh$8WI2`<^p6XcUp~2H;aH$g(WT>8h`>FAK`%_iA z0PIHU%11v#UB2DOR|f2b!l0mOqxAW$)Z>&TBXUCjOe&l+FlJ|vD(7@yEZ^+zF1{ebLXz+~-1W`Yoc!-yh zemcsVhmX(cmIj|yY41m1*kvK%PZDmBNjycCq@2{k8(@}ba&E;5c7XNRi?Qt;6jGLpr)w71Z{b(0NqSi z!8tX0w>krX;f$sl1kAL9$-BblB`b#z(hKwqg}lgV0CJKc^e}bd&+;AJtn79W_Ml>d z)?U(PntTVq@t>q82A)169ZT5vr2@^)wCzE41ABei2dXb00%n2q(9;R z2`~;W>vP0(g|%qVq$t;bLcs<`?rFvAMP<<;DDu0{2S5JjzyHZEe=>ZsM>Sv%2x&1t zY;K{^P)uN}PL>ssI2LWpCNt(={G&JbLUH(eval;CS1DE~Zp0OAT`EuxM~@ogOgWep zmv)wyZL6hMvzl-v@P$|5mFS*^wK)+@%Hv1$z}Yg3Y(1BHe1paauu&sM~}eVf~a zu-MZ&XbXSnL&CAnE#{-E%g;Z1^?(2S|9JZ9?ERO|EtaNr*8feS{{b1{U>_M(g8g!S zr~k|WDW{cqw?bC-1Y?46UP&r489xkfI(OI4Mz<>m2;9tX=4*>~Kid$kJV<@s+uzxk z1k!rm>TTLeAz(t>!Tf9@x>-`7B?r!vcn5XH!Y5qH{6!msVe9?f&fuvnoIA-f#IF(F z9>%)U>L@2h*~mhv;*=ypxoeZVJVN&D!39+$?bq6a2))VW=hut>`lFA3_&fjT3*jZ4JQ&f?Me|l7}_{)k3QweaeOc!E_SuTA2k!# z>P%150ao!+PxR3ohEG6nUP7V1Yd9)^>=A-y zEB*n#zZx1^Q;+Vek$P4FBl22Dya09MK;#f(vzcNl6z{-7>X#NTt{#|yrfJAV^K)Od zVHcwHWwMVpZJ!TT=DaT&`*wGye=t1S+d1rP+D{TRpwR=N-M|)(=C*^ZXU91qO!sJL zM_(6v*;HVMP(yrB^X(N{Tkvepkm_1@&<+rVA>|ym_)`)e zn~2tgrWCkyHWs=DD{^ingkqK~H<&DAyDdQ|Nf`&d(?W8nT)WGn;33N{9RT;xPfL2? zqc#m9|7g5nS%M2heop7J?r>lBy!f=mp=F=Lz0;y&$zKYdfk?@vhSBnoYjEWZGm1&JVl(cmA283bK02DpPkP{|nKTkr{CWIvLA z+}|%GGM-K_y1w=QhyHv;dsLN*qG@NnCB8_~P;ph|b@ajwZ~YNJ4$$E~GF((b)EJGUjkY9Ja{1)J?VExf(M|#*u7rJns4h zIZB5@BANs0XwoPz6dd8Libk;I()c43!vdOXjk%W_^>KlzfU7RjE8|hFY%Q6e_`~vg zmZvc=&@V$GM_`oRoU|Gxs`Urxv3umC81%Bhs6l_sCTNn@(I)h~&caMjfzq6r@Z{AE zotPMogvd5fT6O9CxnsuF56}TI*KuQ7;PGa0>7xm?&lCLO&C$bYrNI4%QQm_ z)~+#h9-6B1UW^?w<6~A4LPgb+*i(^v`8NT*r0L{ zP|pw*lQgm@0I$VdSOj9h?{chaqLBzN&_|;t)Bp?4VQ@N@{9iiNj@U@rT1#7s*bD*C5g(vgJn*thw3z_~!cEg^`8ZG^D6PmxZx` zZff@3eE!n4`VBKBQ#t1D^&G;dpt@`a!34ag^9Yc1FbhCbF=q5{h7CboCV}l*TiYBn zy4eJx1bK4YiIXmJa8h<*(r5)i0pmJ$lawHZ*y01D8)@3?;mGp6o1l=%Lo~mxbKos0 zIL$;TaAcBX_Ny=kDcB}+k+qly^cM2hQLmeqb4TYSl_Bk_G&$sA3b>i@~a04oXXeVO)u+CP<`vW=%))yF5G;4jstwy_E+k(@isj`p zmLf>vVf7{>Asq{*`e&GC@X-h;0bt~+id`HZr0ka0+x_j2fAOP#`mcZS^uwpL6JC0P zA{^L4uyoqFc0m0WBVaO`=m7Oa--44Nublgql+|^rx}S2?q>GXR@-+KoyQC0-CFw!< zg@E+rQ4Z`NhncI0OE((Uc; z9_=4J+k0|;btMLAe=uYN!1KlR@@jPP=GEJiz8lO*(J;Z100=CkGidX zZzsxxzYh=er3Zn>H$nn9`5b`fFom1x`QmQM&zan*tG*S>2nb0!O~1fws|Rac%?%^FL(v4DuPl+am z`WnMeoSZJzIz^vOV6Fd3M3a54w{Jf`mPvhhC^AIqAO3=fp6Hn}3$Hyaof;&Q)a-h8 zHHyV)QzL&cUsCPah3dhUu)8qE+>CA?(ud6T^c!*v-okvd7F=SCMwX>)(9&C$=HhG) z`vOo1hM^H!(Uudmur9|BOv1sy5P8u~$OFrFySsxgzWn;DFTb+ORL}@kYsbrUG@(*D z#)O>{AG1L-hUs_ll!aI7rE3eczC*B#a5O1cF2{*dBC{6lsYO{9K6dR>j;FW?Ni^uE z!%=AnL=egN!{tNkDXG6v#R~FKQK)Lhr8K<>o#9l?OAi%NXj^*r(@V$n@!)ryajRW^jf=&i{-uS_nZ{lz4mT< zYbSJYJzmOp@6b5z;d>ePhcBKyf3kbP%EcpOG48g5bSMZ6ZC{C#r6r0?=zjwLB-I2% z7@#ka?9Pc_qEd$eNAgA7aC^r>02k8Alm}a!MnDzd$s+26(d#fIWF%8w6}A4x?{24o zES(sigUY7%9y@?sZh!+Z#^^O#ki&y_hr{#Nmon;b*e|clt&n_v51BD736Zz9_Qv2d zt(}35f{Bb}-qM4E(}`aV`vb$dWx(ytVZwV%W}KCx`W=TIA9OlM1H@i!=sWB|B`iKsUeT}p0QkICD??8tsh%W zYmwagZ*JmdN#{~g&53Sg?E%kCM=j&3gbgXWtlkf~1CYWI@tIy8izLCI&%ro@G2i9` zy3-V-VCQbaS!58w4VVhpGrn*1h$+nqTVr#@vR7S34L^)F*D(~+C9h{sz0~{Ebl%)r z1~q^B9sV2LKJAJ+jSt(9VmihAWWwSSS;6Cas?87Xhy4L9S0#)t3ju92cOWa-laZs* zFaWlop7Kwq!h4jPP<8W{A4Sh;RHjO=bW}g}Tu%Vau!2%XU^L|$P$xJjkUVo4U-}0= zc$^Zt7v>V}-%Fs9iS`rN%_uFFEd{$&;)UB*WQbQGh%YhF`S0DQ?!Eg_#dIln;a+gFFtIStiw&k4RWK!wQX4E$GJpJx z(!9Ygx<$%19uA=h;!Tt8)_smp%7HY-)TVScSOFI4FY%CdN2Xe`tWdUKM*0S`Ot>8V zfhIc476QR1Ip-4Dqh~Z6M$gN#xY_ACQUJ+>XQ}sko@k<=jg*REuy+*}ytcO6l}b$m zV9ZejZ=I=WjWv^7po8IhC**qA@6V>omoML!K3|eSGoJW%WdayQOnTdI0np%W|1#F7mGQG6U(ulL9webYl9cn#nI zwi!goax92nx)udyVN4HVEAnkS!gh7r>kmTeRM{Y5 z>~@5d-5utlh|X{jRy4V2+X9gjn`eQW>W>NFr>sXU=^?E&P6+~l%&qAh$}BVJU7n4= zt!=Sh?wbzp=?>Et;F%nUyNA!8K7Dfd?91Q0{x84!FTeNE$LM+_1Z}Yxji(pq7gy(_ z^S2k)*0a8}eIwY9{fP&m8FDmYpfsL>VZh}lUP?X{Hn`F3%3!k8eBf6$wm7^(vXJ$S z$))rioHAQGJqrDupkdw5RD!H{eU_d>rOI0oL4LWIyq(@J^gK|-u_PLoIfQ!6zYNTT zH9MQPw$twmRXqLD3#hd^^EFX!a9vt>9HYKd~?tw>ed!L3UWcbcOoHm`S zaNQPY2dFw)NNS_a9Uc3B|HGeu@X^zUw!;LNRhvtZOV@L7paFMU{TGMtS!^D!PCq;T z_4(z+cp{YB+E3#2D5o}$A_~ksVaK;?xJuT$Aog`~_-cZELRHc-l;F#}JU)kh?L?)n z>yn9(SjSW@=S0>da<x7Z@eLsQ&{e4;C9Ct4CBnZ)_pd~|uG z1LRq(KE9#(oKBG3SJ#e@%mFo$*JKBU?3rzy$)pj@dWy5@m@*lIe$luPJ34lvs$DE3 zAk{Bx6B!pvNYE8ZVIy!-#pQ=|LLWMX72sDcYUFAQD^O!C?Zzky%VUjeuEbgLwCHW{ zSYf+G`K=|d6Nfa*9*?L@Nqy_sthL!_YOTX;Ze%qPj$#4{Ew*(k9A`*zWydI|667>i*5Y}Qc|gOg1}I>=`9NPWqug?YAw#pi4X z05tprl7|`JZ*~Me(KN1cDBlB&&*r<>e40tEKEsE5p|Fl7V83+O!syNJvusrK7J>=V3Y*ub>d2U z;LG2+-rl|IJ$rV*G6$%rU{Ul~I7_onff zk;pAv+_D1`1>UMZEGd5U)aVCkMXAGl3xkXxoFCK;ME~IwK5SdFXq+s)uCp}~GYo5j zhfGAr5~zX{+upE23i5l`+6YpBRCr5#*5Lt#;3z1k4M<%bB|(cMxLLCZB(e-$GnVeI zBJpxRD>2X?0)%I-*(jV%9S9C@P0~3A9kfZk>9Rqg&BSS-o*+4lk1(iV88E7H>4A@n z$i6(%pPDw8#WR{0N_cu0T5>yU8&xTagmTEndqGUY%qJw|u6cD)GAR;XAqr)x)r9Vv z#AdJLW36oQgjVYa-T|P{I`pb=dglFTZ`iSE^4xIX0d+SWidB%##S!a%T8Kl|MZoG^ zL|PiZFer+h615bb;2#uhU!A!maMM~fWSNY@-`;WTg3YoarWgQ4MH!A2GqZGkOH<*B zptNNgas+9nsFdWWdV1@p4uFg$cT*nI60rfF$PdP`y;9|!Rhu2|Afp?&Es|!@`d_e} zM^RNu$u=N7AdrhbA$Ko+Xb)+JugU-m;0=pw!ZC#}iIFA2os!)aE&>|1A%dPdK^S>N zqX{m8F$*DPA-uxK+yqo$wfYbn^mdgL7iBhtYh;O>#v`6}Eq{=UyM;DT!2LkOI1@}M zspa%)lsw#g=NWAnX=?XI`U5Bc9+fzs$EmLCzy1Z^-ra&EkDq#{LDferc~{6VgZ}}T z1*o7NiqKOZvtWouZA6R^^QBX2qQP^7a=UxPui$>75IB3VP8wR`2UvjSH;XoSdXSC_ zA@)(NS=AH(Bcn9SO~Ir@2R%NGvKAwXzCvCwncc{-j(4|ahXNHE^pR$?raqV)XRtl= zIu*J9>-b^vGo0}nODEv6CqL(0gsoK6FQGP}!=0)tWUV>?1 z5V(W)kpwizJO1|~ODR<+($W7V^P}5Ysz&dyDAsOvfOr+_=Gs7k)sAH4e4q ztl3hwFdvJIP%@b&nzW@g1!TwV|b0kEWk;a>0S6n!a_r;ugziUJ|UaKef9G} zX3wK%M_dnJM-S;_hZzyL)$2Qt0y~gcWAEAFlYVD#e0=h6|LwnfZU^?>@akfOu}l{; zp6~HRRA6Tb&y&HF_e{O%p!q5=0(rWzbxToU^XesJM|%;O;1r_;Y;WSJVh@{DjK{Qr zHhrSS?Sd_}*H_$UGK1XQPtK+gTC z*B)-!96UarF2|&4a8I-hMF&O2-j<#4c)HcGQ=eu-ChDlnAjqBO7^%-M$YDup@NUxW z;Pz}Hd*g#`2BiwnMKy6cXwwnzq|Z; z{OaWLB<|GfTj@Z7f)W;20HxBbMSlXB?4gVd>~F7$Cmu~Pdus>=YEF|mK59s&8`8#w zx3NAR&!lD_b*8Ot`>ZgHb=#EnU!0gd%_bdo;kmjEEzLWi<2MG2tNAvl0vbpbHP;rJ zz(-4=pu~}Zjd={3Vc}6CfEZseL%5f_sIgiz-7S;h$(KjP&~-e($TVzB+kx zGMmpiz4!Nr;3GO_u-6-Lh%_;RqcsFYiflq$uR&7RuLhW9n zP>NqfNXY=h%$+0~X~z4GYr!j)C)^3YQ8l(=Fx~=Cm4H0rP>+FmWOU&Nk4uF?3{P1t z&X`luF-(LQC}15#bF6C7bbhk9%QefWj_rXGqW%fNNjM`O79eUrM52BtY4G-BJ$J7^ z7_`NTU;q+>Qc)fDqSDQq#Q#uWr;D4Z2p_zSsbEJhdev0K^2U}G52h&P)bbc9l`S&2 zB5bqqgKMAtH=U0iB@qdhOgAjtQg5>G1l0^QVhgl=Q$OYtdAICQCd1@eN%$@v2Uy{m zcKTB$GfH-5HY(d)LRRBp4A+~EN*_HP#hUl@qD!I#W~ zmlSazj{2cmZrC`3W$)bHX!m#IypD4fgBQU!x$W=uoeyAZfvh5(*pK00`ovnm137~X zHkn4@Oq(_%Cdp_v*~_fU{;q={lPHOwZhY=w@0_j6@t<=CS0a%T$sPPbeXY$Kj3Ow2 zIx}!kjOb$=7(as_j9Dr17O~A3gJ4S#}v_6SvtN=9Krv^oEp>Jb>kI#-L!S5=qpq z$H6}9tFk5;LQtBtk4~jF+7Igi0|_rE48VH~4G6?EluFdRkUF4-BGCoaP*sJdQaB8v z{!jIKs;hCOld_o<%VhQWrdYj|@{Atu1r?%YlBNhNnpTQ?TJG2e>=ao|M~y6XO-Zz$ zj_A3LHRUPOYLH$7vZ8tHAFoTta4rlaxz*K>t`;6QzzAj;M{IWtGuE2|^a%=m;%jT` zVVV%zM=aGSqc%iQh_>ia0{G~8ISnf7lDYtvWWH4neaPe?`lu0si2_Nuv!u_?cosz1#~2t|t7{yq61x(K4Ib zxZjv?r9oOol$0>*#C%}juNK?~&vKeN^N)#;u|)Zf5c1Q+;c?)ArP-O3cgwA%bvO=o1W*RNkAnV>xcYPQCvfr4J>IiL%$(Lm}| z^CR#cOFcp^H-Q(f2G?1h^+Mhb!^w02OCYR@03BdMEC?2YrH(}Gu^qFAv+9Wy@He#q z7A=uOi8nkS8Nsw4J7pW-yz?WdRAsfCy@~TIj(9Z&(*dAsFyz)2UKvvtV@KBQs7Exxi zX@ZaShybIFs7Dv# zR#-dT+oh!Kw>N}WP5=G>`G3vE(;t2KBOScBxa7h4@!0EsW-5tk_H75zE@rhBtUUwx#9y=|B7V`#<>pcrsQM z0|1gKt5`)CSClEgdC4&j+r?Wu?-mpqJWxDb_n=GrA3Swsdq8)v*SDGhKE}wS4`}>+ zP!ZchUy(+Ijas*i9%DBd4!1dU#~0)IWHCA&vzqWsdV{D7D>#b4qX1a;vqadyyJU6; z|D8cgOp8UHcB}idAOGb0Pd+^C91h#vFUMc~>hn+KNPYWyv>dG*K)e9mJoIW@VO(*tfCS1@P2wAV#8UEO^8 z|NQywd`XlTnvOx?Mz{bo!nZe?;|KaZGQVQB+6Q`sS^PXK2yhyTKn!jdIVM5_YN2lU z6#C>L_S-^JY1$?bRKse$??|;_e|K*fhBKQ>A7mYgc!fRGo7iGr-f$cWry5z*Y+s;N zCJ_0<>`JKCQ^sUs2e`MwcTzZ9(KCJWCuB`)aYI6$*iUFIxdC&k26XkZS5#G43e<`u{u4ZX!c`i6(lik#I+dnr z4Q&QohJeu37A$xE)K1H$ri1;1_l}%w^76&tg>CHOe=eo`znyak>5ODfqxt#O>~yp^ zmk7vMymYjCB&5JdFnm+S#^(|O(T)xKTiXlRAXq(6XV<7>*T_LVuwAGt26Wj ziz-ftBfeCzowK&%4hLMrKRX=(`C!i(8cy;HVd}8Fd5LehTc3{Y$xq6E!|xB0Y4`N_ zQuttJ&~?6sQ4yx0_e6ylLPkolN}2&os&q#41!Fvnur|rjpwoogAmRfN8u%EmngntU zkNTZmN`Sbkd*?SJ+3a3x$p(hv>?yKC&t5M9!wJS|#ESdjfo3NzW_t+;vN$;0!gfrC z@q!faVniG?1_F$aqJi$J2a1}=pk@A;*7PklU}nzWAbuOsBE&^H>5 zs>BnJOofUd2CmF1ucktX)Ro4HAcGxE+oi`x!j^kLA@?CqNXeJQxH_6%4d^FhPBp~8 z9-C1zqq&nNyaEq&S`%1JdO^1f{i4rWFMfA+H{wHESyp_Y@0tWkTU2vwMfIG8Mx@5f z4mymydFoF$h_y$E0 zqW_pw3OjiNK9pt@5V|D=?;qrY(1(RAfpK)wZzBE+Zy^J(d=6)+%@~47KqSeFc8C3) z+cq*r$I}^pL=MHYjv<~oF1^9DvLZ?)HC<-2!KI9sMz)pRv3lsf0cI|9KRnt8->Gg# zBMh4nt^xL~EhYy8z;7^&0>kFF4gz|jpsm-Ea!Jfm#|o&Za3YXzs4Y{MAEqXMnwuWy zX3C^^gVOa#H&V7f&3nyH*Xp)>3{k5Z<1}M1q}q!)7s97@(%PYi=xU(m7bz;Ee9$sC zxmy(v0_gB6366N~Bfm zkIEkLn!Iv`sS@CYgi(l5-1@`hastC?bv(-4`FEWNY^+3AL?>UKTwt?%2Ya9{E|itW zdn)i${uUMmOMoRZ91a~?dUEm>5QAg7Xnq@j#_R-{0&@Yd0dE82DptTRkZV`D$mW6| z+1$WcCspFUpDg`CiGpxyO^cwTQT>Iep&v||>6jU;0ysiQwZ>cMWIlWBYi>al#&$QX z60^#Iv&`wPB;ec-l|%^PL#M1GbAVa8XF4Wk)CCM2osZPcci@yy_>|xvi{&kG|9iuJ z4;R;>!`2}4%NOr2W;ShJWu5HC3Z58sQSKsAa_mti0k{bk{6~%cp%EaB!EaI_SOPqR z`WO2OyaH8ZE=nPauhQA9%8LaT4xa7p?CuPA_ul{LJ zBdcmsYsX47ga@k`7iVWIOzJ7nVFb=I00fZ+8{OV)yk>&h1F3a8ql;NwH9*P+Fi&5d z@s36b*c<-v!w+8^yf@hD!?MNQ?9Jt?i^-);0n_P%md7_6bqYeY;w6S!*g>#MIH;^% zIO29YrlQaU8(r)sqCv`BqJMf5-X3t*GK+}^3ir0xZ=L0^bNuR!%&>~b4U7njb;j0W zG*&bVFw44+C&x#i0Y%u@{;TzSO-A4G2a&qOZ?Huj6L-z}assi?qu_ob;*eY}3;G(0 z8#NIoQJvVOG#pr`! zh-0JkF2IpRMz=Q{=&kj=cqE!2;jP3(#22|H`hbj1EQ(=+0#!e;Rd?1^Zi)46nBtKg zK-V`rI~xpu(fQ>3%@m%)_UmaT!aAEh_rPhRaiV={`32?BZ8C{liR$S|=T+*FjO$`x z>?Xpgtm=3pdd{%Ta)^l*7Ge*Ker|pK>G5`Zy}y@3%Mmc9ip6DzbL&AyQPjSe+z6|~ z7|&kYn!BRo(W;009d;f0;hYkALdEL|tguJJ;<+$F%dLr24fo}r;1LMEX|&ObQ6EJ5 z<`d)#6=i3Fb44uiSr>{>P(tMJjbqIh`-5GFpmBz%NC&_U}*V_LYo|ls9}BUfEit6(7IVmkShDw4I-3q{4NKPeX}V%aBu}X6vgNX26~a61p9M zoprj1B>;<;y+T~Ty*B%5E_d{=GG1#=<*0_p)Gj&azDD%Tgvg3|nO+6~r30W97ioHY8L|o*d*WIjAzP*t@`5$6<@b1%Ge}hTEYh`?Vm8bxOx@>Ocaq6wQ zphrF_Sa+K?{ESEg0pQ1rS*M1NF5ESoZy;2G7b>Na#R55*ZETyI&1 z68fDzZJI6WNP)WW222QY>PJwEhf*;Z-li^g@FPN0PdE{P*Okt2s)-uly>QT}1xIl{ zxPS^+7Fd|0g1yOus{@oZHh{P6{I)khEB?^xnz=qZJM)tur^^9Drn_KXh!Z&LM!_my z!G;i8GXu5MR;2n^q+qPY2KLGq@H10T2za4!nyB@^C>WtEI&R#Q4Z?(l1`ix}+Y?3^6PgO;m2&3IGIl z&5XqNz_%Cti5ZVA7`BU`ovd4lmu1BhqRjj3=_j1z9XBcMjywu?T;q@q6dh|jvW1q}WNAh?q^I`tEN{d=z#mqCXjeBWX9C$d#Ty0=o{dge?!Zh9P#P~o z+G+#JHxy0=z5Q=w-3ha7*LB$UJ5PP*H(+=G2!bLdi>5rtmJ-{FV^!?fsif?rl5$ez zPmqu4a$=`SqAkV}O;LmZ0(f}Co#*-H_uu^>yDE)`zTKzK*~6OG+H0>3ZeR$>F*;;$ zd(>30E@4q?W$EC}!RJ5!m9GxE@}hffGZ5CLvypf_PNawPRGp|8K#|6iCr;m8^J6Ov zvo^gfC=djGEU zPRKOcAbD7-L|j0fZEkOgj2a|s2|$3|XYG6QZ*zOQ-Tx(98q^r#;99?L?5?eC!#Iu@ zdZCTxNUZc`2umN?vo|b8NY|J)hg=a{0GvSKVj>4mjk&oa^OyBB6+CQf7AX~JOs!_K zR|)V6U1%yTk+qZi4QgcaXs4K+fi9Bdi7sQAF2QlzT6{2vJl8&Yn__mxrKg{hX_Kd|?yJ$=TJhFpjVRetxp9+?7NxSuS?rD-D!vhmkQ~+k`8` z$@wx1b07Rw&JsL=MAqxv%<=jDulIg^a&|n3f?UgtA&w}HiIe1}3nMdg>znEkD2c16 zrB&9bA2mU?revZ6cu6i6AMpEF^k(%EsN!E%WS>3RzB#}7%Rl?(_|@s@+Y9an#h7Sf zYYk^5H8S_OwANuz{>6#2k84}2$^&pk*LT*P^=nrEi(IgyR4>Oh$$B5@Iv~u3Q65xf z)Zn_jNEy{L$X&t8Wfz6gV??F#_;{Pgpa6v_qbQ z>F~^houRd^Y@+FsK|Rpi%kYh2e27ZI@RYjnKR0~)slCrDYn!WnG6?Sd)V@dOE$CV* zv`@$}7w~3aWkRM8Wqx6?46w_}L6XllC!l#SZ+Hf(U!l5AUTOtNSc_w3%-XjdWl9E( zZP;?Y(liFpsbd0&STwXyajXwpnw#pWKd5)>&TdK z7b$5Z=@NegjkuaDf#gnO^=h(X8O!IeMul<`?1`?lsH`=DD<%w=<8h;B@|cDJ43i8f z+KFSx7rvv?p|_}5I%)ns^-21J8H2t!PXXYuhc6c^^0>JK8j#RFx@bQ~5MW@#M~04G zoZ}hE04CuAa0t;b^ZGO)fz8@TP@k2(gXQc5^sHP`^1|^z@S+j0#X~LXJkHu8#;^kp zw6e;v=FLAU@TYP`haA(9W~xD0wyg&NksZ016EouaQ(-h&$pac8>e?Lh(AF6dWgGR+ z&(Bb0*1)KD#&Y!NphA3_VrZZl{kaEfFNBq0Ej2yb*Feh!q6}x8tD_^t0x(tfuwH$B zmLeKzb;#oK1d?Fc%1I({3b`sW32gPONd!lYy9pHr(?0mW57F{?1M*m;L3~G|BM9A% z<&||;pBp0(hR|Atpj!1M@~N9KpXpOrSCSg@7ix#XpkWLcBsuCupJKO9l*?>dEkwdeY4%c_A8C+vlo|2pmn1n*MrdSKqFD`Cw zO!oE`>>Bji+ut*SU=lC}WXwN!3>Xfe4M6)eKp2D)d5t!ifaCIrf?wz{YCv>DhVjz0x#D$? zlbPE^XINIi!tzoh0o)bIzSs*2s&xW`~Za!#xR?5yJjBH~_uncXAkqk-BOv+XZD zktWGc_OK?hU(VuvMZN}2-r1Cyis0`X6 zsjUCNsHn8ldBoI`8qP@_5zU($n|+Voo{+mAEx%Y*IFA_FR)!_pPe@X!15F_|2}N&S z?p=$(aau2!A!jTNd1E%A61l~r*dOH|iFI*ogl)^`iRwpwzF(8smTgtru(a!FD`%cw zT`ioIFbQr$hUa><8v*!;6VR!^GO6R!?D^r@eW#b+zWn^<<|muvE$2sqjXZv20*8DF z@MGoEDuU%Eq6X;3`|ARAX9wpu7cIQcFUvwyV}ypSK_Rm#|80*3kU8g_$(zplck}^a0-VaZ0zR2xA>C?$oI(pho=PR%&fJ{c?>=9&T&C7weY`)s*?2{Y%i@AX$epLVi+jo|F`!cz*6+Uf)vq9NV`Jlk4?aK@PB|bb zP#W>dE6|d77FI(Sx?l_VBzXgko^%>?GK5=4WVA(F@JmhG(qTZkR4$P7fZLc3q{eVc z$4Y{+4w+?Mta%cASnb0da_30sB^<QeGv3KsaBgbt zy{$+F<^&Ny#nkLfOqg14%t<#8cZYsu3CQ0l3`~v`pS)$OP}!EjM2K+&mmHqd^}l_z z3RQU>NrmLb#>(c}>ITHv7bLCzrpy~RT?iK71N~6h_{&AW1X9h{t1`ADHH){P&9mzh zJ9Z14+&VsB0nH6B$Z7(BCFOL@;AtnqLZwutmeCnzbbU$Yus-5d?76nK&cqQtq)^!6 za3Al^%{cka*4uABe|7lHvD|%+Th|W`*5WjuQO9+FWsse*^BKgbo9QZz?Ej7D5|NhJ zhr-*dYukpoyjt$V>HhhX_jkd~W;)jM^+~on)7rw(dmkzeHo1wlSI9}kr(Q7B%ksxT zvvhve@v3-hyEwrT+s+C~j)1Vew=~G<YD&S`4c0 zJ1L(_z@nUEgwe9*3`qb+P;vH-y?dwr@nmVWD$OWI_{~L;&EXuyFcXuSwmBUE>L&@Ndxy9?*=r*udjXXCZ9mi zq=MTZfB+xY``cUOS+a-!y21b2{jQ;|P7Qtc>Z*8V&Kf-UC5Y=q)2s=AD`w-bTiwGX zmp*6h*FvxC?Ms_YXFvYvdl={VWM2V=yZM`reUa%DTRSTkvm^4Bq7WhFF{aW)8dS`m zp>M>97cF8bA|mvWo)LwsSqAaxmgTMI9d#Ba9E6ay8r6+(c5DoC4qPxeDvmMW^Rj! zKzoxlrDnOE0gOF{SfI}CZn zWXHl$9~wlpPTf*B^ZZIyB~GysP=>uB%xtbGy`RiQ+VgYFP<7Lvf4uwm|L))Z^_#E$ z@|&+arH=%kST`U&%8oEi_;Nd`frEbc?3 z3oV_4T-(?wey)){ey)>|>ZTiQ1CzMLV#9(yEAAw#m{XyNYj%MBNGN;Z+i!k-dT?xR zbO%v@JbdWcA-4^Z9Shw!Vwe-yD-!ZgGyag_J^-xGSqLN8=N=aaQ@gPp`GlpPj0Bb~ z?=Uw>6}UsFZp0vMb8^hv?Hw>#MM5xJn;XW5)}2L|0+h~5YULp5&JpHUF;?ljxPv8t zL0GY|A>6%r{W=??VY(+#pbv9fSg8a6LO{L0u&p+!+PQE)GWH!K3Ov?w^kk&D7mGAcOIwZT#!CspKeYg2KCaRXDQL_ewD zd`b2K^YQ!ytOr%R+a9*#AuGFh>eXT z7|!KGQJP!|iU<#a5H#e)Uyz|lukVo_)@>Frm8y)9YjT*_2q0CGknlo^Y5_UtK{U{j z?Jj39Hd4E>m$sHR3MQ7hDx)>?g7gD-M1_|xt{fBn$TTS2Felhov8jBahh;4Xe+-gr z)PP(uFFw#>bmsQK@^Qv^eB4HU5x&DT8(HZd zjk*zK@yPHxZEjp^qRiiz6LZ7|HROpz)Oh!GaDtywetCKM%?-#;ZW|X3k;5S!$PL*J zgF-XtGqv;^q&?#1*q=VGxoOBWP-Mr}PUhLP7*_k_+@>Ly!3$n=X9eD4q^j$FMZTtF zvU>2faW?E~bh=@%jGM|9@D!iIl_=f>3+Ax@aa|M7nvuFwK~Ixq1?F$$kT`3PwUv=U z!-%<7!_l3ja6V&W!v+oBT%c3!4r35w8_TCf0ZmpH4Q8zGxZhW%jN7JpcpeT$OwW4; zfqkMS@VOwmZy3hLj3r2={j`(}(+=!dU&GwQCHjkub!|*KAwgtDvE7@YiL`l_ZAi5l zfS(K#sBkw@r2iAy185|^=QS`8K~kGkZMfJZ8(~|E65~`*1+VYyIR;GkYe63^0l9NT zdO}pDOBB*NT<{6SeUE1RHIJ|#xebEz+w{|S*K}(@*=PP6Z_M_S1}{DZ>Jqnyhugig*}5SVG3y>MC$?!^HK~j5|3z_0z`o26#?$!}1(*RBIMw zX?pT2{Hg=8zUDTdW)nPn_7vSwAcmP!VN*fzjZ82pK!*n+6_;=K_9EAIU&Oo(e!Rx# z@x4o3?3V%l0k-ZOkBnaiU;6|CQv~@j>HvX&9R{Nn>SnZ}ndH#mqeyo+|GtJEeHOr1k~3(H7Yvv%yYiDSjV~^d4a~ zBp?3j-G^ADR}|cz?i?c@*9H;xhQ|!h2lCvcygbyy(r$Gn{u@yqk!fy`{b=QPztl@xDJ9Y>TV(m18+ zSG)&e02`86EAule8>`tilm+SM(#@Tiq6L}aGHc5(KK-D9-d)J;mu_QLAAb0eYN22L z#aE^S1#x$h3cug&Je%OQs)JY08v$nn7UY*hQ_p6&#TVh+_ag@bZ z6;ps&O@XNZ0m@|6k@>@V%Vg)5k>OiUHkmTKCgPYE!6}ljwW8d|!s?&=>pwbq^ER2) zNFsQ=gWJR#a29rOmD0g|K9751(WtKoNZYYeb|^@kE*`1glslj@#!gP=T@M94K$rN7 zmFjQ2$8Li>YL|Q9$Wmw3PL@w0=hd5-Mfj%_ptOmbwcLaByOq`$ya)h(aHmE~lppM1 zDuy>5682$FX#_FL_`(@D$*-bfLuv))&}v3`w$bXKIuh6c?}c@M*G2CD4FhH$-J10@ zO<`<4Y$sl=R3;=ouOvh2lW}H*pqI!mAFN~qef8|91(axuJLL{ZH1b?&Km0_u5g<{B zcFCs}?H}#veev|87ds!?wRM@7dbs9L>xJdZ+moZy*N0BExU(vM1{#y4jptj>)L0eV zzqocZm`LdbX|TSme!hHE0BA?wZx=4j7+O^&q+mplLu zm`#_!%YP3|b{bA_k++dkQRwg<^>&jxM_nCUDGe1gbaLS!>hn9%kG*dWua4;cIH+Ne zlh#x$_W}335}#IZ)mWTe-RwZY?dRKMBQoH|jMT(C`H*={MRm<;_H^G8X?u-Wi>h3+ zLjV^NSinO7m&Q!i5gX)rOg;zxie|1^>m#5`_i{u- z23%P%L~RKce79)+3P+~k2T`HSqV8=!dV!WJIF(Bc5zj`W|M@5B3vDO zLGFppU>(yhtA?=|ML(3~8Q0H;EY0R+i z8p{hAqts@Nn9G#@M(eJSIffi*QTbEznp7zq6{}2X0?onL7+O&nazSfa#z%&pIA~1$ z4mvmF1P29^HYNQ7#ej(4j2%%%y}`10 ztEV75QfaC+&{U_{jfP9FGgg9SJ&rJ0i=i4%aJz05mP~oPNk!URt4*0T67oSwm8o zO4yO@p<(hOdq}&4sp)WF%*N?}Q-7fIwasG$wy8bdy!H{bq@c~o+Uc3)0CZLIrQYFG z!Aa`yM7;^Ju&Au4OBNhFje+Z{6&sN7sY#>55s1LKWKa^OW8fTkltK#3V#XvdYVAFUM~CBcWavt2(rfxv(&9cFOYCf<~E@L8{3I@{{m{yDQ7dsf6a~iiNTGoN)!AF^q zS-7OOK3mSIM1Y0$icSz`_8{8+G{C#UZtF9LBWB9AOGg41dT{axyQn~{4k9IHmN+Gw zSE|+V$q8G|jxiplbX!Ib8*9~O&*h0>tWVZ91m)Hz`0YfYxdA@&YU<4(@D7L!Xv9|W zQNIj;_hb0(-f?q&*YwAxHgJb7x*M~N+wkdVdfM`MhoH!2v;oA!aBP}&cQ zy7iw$IOj0Edim=1$2Y(An?Ks!-v0T|{}ToIxO4aB)wlB1o8=X3Stw3wXj?r z{y+i7V zw8vqrY8DzOhqjf1@^1viwT{)nrx?KykF8v_o}SQ}n?F6ic=gq*lcO^kWh|F?4KTMem1PZxmnUz zf(Sd9y8$)$lwb2~X_cd*p7+tEBMxMnaFA?IT;H}OdInNnzdrccpZ?iTe)3y?;|D)} zzV-g+n}7L7|K^V`4lXR|XD$R{t5^>w7ss>556bum)-r_T>A^^%n>O`*94Uc*_oU1$WK837FV3G#t%dZ7Q!M*qi(yxum%vL{LiJe%j46-SFeSB z@DC&=ZibqUV9|NbSk|_S01mvMQs6xPDgy~}%1$&1WIL5~f{l6_JNu)R*q#$IFflB3 ztq^^KAt0`slL=^xIy2^*+pX;_kDs5|%}@rEj^u3Ux5X&iY8U2@oGy2IZlJ^lb4JHz z<=MsCBa!X2uvNwCCy^5Rs-0*cryCmi0Am)W>! zjfyqRDVL9+I_*Tv{%*l83Eu!Km=;J}RR?I5_qR1^m5Q$-#dmpob&K8+PQR)26?H5v zstxoK^g#rk9LsgigS@{)`5IhXk`!v`sTiDj!&^!V`nv*?`FIEdHX)8Q(o-E*GiXNhZkkW!bL%rPa%HIyrnKm-yF;F9qMG<#4_t@s> zlD2efh$sir&9?61s(K=THDNvoE2TaCIhe2xAYYR)p6}>OJ1%KFu|c@B+Ka=@@SQ6I zF{VLMV;Ub22XF&bYDPQY9mVx#0EVqs1J;|HqsCy5xbQ0eFNy{RLyQzZle=y~oMb0+ z#k{c_IG6(9YB8vdXp`r~yG(=#Fj}n=XHaYw#soYDpcf;jM*Q6DOHWr=Lj{~7PpyX< z3$Ba!yT1j$k=?>jZkQQQ5eY1kXeL8sx@MUPc07aV#oNcEqA)#cw*8Hrh?xc8-1{Vb z;KA3NDDGp4=ESSA?z-@sO4i^ZLP3kzG7l!2VGKtAtwLDQyW4oWZexx0{hcRU(4jvvF)iT>5c{lT@B|^+LU8Z7;0s{Qpu>x9#c~r zbPS1d_uFV_y^r8(Qj)VOO*pcX^NHG%3LL7pJA(v9W1XU;HtV(jOf-W@2XY8rsH`Bp zgbmkku1BQHi3W-t=D*#&`SyU-rI(xg z>%;xS)fZM8^PB><)KftZH{KZfIc=yEz@BP+q|8RSI`|aEPi_7!Lva)dtk6+E647Ck$gb!R%y&}~H z+ISGfSbH6Cs3Y3n+qhWlATPnlN4QYS_D)|Xod=#H81CqlS*(R1GVQPYVrQ=~p z1vfi!>Gh-6$7BCe;Um#3A`=aPm)o4xQ>ws1=_O=%YaEh#l{Qo^^XgWL^2*jKi-$(E z5`Z_yO5@^H`>h0?X`fj~GOOw0erVMQ1Fi&4Fj25!teFsjHsZmED<%YC7N6|3I6Sgu zcAU$wIJ3L;bYu3}#jOMccCD9#9ZD8>oF{Wu=7z@|jf`f*HSw~JP}~c@2~u2P{v0%RQ`&sqGqXUF%C~f zOpPvC?UgznMu{sXi*4O71W^f6=1}FS zd6uNIiywdTltJ?C*Kc`-a@=mz5`)>uY;JKa{os>Jhg=_@ zAqp0x2N?=taI7rSv6V{&8*c7T;DEvyjAl84Z9q0QlL(lp&@mT{Fe8DvUW7x;kD~Ex z{98^vNyu5K(wBTm3}`44W@$8LYvEN_;zE{LYL~+*%I`{i8*t~dT+@SH%SP96<^^g> zH*>96pMKOwJlK6r82tc)R>R!*Jk!Gpf6tSi;s%)ygsFta279l{(SZi3uM%6{b%3BdONPbNR=?|f%J@VAeUL;_D z0!ptjg*G{9oru7P25zDT5HpMlSrRz`PM08HRATN9Ypj4yFFRbisGW#ph}yB>(6K%s z69BDTmn~p5id!u!S76LgQMA6A72C72EFx#axk|I^M_HzHIKiFvAi6C?HybbJp z@w^%!GafDS_`v}Qh%@Q#N)BtqZkdu16FqH6f-##L8`z=f{)K&HS%g%w31ep0Go0A) z%L}T~O1I=eDHATM@5XBq|vkm-gV%j0)6X%-BfIK4m9D+73a?b`I>fH4RLTVg6{V%FVZ z4%7Ct@X;0mi@`!`AM{5w0lB(nMvxet5{MSuW!7v{d?cLe`rN|a&wln(74-hu|L{*= zeDdDr_WJRWnC;E0H*dE#w(*%f6)od6AunTtM1a$sfkY?RTr3$sLwz}WO}&14P372> zE~ZbAU35>6HqK^-l$mW;pZxX*|J}d(!|(t2dy>zctQUZbzPQ6*l~0H`X~}V@*9C{rxr{EG?=6F`Ico5h%ArS1Ub}jMalK&*!{is(qQm%0LMHSx+JMy+kDFua58y_U zcjQVLA_dCk;qljBetURu>}SMash#OTVaI9nwByG6@4vsrxtwgcTjR1|J03y;(8#X2 zI92DTrSml#Yeh&MN-%_*2-Y+T!x*S1!kZ zY%#A`D`=X8Nfr$CnZz}CxeSxdiGvO-)HBXVhVVgaDGpO*J)N)ugiexa?uQRuxFM*< zPOU%OsgEW5JaO}|y0J1@UzNvy^lib~X{W;oRz7mU&Oe<;owKu*QAVUKN#33vx1efi zHC)edn{70#LdzBKT-?gx1$^aD7dKbFI)3}7zxbt4?bu-74iaGBc(%5)yG4-`vv1#? z9K1a(b!#H&zj_~NQq9PwmbjZ2AOL(}PAd#_LCSV^_Ug3NA==$J-*O&0ICguLvKS*x zM6Yi-5_L{F-#adW`>$`dRyPgw)fZnS*R0>JskBq>2xPVYlEwxlnpD5V_1eh%@pDhOjKGc#tWIf40LcunQ{j1a2nG@Jb-~E&@Ea;PJ*vE9Az3< za&EW>X77gD>Gt7Bj6!fN7Fpm)^U(TXU#JoQ+-U%s04DGmIr-)5Vx`v1mz3PN>l6<8 z>TBy8%bVO<51Y(n)%xw-848elhqWyF$sL_pSe>uj>C7EVEVGbV&v{&DQ0$mHZq6q%NqU3w@|?KCqm2QC&rJ-wwZ7>z z*=k~%P5jsa8fPb$=v2*6#%3zX$`v;9`R4IbaeZaaB^0!p*Zu5NcJ}hb7U$saDsHN%;bziUm??~R zgfU1AW3wc{bp;zZv}u@U&vu9Ll{FK&J3h3NfDToGC~L#0uwqCsHL!@leAxpIVKg2NA%+x@{cn7Kh+|$T=Jv+6OPDdpM3QC z;MK|5i3BKKI=U2tlNG{)<@yNj6O6a3V^OZ4t_)#{4#!unLyrUCsZM65)6?Px;@y#2JEMM-6=GTmdg1p5X8asS@<>O84h$k` zL{hibA9LdIjP(#{$OAm?$+j~pH;+q14h~EYC8!!LLk?#Jp!@raP5~Gbbcdi}aco}i>sx_9IGdXIVcX19f{W4_~z%)c-OK&+#4Z|Ymh$3IbD_$0K`#3vQqP;3ECu);SrFvu7ZJ9 zFr*uZQpGoScDYp@{0y;h3}y^>;dr^;oCTJdMI&9|NTd(!2-p%Zg1nNlKffU0!3P+p zF%%EfHG}5*+9jK(2xaL;?U}KZYo(9*S44Bc>4Pk-Diir&|IlQMFbD{hl(4J({6c7O zb8DjUc%l3&Vr`j&YRN_-5T(1d^=k(LuvP;^0Gh&MeCZ98-hsL=UK$@DokDRs)F2Gz zz`}LK6vJ7c%7~!cD=7QX-`cQT;x<6`G0hN>xxp{fb_RK1IEbhxMu;*s0~ONOsG z%+APuCW6|K!-SO{hD$2zZstNbBldrN+j2Q!hut)xc)fC73=38Wkm!|toby>OHQ|#* zAssT8z^K+k|t?;PKoIy`uFcy@aF^6OV_-PoD%$k#c08+J-?NEUXV?0oS2{jJSy z(Qut9Wy4UozP&!L^o=9Etl*ztNHMU=Z@l3&Z3IF{z2&?np$1{uhEKW8H0ZCs45BYfw8T36$?V z+u$P-6k1b5$RRC&fXbFsIo(mBKoI}{KmbWZK~&ni>VX$_0G&+g+8WTnYg*YF-GRoxgni_Si&GlaQexhZ-F?S9O$c zzIdz5`8NmOe)HSY_Ax@wH05C#ah~~Zf9)B19z{tX1fE7KXxoQz+ z@3S1*e7n5Vre%x#8VMV2De&v*QVPbxxQOy6pMI=eFuGz_;mRWNC_? z#jA&Vdq1}k+v!MwfuSrH2v9VYmmAa|84nv0&{%n~Vq?8j1ddl*WNo;W39#5_h!8_c zoTN{E&+Umps8AHDS&E#$s!d=C{0*FvZVM?_)3b~X0ygj34!!a-le*Z=t%g!!FYAgd zU3F{|IeY7V%{LO(V>n5>WSj+*{uvzDaj;jE?Hh|zqk_)b@;t+I#AHj^Si%ebk^JNm z*5DnLL9@ImcZN;T=1-{v4t89g4BN-x1I%;^#*L9je`HR8)n@;lb)k+ml8%tF1-T$!9wgm%)$95;%lDs)J$^6kai3!h!1PeBlRs zcBOl%cFRDE&4^En0C2=lBR*Kw{2%EzYSRF?yTWoCYzND z2iB}^Oe~k-%iO!jux3qA=E&0A(#H0t+yjy-jLt7!@GOsPKDb|AYRf*hg6>4J8l&qg zTiX*mn3m@3qOk>eY3+K#G66iASA&K8XBQM+Wf9p`oDO9@;gx~BC~63ucV7+S-3!=s z5cr4Ea1(!N=A!jphmLbP)({B?$>wdg9!bW$ax+hcqk`5skO)cWvq>QsNE+FX$R6Re zB{|AuV{p&ztego;N4 z_=GN)ts3!lsNp7^o)}%Y&CMP_BF4f>h_JFVfIEZ$HmU$M|I-{M+W@BS$1vScXC00f z*sLO1=*??t*bR&|7%l07i_yqO5|o&}4^+$0tb}{Micz6KQ$vNG%BPy2D+$|9#Dcu{ z*?A;n02}+6dWvR7`A`zF6SxmESkN3@&j2c_p~)JBHS=i-Cik5!g|In=gG|fg^OYsx z5f{l2+L1+$sldTArluYCBD<4-lPECMG16#9d6-ox9CPS9G*GUN=VZ%PK5PWW5Te|Z zGI@eWX9vP}(Ygot(uf(U_F!KY_e12vD9yz{vVq3h zqOcr6;~OJ{69U(k+JQ*%gv}kf&ooD?#s(@bG@TLKe&%wt$ zJmTfz^zZo6@CF8vQZpUDd3ek`MA1Q z{kqLJ%+e`c!%r^Zv8m&%N`~+69c*uIfB3-%Hl!Gk!yv!@>g&@JN81uD^s=bSI}5U= zM(RR=k4y@!45>Fh>&w?^uXSYT;FZzfV;t&xa)(N`{*@l_B^VfuNWc zjafwqyz&DP05@PP(fBZ=W6+)|YZO~-JNBx0A<<#s7ug_VpH0)$TI?E!?kPQn9TG5HYxuw-Tq$MAfoB|FcMcIqF#B@VEBpjNK!DZzd_jsS3QT~6j!@83HM!X~?rgs|c zNCAp<{qG4AACpRqPyHM6wtN2ADvGBs49bc(XxpEh;i#S^@oE6e-{=k!F~4rXD>Ei6!;@6NNa4N{_d?T z^7D(UvplZbhxO&noypU=JJGoXwYa2=F~kusO=O%ko?`Q|Mr|RN5^p<%wI#!c69m%= z>cgF*r4LT`kEFv3O0xXMt^*W;(yVtO<0)+r$zhyyoP8jv=g-Z75f@%J|}L zz-@_4{*h519iIXSSgQ<{8{f|I8S;=3O!5$JgCOTFPp`$!q}jZExsS^5I}$>Se4)T9 zJ<@`}(CS=}Y>6?y@h6^wJMaFR>Im{@elqvN-}&&b|M)kZ4Cd(crc;3Johng%8wDaf zDvSoP3B|8uK{$zEhZ~7o#Zyph_F%gb+(h{Bq@Eqaqt_6y5$Mm)sQq$cwHNjg6 z@lU)$%BBXUow;R%+{VhF+kMUAF&xk|F70PH(lb0$4B42IKwiOsKh_cwsvQ!|+;2_Z zSx6#!o`ND;gmP8*(8H8}SwLo;mJh6+^2Wdq3b|taF>ZrS76k1uY5ImUo_aT3{NQ?{ z0IFdV41x2Xt6tVPRvbh?W0sv5(V0-ucf=BPqY zjO?8V$Di@@_}gdSrtS2J@as=^O>YIs>F2?G93& z^VP+*sr*JcJdlk^DFo&s9m|=o-~0G`fAOo&j}8ybuc`ajNdbfic=g+9jYda{wTB2w87bA zjtl(X7W~`$fA|0V+mBv+{9Awhx3_mTKKbOux3538LU3_)7`KnICq@hYBmpUb+I88? zy2wOLOaYz0gT|(lj{m1BTpIzSw{fwU#ntZjw*SFD|9k6C)@>3MJlAG6T+*u^!A7_Y z^U~dV7*R%Nxwr91n{X`+!r)Jj#kuhTvha zqq47_nd_A8SvmbUPuIvwn!oaMpa1fU{Z~hL+_UZ^9yfQ_K}I(3_Qvju7a#6y@3`4n zd{&}y?&;~JtZSJ9Fc?H1a zCC1?a@CJyMH69+hVf49re^YkkMW7rnAVavZ%tJP=%s)aKR!Z0GWgRoKDPM?)+nk7o zl?aqjuW@rsrM1YAsI=%gk(O^$qtm-6%cZikXP4&edDM`7@AL^>WTg~^0$ORC3A)+I z`U+`gj65G~wEh0}ix(g8l#UKw>%#GQxD%yY-;YJC}yxD(!Y+nS5fLWDN);0=-ayf7g9!x-wP!x!v0^$a@ zQa%>0c~+tW>AgLX-bK4P##0a64Uj&_@lbx)c zmQ{@_rtLmN9uwl$rX6(HYOm}b-8qtoAvHD=`!SWtX?8Ke`z+J~(_M=X zd27ZHV~@-q*X;(Lk}h7yVhKdacw9q97zc)&Yg^x?z*j8R>j~;IAK`w?kbZm}n z&aQ|>Y;ESoOf^8ithpBRm#3vcVr#fYKga;3I;&)g6v;M1`%Ee;Gj|g4g)9{UX3p{_ zS6VPZ#%tRS33)2Dne3Z+!F-(WK~UVJh31s9EbLQ3b`vPFS9o zD9?^r-H5i~)e5#S9P(v#!h@)Z%?^xvNP$GgQVX+?So#xl-?)lZv}$BosVUeX(eUs- zGBAsyy(3=GnqvsKC<5!*NPL&={jIA|9Fr-?1wS$`rNBy(b-+6jI9A z05qbOO&p4K2T*7guNEX6NNr@O!B@XyE5jy4Q;cS1V-Si2MV**PSoXok>;TI%CPS3F zJus;0WGE>wH)%9$ASxu08Am=g0sUlbQRh81-h*;GW|AN%UHgU21~+=#XWhXIsOf7; zXP{;pNP&G$60m18ta&5JGMT>0Cicw$m}XqfNMEFl{wi3~v*_E!Bv+|aIsS&^MW<38 zCZKEMbR}A;wc&US3)_eaE6~adJnxcUF$Us-wH&Xpu_jpexV{1y)<%?>$~KPJaej5F zO&D31L_g{?Vxl4WdaDplu7_k$@o_7X?Rw|hf6-iSPhY}QeJV6cqMEoF8K{CW;S*XM=*g0W91*j8fbpu$f_rgYq*a51SiQw0QSS8NcWXf& zC$6WY)Nkpno`LeT1ZWN_?@2@RXHfh2GW{h$Je8g`=9;C|L}v~_|f-%@EJ$@=~L+~yT7tIvQx2Rj@tJIK17p&_Tqb&1(eLj zvkiHQ`Z|mT#;kj;$NS=$hE#EOi`9J~Ckj6gD2->u=QRRbF;Bee|K=C3j<$|rma(w$WNYqj&Q_j9!^5&(A(q#vi zExmYq^yX}F^=N&v!fyHTKl+Wo`8R*GIX_w5nz8%$%})>ZULD(hvp|ZT-?4fhXSNuc ztQ!PgUgX7}04I@Sx17}uV*N5+~ z-5kyR(I5Zp`0Zi3hJ#UfAx|J(R>&#SJW?c%*g^+gFF(S00FO;8CMvhI^KK5A~BkX?gljKDeL&wGLdl1q-dN~ zD0kf7ErCvOO{Osbm-Ota71nXBIvNn0JD4hhjRMpUl84pVE zC`h8n1w3o%}l$LaRgGMq%3n3^nQ{cP*CC_KVA+h44Gs zXYXk)5ueRtC1+X^L!m(PhK8Mn}^i0|(u9Y`|3Sxajyj+So3M2H+wQgSs(*12FaYs+(o zCxRe1a*AkMi$)9UStyWYM<$xbk{|%B0G$N$0c)l4yr3lI2+zJmX7i8B>*Mf;#f96G z(w7Q_5NUEQ9nE=eOT+Q-9^>UwAe15qmo<_5n2H4VVT*Mn|h%QoxWDjq8q zqD6Rvjx+``d^3a`1;ITgADNBV#8HcA6whZ^q;Xua{?3}r>z+C^?FTTo7|UzKMVggw zB<7H{F%^t}Kr^pszdKWtnKP#|Q$P?J#z z-Pss`lHSO2;RI#RSt1CwZbi6E9Fu{0AK1=(+=?s06frk)P5{NIvxml7o2ZhZkg($g zUz!hVSp!2MBydNh1n3RWZDZ0cNEuzTCZfO!1WCprPc>jE&U*vS#C2!x5Djb=nkES4wURxkK%TuvjFYs&X;t{27sXLnKqlNGEqKl|zq)3x6F4erFR$3|@7L1q^`cUr zI`m~2&djJ|(g{(NTQac9p=?u77X31Eh$C*mM9ZXf6Pb6oFe;m~PL4&TLvRCtF#|7V zQIxkmPcRq?$IDQ`)~ld!MmclEq8IZlpoQRJ$4_w)!HoxtwHT1Ak>(&oKN!fAX!=sT=U2j0!T8BDh9SeSwg{THr#sBj!s^iT)J zA*R$PKC8|nR_rNT{rI7ROd@2R)nKa@S}F(3-O2!%Wtl%EM-b9vtMtY;^()Q7I)`WJ z8Im@ZHtq4`Hn)uuP7M#!3u>Z@s#G(jR+pV1VR4h3l8fvT5s!<^N<5f@;&D0X&!0bw zkOZ+VZxk6|Jmzd1+h)#&Sd|L-;)54oe);9W!M@oJ;W_I{3K zki@vrPo`!omF@_Hz6M+R48P3^UieCw`PGx|%)`@?fLtddY6FT%{(tE}Q#G^x zXEh}AScJa&d9?8#{=-jy@{_;$8$bL_eD?a){?UQNV#LxCLZ}&u3T`%9OhTlP37%^f zWr&$cWBIEIHK!;cQf&T_j92U63!96-|1W<3M}O-_iv4FfalAzzNMR$F({fcIJeJmg zU^cE!^NK5;=9oWQYi^DXj?sUaDxe3qCW2&CL=ZZc$d}EbEEp@(w$wG9!h1oUyW6!b zLG0}Q^bExm?-gwoAfTt@Cck-kXosH)@tDyI3p*svkr9Q+&50o5!`;EbvBYa9 zRUWJGxqotXc5$+Q+{i*;$^_#jW@^Y){?Hi5+BCF~CLjq9flq6=E#`yMQm!$@qY$5-AyQ z%-?n~S@3D~V1&lo5iua)IMmjX)z_gOMQY>?J8T<#WbsPy5QU|3Kwr2s`av{GCzV@u z<)ogotD6owxO?;EzIgg%XEL`tcXn|0i$D2=9A(r3a_nh^z-0f6Eh%-jv9;z<4p}oz=|LkF~ODn zZG>p)foDRMi2OBjB|%xSD9FA{_WqJGKj3BoYJF(}0f>fjv032t%eSw7{^pxs{UtCO z0I(w-1c3O{P>~CIOb@~^5JO+YU%Uvs6T(qaZ0q(y{xoTONMX+ahE^xdaW0H&i@C-m zu=3NGdqy+|!$9O%x=CQp%X$0dFMoxD=r7|zik*4~(8tAd2J0S!g*QW_F5qu$1}`&y+0Kp4H57ZArzvm2gqj0d&GBroNeVLx@tPi_ z+h{dg;9QHK;U|^pS5&1>Vmkop>>QBbW;7Vmb32=FJGlZg9XK$WxM7QtGeSDjdQdunGt87=~R!jdy@wP+~(~ zm(d442$Iqfjj{`4eY=wR1E19j!>s4_nIINJWO|{n>Q*mY+S#IfqU>_F-aTGP{yA2P zH$iQ0Jrw(3w4UN*BE^%V^Tkywaf_23UXPOpA5ZK_BN!JJUwriJH@>IP9SsIa=++W? z`R+E`BMBs=N6fLaxqf+mm*Bm;-cYNwO>_bY9bf41z|-Rcr|dXs14euMRRk9^gZFwNTf*~VrE`w(}g z46rbRo6r){#ewGKBAP!rNnloKMgVji%I2Oj1qj1gsR7lBzFWOJIlCC?Jkw!-J1>IY z)jrOw2Tc*DNz*KKLrwP(3u9EtQhYIF$Iynjd`uX{M@VR#s!r*+-Ph!lPXLs>NZpOh zBu#2Fo3MC+zX41Lo7!4gBG>SP-jN0%vZ37&s%kyB)n|ikQ)q1X2fD8#oyzD%=rXwCIR( z5CWr})IUz6nTQ~>00?cy0Fg!O5n3JqAYZ1^Do;bhfHSBgNhwa_3zx9p`s;SjJaIk`k~veLjPU z5e!+$W69lek8lN{2CkOp-PxMgb#j>!7M$PS-eMrMax!=Kl<7W1HET@zLa!!>$p z&}0+wdqfZj1`@hIl@J1ZSRlfYst( zbvkXX4t0-=E58H$tqDf!o~!T#YL81jC^G@j3@XVh?r+IcU`7Qg`sCh@qIDBIFIQr2 zUK}Fnk;sM-hI{rFy%?{cmqo@On&6C*s^@cJe##+>(uo^Yw+?IpmUoIGxLV1|)n$@S zFK1^CY!(VqBe_ttbyb5Q?{>DgY!g2{J=@*hvUdzT^r$?@uo5fNws0dmW98Y?-H%^< ztR^>BoB}i1H{eMZ!dx%|{|GENP2b;raBHvN6^Ww2cj!)B`sabTcf<(YfH2Ufn-OP? z`3{&^I9WQ{7$L?Wj=IE80@!zNsq)dfY}6_Ob^6Dj{pp|l+kf+az5m|(g2!aK@|N@G zgGoU$#En0|-8hG_)gWu8-a@f^^ijAclVM1|^xd#O28r^zua|dM{=xtL2fzE@{ti`o zDH%P4bUK&UuLu4&_;2^LqYh0j39?9S@QUFI>9Cx+AYt=eoMOk>Vk{w`c z?FDckQrzzP{84%WtEjyHqAla3dECGkeo*h90j^&DoJ~Q<;Oxk#%S3MvB_2*+%pM#Z zeD(PkuYdXa{NTuf$WUTX}#Y{~?wb zVHX4T6r!a|(x)kTjnO#CMNneAdsbjBmMWR6WAf+%CNj1rg(l+M^RpJUB-0NdEB)wr z;0fW!T(%NLAq33E98ZohXY>yhQ>WlOcnf8B?wPWZ7=cGh_R>c@YEv*`&zg^s8z7W= zkaT6Hr}2~7L%o>DkYjE!JS#td(F%|9*-SJc9E(@%gyMaKK#U+~eQ6>pJ-52GEHs8z z-`VM?5$Dh2g@}-zots^^WQ0~Tz8JEWL&fBkyd1KSpvImkoSG**qf^cq9xU zsR6V?C(lC2D-`O}#nvYz?VI|%eUF#?9K~?gcPCB+6O^R3IBicq-1+PW zA57L4)g3SkeG*;<45wZ;J;_rjynX)g^y$X4XS-j0wRe1aWINE3`~~Y>)=KB*Pk09R z*K0OrI3{AY>IK9C%6IDeH6C{Y()|2oIhYo}g>IeZVPQknH9HaklgxSOBntIWcGjpQ z*``ReJYCtgOx_|3ol*?@X3eMof~W!%NqBQ_wkR$u1&9DZ_2iXNO=t9tVVR?wy(FW~@C z4GzSIFlk$iPeI+|MCVX@%76E|O$Q%vdP!FMy%AG)I!iUJT8wifl zLNdBMl6cP+gaad&DpRHsnf5$bX&@qsoQ=tnfXW0{k%Hi7o(gp9@Bk z(cq~a4UK=ORTJHiZ87a-v{7e~Yqx&)*)tJddakZqX0VxpPYiHBF%B5%sE^P$JJ=_G zJIqueogXX;!UF`%;NJS%Nf6yc*!UVQ!P<=fX%pBu!O_5g684J5(q9n88E+`I>%J_jd% zr}s{+`Y!cy6(qe+b?WqrVSsL#GlRR>n6B3~!HEtitd{i{Mp^$2x|a@y{E7kVROtF_ z=6rGP?N?uY;dClz+6oI1T%~-}$}kW`qgmVe&m^v)wD~@sY>vs3(b$y0!u#kW0;IP* zKoL+@Prm=;_y5K3{m$S29WF^CUc8U8W0vCX76FLQ22EavaSUq{-c?D!2$BSVf-chZ zH2f_SuwxFuij_bJh>uujV-V0_7&hgc@qyko`M9>}OxaRpqVjw~=HT4=np?o2Vi)Tx zlb0{wpa-X-I^$A_&&5&OO(ys5&hEOCJ{APY?hlR*g`ZW}I64$Bv(wihvL~HgK!{St z7TC;;Z9x}#u`eC9l)%aID^k-ka=|JCHdV3b7Nus$D0I*x3FXx?6EGeTO_`H*^VheE z)tDGt!fYUvxx;oJUD)d7g@AJMgA{ZCYU!<($Q;lkf1n*lE;9-k@o)z%3<$tP4SJas z@D+^^u@fFTKer9h{Z2F%Lc{*xFK>ri66q!5GxyI9PlfqeO`xs&k)siPg8J3jojU9| z>Eg(C#fSBcG8u|nOB8l?@73M*les5PchK_Do8w62ZfBSG9ef*>6leOj3%abqu z^4mZC*%!b5^EY!$H~}3|OdHbq{=~(_jbuMs15rsW}LUokPG;rjCONW9nq$%8$Sm|+ZE z7jqk92?#?LxlABjSJp41+-;J7kPw&8b^=k7=!c>aj)Y{U3sD~!ng>FOPRe)4Jk`Fh z`WjQfzfravb~8olY!7ObAVqONF=}QG#w>F0%&FXbR1f$in0H9C?OxyqaSQlpcDeN> zPVenn$MWD->k@&EHm5EDb7hhI=WGz#`dVLE7tC=ZhoFrA3-m1s#LsTb%-iiO53#c z1PJub{w!$4+Zd+;&=(Fkv(%(21Yvb{nzh45pD75d`W(ZC;-p;TS7gaEzdg02Y3Bl_ zR4bF^2ttLDC5S5<3P<1!R2aF!gLE$m6P6I&{aJ?xbG96dP$m^2dL&!y;Ful)3oCw3 zKq69wEv(`QmW34c0v0E`8#{me(?7X7y;$4ac(A;;Mv`2fotz|dX66($^LJ<#W}d#1 z>H-|s7m#j1sGOPxF|iU+7)f`xo107O^oxi|7J@R$$Bu$ai}RzNnbD%9APFVJ&(g?c zO~e(9MqC=jLp~7^-pN4Zx42>jK$Rjk5*$@;z@#FBmPPSlCay%FHJJc*Fta2V>{+#M z$5G@`7C1h9&*P(Aq_1;vtNR-uOJ+*Xh#9?z&uh;FMJfo-8mIulu$ zs-wg}-zW?=et?OjL2@zX$zw=BPF1!Gfs6N#O_QQ|7sIy4Egte{V%u#o&+xW~1aoJ$ z6v?H*{A$pQU|QxD`EdULW`u!fWEn2kb!`zwArP=UW`s-|{R|5LXJUIp7S>JHj7WpW zZDI2@R(HvSnx6hSx;%v9i@r?fgE@_pG_V81@G?k}5}7Xzj!9rOUMXUul=}+sCYcIr z`47v-;RSECnb1I9Ac{r{j@%nCoU-Q-e)g0;NoNekmO;3UL5D%QPl@9?WgLt%!cGPM z90piTIG5d4)?gdD6T8tY8?o9NJ;R9fpePZL=P7qqKv6WE4=41IPX$b*3s$r_9=9DI zAM>6|DY3=?nZ(xR4Fh6nW!buU+ow^`Ab^Bn4WNE7uK>+; zLB51U@uz%07=$So&Cz5LKw$MLv0cGi^aS624Wa{*X?gv1_ZUgk9x)*K0eF;{Y2g9} z4fhdSUk%h_J<~;>>t9QC8j0jEOg-zSRPs+#9fTuYXRK~NJc^f4f@tOPROCJ;5-Bmz z1Rw4!6-}l-%6||l)yWbs$ ztwKm{a2Ctf>FKAReDCDwIK%|}C^yJNm;=Ur9bcv(a>oEXP`cA=T<98z^!t!#38%85USARW;*$3Lglxra>csTFIHWk5Pl%}ZP z?aARq#%LCU&~Q092AkL&jTlC}uO;iDO>6oxKpJF>e^^Dx!(5cYp7{ z|J%Fo?`W_p%mqOcN_Za?YZ&&jcRK=t6kx=lv`CEH_bY{J6hUD6j)O!r1s&z5RvR=C z(%Dt4G9|ohmUW{~BRU6EV7U2Yea6y`l-9MCjmz5H@knKNVE0x@26Y#+GfN z_SyFY8mo?lYCOYw3_ditlzIs&wi5uaAP+KyX%G@%L&^A^&a)AAL6(b@Q7ez560w^j zXz{yI!xS#LHwXYSz(Qn^l+j~R^UNS2Ynesult>ZTmqm&e&B>jBTvD2x%={?)KP!=j znN#r9U=&Vhh0AgTbcDFGz4ObXjyNz`uAFwTDv>XpSdHT7TP7at45R0G@0gsAR9ebd zzBsu!xIKLK{?5+!wt$r*H4H@za`)Nx`yV_zI=K8#|NhJW^wTf)zd0dkBqu*~O4~GC zHEgNJQueL57W})n;b%hYOPjtt>EzjTi+Jkgt<1oc4KW-RCo^vT_To|1AcbdbT_F05 za2Ubm2p#Mlp1e7}JG_?t4@stig%Ak@VUE^;z_5sB@pFg+4Y-EQx{CVY8!BRfp-FQn zIYs76;NXbv1f4`h%!7boCtY0DV&(+hBt*#3>4Q5lU96Wec6jUzlC!kn>WVF5G*P~B zh#HH8NAi1zbZL-;n*fu|6UfHOry9rBHnTW~cn9hPNUly# z4}`adkP$Y-4-Oo}?9ce_sqRBlZV{|OBWn>EtG`EG-wiWSjsrH`rM7 zb_R&p#Gvhd;)rpqge5}egGprpNpmqEa^6!EyWBk0xi;6gcQ<$K9D`FrPk{gO_6+`E zgTZ9cRvE7McRmIPCb=q-b_p?33A*-@7wm?w+469tNl4zif`TQ|gEnBWzy&cZC(t>+ zkpO?n(p90c!3Z5jYJI8r2;2dK2Jy3!WSE6eQXb&u{Dx0!(gJvZ4;qRK0sAw%neJ^_WBqsXn4ibyOxB?J&Rg$t#1GGemvb`YN)nFIa^B`)Wsg+v9c4A_ zs8RisUf6oVQdvDbWWzjcZCPAd(OKG*^T-t248fxg~&iXCRIS| zai)rp0u0P}M#JOG#{8CyuSU53it6PfDSIkfFC>shg|RHyA$oJ-XnIyO%K?p86lTKUgKZT{`fWN%#KLbf z4z6x5_ud}pT{RB=#koU{@@+Do&5y-tmtyS z-N@t&7Q+)6P-(teme z5K+_$|7WJQJ&6WFb$FM@ShE)GY=?tSxi#5S0BFyIdWI zrMGbk@ZDRzHvJlrFdis0R94?&Mdf`2DE>R)OR&NNiA-FV$zZ+Z(xShaj|?u&+_sUx z3}6T_Ew5M1@#svxhe)SdfsdDF+IDa_NRg`(wJutAe{ynkbMp*RvK2(~Y&@u1+$9}= zb|s4J@2@?7_Izh&=i65=QFxsFUqEf(A^;8G1+M=L&~XtQ2g~$JX!A8)j!4`Y=k^J1 zutpfKy-*V->&jRy0syRE2Pww#WQdV_!Dd|onYj(ryVL~_VhOny?1J-)C%ezzd+*6F zzi@c{KyrvOltAx2AyYmveu=ai(ijFx(3WO>uq^Ec58w`HUEEmwhyU^){Ea{S9l}%! zjo(I#$y!rL3KjfILK<6!1646!>DB3+tY|WY(P3o6=p5W(^?@lh zPfM{|v8-QxUdSax<}Gtu{9z5RukGw?Ojah2d0JnhD4j05aCUS4?cN*3Iv5lzB*(hZ z_=cHr$EznBYBr!k|y37&9G6k4R*@4anH52;|t%i}|a@<2TOeA8V&RQbD z1gJz1*#+;q$ruCOk~AMh_1e*XrLNCv!h$kOFm<*CaF?a)|-?Ar)CV07x#=(^?XENdt4BOqk!*857 zxU&mdwm8WsT3BFn1@mmxD!^EN+}zq^i`d=HR(9>=@Oa&>6I#r{Vb(Y3cuO|uwwP1bGfE6SGF zqQk+E0mOxO(y5uZf{K5KEmwsP)M}mv;!gTEf-H-YD^9^lWw8OIu#&|QzPGQyV&l80 znBA^kkzBi09$Q#+z*wbP3&ZQvU`#;1vzD<^v|U=jqnteTizglKQ;5V$lRW=B$MF#2 z!hh*st9)B5YOzz+q0BwirJMjOi=q_yhxC53@Iefbln7=z(o14F+^{&2A;Y}NMek(j zpb$56&IOKWB3YEi3HJ zVkd9`R+a7%U9t%|xS`<(r!y_A?M%eJi&Lc`vqK!FVH6Iwhf>>bE{`r)m!l?l8ZDzN zdrGXKEa(W%5@M_R)Ys$g#`gcm)O|fko@Ix9FYhbMw3{BYhKmKcpa_tnK#-t_kX{rD zg&3hwgd+6c>PZiJpphsVfCRW^urt%$WwSD~eChMO*$XjyCM)xozuz_I9)Hd~7dKNs zcIR}TRp}4{!V{kod&&FO@(!JigNEZXj8*1dHMR#8nMGfTnNB!9I`pGzzG@f@YrKs( zu`+79^Pu_BZWQ?tPwkLkJC7N7SadLlN@&gdON9Zzod9*QSHMro?Hp_=kbq-HadEUJ zWF%;<%$4pTfo&kPpLd{1>V&l%r&7Y*kk@L$+NHROx3!&@$wu1U%()y3w1Tz_M?oKk zQx!!XwiF}_+0qvHTy}QX_tX&yEpUaA-WOSi8YLtFW=m*FsEeZx*T7l&9j0R6TK8!1 zOnGb6xc}e{#uFf*J*0~}E_pcnFPu?N?;E?BkqUYgak0Pb4IdW zdTIQ#kjlnb8Vjy6(|aiP(M!h$15zl`I03}Ht~C94jlfMyYCOiK%|b71$_2~19nynH z{B5RM#iq>+yNm~9Nv7OqbF5w;w&4uZ|Ln$~!E^IQX@kb}6t$1yR;CWTwv*t+Rtp*c zvZ6t13h3K>%bD|l?QVP9H&fZ+x36B6ZG{GyTs8u1Jv{k|9}7zzE3^9U?a6G~p)))C zTc^hp5xNor`3|Rx{oUR33)px*nd}Lff#Jd7&fVR{V3f$6Va!olN|H6OLS81EGE8V~ zYyrI5wu}O&}{9jk1V6AUwHwc>ojIBl0!G{u`d0X2x*yG zjPbQE^&Sm-Djf60l`$;6xNrIH+W1x{er&njw|x1!q!~YePFXa`AqzUVp#h4|P@si| zIW6&hTrNkT1%_IFQmxq-m z$Yp3Zu)#nVfc1|PSwe_UIPteWq{~!VC4dcX=e#AXg`+F z@8boS<~ks3aX}NM1_B_DHMcHOUUe4vZpRx0A-Copv~=VL(bi8ggGQ zkd$kkgE4k7)VPNgyUC+{9qjB$l6EMxxQBgyt4`IOUCfmhhLW%VlL2c3p_Z|ibK!&FPy{F<7ckz@({< z<545y=j#j5PA+xf$%kJkb+k^GseN?=jJ2AN=J)+uD%z@h}Y ziyMJ{Cb4B%cdiy4=>F>d{I?emPNWQ%qYvN>soQ;yFIlRTAvj(dSS%LCb;Ug)XVSAx zuJFMn1rEsDK8QXY04uX?Z#H?sal z8iP^rM#1Mawvh>}&3doja&C0?j=e>i|_OMn4 zr>*mZNAkVUQJYX<@*v`#G6T#xA7b3YjP#Rp(+y~lgz7&eX~{4~znjtk06+jqL_t&` zYNCL3<&V~nPmfJ+sS%|XoAA9Xf0k%UHgG{%oLRrrVkQ9KXwOA9Azr5|K>$rdTCMRc zv#4E9jj%Pd40k)P_7Ap&?+SF>z1&R~SAvKJ$ZrNRs9mKYF6?CX6W#S{emj+rK#~A| z3K~GMGqc;)CY|-Po}tyzzo@jd8Fo3K348Ui?2fc3ZJ8#01*?P}fUGb0iNlnt2R9xi z(lAhEQh>$-6HWk%6AD!CW-JECS$r&LB0Xs;RR7iWqm%vl^e#z^0`D>@DOc`V+g{t7 z&@wihvuoW?-yUOP#K!8rJ7M7y5?CmYg7ey;E2CXG9?=P4=J_HkS6}E4@D>(Hn6XZZ z7QB7yFq1czcPcncZ@Xy!5M29pB3p`#7)6AD2sFD~1v|v(79%S{Xu(QIso9bT?jZ)h)B4f$^jnG)ror}1t`{$4vSpJ5PKgox}xGK=&p~MhJQs4 z`LIKDUrh=}*QO8nsfM773B#wF>NN-}O)2W~53PYd92$AaZTPUdai~GP@EM|L!`(p# zZZbN{WYCan{(_b9^eQY5Kc|*p(De!1hd=ut`z->Yi8_XD7wc?c|b{e637f20vN!Z;fK!f zCAP_3vjip2aoJr@PXT)tFot{U0Uda#>Jx;LAXfqQGPAN<%Dh zaQkpCPea?P&?e>}KFI19kik*o*AQvBpvDYTLmmucuUUm?=1l&f8P)ATPiP~M`OQ!L zUB0>&cm}}ZP$5Bggi^ix;digGEaQjIs4^b=+@kdl(_)hTm7`*6Zh)n>UzlWS_jnE6 zG%ZuI)UuDnm0T%%8|nSkI>@$6(65(;V^Mh5gZCl2mc6r39gn=p2RgfHTeIG_tM4FImfN}sK# zfx%Iq{qrG8FSp$1mdv*Zl%DDHU^}AZ-3)&T!_qVwoF(w`!4>y=%;SI4bv;saT&E9= z_*)`%L$=j}$~LCyGg9^F7z78KDH?!IAykiqF3W4<&-m4)u*5$)&HkIcfBL`v=^y>s zA0g_B{TIVkcLngq8KO+9+mgNpJr=xRT^lR z{^~`6u!=kTXx$O8(H9556labcUhXWnRhsDJr$718$=;E*J=j&*Ya$$W|8jRJ_A^zz z-nksy2QrHjW%x6z{Okt@P5n7J1_q?QRf-S22yiddT>(pmC`$uap$C`%J)AL3BMt8b z;Nq!Gksjr5M&=*|znQifXr%0>k+?WWL>m#&XsuLo9m?_v?&d&kk{jn5-c_;V&4a@U zH!7>Z77O}rls;r3q}42q98G}6lHxY^H`iwytMk>Z=N!z`4x`1{TD_d8&^}{jsgL)Oyop zCp3Fa!B9MxlVyEFME+qW-D2%|v8L9ihbUEghg)v7jvzu+>*M`X z)tI&!cvL_q5B%nr-+%wh3+hGYy)6@1BW9AfuK2Ajl+b#2k3t#K!%EPoly{>2>T+sR z=k4|F#m9>%km_&cMp}-~FdwGk8Q7PjwgliU!Jt%YffoITvIdQf>-d#N+^mZhP!k|E z;+D&AEnkc=6?rh7fiXDxr~<@OarW_oD1gM4QEnSQ?%AiyEZcG*OSIRRWgR3F?m(WU zBCcheM}IJk-eY`-J~CU@{Bbtz>e}J{E^WdVcBs)ITzVmZhWC_C0Zs8kQ8MomxU3Is z4jD>U%h!qL`BJaLg$Z$8qO}eF&^IKn7c}9c8;ku~wXSv1cp#w>xofE4xfN&;0Al3S zR)S1y3Q7#_Wv1~<`k8TJ^1zrr71T$vj%>5tUDRsVF^ip+iJ-0@r07lM|L7N~AqfTb zcGkC#j?zvY>%CxCKyWLR+NJOpFYww6`W!VH5bf%%g$Ou}Sa@XP|R(uV2|DE5~mRCP#d0yLbzD%BQj^+>)B#whc_<)qE?2 zvzCwR#kp)~3&o`Xh!75qU~n8+@ewbkm9&H5FocxvtD&^Rp+lca$25R6$tSddzUh9i zPEWsn_Z8noN-79Oa-fdzIdzoO1S+=vm=E;H(U}w|#s`jLTHxew{+m?y$fREU3XuSO zK%!~;WpKSDeYz5(gl`CR9!gqmXaiSt*Jrvl4LcfylFNSLn;0J!Mz+A!T&s}MhSwg= zV`uO=wu6#yNvJp$1yQmDk{!#H!8W!JxY-K_iN_475I2y)vMY&g-3D~8dMEj~Vv$?P zyRp}Vb8d&YPwHqnkvXj>1iFr4;U`Fzj4YjT*hpntvcj8-rAoBKLE5aDC?IFYPH3$J zE^U>wa4bi-)d7ypGq-R`CBXvbRHJKL~@ zENtTRvI)DxjLN8iF9Igjg;-lxM+AhyhuVVbtsud$cepdVwgbyv{;C{899*3Pwao%7 zRcQcNA(LxC?<~Q<=zJ~a&_vt+icDas7Pvxe4HP9bOCaA`*%GLAsHPjJRvY`n(e9A> z`^V{Y>f|qu9Gp7IICd4g8P@2{ba;zjzk2=McfYmIBeDY0|Kc4WTnR8<{RQM;)opl7 z9I0^p@{R#5w?vLja2U}kl>y$R!7gQ37_?j4It!1;G3f#04r~NamLOlY=*!>qwOo{; zoMs#;v{B71xaTMtNpAHyx&omg_QuNT7OkODC^Clmd3H-=!5(4T;^Fq>o5O$d&;Rrf z|Lng4S?oI>^D?;^a6Psv%UqqDDq%y$hQ^#i`y=K6k0~dX$@ZS6lVK3E=0gP|(_7nK zC1Rz?GWH2;%7hl^MsXU8oJz`Huj+`6YRdRjz=wP8?cv+gz1IU&xK9`^mxt@vboO=* zSoFX~vo{PJ=BuyXUw*te|Ne}@J=C}i!ZI0Dpr0-T0Vrxp;Nv#Pzq#QssKU_sZ90&y zk^2^}UxqkZ2%5>zV1~yu)(HgdMayHv{?Wit3&;+733im*2!q0iVzxt5q>zxUR0@p9 ztfk-@5?y)k5Vw@F(B>1ofm_YFq4p{np)SfYA-|eqScKR2=lLx5d zfzc}}$xQ&LSh4}GKdZN6@#Sv3Na|2QMh&!fpO+gcUL@fjZJRHIL4Y22go>fC1NZ_j z#=52kCbotW+)n7YE2e4(Dmr4WPhKCnVSZU%NP3sy?H}@V(w?|WZ05Wdf4KN?`Q5jl zzWzJ!UcEUzd7}o&$`5~i_U&K%pn$qK0~8@;s0Ul8%BiW1p>aOIReL&icJs5!_Q^0% zNy+LsdsQ;<^!e)J^zJ6l>%eC)2h`Xb?Gn3yc)mjw?%buH-e)A>9`p4ZVPVk&dERRq zCptmaj9@fcf=Fq)rFC&#MS313(FSo2`Bl6^kjLe;%UtFliTA5wJYCT3oc1-M3%Y6cXp1Bj~K%j=jTyQLiOeK+gFzJ^87+BmKeKa z4n4sD~=YzV(%rgk2hm|SQR^>#fA!Z|$@oJwp znd}xwL8N#!?j3(iWe$aCU71xYdlExUXJ=o*8M?#@4FjJ`PpI@Q-89@(;<&^F8Jch| zcu8ksBGLXkCldx=-r3H4eS0?@wJ@LNHceb#zCHT#?a`Z?#nob=5+oCGgFpv2YK$sD zka3&_=4N|ZZt=CQ>=cmz2=opLU~Bx)%Qrq?i<$~Ztq zsUL;^<7M~7!9kYSE_s?p8B2@yAhQH)yT7<=BN;B0r_afE6cz4EgnF>~ETXfu ze%EIAm6LbJ@!mqdt5ZRSM@9PWSA3G84>&4y7E(~!YRA&Cw`D^-uI{8IvYr5|opIRK z{`%F$lnecf_b0ciSeGba)9%B_%&K-d*g|J^P?}a57Ay()k$EJ1dU8C$E`SAaU=Adg zBFS>Yd+5n>vTVbiPdl1g7GdsDcwz~met1hf^nIy9!)k!@8enz~DjDRjLs?0dvDsCUxhMo- zv7oPZhLWRXJ*C)6WL^sT!^R`^5;v3gd-CPmFMj&|CnJ;RvoJ)0Mi}ch2fflZKnveA zDJ(L*2V?MgRk&gJ*7PvNl zGw?SB)He(zTaU$^KhKpx#S!OdPxCGe`!)p^&KM5dP4jlUX~$TMu(hTpj@3tTUV${F zt&iMt>gw2hJ^0SS{&F-aD*!yuPs;_&kUC!;3!Kkqm;$Up|JtxWm>Af79-}`Hq8RAl zYX;e*sPS-%8g9Q9P0r>tJ4^7{e(*O^x0c4~&j3++Kfbe^NWohN#osPmRF2cglT!H0 zkhs=MWG89sc#pC7NFy2qNhl@X&bPRH21}fgokJmKxiI8COKhmiravsmLIR4JnJ%46 zy`nd7Cu#-~c~z``X-}||N);GU(Cqxvl}WuiJ)uDS zfM9!26XgU%3;Y?eVcn2Sq0=DB1Y&X6@d9}5Ek7m+^cCKWXSLi9adsa(Z;%T+B$~pjJg!)h)JH02~gEtb&=X9E{tn5YS^;$W>x;biGYv3R2t!wRg4TesMXU? zj85~4L})v!_HF@e=8#tHY|UFkCOxY4Bnt#Vl}&-HqD`X@KJ-g=1^0=~KQCJuuQosN zMTr~G@8S2B_~Y8zr;nfDj~BEDfBin+6dLAfJ~%uOK{5=h%XvspfLe2mOuY|L79c-^ zbpW)*HSs_QG6TbX4qU??>z*zH1g_$J`5jy97Ef4dYunvsBAv7Bd{6iZZr4)$p;ksC zz-`LN)_gtF51Gm$8EUPSL!;`2-E>v%DSb3PL4UwCGN}g2Xc#9BHxhx`X?!~J6{<<- ze7XC{Klu8e{xARJM}OzX*-#73ke-!v@uUxAAGStYHE~VZ#R!rNrv}{(IWOv?lmPTh zuX2ShLIA8+YA=O>`BUa1A#y0VrOzgvG1JI2=ecenP61@7(dAMGEVOiuUO1;Upu z(7$RwH;Jgc^!1#Fb>)jUU#OF*LR5ahc*5+Y;yL|401%vsxnavr!VKvb$&Cie0JvFKkViU-4Se9b z-BC+02macLxw^V@&|!Qg0@UZjQ?a6K1ldZcK2eAp0#T5OT`0XuEdimy)EjsbN~`6E`+)-#p$(bUxpLc^*H>2@5b$v+*&QAH@k6`UG-!e3 zI@{G+rZZ&&*MOTN9IAx?i7Aw{<5O}c-8R#^y$9B=2KAc5Dhj5G`AP5ed&A6iy1v!% z7x1`^SQU_hUQ}nzh}$4=qHReFo@R2}&s&K+a~4v=b7E(CbKqJ{4{e7L0jhX>G1krp zBP8wd;b0fUU$KyvcNZ6na~WM7H*&YQx;)22ULU=^xxJFlN6=>VnI#sAkv)(a2}@&< z{$WP&e~1@GsrrKnPl-<0%C0msC_4yaIZGE<6XR}#RuCpNcH5$;Ar77uB4YJ*1Yu@lpCBD((i|k-w0w}XhF)XcRy!-xQq>_Tx}b$ zCo~1y@_+k}D(orLzSR9hV25N3<}ftUwMcTXC?%F^h=ec|kje@bZs%Ml$Qq&M>;uz5 zkmb~1S9sPoIsxkOY9#b{=Gr6KgRI10vY4^OaB=7##;j$Zxoh~w5V;aA6alVz6E&Ea z6#ZFRu$c2)Hx&_rJGEwCsRs>r{=kCYd}+@EPl*L4L_ygO0cwiryV=q(ol^quaF$K` z0aUmav2tP%QgXw|(L~{1EMq#Gk(yIE#9S7;+Zpag{G7g64VkRx!D-Ff+}GPzs^27I zXP>oPFoiHcDmWHoh1q(Cv(x~Ki=2kb+@9cr!^16D$?(XGF6L%r4NvT^dVgyz1D zg#g8+h0Mz9)J^jOma+N;oq>YjvFym44wbIRxgs@-N#+Lw&So5&}Y8iR4= z-g{o#Y17htreNUg_~aPVfsICqmB4=*!QsIJO)0|zq!TJF0N^bF6MTGjYir}JKM_>) z8>G7GLcb5rw)}B$26x3GgHVD8Tc|O-h~AZU9yKB>FZ8JER$`cB-bu3tGTPUN+gQ>cUu_7y7iOSHDm~AEqo*LGU zxl@fal8Ls%y@V8Bs!Gjz7fMqNM4IBhkO5F{T>HKm9tr8{Z?jDb9sd3(LXVvlU2i~_YRSyAJPoLCVChd@M9(=tS$ z>Ff+xY)Tn4Ue&{+)s?x3gwBmSyhWbyjd_OC&!K_@B)wa;1Bdb5-CWrq2{KZ9ZSqzb zp`$=O)sAC=W(bFN8rZXU|9E+EiR;ogL5peO78;Dbtsc3ZQqY>T&oBw|O7s(+i|1#FW81Cz`pmA~EzdT0`ZQ z(G>D`57DN*Zu3+Os)(8OFQgqEquRWM)Oegni=ttaS2%ii`+WBCG6jDGc@*qd(1tBS zG#?&KY|?kOjO5a)7!S{2c$MIjQa{21ttB&n-PQI@ydo#X^Aq1cFl8$s2gg?4H=UI$r_IsmFWaW>bid|t+|5W;3t%brUv>LRA@=0P!e!q zPsao5vCMJ|yi`jaq>yEpVX)cI%g}_mZ?)YBWNk#jaV%xwS*tzdAS*9Un}df=yfS;9 z-aJsN?ZUfS+&MXxCh{=ZSJ8N#kw1U9*83_-sYbab(&8i_iV+zh%8(yOjW%NIBHIUI zrkZx1ZblXO1m4)F6MPvLr6~fAE8y=V);By;Yt(Mp`jlvPLP2=ULbZu#aU50NW~-Fr zyQ!q3umXb+$pi)=4fB$}fELWk&R@lO5tm5l&SXb~?RqxVMc4_u$i7SLXyx?H1PNTv zglMchZ8mljX3Bv;kL}2^=l-_Sg(!`c)!N}Pv15&UoS|Z4E-p3-#8mPKS{I60U2{+v zG8Q%!@R->fBleP0$u0$FYF1OBfGo1NdC4&gk@ME&$2qaA5ve`|Mlsv_*1ZsfX2Ty) zQj{Q&V%G_wq%NdFZ;=s@x&kJE{rbz}({~f7J~^B$fSaomH4SkVrRJO^!pw2mkV;MB zUM2HuD{qF~Q%wY0N;ekQjRd4tK<#!e0gN%ha5;zh^>ht(5^GR-G=M+pJLT2h>}fIAL9S!~{QnC>3y_PbXTH_} zX&frZ`$rETgvLnx+{;P9!K$<> zmC~17k*KrmK+@Y-t!K_~t3z{eh2L+8`2ZRch9RNi0E=&F7_Gkxz7S0A8ZsV4N2_k{ zV*mN8k=jTIv}*1c;`%d2W4MTCfUIt=2|H6DK2Vr60jO&i%bx0>hUQF2?d)!<+)s@dLsh-ud2N@) zTzMZ1nz(?+h6I8z#7v5NTKkARY@E$I_6wiUBjb~4CtmA{Y#&|<0AE0$zj>-~jA|s= zOpIvF{>JqUX(vj=Q%=DGM6?Agz&+lVAoso$I(;3uJ-}!JBL-*~1DLQiN;l3i_yT00 ziv+<0G~*lAX5e{NN*#@raXGMC%GA$ZOD>RV(jxXyTtVs7?N_hf*cr<+ifvq9oy~95 zh68ozRX)Bkdl{vXXl8U#i{xmGWAx9C-#Oa+*+2gIKltze-pSXmxPJK3th4Pi)^T!l zK5|^n4eYlX`)*8 z9bI|2uBE{!+sxiOJUTeAL2&Pg-oL+lbhLYVxG~WnTSm3JW!Vr%h?N?$_QEE=yuYCQ zfA`%7dw*}QXNsdQt`{W~+z4g@ym6)8;R)u_Dh$^E=E63TRtf9KV5DJP@NL<^Kl$c8 zKlHc1{;g%Q1{fhd4~JPUjmcgWS&$80K!6G;&-ECxi~2m-4n@p;y$sMj3rxg znPqw6jWlz+!-=`#c^qGTbwbfH1SmrPdQf>8Q?!MV5;^H`fCx`^bh<8sI|%5GfyAJv zp1~*{Dd&aJHGt@4`{nLh-WS^3y5kYKQ8KYzhjwewA~j{C+~Dv{3!D2uT{R@2;15bB zD;(_nZwk}CeZ8^-w@+>9`0Duj|lf0*KY{3+GWd|JZqy?xBD1pnHJ<`^;*f zL5L8)9v<05Sd1>h8MkG8SZK1aub`i7tOCK(_J*GkSAC+I2L))2T)CvTU%dUxzxYpo z{hMz^77mUkHrFOi{d4N1q@%E(BBigGwqYBUJ$k9FIl~{sjdjasJh(zGt^J7zesjaM z;81jD4Rgd%hSCZM_;`=O5BiRGS)cq2;fx8g43`YS_{{<0W}mM- zUf!NxFD~Zy*9+&q+!l~MH0|vz$4MXT?5Xo)L7Z5P^6%&JMFsa%b_$iOo5r2yE_TLF zy}7wY31hN=gKL^csV_e02*-{2NosmxQo^jFMo`;LmW%?7SJ+>3bW$;~55GOPptu5m z0E!k9hVWP=)ODbqMxmP2d1uml+JSdOJYIwfa-#AN%9wyFN*Bl@0$wC7F9Mm-ahWGW z{h*&34gG|xrY%o2Fzm7YY4>)lS@aLi^;>m_?;+*kZu8MjNUo~54e$T{4t>J@2M5cA zu1SJ)OVh;VoObGQ1`RKX1WqcNlTt9;SiSSw=dtMXkLS3=+b`babb7YvGMUrR9BC}H z#|6X90bCXnK0q>JzIu2i!ve2)BkRAZ(ab~c_eVzEL60_dE>%>jRBcs z!sc%TXx0(tn-F|!`_<{|$?nnS+CGnU=L&@uwLf|u@exD8*)`%9UJ0s39tUI9`L-cXx5SsO+ZUAf{a2RG7r$K zdC=f_Ph)MI=DN~s(dV)OunvL4Fiz(p*TzVOzNAed$Y+PD)|6fk|pKf;dCXyBd3JwqC( zGVEgv3nXFcu(Z>9%}#*q=;#m+1+3Lo$C`wuJ`Z4;aSP&e+8{s-Q_Zpz;2U6TA+et& zxCh>hF}TbUR+eKJ;GxYxr0}J+aJfZkO~#XBb-Km3kRzlYOuHNWgIQUy^1OS+=8XtE zaZ;W??Z5;t8y?JUXeo%cgdYebequp2#2@U=fhtt<(x96HouiRx{&TPRpfP$k2(Y5R zLBci@@a1#;wzV&}9%05^0ns3c;d40p8LN^J;6*FaxRrtxc+j#b7y+lu$9)uJFm;w0 zhYty950>m(Q{d7o@7(UIPJe`!n1JC8AoR`fdkqLSZ14+|V+!NX_fmQ-*p|;jIUJJjP~ zTyhG&QLph4*fcnT@x(MJ#Gm;?1OLpCp5Fc5tKa*RzxA_!_|wBzNA#^ms2gzahQT{? zZF2vhf85}HT@XBvfXLg%Y)W*dv014G);yw0C`qnl5W>Qy)&l3l^KlG=_5ihcd$wqV|@0U`KvRy-`;mRSW!?65(+Lv3vnU|k2geoK) zr3@Lrwj*3YbE_)la!r+m@jDwpMva}R;8qEm;dIm@sR{P9G)hpret3k5Dm`3 zgnmtxJlNrhNe84&Ne!^|L85?cs1Xx^vkVm~pi|8v8JWc*^4ItCv$@071Uh?`j-bx^ zq3w6&GjNbX_`RcTB`IfDB?7WmNc(7tBI9r!$?Mq?ea89p7t893-*7zfYARyxfLrB98F7%u@1IScY)aI|gF4iUUxEQg~D1tv+6tlMKzpT;Xk^ z+Ao8L`xxH3(>oS37$Y9@IiBx%-Jyv_DAW^)F=*{u+xznC_byjom0t>FO2t`ORnr}1 z-CT)UqzF@@PlY0H?@+ClSZLhHSeq_Mv1U=0@+gyxbZY-eF(uhhhLXu=%Zx%4tPK?= zAW#NKBaZ}Q9U&V$GjW{y1=$Vw_}GHNd7v6u7=~!>Ib5Z+crt}Gg4Gfr_{p^x!pfRG zov19~TadJpEEadD4GD47Fj!avA)6fJ3=|j{o3@hSMugz)d6my|tI~#&M-GTxvybEA z@#6Z{5q&oZ90Ga9lSODBrhHvD^V#+~H~Qg#E^GI$l#WsjZP=v*o6gHN-*$*or42Bk z5#~H8Rl?$QlDc)j_;e-s3mlq&FAc&&2_IM=x|1g;T|tt{AwAy#f_b>-dr6ZF;L;fu$G zBHB0WlYM!QomU7>-T7!2^zF&yn7U*iKW#y*_1FmTx`xD> zLcL%>YlocNi})8n?H*KBOeqpqFkJ_sNNhejKFr=!GTY9#8~biSrgP0yT#qJrf|X5Q zvCp0g1A?^fupM^N3KEIQJNz%)aMjBC#P|Qr&)%J!oW4GJGZvyCA&~=s8M$GWI9vFG zJ4x5FJs4f)z)e%n&bHQY-+u%M9Ax z-+KM})w|QTj$P)Hz|UBj&=*|ssVo?Hm>`Mzlf5SNnQTlYEnFvl_tu|5RxV}hM4C<5 z53zAA0D+$%Pqsizq5)~c61o$OYs7V0Gi|2FJTRC`P5B(H7E-S#lYu)%6+HcdUc1Yc z7B!S3IAT?<3_-QQfrMZCs+b9#7cGYQ$=O~SW5N0AgL%P{q<3mqV;-|~eL45W1;xEu z9GI$Mi`T zyumQ`C$|TC`%Zb}lsmh)C^=nP%G7yb?K--Apg2j*Pdg;_Q+uY-;3XY^fRa$k2*YHqx|2`E!7oLZ|>&vao|t#zyv1TAGO< z3wpmCcRR-L5dag9~Eg_49xD`+xgSe}44k1QQ<~ zlKMj6hHb2n=lW{O6oh3mA!10fruwtWZU0Jlls&2n{g(Q8lZnBt%KtmaBVg_DztxxPr_1lB-=9yF zU2$sj2Q~h={8jfSk8hnFG+j_nB^q{4jQT1mH*GjcLh`IvAh;;JJQG8OGsH1jA{=qS&SN=XQ8Q)Y%9fs$)mTHpxgty{!}8Cs^JR18om#DY0}*C^Cx)- zLj2bs=6C1!y!aXfq0PfGEr8KXC1lFK2W@3Qu-wVypzuqmcopH)P+B0H(ECf`QQs^<18Gg86s%+ zaF6#5NN=DE4QGB!s{m)wUC`UU+x|O$^piJlUoGa-AHMrYiy3)A?0oz)0NYBzlVDTh zbaq3Y<-3!=#QwB*nbL_JIa!hRa4BE@K>;Jk8YfJRh$SIVmEt5;c#$v>{Q+|*-KT`akV28WQh)zJ9zopMAQs71k-8w~KOu?pCO;PiyvQJ)X~IA1^NU zoh)T!C1#Bzx(j%^6JWvkmL${ zOcsk*OHV5-j}hQ!OBOl3o>R8Uc;)+V{o~;&X;rDJuxmJ!M+x(c1@G>2V>#%fGZW^s z0s;(90H;_njCJAU4fYJDICJQBZsqJtQHh^_9Ag~DRveNdFLkKt=+HPh7coNxJ0S~( z!`?riUW$scErlSM#VTM~eCmg}tSgEQK`oO+*|vW1{ywXPP2Y#V4icTwh? z-NA#ix3iD`TNK-!=QpyWa(BZSD?7io9e-Uy6kRatijjv;rnMxAB-oI=DGk`4Mmc2H zU%vjm*I#`7_TAg}b{u@T{J@+WoRBKq2GqeADSuHD#L;^zGQH|76OE!{U}H5hgu zk?=r&L|_HE$migEE=iJ>ARm7*@0nvh{%-T=bTC@j3 znL7dA0%J___1(;v$K~a>nSud|)|;~)({&TNFJ zjL@-RfEHRg%RVd3+eU!HLth|-0=1x*Sm!3BIS$<3&`1p!=%0P`Tloji)aa+mTx3^JEZ zmdy=h2thprN|T?>iqGIyorJN$cV|-;ghjFG<5BtY+p3*_s2v+HLEa*F2nodxJ@}FU zPQ>B`7#2661mGpW#>ajdFF%hP48RR8jrVcqSj6$wl;Rwt!Jb;)W5_5a(8fyZ1Tl<> zkY7pIZfl=FW|+oY^I>mi@Ab*s)5*Kj(^D4hx4-`OKmYQtl)g{#s%@ZpCKXCKZ#`51cKO>bvPQrdA=xPhya`mDIIGxtz9!-JYC>c#LyuHmj{i3_NQ?-Hspf& zPEx}n`9<%}KAt(6_xAj5cDA^^#LYM)v*K(7gyJlQS6{sXxejMmC++TWcj7RwH7N&M zubgqQYkITUjgrMYWFD)Y2KD7&mtHQTMuLYteu+GEITJ9*Pv2e~AD(>q)fbETZ`cwj zk-bEK*g|8bz-SW~%?WsUULXxo;IlUMuaY`~on6h9`ND|I2_%6+7Qyz+mNTWkZ~oo? z^XC^IuG-6lL<*l~08lk-kb<<(j{?N<_a!I7peG(y_K!^>(!kEYJIDX=`Qf9b1PnnR zE2z7i9x+~PRXQsf-APIM$4pq44n%=~wAbK_3E6BupUrnNt=Fpv$6u z#c-`^;HHb2j_ZV`^@=|-=ftK=yl*+cabzr1HHAvcm&s|sA}(Sp)(8in z=J!^neQwV`{Eo73T&qrVpJlTrX&UpdmEXi*q72mk7Ct;WJ&Z7i?b^n!)Eh} z%zywkX1QYsRg2o;X&Ry697*C@DY9&Aa76VS4;)@=o#7CyMD~mnpqqo+VgkHjYfkQp z?a36{K$2F^lrbAj4$J}M@VGK0txsNk63PD3-lXr z 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%0DTuo!y~)=_mRVgwxUU zk4~xc-d{ur_9q0Ol3WHO8>crI_4D%=4z{Ag5vw*pp7r#!IoWV{)0rgT=^0tgS_Ox~ zf(b@*Sf0C0j%c;H{m}!T}y3@Xe4%c_4_CqdS-CdhApbLi67if=Rkjb_*cYNY# zKID_jBpl#g2Q6kv@WwsKDJyt($Z$s-pns+z0z&>`FD!Ter38|_W)pXK5OxmRg$7{s zY3E>j|J5$xK;jbOBREy$n!M$QP_jw3tW*PIR|yT~XNLwPP7{*IMqX4{YW41-sz)$q zzj+o}^te{*TecKECHQD35NkG_F6t}|ve8a%J&x8lm-hBHU%q-V-PopxuIl-6m8qD7 zaqtV-_oP^Y4U=I8H)a#^Lw`!y)L9H^FPFRJ`?o_2;NX78PP3Q0#wX)YgpuhO-&)Ji z0sTsX4YAW5=p*k^pD9{rlse5G=`x7$1xjTMRC(5P!8_G!ELf!EO{uHK1Uw^QmwrhR zwgBG_K8J0=)NL&+H@9BBe)ahezhF0Lm!T<=O^uW_*#w|=)gT1{<|8q-qa#}z#Wh*E z42*&5z(Sy;Cd_91Tf9}(y{f&pd1m2xF8fkZ%D61y3UIJ&#in0;$@G}l6%-lhj06#* zMcO5;<~?co=8hF;`K$yc2d>_jtZna16|2Ec=WtQ*aPQrVo^OMMLYxb zV;BLLqBt&-jq%A7HWlm5`zileOWEXZZ#$2jwZ}A9#K`6oBTTk&EN%Qk6%<2FvI%iB zGfI^SF2MESV_1`?HIg9`N5Oi+?uoA@Y?`58`@%bJ2LMZ_kQAWJl38 z0ssK~!v5?Pm;-UY{hw^{h3R=?QQkH~xvt5^u3E*-=`bmvXV}wh9Y#$Z(?)1z)PiGbkhzBGyHi-=B#_k(SB3#2^x6#{<*O3`E=FK|J@({=+Az5^>~3b(K#ft;oOTR zQ8>$kA_pblp0^uIEvfx@*LM_WdSVbqM3(uL0)!M{LC^plQ;p)rww$62I$=`Mii}5Y z8}M|T^tjZGBwxU(RHiEHc3gnNstd2rZ`d=!{3joEOk_)4=qpl3PPH6EP)lsf2@ph`E(F@5Y$*1#=Ctv;QcWi~@Z$7wxb=syWv=u?`)JI_ecu0RQ%TO2!-(X)}+} zn8wHgS&~UlYTBy>9b7!~%p*?s77T1%%oCw{=i6|t9jVX^sM?-@fD_lllJ!?n7_SH` z2>2>X#Om^_6l5`ZNlg^`#02J@B2-d6K!G`vlhe*oZew7_EGP`KDHlx}#KRK6?IJ9l zG8+cmi;ecMI0^s*H*6<^ivCobF|?lVhzqPl1!%FYQTxi`Dhfi}h*wO^dQ`Wok$HW1 zAQEE>tbieGiF{vNv`-Hy!u#VY!$<3~rR~j$pgwJTetIcDw!XcJo(ajLk&?6ITH=0AiCX+9J{3ZT6``ra7OH=FFBYuQJ+t#^W*Jd#1{%&t?y*${rvq@KD z1@YQV$;8lx^|4%E#aZe=?P|rZg@)}_RI)G*r!S^Ph%iQUMwvKaVFQ(3;SIFizLZsZ z)a0$kp4e;!jS8ph>gb}w?2wd;rCMH|8I=u1f~4)%DGxa^XJSH@RaA?Fu|84{8Gr`J zgkGZ~FNxE;$H~^pt55e-5V7UppD>oHrdHfL#9dLFIId7sa*lu@69BfCz&!2hx4uEMB65dO=~S^J3O%k!5EC@9a%pfBN#};j78&)Eu;L zz-stMy3C}yTkWp=$ilRjp@$H-(3*H z`4RPxM5L9sh9n4e?8e035cTv$9F2C2>fLzIGs9ZlKMTtzFy#8a%FZ8LH6GlRO*vp0 zE>mC}AVB3RVnIy%2Yas$Uw`uY^(UWxy1%!7@Z#{3Pu{qNp}#Jqtm{s5j8)V0`R?S` zMK!jX;U67+_0`wkz5VvP@7|r9ou$z;I7qJKNRri&TgAa8&QPKlYbKyCSoA2s!05*1 z3F?Y%z+X`a`E?l953Ahsv1v%E1RAMYHUg}Ua|G07ZW*>)Q_C4p=FRw^mix>f* zY8GAo5tE8@DIlU#sr=)4ZKtwSV#Y#QFbLZ$ZMHgvgIAKr!L z!$9n{y|Xnow6PbL1p{v1eYjX%)3j@0VTuMJ8VqbWCZ&}ds5rt#QM^2P8;>3pG69XC zyDlCnK2cxLK)x8JO!CL`lMVNZbg)lPz36~D0xQD zL%(I3MCfqW?=l8vO$`Lt#0D#SQB$z?BSttzaCrMV5w&>b@J?~2YIchO5B{AikU&c+ zFUf6_#XN zQ2oW1?D{02-55HHo#?wKJOI-RT1P8IAR_4u<6xYd>q`Ict_a`ylVKTqml0uG6Emnq#31uXn%<`|F12f>$ z3(^Mr4{#4T(BE;NtxAj1JM!B~jkdHEf&g5WfM6j2-Hhcy6L9U+8so=JI5v@xl81|= zzj2eR@RB4e+~;CK-&YwmJPUD?04*>KbymW&P1zS z8|-yn&BXD;OsHoSzzgrs7FKpT%O3QKHFP+oJp-5dh1~Kgm-~DWF|R--0vb{uOU&yF zkp*-1IEQAKNjQRR65jE>1sF?VVHTI?dlW>omhhW=7&c8-P7H~4TBWpA@~6tJ*omov z#66r&aY=n&WqsAIq~clOj=_o9Ol4PvV>u*Fi1fYttphTLsOSg+(nDm_ zwiY8pP0GR?sN?LDBzZ1D;;qDpUvx>Tq2H-dJ6QD9?avw2#8oZZ2!mE*BD7S89oNSn zM7CM@9chEo0IYMh<@Sc?@}h9JrkWpYz8!pF!!RhYQ*&SX!~{)hYbSGSiZXGe+~ zb*p;$2{&q!J8mNoMJ6stQqgJKyXw~Nd3zWE@Zs9y8JUMK_sz}8BQ|GX*0BB015aI$N8RczlA-GSt-3h5K zUt)U`y04-YkR>8kq%ztWT;ElR8G&t6(W2KT{tc!smAc)z5Q~@giQZuWdg|uM?xD`L zul-4Bfr9t2v+c+T{ryQNRz6~8X4qWop;z~t`%jx|i+7F$kQO61b)~*>EAO9QMJXL^81^bXN$9{?|P$5z8=?pf)4cVJi#)$p0PW;+i zfAxC*)xpdC>4B3iE|_jNm&z;|t(Xqc)Vr$iG;4$RgN9Aj4@BwFiI6@Sdd2bv%Mdy4 z@Y7fRjSsB{z56rL`2Mp(J}xm<3^&3lE=#m{jX`>YfAaW;FFj%m-Cr1$=Vx#0gm6vT z2jf|#lsR_S_`n-5>JuEzFi+=7@es1B>-+n=Z{B?J<1c^w#gBgY=FMmO{@&dgUAI{( zDWkoE{jt&}HwGO`8Z3J7V*k@mUTZpWd&vzwefRe5Z+`o`ufF}}+i$-6_T6_fl}Nvs zDJ|3jn+&q{@CS5f=a~&mDevrt;U{ELAR|+SCs8-g7aPPm9A@}8A9h1Ri^M0CZ7>mk zeR{G1=Ce;;8+~(aU9#f&V5W1~22a{5QxZhR=Ef$s3`r4t$_Aw@<}L~74C{GEdJSD^ zOc4``5IaINFFaf)-;)sLkBtPVN z!GT0dXbc+9yNx(wOo!PvQ83U!jQWRhz`>-s4Py@$qc6{G&RGi12QdJHl6JHx7h#3P zx_n;V?CtNZ=pZh!+u68n$)HREZthQhPP1QlwpIGW+YkElXx~JuDnIbCXG!DS+8d<6 zI%oS?mG&?!(u<{Wa8or)9%{ihG*^jCFA^GLA77bWIMq^M*t>o)899A0rH0beDFGgi zUX)zE0hJjz0|Hde03J?*IEeJ2+4^B5`(c^>901K{eVRZd0uvVTKEd0?14VxK5mFfl z0i_}#{_nGDQ2gE44NPPd&=SBQu4hP6V*NIQk@m+8ffyyN|W^Zx{wCKPW*->s|#qLD)DUUb1<6- z;Jrg21k39-!tGne%g($byP_7G(+YAwGVIQD{y9Cj>uwORG%+=i&bCxAnk^O9dNjFB z5C@;+XcVbpVXHGJPL58KD#(_fPJnkq)_y_FL1!k2{aEB!-oo*t+p}N_0LK{ZsqJj? zz@PBTZKuYn7Ft$xGdFp@;A*n?)h&I$)x<4hdgz}5=z&ZlwB#K>p=mHLs;q@*FduG= zM`da<%TU&$D*1b-{2~&vaumkkbX2NcMge6cx4(IdnC~fNmjT5Ku{7CY~$X*AXdl_?a>py4B6*_>Q?D z4YFO$E)o@}aB7su3lZk7B8bBIVLH|y|CQlH>xS(E^BXUJi8Og^>LBsXtij#IUj|<` z0n%8eiRH>hPd>*Blq>E|y!fM$?N#;6WR{1w3e)J@*&4|d%cwpZUgPmDF_aLGNQ~}n z8ut&4#)1}HySl)7w-~-!#Eh0|hX8f}SV$}8phb+3j=-IWXF%9h@eNb~sO8Y}t^moT zU)z3AKlHDy$hL0+`Ni$ocW=KrI{Bd7M~lzh!#$Gl^taKut%Z|5}`nxXtI9uP%Wsnr_&tbA#XsKWpAWSvH-z^EkUGD_=;*! ztHWtG)YuU;11XEW`3J7WYujnq(?Kw3gF5_kPecQ0*)`G71x4zLql(H?J@2&WI%i|# zYDItnu2#h(@?6s;=q7>~S09g$>2_3yWzuc~q?~j0mrNT%mEUBQz{xBT6caXF!$rCW z*|V#?-py4zCv8@~x<0>fT8fl=g08ITy#|S5X6x4v)m7pWWPut?FWX)+`6etw&p2*% zk-OyVMW99x)T=I#D!6i=aSw=%+NuX(iko7ZpwMX5`aUnNFYUeF+1izO5Ypru*N2NB zMG}!tiwCcHrX;~4`Uie2NVEwfR$NEdK`l|ef9bN6Adl1&$l>%1qF&4@_D0Z)Poi~r zC$HVLbAa`~xjj)lvcD&zzPlzLG9pvxki-LsYFln^%W>i~aQDXi7~Gjio;Fw%K#2*n z9j0ysGG;U04CQK0Eys_+{oap1eeA-RIV=a6aUEGaWXViIxze0cn63^iF=z2Ke@8mi z)x=R$Zfcm@l$dL zi zfAjuG6RWe@Z;Z{nQUHU?6vm#Wt{y>URyGoCRTq|U4RVuOC~UjdDtz` zB&<#@(mo%$EulL7@FgOvIGS0KKI(8}wI?Q{cXfMG`7??hZ5w}-kO4fz zKtz7~^>-8i$q4>~sM~X_=8Tz`PlwuCQci{hePvMoPk5U(GDiv2bv&jKPCF?p~g zm2B8Ty@E5KcwhcfUSV%jZ>^ffLNI0}156y@L$)rU_v7KP!>^(VzTq{cu&MDkmpYKxzNvMU8Z^ zgL$&=QlhA#4vF2`D*UCGgx|{0H=zPj)wFo)MnJ}Kh{lu5kbP>{(wX+cx}*toG${r= zIX*)*B3pz!Ov$1#H8=~q+gpM(sZ}Y(n;Xp{uf0>1beJHU@sKu1+-L-@q{g>32gMd1pzrfJho93OB;y6!eT&qBUlg#*09 z5@Z^pj;tMx+!kbSkN~1woGh8kimb?lgkQKhyP?3u@4SZ{gRrd)Xw(SZloU*g5mpmb zOq)TB@UpaqaS7lOc5T#q7JXc~TWmKm=Ec+So*Im^Y^q+>DTo(3-FHwO%14ul(?@#k z3ViN#UIum>+f*m=uXG@B=EC`D!5DtC{R7GYmsTfg3v#DQrmZqVwssuGy7v6lduNzv zYDl=iI`t{__9+=Wl-VUaM50O*&?7?O6bYoD)W+ z05F4!ARZyO(JW-9Srs*iVT(?zIProFBg0UUlExkDtco7N3E@w%cA&;TMrWFVtWe#P z+%qA%UzrEVV1m4T+o2;r1zLa|33h~5%!2gQruY>l`!7=-T0GrlNwR?*5-F_l@=V%C zy=@mMCx<*K3(f(Gd0KJ=FNtS&2X}Y^o||L=G{&Y!&mAHOgJb{YU{_uuTB-RGn$Xip{h=7tRjzO4oVi$EvDohz0i}Q+V zDLWG&0~pWv4}TyD=2$zCq)Ti|=ybDZAs82!6DctEL(=J{gRw*>i-l(bB_t^&F)z*v zTrZ0=v3iY$jBCWK-$sG+`742j=O@Bh3S#f&4*AdjrfSYkFXSJ%X~>0)yh{}4xO09G z*31U5WXP2zG+QPE6+YQ^GRe-)KCU*peMfA?&Ztd94=TmY9DdU2Zow{OiN}O6L{Jr; z>ZYD;0SG7?*em*cymdsN!+F|>#*Jk6lhf@t;}6; zazO-9mAm1H3xJ_C72V}QEps79$j7EDk5{Q6+Ekz|13S8gX6!oC2k}e-_WnUJD{vJV)R`BBU45i|#i!w{~`RUcY(y?%n&Ze)sj)-+t%E$=S)+4O``w zYtSuqXxa8H1e5%NpfDE8C+%QooQI6?hE*kUv4oOduis1P3Ga$KC9A0F~Cv!tB>3hZr5B3`M>)up4OV{_mkDBLid2f&|gqg-3@TEebH z-QNlZ+^UfsZ8Tk39`mC0AEHeMdd(pP~yC#-;y!W3`CfTYjn9P zx$K;Q4@C=>JtqDm|5}Bc? z>w=tspu(^!pv5Q>ri2N)cKP1UUNPOVZx#AvW<@At8iA#o&ejDcgRHIXYPcrc0^eLx zLYy8&enqL(g%4sFKN1zdl}u>2R(^>@wtYBGDD*yl7aW4WG$W~(^zn2bXF#}%ULQiy zBYZ_dTB%R```&1c?mVKOChXqE!DDe+6B!!$>D3PoU;o}~@{<7y;F*7Pyofte2BuDi091Hr2A5Rb|sLCLqA=p{xvCCPpRNbR%SxznLJFG{BWO z#RsT@xwbZy-A-l;{p-=Z{JeDIw4ck%5%Ski{N4su8Kf5I|L1x8QvEZ@{%R?sI%>eh z{1b6L6^g1vEjtp>$bCU0*AqUby0f!QzJ1h0XtdM>khY!0p@Zu}3s?m$Yy_;tWHt_^ zz$Un>1JbaoVpfcWrAU=E^5o*iR{mt_{KEFZ&eGh)`TJAxR0uT?-F4^# zNfCJ(0BC@bVvF~XYyRnoIx$w3?cw8#=@u#^LicCzL78Fc+RVR&=l#Q-*I&F+*2pKq zstMQp*GEMGMSlyZvGwbgCT?mcJCUVXyM(PixYh5`cOI9Nu(Jv)F@#8A8YTPlKn_se$<@Y0JxK2UnWWN_;&_JQ&k zxEK>t69Ohk3MC2ELg?OeqY7emb65M3r$sUt1=;N-{QqAyV_ zq{lTzMQ-S#1IUCwhn3;;qGqObmB+&>Y!gex=pc@wl+dc}**mBLN~BC{S8Pb}c^XA# z{%F!e$$!wG@@B9av`77h!%PZ^eXU3^$6q_ppXiN7<`D{P}qp2^`fU zpzU%KG*#+;fjh{BHhVYEQV+j8T2ph!JT{5?l>r-Opjo($dB2)!}?b#6gH^H%T4>VCM#z=v72j| zx};r&#G@P^f<3!VfH}T$OcBxjlg^jc&W{3SyF}2beGf@d2M=#eiPxvKVSFgrP{q&@ z!mFLOWcM#^e(Ky`DRbe=M;3gkO?mPGF4*Vz7+<$mhDYbiFG5COgWS=NT@}w>gzi1RGO24!D;|LAS z2u7UakRN;yy;Vm|vtwHv2~gWp;s5>3wQbv;iEIs3RQ?G6o2_XOZm>*-F9OE8i+4rH-@u}-ERo_FM@4L!s`>^+Yg9w5S4rq|#U zhzeH~;>x{?flUpMAQ% zz6l}}QcfArGU!>5gd1Cyk)hgp)NjG)v+@9ysMKH?~~+IP3PiIw&~o}G6%h#ix>V*T;a z`SaQh&PR(*~F(8f$OH__-KDnUivf?R{s0MO7VS%qxS z!MY^43G>ctqLtCF(m?z*X6Z?z^wu0A`(X@HmIQ;0O%DO`d~qvynCoyAj<93}KCud? zwBJh+B3-x4-xtRx$tiUR!sH>E;h>TE%pB9nJ-&+@*;Ss))W9mG$YouyGf>BHK2wdz z9+i8^oZ>5yyUw_>CVP-%2&i~DL|a#?H&v`v{1m^kmBeeaZp}~x1%!try)SLGF?ly) z^DG^1s8E`j^=)1V;pX8~Wl#4LFc}A1Q++~Awy2w#0~%tBWyGd3EHF-xuXqF3Rt#he zmq4J{-&hEWam6rV`n07dD#klMpw-8eKg#UmP^l7Qedz~3`()$Qrbcx*lg_gaSLbFF zBj_3CWo$HTt}ZYP@_2}ltB8XcYM&w`?oAP>fsTE^+JiWEvG2`KHfGpE1)EO=3a%C7 z>XBE^0HvJbELC}EQ6<{3y0-9?CBzTxaNko-K%MWIO+{+}!_pN5Wsb0+W}HEM6+r+o zi_AnD#kk(r)H%as)HaNT1PlKpqnt3Xxxt#z8yjX+kubIfy`c3-F<>#-3ox_uVnlwr zoKiBEzRN5K558~}kh$DwY#^d$JVl$e73cIQbHcSSU>d_OVxRfbtdf1vPJ4CAc0&y7 zOzP4Sy(5L(5h4d)l<~NdG>cbI3%S9&E(Qq(pt3kO=|G=aXkVXQ*}}+(A1yob^Aq@{ zWv|Zdqd3ml{8<%9FgTW}@#@-iLW12~QNNE%6ZSOq{LCD&7t4bLM5=75<@Var`rX`7 zG=xlH{N{nGGU=sZoftG7s^9=88gm}J@7rG+D4GcGdFFH@b zn=Jx{7ta~@Mz9H;!EVG(MB=v4t%Xk4MfRC-FdQ~4*`J2=GNzwnCWe@4;d;x^3Wga^ z5k*?%&x=@#3k>E(UlMc_M1jvx48tXzyssanS254#(|_JY+$n_~9YG+G;;d>OO5r*l zgz0mBraOL0Hp89xH9Zucgb}@oDVRkPHqR@3OPpFpJ83X{OrUVN(fkill^Bhek4Y1c zCM~kb^YLvsxw|?oG1w)R&@Y-Xi9P#psop)|(AdCeN<9g72eJk*ePTIL1-xf`HE(G0 zaG%5>h?Gv1v(->a0nOQyAj~zmaQ4^^8fpm>t327-5EZ32R_$zLZ?GBAiG;x3_V)Qr z_BgR4o9Y@`kbKq&=Gk6C#8c{T&QZH_@BJk-PiBBroG6|MO;Ny1eLw3lxNeT@0T=Zl zp=eJzzoQbokusXERgBJ|FwB1FYXaI+pwf1TQBwwVtb9Nq$Wg86#;cbv-oF2!j~O{Y zJCbP}m^J6xK0V6tqxRKJdl6LwGa0TH_ja7%y)0Io(5apmohk) zM@@*US+Mn0(m?ls(O(zZ

^CI#&Vc)DK>hqtO=mqoRt7`Yf=^M0-hU7+FHSRibJM zU>BUEE58->ns8=!)^cn}Y7;voJG}dd&>jLA6r(AC#qulD<-^bRws$nh-rPOdJ32jT zM`-#vbwLu4=*)do#Be5phG5Om59Y*$ut2_L0vNj>CLo}>kd_AV3(kN@^8|KSM5};r zD5`7d_nZOURJoImMq&NyE5+U^LZITOOeed}-sPcWiy20;78Wt4{8EH?AT}YO2`0v6 z>5uGw!6gguZQu8NzlTKecFbpd8t2Zw>XP`O-}y#}(b~AcGkq?4NFEf=Pd2m|6EL}2 zpwxyo_9qR^XUvcw`~Jz|KQ3m#F=Ft53a2kW|Kb1ozx=1a`fvZ*@$T2R`DAgj$0j@z z+a&UADljxeRa>p`>{tQ_6HWfe?Ynl0(#0ihNCMDp6@GPt4kT4N)`0JM?#-ufe)N+s z|NQzF|L6blH~-h){Ov#f`q%&XtKTS92O>B`79vc@g<_}JT14{KqD!QJ^bjfNXs_1AOsirWqAw$(J4ECBp?bjaKbX^n*ryf@Juq z(M@h#0>XdC(5izGuqwas6##_~6~Uw~Fjv?Z2dQWRk!5!4LlZU;bA|r>Fn) zn}0SI;|vkcz)KB)1G!MO;~++G_HgvzxoF#~2M?>%BOxf72Bi34h`vO#xBX`T;@ZVT zAae9kEd^LZk9SLs>LmX1YC7uG6UlYlUQZ-_!xT{3P?c>#ZQ!!JK4*du<7Ps5*s3JJ zBi{nX48FC=x=}$^Xi%MT9sM7O+RJqZ0%#SdIz>n`E!S*K7Y*nEYXAAw*~0Q(4dX3^ zTyy2cv6Gm~FGJ;$gU$2Z9K(ss82TkE81F)NXwUK?k(^O-kgRE2h|-|!0PK(TyG(2K z%_&=mpC$G)?5H$@VQ69mFx}cTESS?PE6a*Ud8>0$xH|lyabk2<^=nM>&eXXUlD1F= zAfY@MMi0mUF<6($=d{As?4yCHjL)0_e1=qr6CfM}2CL(K(9UdVBwPn$#I!MBY~URX zA0D=Lr#qkQsPZH9LB(J$V>tF8!=YQWH)JbviCuKg!7u>tLkVUYpppseoHZhR0&s8^ zs8%9i8v|^j>gpU+fUEgAuD=PZ)U-66U^T*Dq_!ZMyE2(>VpJi!vy;ttv zLu~+nWbOx46^gNR(`jd<*BnJ?wxFN+QLvenk&nb;aAl&>8bGz1N0G4#!25@H-yN;2 zoIxCTq`dmh+r(^|o^Z~?$yTFrQFsE94}kEJ(cuQTT+I}#21xjAe&ylnVPSLONxGDY zwzhiy{_ObMkG>*Z6|}@-oUXw>W;7Wa^@KtYLWFmFLpGc4m@%r(nJHPoebTF1Wj{ki zJR$)hgvlVniSsIJo7Re2{E11PADRd1gzPA<KPvFZTnglv<8qw2Q8o8Y!JQ=V{osBxA7V;RsDFgtIuofs`uBEc&P) z01g+$%>d1f)QOVYM=myts3tVA!O1B;EABy=YV6OB&VhN@%Sl&8F>H~i2-Qu|!IMg) zcI)~8{l<36Q-`YRTZ*Za8qJliG*u4@7lS0+8?HtO3}KrtWIz(pfwf$VDlFEF2`3x* zRb^=ADO_qoiUEV3i^$uNPy+OL-rS0tM5gGn6eMmq|7w zD;;u-#D;6LH5drIJls5Ao!_2aG1rC=U@M{>tRVC+UZ-ABv$*@~r|qq+Z;nsD`|g9i zjo7n-mQmAo`FyD|R?+wN_Eb!1Yh&g8cON&We16#^j!h0~X=*#Ug^CxK9DGhMqZ9lE z4$NiC5D1q%4+q4W)LMNZ)n5x9|r+9?5dQ0TL4^q2;3B9yozcMvD(cJyh;l`Z&i^ruwm%yi-#v zg+f17RSZEpl044~TbsKG%+3uSka{hALs&_&DzYL-^s$h00Dn5MI-!yuW@=~G^TX)_ zoE+?KJlxHnemqxVLsqyO(eggmr>l>xC6Y?0TN43m-G;LV<#TX5ebRf7<^ zKjCaC}ouT+qO*`y5X)yr3?&@TOd_{U%W^Vi>?P7)8kMZOyx z>yxt*^T>Hrfs;PoS`PVTTG^X5K&;;1IRNwf71($>eWv3L`uXXvT$;+ZgRlqgO zacC~WG&kb&MWXx(~_Er+@r0ca~?w043b85s3fBFAV>;h zQEaCCAe=hi3kUfaB(tn^?v`LN6tn^CMh#(vQrrn~cHvY^tYG6ty0a{kV1XNZ3Ltwe z%@+s}{B>sga3?rQ&PN0{tYzOG_?OhC5^fyFMzpOEL!3i%Mo`QgCHCH9P|%|{F3un4 z*5{UWKY(IZHJ?pgZB-xQVsUPWpzZ`ey@NBEEu-rl+d+Un}c8{_>Sc5Wu;xS;K&bJQ0aQH zE+1+rVb00ujH(5@G3IY71*Q<7+V7Njoz1U(LVF8chcf3zZLC^|u%FmJL@4{YJiB6T z$keN_y1%+p_M<@r6V!Z3f3M8GmKcd99O{Uh`$4in0rH)R?pWK33$!Qr5@N}Vq^tEo zZnB@ih36Es;erV&iu?yC0}%@N|K&T>i2V`lfjBvDCgE?WUiW|-PtP%>Hoe)`a&dm9 zU$v0hU?mJ3$x<%G1>1xJ2wLOck|U;CCAgpM@y?c|QQT!BW7?#O?Gq`QoPvTCi)))W zT5y+s)Nb4kfw_Ap0GwZDYT>Qtj=F=0+~!-Fs8dB)FGeN`rhD2ktylUxC$$SrqJmbb z9fpQKo?FQclHvGMK z`GTEl$2^;j#|#f7ssIq`-P~JOvGDb8b9iyL64=OC7XjT2M_8SVgJ@}!mCb0

L8? z&Mi*fB)PCacqaO2Kf5}|S&)<)k*EKU{YQ7cK*XRODrNyG{PxyhFh}*i%saD z-dtP^vEzG^U@<2I=@?t=K&s!MY-LvW(%Q@%NE~}A zQCUfR^(?Xg=4phCwz1D%5Z5X!mYvjOivr}&5+dfwXYj%fkjTag9(07ID`XP&KfCf= z%m;^se**}K}+3UU41-0Q7R)F ze0+M&X~8Dby-lkkPt*h9yOWRQ?{S~(BEQn&*!|MYN=Tfnosb#U4p@-mHk4xDA<^;MC!u?0l5(% zV|@)>Y_Bs06tCl$44bVTQ^PXLg+K}Vpy|YjPHLCrNX=xJXS1DrKOOfmeJ8~B(t}u7 z*ecqDLg#91ts#1d(4H}W(Ml2^#$g>GHtM~W4Qp%X4^CcqkUWPZf*96Ur+VeHm&DcW zRw~>HJ~+}XNC&WOmo!Cn9%>$B*nW1Zye zC)rksC>Zzn2y`48=D){7wJyD+!EoKgfAT?uSa<*g`^^3!o-lX+*t;%GCPeO$xKE*H zP<0E&Hht$`M2-}&ak8MVGM2`dL$}17J{ys|KK19g&5$FkRj6W3J+NwNgxds2LceFq z%<@1cscOt*rSj#~)mJYL-@JVNKmSkv@lSvL2k*Z5?&w!1)1B>u!r6|%t|?j zwpI*ZeGDBNcba!)p;C_XG?5BTYF4`SEwab`gm#DVRJ5;6|y z>zDH8<-ScUTU-18#UK5_FMs_jNf^#@m=ZlFvZ+a(g^Fz;GPd&YU<-h8V9bajL<&V% z$E)7}2*`8*m_d{06FR;K7M-KsZam_W!3RxV6bCxtGBtvc%S6}n#~V{8yQv?EUGcxc zL4zq$C;3-2vsA4!x>mMJ5NYNmyw01&qipZYaYI&p!6a;xr7^i`O7&8QEYx9k3%){7 zAw8z&vOP?C7ZAs_N4GSGtIJ<~uTVJ%HW=KRPl5MjmI|LV3o8pcuzz&b_AC`gHSyp_ z=oi7RC8zWlci6BZbs5DSjtF1(`K^h#5FsSea#qEfv?X=c39HG`7<27JMm>O+>6z^6 zg`5UA^(V~Yj@W*DOv=Hy6?vHqprHY3m)41VG6{xM8Q)6s`OJ; zC93kAU{&oJG!ar7j?uUV$HlE@*y~i0@^=O0JUu2-Mm(L8G1z7&6GQDO;fNSb=Yrxe zujDs>yV`w=sBo6$gY#Mwnzu|_ztUj<5DJo7n*V@9h;e0+IYd8po*B;rV5Y_tfINTW zEr40llGlR!=>Z(kEgEHnw zS%=3W009&Y49GE5Ajau(dmCgD9(DBJGBK){X)f1!MFDT_Y!VM5c_zI3V(;+vp>*iC zzkO#Kw)X@=Cfm?m9K{m!kHXa}PEAQ`aATY($H*3lA-8ciI)MnpsMcIVbguZ^3Qy+x zRHO84fnkLz>MIH`1N;z_&-Z7y7az~L`M3}Kpvkbn=BEq6iUt7(oH8V8iCL@x{^VHL za}CI`$>`;Xf(;N)fZMn`!(hM%u|!ZNV>Cjnt8iLh`Y_`0IpJyW&B^-K_LhUawzj8V z{kGazhWJQu!5!UL?9))A((e2q zkg4JdU*o9s-4JN0EDUA(zWaVq4>bp7i_2z}8NxsYF%7dO0J+gs%_um&I)&XRTM%{kOS)%jnn0_`j6*BJ>^URg<=$U11%%frf3 z7M8(nyL&o$cX9geqLAinlX+BY-6RzBmZb^NnMQIiB5resVwx+MC4a>vaz2brsm zG@Jq1Q+79$g;;aIf=<(dSoILSI2U%*eQWXL_<}wHB-g+S#BUUp&6H%W2~4nO9P+fN z6NhLSD-F9qQ@glV)%IC}b!lROx820=OQRLNl4p;mY!kE{jw`OGss~tgXQ#|FVD}{<>EUdv6Msq0cJ;7N5_jxSK=9+0~%xC^qN51OQAfDZ@}xm za@GXmvnOW+DiUgA%(-9w)2}aV322R-ykpjNp~(<#B(Gp=N=Y{deiScBEI0~kZN;YE z7yJ8rTib%fT07WErGAb#Vj7�eAOxFG|fll}C<{=%*1yE6t=M(CTEP!g}+`h^+Rv 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 iGMf~bRfXx1{`#+sc3Qf_9fBR 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%0DmxHkUZb`dDh!q2`*SjxvCYy@45p^iVil z(5#+gJDpu0BtU~eLp9&S(61$VBsA=4BZ!ts45nrM2gM?ev=%PI?8%P)$)d)SA*&dn z$Hw8!&JRZa@Ib)IM!kV@7e=(4x9HqCiRe@07{Xc?O<7Y4oMxy2kc2O~h%h<)$qG<> zT6!)WL{K1cxPWhfYCe`XNN4B_pM&cXkJr9MpDbwuvbc18?jQ^DRhvYB?ewk@&L9CQ zdU3G;?d8YI^P}^?gXM`EB5UL)lP4ZgQr7%xEuZA_;M|^EKJ*#@EhxS;7jlE|Hv*rz zB(wiqK6=5qU_`MR(_62w#t1IN(aTaz$*FmKfYsHl?ajx>iLTt-9&j@_WfZNJfKs<< zV}NWMT}&VjK^nHXz7c$Tge3e0J_}(@gH z%!&xHd>BZ_FyYQyAdOF4;GLzIIsH3UP@n>Qyn3AH4O##>b0b@ms|l+@%Y8H4He*7( z&*9i0gIK#;3{}7i&5(E?ie?a0{27J7Lad;rHYP@lIbF0P2_d-V1Hl5xe=7O;$==hV zA$sPj1*d3=Z_jICLd;S%O^hgNE*7>RLtq3&3^Fz-0bj@lR~Mq4!_C8F-I#41wv|CB zT!Z2pmXdmk^;Jdt)@3FSP78W3+})CjMb$U$0-51bU)pSVsTKJz?lV@db z{KD8>#=>=EP$CSPA^=2{e-i?S{VgRDx)+qYr{0}oczbJun^jm>cKx6ji101R3RcK8 zJy$M8)kfh?Vvl^Oyi3*D>WU+oah%>h7z2qtI0wKks=~Y`kXjtN5h_g}%&}@c=i=zv zG^Mzem#9<+Fe^kVTr8)wF(KUd&_RT%P@h#gaH(K_FirI%d=FbnIRR&9CpP0D4Q+q^ z_`m<(&)!`j5Ih>~;cGRpoxZamM@j%P?WgR{0huiNx!w0Z&w0+- zVdb^<+G`&j9PIAwK7Qxzw)qla4#~Q?_6!aTij8^zbehPRLl+YqX@63T#FNl`#g@yhMCBq;O1`@)Kr;vH6-h55*4&!h||+p0s|wj1ZB69 zXla4Oh}4Jy)=V~{r6MMHdcqB9Ev~AO`8%jB(MLsT3-93uFI4U#^D!RxW%AWSQOHb7 zQ3+-J4>?x=MMsfxM zH?!E{)6iDkkmj@=(comGw!IA4JWF6rV&6yKS`=dJC{;#anI)^5L_KzT>rJWiloIQe zeiFbQGt+U-ee6wBXV0ba;zNouh9_SF^|BF zi^$dd{X+m45Uqv-Qzqg&j-=IgEs(aDzXdq>y(`i{y0dTia&G438kpFs7Q6u^4S1tp zL*qhD%SYw|2*$=Y2*JbsJ33HIHt>N9%5gTBH}26dk_+$F!UnFV>slO2Lg2+QuQZ2$ z3jnL?r}Y1gwXG*l9??k!d1jsZd471j|LWBqP)kupO5*rV*>eDfnnzxlM2S~14_LCS zRP~{#feftP`PHo2(Si`%Cd1`PR*K}-lIzm)+V+N`TlXFRsLs#!*5gOJ4~JJQAw`?G zhH?djNP>5KK4Uj9Vv{`dXlv_F|NZ~*NB{C)VrTvWoG`o2PL4quR8XucB4Y7$2~a~E zc7-fxsT$tJIns1n3vty+6#L0u0l`%58zTVNVkW$XFmhrsFHMMMa%?Iiq-F2~A5N6k zPfkv>2OvjBM^q#_MhKBjDSTXoyuKU^2Q;aVmupiEE_=IeKZQtAer-|h;E?{niohu? zpwrIAa=@15ZVg3yrMFM%A6b|r4FGwZWCv{l<~k)i3v(jn0?f=|l8BXHiQh9eCp!Te zy&_1Bwe6}E;YeH0Mu_5IE-`=@3x8>SUZdoV8-%V=lY0Qr(7*?#0gLOY)3~aL4z|g5 z&jc8ji@~Ho8#?P`_y=Z#AKSo*@iI7)668ayMOjA3zER{vs*SZRr%dG4R8ML%(i>E zD>ekk_hqP6IaD}C-g-q^&E;?#{nJ z*U;u^gwe;kVZTB$G>h*zBO0#e=QnoN2_>t4w&$pwC0?ohIh7!71Rb!V`|y{gC{_@C zp`NVBPG_qqUE+Mx(u#}^+bcKOinmn+M3sV;+gV75`D$tw7L5R1@GM$HK@cMgz!q0E z6R$6hE-dRADR{KZor>vT6XRaqSa|FGt<9~KOxBeLq!wJ<&E4*uy*Rr*TAo{00v~ea zY?zv9(}|rU6x5i-d=md4$Fg1~D#g9AA_$8Smtpv{fcTw|{|@P-6gSQd!yu4p$ zLoGhu-dt{r61yBlI`5KtV5F~cnFp5@bk>!47d)6D$pC9eW@zI0zhQJ-Qoxbf&21!h zg%*Y9q}pKZN!+Cf)jA#8f!Q!4m_~ObpGY(EGNE5yFLIlmSL&^OYdUU?(6*JqLxWF5 zJzN=N2FL^PW1z?TXG$&6o`y%j8PcF_0S=8MR0oCBlwb|fWG)tf;bL=pRVo(<+X+oF zynOXi$=$P8SAXl`c9q>^n|xlb#WtMePXYfEeMGP5=wDzHs- z()<-K0u2iV9;E~R4hJBa7YV<4nU*eNn56bFjK((+&(|;SvjPVM5Ycpl-zkVbG0WhH zk&?v=#8xexmn53S(V3|%x{EMkNeG@UHZG434qv@|wXwEwd3}gcAwts*Z?viR-S^)5 z@WT&8^sP=h8<<6Ve0=oit;bKFzWs0i@ZVZo+uYh>aQxXH|LO6ogAc#;;nSxNUq63- z)K0i@984#=sfT!_&WR9x*+;t%*`WrYk1_IJpGRUz*HJ=?P{Ly?*u{XXf#DFIHAjNb zaAE+PL3BFv`X;YE1w@7{%v{*8e=849X_pqeGjk$=q5d`NQVJ`=MbU{3)vEjrcviHs z{`29pY?I5NIKa_p8yj?16`O%_=?%r~a;>DSneqi)+zJb{!^mLLYBH2nI$>tC)8??$ zn})DbpvXkdm>%QQt1JN{Lj%U);X}|cQ8;r$w@u$ypT!Zt{U1kF>KC1UV>nz>x zgs+RzbBo6GDx&MQRN(9b%gUZ3zQBXBVRhpW_EaJ8V!HFk&gmW%+KDOsRzfh4Ar#|+ z>l$q!#b6@grej2g6`_uSC2~0@Z=^<-cuBr9Z#fv*?XQov}VDbf8?a@I0$yQ;-T?M`bq>22pXsW&fKMAJRX`*mq!RoD22>;Lb z|Kfl7-akEf{fghGQ!yLM=))jrzby@Nc6MytT(YDTGQGiFs$Fp~J2?3@EIR`zkEDIW zceiICt{=o>E^)Ro8`qeg-!YN!CuasF(+sEs(ES2l>@chZleez`pDX**SN^@hRBvHf zL6t@_@P~FxAI2T&}1hfQ_;-7v?vZVN8v7SZ4>2Jwn<;r5aCsU1ND(R_*boJH_xd z#HR4Ldzi!z?5eor*Htc0DDUcQN^w5DEQH&)JgQUN%5aY%N>L5^c{9A+Z`-3 ztq8G*jxCcGGd!>&$(>om7PNC3@n`|Wu%4YP1U``lFQ{0Y4&Yhy9&F6u=6NC)2jq1$ zUu3hoy|%Htfqk3xs$+d3qj=Z zu+{1yL{)_zMB5RP;Aw=&(&9ox5Mzs(@=6ArLo6sokRs6Zs5^`n#2N#-OT5>`SZ(V) z;u;mS$ypAkT$zpSb*5f*Oy_L(^jK@!2oUia5HGjk8JX&?=V}bj^YDu|jYJqna2)Mr zzp5#uuiN>1HBR*E3J0>3_}d2#&=o2=JwDNd7=e{f<0PM{95Wf>SuCSN{cg{%PxsDj zX-yv+DSSxG*HNW%+kv{i#rG%T72(He%(sM_Jo#LK>$R696f^E6!fh*`7+W3JlGepJ#Xhtz*1=zv6%g$t&!Bs}bvS zJ4+ANO3-3}1U#LmS+N()fj+_@NA%^VkNHAnf#%3FpG@JjLr!$X`yj?zjS&p#D8e>; zXSm2H6NIYJBK%7LE~f-_Xio%#>Y|cOR@E3l6UJ%Ped5Oa#+WXqHG!zDAFs#w z`@h2hX!yVO(#oK6^NPf^+2muW_{+t9O|Lg|?}Mve6KuRmUQ;kbY6BF-9Mii?SVBMx z|6bp$?eaUxkb>euYoGn{*|)#*AzzTgy0yJd&!61gZSQP<`@6rbv?|A!JaINSm-my8 zK53_y0^DmGuU`MIKq`uo`hBL7vm*R zvH-ps@EA6OpcxJM(R8zNeUZ|_*F#+>t*zugBrYy1jluk39ZMQzOQ^f2k!9b zC>wEQUYXuAi{Pq2Al5<(;z`-WLkKePqFopD253q9v5K12GTVnDhfQ{8y3M?w?~CZL0h zuuGr)r+hdAVmIT3%rp@-7(AB28U-w=&TL0OK{IWW(v7K+ZPF4t)9SnwUqM`$7~54n zrJxFFfN9OcYTMcAjZjK!1tZgaWMCI;Yg8Ifh!b{HW}q`o|43~O>T9yF-R9(_gyXNO;W`RuQL{FCQjJVS6MAZU7Yb=b(wcEC3}44j~C;?Tmb92-C@-n?L4 zfP;t*fMrF3+$u%4y#wAMR8G-Px9-&Kcp%!(*^gkjM}G;YCQw_TP{H>ZjlP z{onuc^Uq+P)q*e_w8!MMP$mHfCCyPmx3)N+i1e(jD;~Pxh#A+94i6;Rpkrz{W`~J5 z7bpUbNf^&i?K!yM)6Z}hLtE?~dRb^-?-5ZTR6V%^o^mVIdw-UD%wjWNkvE;h0d!Yq zAe8*Aq-`J?JIJTsQC-Gy26Um*yNfxAA(%nnA8sw<8sw~P6c?Ar=eH+{N8T*1tEeIK z7ja3SWkE@=MKYq55fZA)|I7rEedLtQ0vW<*F-rkJj8X1YmR&RNDJCu|nE@vEiP5)Hcrq~#PMz_u>Hgb*Cv-P=( zL{OorC7b%P)ij)CWA~SRa#ae4tia4)XtizbQW~@Hq`k}Iz|Mq)pknITyRi&1lHXWM zBsipkFSQO1EDN6-l_zjQ%9|_R+J&Y7-Z%$LAdqR`$A;{rt8YCCQISV27>2Df9rnY+ zBp;DRjcAi6JnDc=cxS8tBL&2Kp<-accoKf(T~o5%vkhjhJCgy$6rgANuNNC)d`l)f zIXH%Br;^Fn>SP0XAZ!-&?O?s)3sw8cfgLAB65*^Pg6{R}*Ms%QkYpg^0R_dFQd4+* zg(-@I^Lt7k4G8YZ9kt7J%5*2eqHjhLNs_PEv%m-rT2` zK$d$P)XGU{o|)aW*-mZsvH6jz(}MB4386qn;#CA^MJaM?xu?u-eYwJXlqEl6u5wh2 z2gzlKt4(azxCX$n^;+YE0&j6)7Fqm@-f|pZGoJ2>XI;&^h(UDPEFs1HsK>{Y1Db&S zd?0T4Ob7z!X6dfU=Hs@0X0C_{$ql9dRa z92==o^d|2>iW8hV;{;bN3Hrh6;))eovHw=3V(aBu2QJMv9?}dSGBb$O)s6Y>#Rty% zjY3Uce?lUVo<$yAIe()xde)?NAOfkw8WRSmWJW2K<}9YneiXsMLIp+Q*=8gp>xE$9 zIwq88SRQeHlFMWXXQrAAf;2FoQ|0=(GS^O$v}8dTBE|Y5fzu465DimyUfxI4sRjef zUdoas6uZ9&AJ@|hBqY(mwG%-*8>?sZIKp>y*V+QV&P1e>AVy_lUc7i=TgOj-_^ZGC zlTYv4-Hb$qjwn%kdS?`+wB=W#ze*vtaBMtU+kUbkVxs=fqqnw{SuF}IF?PyZ8<9J+ z#yx+B0}z;h^Y!(GP=KYprW=MT?fyQ0eOKRwimw{-C79CC3?3Bbn+&7uX(%g2gh~m! zw=#p-_M23cMC6xyul5g*zWd>a%a2#!ZFzp>)ytRfzxVbxK6sBmecm?VqtAZ!OYYe7 z&p(&9fPkFf`;B+rJ5m|u{^lS2&fkCct;aya$70;r4}cE#U%j@Om}rs(VGN}G%{ZJ5 z#|#IqN&NK;hb~EGm=Da#Z#L>MIT;9OI!oU&0$MpeI8qjo=V*4?6>br!-M?}c!JaLZ zU%q;Mc(9KI1IrLRi4!P6J|oB4r$J9yfY$twBZ-5J32qAwA|Hiw(BfYbQh$BILBww^3r01faLeqF| zEJkA+a@C8poo>^dhulRDBlKi)QIphm{g`!w4&}yB=J&|S_N;LtAb`n=zb^6AqNgw0 zPK^VthS|jI+!@O(E6aXk-gEK66UFI)Q+&vNrcxy9Z|cP;0fS)&ZUHJb(1ng%Nhl7R zyNJRFK{e9cq{c8_+KogTm??qOaMfG{pIoD%Q2;Bw=4a&mh!19q54EQkw}4od-dId9 zDc$OT_Tu1zkFJeQ?85W3MIT0asA2<@;^NZw_SV5`=PdS(u9$ZK5!U_Zjg5S3jSy2% zX!77Gx(+@7Y8+lb8#?apcOGp%+}TkW?9rn~J6k(X9zA*Y-FLOG4g&zJTX);oP|y2U zpFi8%-~00AOGIn5ARx=i;;4?%5ckkfz;e*w5Jvg{vH^j}f}9>OG-i}Y(Q$+2=g4=z zowto=R%)Vf_rsk>@4fY8U0`fpnFsnOXq0(T0TvNZl7M7Sg8%vd`N#j_5B}g+Kl_Q( ze;FeV-?HK-1YjG({@(H7{*f)dAYmDt4)pK%=)jgLE`U)G0>Gq?N>4a+Ot9eUTJrbC z_SVhb{@^bIMql8SW?B_u&QE6+|1*jYa&&cawX2B$rM-rC`7`Hc=W$e5|74+t9 zo&!U6wjHb|FYNZcE7G&hRZ!@GtzGc@ZZ4w}C1}CQk6mBW&XeNw483Bk{g4}XY+rea zc1y>k1}p^Qq^+^mKq|G9CxbY-mW=Z|{-Hi2HY6&d9iZ+d1zFqIZoEKe*-w0TcXZ%v z#A~clf|H#*%uHK%Y~sI^-0J+fj zyv?lLV06QKi~+qk1MV~hxV5k#nJ1hScTb8ZB|Y6tO@xSOI({Loh6IuIUET{BInZZ0 z$k7~jX|Z-@Ws^vhvzlarkSDZcFs844og4IMOCuw;BEK;>Cti{Ux*8lO2`bU!3lT(3 zj}1<|)-oeXn>oKY6cMze@(g%w7@KANPv%ta*}bFgxoy(!0gN5hq{LaZ%nmkji|0t1 zp))EB8mxYRWjI3aX@-QC-euqU=y4GA8^27VPr^geE%QYWmE=arezZae9~~Y~AmVQW zaJ3x~88js}2k6GSfsrB6%%?o4*~9&P)v(Ze7R;uEYyN+N2)vkRVnx8+o3yIL4)uE3 z{csI@NlM@&5HKc4fF6iJ)?iEveV69W481`%^;Q5;DmD<45@Dj%njt`)Bj!{@_Ac%X z?~QgKC%T4Vv+z;0+T`23NxF9dY^m3BzoVkUdElk^R2v?Er5H^D0DlNoM4E5-ns~?y zstXv>K2?iK5)$JjlB?rRTAZ7E`Q?}D1`FJZ7|boPo`)ae0hJE#t`|tza$nDm4^QAi zm;Abw;Uo@HkJ{?;qhrHpf@X98ynyL@Y|eGne@bHrley) zt}F%EAh0!eFJV{?n}sch`wnZ^SmiIx$kcUo@lg1XJ8+N?9tRbpJcjng`RU%C%ITuj z)VttUIr~92$~TLn()~;ND)d@KAylX2IytWFQ%1 zAT|zdyxxC(Xdr0wlG13^xgbCom34S|ZSmDvBLi_z=>RY1y6URYvrEs9&yQXlUmjgw zov6Q~PYh*x83#~LIlzfgfpgN5EEtZ#{uf7=r@$b)2)Q!}TlXm>$0$N3R+&W&!k@4L zyW+v}^1SmL+-qKYhP!`c)Ah$ceEuK)%}-BWR7*70CW$y2u(Ym7wun#Lx*U+AZqQrb zc(@=rU~Xn(V`Y8AuI&XD0P_s(NqfxFSe7bV6z1=60F3BwdWXSs*YDprh4k64o`3QD#ryBRV^LsdXLomd z`}5B~=U^Sb-V??D)hC}Ht7Ln8%q4yNXq%rW3-rDBp03$ee}8|l_gaZQZ@&2ab9N;8 zj<Z~A2@g{b z{X=!)w|RvhmzM0=z?N(4f+%bOM>zkl0etZ3OTVec`muW&EH z>bje|(n5JF3k|B_WlE=pdQmOq7L2hCM7Y6s5k28TQy|UcTfF4>4Jw?HMYyiONL?e~ zs%{T#3Y<{$=?NUAC&m*(^m37W$6O#o@EIx^8l7sXaTzULFnFb|IRFFC5Ic>k$+~W+ z4Vt}1eJw1eu5Rv>aMdPFFj^X|wH?{sGOCV;lRR*FkHi6qA(AMJXEse!` z%G9B!!{WH?tNLp2-ufzVjG(W9qLrw@IOAkCS!FjSIyQad&Wy{mimsu8I3;1NsRAd^ z#;&M`&=mM4X>G}(bes&JYR1xnShS7?93Y@&ZoShTXd9q#V9m1Ei_*QZ&n6rh6)tsA zNbN^I`f+lZ)MreJEVf!&K-UB(mI?G;kTN2j6RfFT<2N3w#py_CMXSqI!K&Ei&O2{E z-r0Eg{=4sg>pLGF1vxogSSXpXy@w(e|lqypaT~YousD ztGNKBsdQl@QO(!!HvgOKus-XgwB*ohRZ92@+?!a543R(UW_gT^YfI-O z)BWO%5Pn<7&2$KMvjISDd0k&z-p?*k(fS2@`%c&gx*#J_FY`c~CNaUoBd7x6+(OTgt;B8NEFt`Ew5dnk35mt~bGUfac(2G;5rk18E6~NP zgt<4Znou`)vaeB1B21y@=$2T>uJqgY{zKNV*ZIk5u}GQsYMLaqVE?%|*Em&UaIl(( zQW{N4$&gJ&5xI*-0|I`v9^Rs&tQCHdW-&i=TpwU%kmgQS<4`it>dJc1;0(mSW`UJa z3AVE4STPDxqAY=e5iXNOvn!bTPMv=qOE$$~Wh!J)zWwy+=ISP|BpS;+un+2_jQ`o0 z&DDp@C~y%b5bUtb=LjY^2Y4vEX8K5B7ya(2)?25|lLa&zG3;4rJUWsPS!iKq?qY3~ z{OpWgfvAE%W5Errg{fpzWPNjQ_Z9e3(?JoywZnMlFeY1^W+1k#FrgG3-16Y=Kux6M zL*XBZwb<5d?JGVx#whn9EYfF~q)ca>MAt%95J~Wm`mpx#%IRk>_fe%q$%juK;teqd zHp0QHJ-J|t$Zm`(BC_A!c?bA;mbbf)cSx(VL*=8@lvRAN+(GC?piCXrf$Y;QkH2lm z{ln95Xe`uC6U!6~SY7%0OVnpcYUHb4Nw!d-K%_{iZ=5blZ6`Z@X=U7Li$zK-?xh&4 zW7(+ic>D6xU)bd(ankKXMha|*HjpDLBbTA1$zbBgZUNB4m~mTpSH5`cQV5I)VuZ@HVyHpI z!eU2&%|Cwk(cUWyvDNJ{0pk%AhT^b{j)&br@wx7PbkyU@3W2{Itzrg|hxX{IAQN5+ zpA!A{&ekH7K3H{W~jJrh*q)9|c=sl^Ekzx?d8Pe1!i z-rec3awJZ!AmlIU6>6#-e&B>g!X)emAkfr3An2uWys-v`vdKweLD~^d&VY+l*Cpem z42W8e{O;~UE5VjJ+2)>2nYQReN>Ax3w>vI9^G`pKnq>9d(Ay9vh7|B; zcr{B8mfXIuct(CZVTMhR0lqB3AVeD&31c+HUYF&~uor1)(nAdNy!3rQW?<{TS;1s; zGmZY|E>0Il-dC$Y2`J0SeU~4bthVoJke12EWq^rbTp?|IP2^}BY8X+-qwxrgF;52J zxd%YI0e$BHWVIMfR^XsNY96lD4L_9*b2JY@q=fK301gIk;pmDZDL-zhs`Y+R}|xL�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 literal 0 HcmV?d00001 diff --git a/port/ios/Assets.xcassets/AppArtwork.imageset/Contents.json b/port/ios/Assets.xcassets/AppArtwork.imageset/Contents.json new file mode 100644 index 0000000000..b3cc6df47e --- /dev/null +++ b/port/ios/Assets.xcassets/AppArtwork.imageset/Contents.json @@ -0,0 +1 @@ +{"images":[{"filename":"AppArtwork.png","idiom":"universal"}],"info":{"author":"xcode","version":1}} diff --git a/port/ios/CMakeLists.txt b/port/ios/CMakeLists.txt index 5de508f5dd..2f2d144c8c 100644 --- a/port/ios/CMakeLists.txt +++ b/port/ios/CMakeLists.txt @@ -1,7 +1,12 @@ cmake_minimum_required(VERSION 3.28) project(HaloIOS LANGUAGES C CXX OBJC ASM) get_filename_component(HALO_ROOT "../.." ABSOLUTE) -set(HALO_BUILD "${HALO_ROOT}/build/ios") +if(CMAKE_OSX_SYSROOT MATCHES "simulator") + set(HALO_BUILD "${HALO_ROOT}/build/ios-simulator") + add_compile_definitions(HALO_IOS_SIMULATOR=1) +else() + set(HALO_BUILD "${HALO_ROOT}/build/ios") +endif() set(HALO_BUNDLE_IDENTIFIER "local.halo.ce-universal.ios" CACHE STRING "Unique iOS app bundle identifier") set(SDL_SHARED OFF CACHE BOOL "" FORCE) set(SDL_STATIC ON CACHE BOOL "" FORCE) @@ -9,41 +14,49 @@ set(SDL_TEST_LIBRARY OFF CACHE BOOL "" FORCE) set(SDL_TESTS OFF CACHE BOOL "" FORCE) add_subdirectory("${HALO_ROOT}/build/android/third_party/SDL3" "sdl") file(GLOB HOST_SOURCES "${HALO_ROOT}/port/macos/host/*.c") +file(GLOB MBEDTLS_SOURCES "${HALO_ROOT}/port/third_party/mbedtls/library/*.c") file(GLOB MINIUPNPC_SOURCES "${HALO_ROOT}/port/third_party/miniupnpc/src/*.c") list(FILTER HOST_SOURCES EXCLUDE REGEX "host_(main|loader)\\.c$") -add_executable(Halo MACOSX_BUNDLE ${HOST_SOURCES} ${MINIUPNPC_SOURCES} host/host_loader.c host/host_main.m host/host_controls.m +add_executable(Halo MACOSX_BUNDLE ${HOST_SOURCES} ${MINIUPNPC_SOURCES} ${MBEDTLS_SOURCES} host/host_loader.c host/host_main.m host/host_controls.m host/host_import.m host/host_orientation.m + "${HALO_ROOT}/port/macos/native/HaloMapDownloads.m" "${HALO_ROOT}/port/apple/host_gl_diagnostics.c" "${HALO_ROOT}/port/apple/host_graphics.c" "${HALO_ROOT}/port/apple/host_debug.m" + "${HALO_ROOT}/port/apple/host_metalfx.m" "${HALO_ROOT}/port/apple/host_shader_cache.m" + "${HALO_ROOT}/port/apple/game_store.m" "${HALO_ROOT}/port/apple/xiso.c" + "${HALO_ROOT}/port/linux/src/posix_dtls.c" "${HALO_ROOT}/port/macos/host/entry.s" "${HALO_BUILD}/host/host_import_table.c" "${HALO_BUILD}/embed/guest_image.s") target_sources(Halo PRIVATE Assets.xcassets) set_source_files_properties(Assets.xcassets PROPERTIES MACOSX_PACKAGE_LOCATION Resources) -target_compile_definitions(Halo PRIVATE HALO_IOS=1 HALO_MACOS=1 _DARWIN_C_SOURCE=1) +target_compile_definitions(Halo PRIVATE HALO_IOS=1 HALO_MACOS=1 HALO_APPLE_GRAPHICS=1 _DARWIN_C_SOURCE=1) target_compile_definitions(Halo PRIVATE MINIUPNP_STATICLIB MINIUPNPC_SET_SOCKET_TIMEOUT MINIUPNPC_GET_SRC_ADDR _BSD_SOURCE _DEFAULT_SOURCE) target_compile_options(Halo PRIVATE -O2 -g -Wall -Wextra -Wno-unused-parameter -Wno-unused-function "$<$:-fobjc-arc>") target_include_directories(Halo PRIVATE "${HALO_ROOT}" "${HALO_ROOT}/port/macos/host" "${HALO_ROOT}/port/android/include" "${HALO_ROOT}/port/linux/src" + "${HALO_ROOT}/port/apple" "${HALO_ROOT}/port/third_party/mbedtls/include" "${HALO_ROOT}/port/third_party/mbedtls/library" "${HALO_ROOT}/build/macos/toolchain/gl" "${HALO_BUILD}/embed" "${HALO_ROOT}/port/third_party/miniupnpc/include" "${HALO_ROOT}/port/third_party/miniupnpc/src") if(CMAKE_OSX_SYSROOT MATCHES "simulator") set(ANGLE_PLATFORM ios-arm64-simulator) else() set(ANGLE_PLATFORM ios-arm64) + target_link_libraries(Halo PRIVATE "-framework MetalFX") endif() foreach(NAME EGL GLESv2) set(FRAMEWORK "${HALO_ROOT}/build/macos/angle/dist/${NAME}.xcframework/${ANGLE_PLATFORM}/lib${NAME}.framework") list(APPEND ANGLE_FRAMEWORKS "${FRAMEWORK}") target_link_libraries(Halo PRIVATE "${FRAMEWORK}") endforeach() -target_link_libraries(Halo PRIVATE SDL3::SDL3-static "-framework Foundation" "-framework UIKit" "-framework GameController") +target_link_libraries(Halo PRIVATE SDL3::SDL3-static "-framework Foundation" "-framework UIKit" "-framework GameController" "-framework UniformTypeIdentifiers" "-framework Metal" "-framework QuartzCore" "-framework CoreVideo" "-framework IOSurface") set_target_properties(Halo PROPERTIES MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/Info.plist.in" XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER "${HALO_BUNDLE_IDENTIFIER}" XCODE_ATTRIBUTE_ASSETCATALOG_COMPILER_APPICON_NAME "AppIcon" - XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY "1" + XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY "1,2" XCODE_ATTRIBUTE_CODE_SIGN_STYLE "Automatic" XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS "${CMAKE_CURRENT_SOURCE_DIR}/Halo.entitlements" XCODE_ATTRIBUTE_ENABLE_HARDENED_RUNTIME NO + XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC YES XCODE_EMBED_FRAMEWORKS "${ANGLE_FRAMEWORKS}" XCODE_EMBED_FRAMEWORKS_CODE_SIGN_ON_COPY YES XCODE_EMBED_FRAMEWORKS_REMOVE_HEADERS_ON_COPY YES @@ -51,8 +64,30 @@ set_target_properties(Halo PROPERTIES if(HALO_DEVELOPMENT_TEAM) set_target_properties(Halo PROPERTIES XCODE_ATTRIBUTE_DEVELOPMENT_TEAM "${HALO_DEVELOPMENT_TEAM}") endif() -if(HALO_BUNDLE_MAPS) - file(GLOB HALO_MAPS "${HALO_ROOT}/assets/maps/*") - target_sources(Halo PRIVATE ${HALO_MAPS}) - set_source_files_properties(${HALO_MAPS} PROPERTIES MACOSX_PACKAGE_LOCATION "GameData/maps") -endif() +# Game data is always supplied by the user after installation, never bundled. + +# License texts ship with the code; retail game images never do. +set(LICENSE_INPUTS + "LICENSE.md" "port/macos/licenses/ANGLE.txt" + "build/android/third_party/SDL3/LICENSE.txt" + "build/android/third_party/musl-1.2.5/COPYRIGHT" + "port/third_party/kcp/LICENSE" "port/third_party/miniupnpc/LICENSE" + "port/third_party/tomlc17/LICENSE" "port/third_party/mbedtls/LICENSE" + "port/third_party/zlib/LICENSE" "port/third_party/expat/COPYING" + "port/third_party/stb/LICENSE" "port/third_party/smaa/LICENSE") +foreach(INPUT IN LISTS LICENSE_INPUTS) + string(REPLACE "/" "-" NAME "${INPUT}") + set(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/Licenses/${NAME}.txt") + configure_file("${HALO_ROOT}/${INPUT}" "${OUTPUT}" COPYONLY) + target_sources(Halo PRIVATE "${OUTPUT}") + set_source_files_properties("${OUTPUT}" PROPERTIES MACOSX_PACKAGE_LOCATION "Resources/Licenses") +endforeach() + +# Ship the same app artwork as a standard PNG for IPA catalog readers. +# Asset-catalog icons may be Apple CgBI PNGs, which web image decoders reject. +configure_file(Assets.xcassets/AppIcon.appiconset/AppIcon.png + "${CMAKE_CURRENT_BINARY_DIR}/AppIcon1024.png" COPYONLY) +target_sources(Halo PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/AppIcon1024.png") +set_source_files_properties("${CMAKE_CURRENT_BINARY_DIR}/AppIcon1024.png" + PROPERTIES MACOSX_PACKAGE_LOCATION Resources) +set_target_properties(Halo PROPERTIES XCODE_ATTRIBUTE_COMPRESS_PNG_FILES NO) diff --git a/port/ios/Info.plist.in b/port/ios/Info.plist.in index 3b7c11869c..0537fcdd4b 100644 --- a/port/ios/Info.plist.in +++ b/port/ios/Info.plist.in @@ -6,8 +6,8 @@ CFBundleNameHalo OG CFBundleDisplayNameHalo OG CFBundlePackageTypeAPPL -CFBundleShortVersionString0.1.0 -CFBundleVersion1 +CFBundleShortVersionString0.2.0 +CFBundleVersion15 LSRequiresIPhoneOS MinimumOSVersion26.0 UIRequiredDeviceCapabilitiesarm64metal @@ -20,5 +20,6 @@ UIFileSharingEnabled UIApplicationSupportsIndirectInputEvents LSSupportsOpeningDocumentsInPlace +NSMicrophoneUsageDescriptionUse your microphone when you enable multiplayer voice chat. NSLocalNetworkUsageDescriptionFind Halo games on your local network. diff --git a/port/ios/README.md b/port/ios/README.md index 9dc8f972d2..235dc54a73 100644 --- a/port/ios/README.md +++ b/port/ios/README.md @@ -1,203 +1,71 @@ -# iPhone development build +# iPhone and iPad -This port targets iPhone 17 Pro Max, arm64, iOS 26.0 or later. It uses the -existing game and Xbox SDK inputs from the local Mac setup. The renderer uses -ANGLE's Metal backend and inherits the Mac vertex-upload and occlusion-query -fixes. The first build uses the display's landscape aspect ratio at a 480-pixel -internal height, scaled to the native drawable. +Native ARM64 iOS/iPadOS 26+ build using innerhat's signed ILP32 runtime and +ANGLE Metal renderer. Both iPhone and iPad are supported by the app bundle. +No game data is packaged: first launch presents **Choose Halo ISO** in Files. +Import validates supported original Xbox PAL/NTSC-US maps, verifies a retained +private image by SHA-256 readback, and atomically publishes the new map cache. +Subsequent launches reuse it. Existing imports/saves from our earlier branch +and existing innerhat `Documents/GameData/maps` installations remain readable +when the same bundle ID and account are used. Different IDs have separate data. ## Build -First complete [Apple build setup](../../docs/apple-build.md), including full -Xcode 26+, CMake, the public dependencies, your local game maps and XDK headers. -You do not need to build the Mac app or the simulator first. -`DEVELOPER_DIR` defaults to `/Applications/Xcode.app/Contents/Developer`; -the build does not change the system's selected developer directory. - -Sign into Xcode → Settings → Accounts with your own Apple account. Connect and -unlock the iPhone, trust the Mac, and enable Developer Mode in Settings → -Privacy & Security (restart and confirm when prompted). - -A paid development team was required to provision -`com.apple.developer.kernel.extended-virtual-addressing` in testing; Xcode rejected -this capability for Personal Teams. The generic capability is in -[Halo.entitlements](Halo.entitlements). It expands virtual address space without -allocating that amount of physical RAM. If provisioning fails, check that your -team/profile supports this capability; removing it will not produce a working -physical-device build. - -Find your own Team ID in your Apple developer membership, and choose a unique -reverse-DNS app identifier. Replace both example values below: +Follow [Apple build setup](../../docs/apple-build.md). LLVM 22, full Xcode, +CMake and Ninja are required; no private Xbox SDK or game image is needed to +compile. Do not bundle maps in an app distributed to others. ```sh +export HALO_MACOS_LLVM_BIN="$(brew --prefix llvm@22)/bin" +export PATH="$(brew --prefix lld@22)/bin:$PATH" +python3 tools/macos_setup.py +python3 tools/ios_build.py --platform simulator python3 tools/ios_build.py --platform device --sign \ --team YOUR_TEAM_ID --bundle-id com.yourname.halo +python3 tools/ios_package.py build/ios/device/Release-iphoneos/Halo.app build/Halo.ipa ``` -This compiles the game, builds SDL and the native host, packages the maps, and -asks Xcode to provision/sign with your local account. No signing identity is -provided by this repository. Outputs: - -- `build/ios/device/Release-iphoneos/Halo.app` -- `build/ios/device/HaloIOS.xcodeproj` (select the **Halo** scheme) - -Omit `--sign` and `--team` for an unsigned compile check. To use the Xcode UI, -open the generated project, choose your team under Signing & Capabilities, -select your connected iPhone, and run **Halo**. Use Release configuration for -performance testing. Rerunning the build script regenerates the project from -source, so pass your team and bundle ID on subsequent signed command-line builds. - -`--host-only` reuses the compiled game image for signing/UI-only changes. Omit it -when game sources, compiler code or generated bridges change. `--platform both` -builds the simulator and device hosts from the same engine image. - -## Install on a phone - -With `DEVELOPER_DIR` set as in the setup guide: - -```sh -xcrun devicectl list devices -xcrun devicectl device install app \ - --device DEVICE_ID build/ios/device/Release-iphoneos/Halo.app -xcrun devicectl device process launch \ - --device DEVICE_ID com.yourname.halo -``` - -Replace `DEVICE_ID` with your phone's identifier and use the bundle ID passed -at build time. Alternatively, use Xcode's Run button. The default bundle ID is -`local.halo.ce-universal.ios`; choose your own for device provisioning to avoid -registration conflicts. - -The default local build includes `assets/maps` (roughly 1.8 GB). Use -`--no-bundle-maps` to omit them, open the app once, then copy your `maps` folder -into its `Documents/GameData/` through Finder file sharing or Files → On My iPhone -→ Halo. Reopen the app after copying. It prefers `Documents/GameData/maps` over -bundled maps. Saves, `config.toml` and `halo.log` are in `Library/Application Support/Halo` -inside the app container. Do not publish the app bundle or local signing logs. - -For multiplayer on a physical phone, see [Mac and iPhone System Link](../../docs/apple-multiplayer.md). - -## Simulator - -No device development team is needed: - -```sh -python3 tools/ios_build.py --platform simulator -xcrun simctl list devices available -``` - -Choose an installed iPhone simulator's UUID, then: - -```sh -xcrun simctl boot SIMULATOR_ID # skip if already booted -open -a Simulator -xcrun simctl bootstatus SIMULATOR_ID -b -xcrun simctl install SIMULATOR_ID build/ios/simulator/Release-iphonesimulator/Halo.app -SIMCTL_CHILD_HALO_TOUCH_CONTROLS=1 xcrun simctl launch \ - SIMULATOR_ID local.halo.ce-universal.ios -``` - -Use your selected `--bundle-id` in the launch command if you overrode the default. -Simulator performance does not predict phone performance. - -## Controls - -Touch input uses two sticks plus A/B/X/Y, triggers, crouch, zoom, flashlight, -grenade type, Back and Pause. These feed the existing Xbox controller mapping. -The layout is an initial playable implementation; sensitivity and ergonomics -still need testing on the phone. Physical controllers use SDL's GameController -backend, and touch controls hide when a system controller is present. Physical -gamepad gameplay has not yet been validated on the iPhone. - -For simulator touch testing, launch with `SIMCTL_CHILD_HALO_TOUCH_CONTROLS=1` -before `xcrun simctl launch`; the simulator may advertise a system gamepad. -`HALO_TOUCH_CONTROLS=0` hides the overlay. The Mac window uses neither setting. - -## Frame rate - -The app opts into ProMotion and SDL requests the display's maximum refresh -rate: 120 Hz on supported iPhones, 60 Hz on other displays. ANGLE/Metal vsync -paces presentation. The engine interpolates rendered frames between its -unchanged 30 Hz simulation ticks, so higher frame rates do not speed up gameplay. -Keep `display.interpolation` and `display.vsync` enabled in `config.toml`. - -For a 60 Hz comparison or lower-power session, set `HALO_IOS_REFRESH_RATE=60` -in the Xcode scheme's environment or pass it through `devicectl`: - -```sh -xcrun devicectl device process launch --terminate-existing --device DEVICE_ID \ - --environment-variables '{"HALO_IOS_REFRESH_RATE":"60"}' com.yourname.halo -``` - -Omit the variable (or set it to `120`) to request the display's maximum again. -This is a refresh-rate preference, not a guarantee of sustained 120 FPS: iOS can -reduce the rate for Low Power Mode, the Accessibility → Motion → Limit Frame -Rate setting, or thermal conditions. See Apple's -[ProMotion guidance](https://developer.apple.com/documentation/quartzcore/optimizing-iphone-and-ipad-apps-to-support-promotion-displays). - -For device measurements, set `HALO_PERF_LOG=1` at launch. This writes per-frame -timings to `Library/Application Support/Halo/frames.csv` in the app container; -each profiled launch overwrites that file. `frame_ms` measures the interval -between completed buffer swaps (about 8.33 ms at 120 FPS or 16.67 ms at 60 FPS), -not GPU execution time or proof that every frame reached the screen. Use -Instruments' Game Performance/Metal timeline to inspect GPU and presentation -behavior. Profiling is off on ordinary launches. - -## Runtime design - -The game retains 32-bit pointers and structure layouts. Its ARM instructions -are embedded into the app's signed Mach-O `__TEXT,__halo` section at build time. -The ELF is an intermediate build artifact, not runtime-loaded executable code. -No JIT, writable executable mapping or runtime instruction patching is used. - -The LLVM adapter materializes original game addresses and translates data -accesses into a separate non-executable arena at `0x400000000`. Only the span -below guest address `0x90000000` is reserved (2.25 GB of virtual space); actual -memory is committed as used. Indirect calls add an immutable code-image delta. -Native callbacks use the same translation. Thread-local control blocks are -lowered before rebasing. iOS has a distinct ABI version to prevent mixing its -image with the Mac or Android loaders. - -## Verification - -```sh -python3 tools/test_ios_runtime.py -python3 tools/ios_mac_runtime_check.py -python3 tools/macos_benchmark.py \ - --host build/ios/mac-runtime-check/halo --guest build/ios/halo_guest.elf \ - --output build/ios/mac-runtime-check/campaign --effects --seconds 45 -``` - -The standalone signed-image test covers globals, indirect calls, stack pointers, -unaligned accesses, atomics, varargs and Xbox memory addresses. The Mac diagnostic -host exercises the complete iPhone engine layout independently of UIKit and -device signing. It is not an iPhone performance benchmark. - -On September 27, 2026, the 45-second Mac diagnostic campaign with repeated -explosions exited successfully: median frame time 16.66 ms, p95 17.11 ms, -maximum measured footprint 465 MB. Mac allocator and audio regression probes -also passed. The iPhone simulator rendered the menu at 2868×1320 with Metal and -displayed touch controls. A development build on iPhone 17 Pro Max with -iOS 26.6.2 confirmed the signed engine, 2868×1320 Metal drawable and A19 Pro GPU. -Campaign gameplay, movement/aiming, touch controls and audio were tested on the -phone. - -ProMotion validation on the same phone measured the following buffer-swap -intervals with optional frame logging enabled: - -| Session | Duration | Average FPS | Median frame | p95 frame | -| --- | ---: | ---: | ---: | ---: | -| 60 Hz override, main menu | 15 s | 59.99 | 16.66 ms | 16.82 ms | -| 120 Hz target, campaign play | 179 s | 119.42 | 8.33 ms | 8.61 ms | - -The campaign capture included 21,368 frames, a 9.65 ms p99, an isolated -114.97 ms maximum frame, and a 455 MiB peak physical footprint. A separate -1.70-second sequence of 205 Metal drawable presentation callbacks in Instruments -averaged 119.97 FPS; the trace reported a nominal thermal state. Movement, -aiming, firing and audio were confirmed on the device. The menu and campaign -rows cover different workloads; these short checks do not establish a sustained -120 FPS minimum across every level or long thermal sessions. - -Bink movies remain unsupported, as in the Mac port. Multiplayer, sustained -thermal behavior, background/resume behavior and the full campaign require -separate device testing before treating this as a finished iPhone release. +The repository default identifier remains `local.halo.ce-universal.ios`. +Choose your own identifier for distribution; personal account settings do not +belong in this repository. `--no-bundle-maps` remains accepted for compatibility, +but map bundling has been removed. `--host-only` is suitable only when reusing an +unchanged guest image. Any game/compiler/bridge change requires the normal build. + +The signed device runtime reserves a virtual arena above iOS's guard region. +Its profile must grant **Extended Virtual Addressing**; upstream testing found +Personal Teams could not provision it. No JIT entitlement is used. A development +or Ad Hoc profile must cover the installing device. See the [IPA re-signing +guide](RESIGNING.md) for a locally held identity/profile workflow. + +## Play and settings + +Touch controls hide when a physical controller connects, and return on +disconnect. The primary hardware controller shares player one with the touch +controller; additional controllers retain separate slots. D-pad buttons support +menu navigation. Flashlight and grenade-switch labels match the default game +bindings. Mac uses its existing keyboard/mouse/controller path without touch. + +Shake the phone/tablet for the settings modal. It offers optional MetalFX +spatial upscaling, bounded shader-stall recording and a share sheet for reports. +The shared upstream renderer now owns Metal presentation; our old native +OpenGL ES fallback and separate WebKit room-code transport are retired rather +than layering an older renderer/network protocol over it. The in-game browser +uses upstream's current native/browser networking. The default renderer is +Metal and MetalFX remains off unless explicitly enabled. + +The ANGLE blob cache is private and bounded to 64 MiB; misses compile normally. +Reports contain shader sources and timing, not maps or saves. First-use GPU +recording adds synchronization overhead. MetalFX benefit depends on hardware +and selected render resolution and is not a guaranteed performance gain. + +## Validation + +[Migration and validation record](../../docs/apple-ios-migration.md) records +what has been carried over and what still needs device testing. Simulator +results do not prove physical iPhone/iPad memory reservation or GPU performance. +Use your own device through your usual installer; test tooling should not +replace or launch apps on someone else's device. + +Simulator builds keep a separate signed image in `build/ios-simulator` and use +the Mac address arena because recent simulators reserve the device arena. +`--host-only` reuses only the image for the requested platform. diff --git a/port/ios/RESIGNING.md b/port/ios/RESIGNING.md new file mode 100644 index 0000000000..ae5760376c --- /dev/null +++ b/port/ios/RESIGNING.md @@ -0,0 +1,92 @@ +# Install the unsigned IPA with your own Apple account + +Use an Apple Silicon Mac with Xcode 26+ and Python 3. This runtime requires +iOS/iPadOS 26+ and a profile granting Extended Virtual Addressing; a paid +development team was required in upstream testing. Start with a device IPA +provided by the builder, or build one using [the iOS build instructions](README.md) +and `tools/ios_package.py`. This branch does not yet publish an unsigned IPA +artifact in GitHub Actions. A simulator app cannot run on an iPhone. + +The script signs locally using a certificate/private key already in your +Keychain and a provisioning profile issued for your account. It does not +sign in to Apple, create certificates, register devices, or bypass provisioning. +You do not need to send your device ID to this project's maintainer when +you use your own account. + +## Set up signing once + +1. Add your Apple account in **Xcode → Settings → Accounts**. Connect your + iPhone, trust the Mac, and enable Developer Mode if requested. +2. If you do not already have a suitable iOS development profile, create a + temporary iOS App project in Xcode. Select your team, enable automatic + signing, add the **Extended Virtual Addressing** capability, and set a unique bundle identifier such as `com.yourname.haloce`. + Build/run that temporary app on your phone so Xcode creates the identity + and a profile covering the device. Then delete the temporary app from + the phone before installing Halo with the same identifier. +3. Locate the temporary app's build product using **Products → Show in + Finder**, then **Show Package Contents**. Copy its + `embedded.mobileprovision` somewhere convenient. Alternatively, use an + existing development or Ad Hoc `.mobileprovision` downloaded from Apple. +4. List available identities: + + ```sh + security find-identity -v -p codesigning + ``` + + Use the matching **Apple Development** identity (or **Apple Distribution** + identity for an Ad Hoc profile). Its private key must be in your Keychain, + and its certificate must be included in the profile. An App Store profile + cannot install this build directly on a phone. + +## Sign and install + +Check out `apple/ios-installer` from `AttilaTheFun/halo-ce-universal`. +From its root, run: + +```sh +./tools/ios_resign.sh ~/Downloads/Halo-CE-iOS-unsigned.ipa \ + --identity 'Apple Development: Your Name (IDENTITY_ID)' \ + --profile ~/Downloads/embedded.mobileprovision \ + --bundle-id com.yourname.haloce \ + --device YOUR_DEVICE_UDID \ + --output ~/Downloads/Halo-signed.ipa +``` + +The exact identity name or its SHA-1 fingerprint is accepted. `--device` +is optional but recommended: it verifies that the supplied UDID is covered. +Use `xcrun devicectl list devices` or Xcode's Devices and Simulators window +to identify your phone. The output must not already exist. + +The script checks profile expiry, platform, bundle ID, device and signing +certificate; updates the bundle ID; signs ANGLE/SDL frameworks and the app +inside-out; generates DER entitlements; verifies signatures; and writes a +new IPA plus a SHA-256 checksum. It never changes the downloaded IPA. +The shell entry point uses the adjacent `ios_resign.py`, so keep both files. + +Install `Halo-signed.ipa` with Apple Configurator, or extract and install +the app with Xcode's command-line device tools: + +```sh +mkdir -p ~/Downloads/Halo-signed-extracted +ditto -x -k ~/Downloads/Halo-signed.ipa ~/Downloads/Halo-signed-extracted +xcrun devicectl device install app --device YOUR_DEVICE_UDID \ + ~/Downloads/Halo-signed-extracted/Payload/Halo.app +xcrun devicectl device process launch --device YOUR_DEVICE_UDID com.yourname.haloce +``` + +On first launch, choose your own supported original Xbox Halo ISO/XISO. +No game image or maps are included in the IPA. Keep the same account and +bundle ID for updates to retain imported data. Renew the provisioning +profile and re-sign before it expires; a free Personal Team's validity and +device limits differ from paid developer membership. Back up saves before +uninstalling. Do not upload your signed IPA/profile or private key to this +repository; they contain your signing/device information. + +The script has been checked against the CI-produced unsigned IPA using a +local development identity, including nested framework and app signature +verification. Personal Team provisioning and third-party sideloading tools +have not been tested for this port. + +Apple references: [signing setup](https://developer.apple.com/documentation/xcode/running-your-app-on-simulated-or-physical-devices), +[provisioning profiles](https://developer.apple.com/documentation/technotes/tn3125-inside-code-signing-provisioning-profiles), +and [nested signatures and DER entitlements](https://developer.apple.com/documentation/xcode/using-the-latest-code-signature-format). diff --git a/port/ios/host/host_controls.m b/port/ios/host/host_controls.m index d039cd5fb1..386dba82ba 100644 --- a/port/ios/host/host_controls.m +++ b/port/ios/host/host_controls.m @@ -1,158 +1,254 @@ -/* UIKit controls drive SDL's virtual gamepad and the existing Xbox input path. */ +#include "../../apple/host_debug.h" +/* UIKit controls feed a standard SDL gamepad. The first hardware controller + shares player one with touch; additional hardware controllers keep their ports. */ #import -#import #include #include "host.h" -static SDL_Joystick *touch_pad; -@interface HaloStick : UIView -@property int axis; -@property(strong) UIView *thumb; -@end -@implementation HaloStick -- (instancetype)initWithFrame:(CGRect)frame { - if ((self = [super initWithFrame:frame])) { - self.backgroundColor = [UIColor colorWithWhite:0 alpha:0.18]; - self.layer.borderColor = [UIColor colorWithWhite:1 alpha:0.45].CGColor; - self.layer.borderWidth = 1; self.layer.cornerRadius = frame.size.width / 2; - self.thumb = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 46, 46)]; - self.thumb.backgroundColor = [UIColor colorWithWhite:1 alpha:0.25]; - self.thumb.layer.cornerRadius = 23; self.thumb.userInteractionEnabled = NO; - [self addSubview:self.thumb]; - self.thumb.center = CGPointMake(frame.size.width / 2, frame.size.height / 2); - self.isAccessibilityElement = YES; +#import "host_orientation.h" +#include + +static SDL_Joystick *touch_joystick; +static SDL_JoystickID touch_id, primary_hardware; +static SDL_Gamepad *primary_gamepad; +static NSString *const controllerChanged = @"HaloControllerChanged"; + +static void button_state(int button, BOOL down) { + if(touch_joystick) SDL_SetJoystickVirtualButton(touch_joystick,button,down); +} +static void axis_state(int axis, float value) { + if(touch_joystick) SDL_SetJoystickVirtualAxis(touch_joystick,axis,(Sint16)(fmaxf(-1,fminf(1,value))*32767)); +} +void host_ios_touch_initialize(void) { + SDL_VirtualJoystickDesc desc; + SDL_INIT_INTERFACE(&desc); + desc.type=SDL_JOYSTICK_TYPE_GAMEPAD; + desc.naxes=SDL_GAMEPAD_AXIS_COUNT; + desc.nbuttons=SDL_GAMEPAD_BUTTON_COUNT; + desc.axis_mask=(1u<0 && touch_id)out[used++]=touch_id; + for(int i=0;iabs(value))value=physical; + } + return value; +} +int host_ios_gamepad_button(SDL_Gamepad *pad,int button) { + if(halo_debug_is_presented())return 0; + return SDL_GetGamepadButton(pad,button) || + (SDL_GetGamepadID(pad)==touch_id && primary_hardware && + SDL_GetGamepadButton(primary_gamepad,button)); +} +void host_ios_touch_reset(void) { + for(int i=0;i=SDL_GAMEPAD_AXIS_LEFT_TRIGGER?-1:0); +} + +@interface HaloButton : UIButton +@property(nonatomic) int gameButton; +@property(nonatomic) int gameAxis; +@end +@implementation HaloButton +- (void)sendDown:(BOOL)down { + self.highlighted=down; + if(self.gameAxis>=0)axis_state(self.gameAxis,down?1:-1); + else button_state(self.gameButton,down); +} +- (BOOL)beginTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event { + [super beginTrackingWithTouch:touch withEvent:event];[self sendDown:YES];return YES; } +- (void)endTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event { + [super endTrackingWithTouch:touch withEvent:event];[self sendDown:NO]; +} +- (void)cancelTrackingWithEvent:(UIEvent *)event { + [super cancelTrackingWithEvent:event];[self sendDown:NO]; +} +- (BOOL)accessibilityActivate { + [self sendDown:YES]; + dispatch_after(dispatch_time(DISPATCH_TIME_NOW,150*NSEC_PER_MSEC),dispatch_get_main_queue(),^{[self sendDown:NO];}); + return YES; +} +@end + +@interface HaloStick : UIControl +@property(nonatomic) int firstAxis; +@property(nonatomic) CGPoint position; +@property(nonatomic,copy) NSString *caption; +@end +@implementation HaloStick - (void)updateTouch:(UITouch *)touch { - CGPoint p = [touch locationInView:self]; - CGFloat radius = self.bounds.size.width / 2, travel = radius - 23; - CGFloat x = (p.x - radius) / travel, y = (p.y - radius) / travel; - CGFloat length = hypot(x, y); - if (length > 1) { x /= length; y /= length; } - self.thumb.center = CGPointMake(radius + x * travel, radius + y * travel); - SDL_SetJoystickVirtualAxis(touch_pad, self.axis, (Sint16)(x * 32767)); - SDL_SetJoystickVirtualAxis(touch_pad, self.axis + 1, (Sint16)(y * 32767)); -} -- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { (void)event; [self updateTouch:touches.anyObject]; } -- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { (void)event; [self updateTouch:touches.anyObject]; } -- (void)reset { - self.thumb.center = CGPointMake(self.bounds.size.width / 2, self.bounds.size.height / 2); - SDL_SetJoystickVirtualAxis(touch_pad, self.axis, 0); - SDL_SetJoystickVirtualAxis(touch_pad, self.axis + 1, 0); -} -- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { (void)touches; (void)event; [self reset]; } -- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event { [self touchesEnded:touches withEvent:event]; } + CGPoint p=[touch locationInView:self];CGFloat radius=self.bounds.size.width*.34; + CGFloat x=(p.x-self.bounds.size.width/2)/radius,y=(p.y-self.bounds.size.height/2)/radius; + CGFloat length=hypot(x,y);if(length>1){x/=length;y/=length;} + self.position=CGPointMake(x,y);axis_state(self.firstAxis,x);axis_state(self.firstAxis+1,y); + [self setNeedsDisplay]; +} +- (BOOL)beginTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event {[self updateTouch:touch];return YES;} +- (BOOL)continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event {[self updateTouch:touch];return YES;} +- (void)reset {self.position=CGPointZero;axis_state(self.firstAxis,0);axis_state(self.firstAxis+1,0);[self setNeedsDisplay];} +- (void)endTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event {[self reset];} +- (void)cancelTrackingWithEvent:(UIEvent *)event {[self reset];} +- (void)drawRect:(CGRect)rect { + CGRect circle=CGRectInset(self.bounds,2,2); + [[UIColor colorWithWhite:0 alpha:.2]setFill];UIBezierPath *path=[UIBezierPath bezierPathWithOvalInRect:circle];[path fill]; + [[UIColor colorWithWhite:1 alpha:.5]setStroke];path.lineWidth=1.5;[path stroke]; + CGFloat size=self.bounds.size.width,r=size*.34; + CGRect knob=CGRectMake(size/2+self.position.x*r-21,size/2+self.position.y*r-21,42,42); + [[UIColor colorWithWhite:1 alpha:.25]setFill];[[UIBezierPath bezierPathWithOvalInRect:knob]fill]; + NSDictionary *attrs=@{NSFontAttributeName:[UIFont systemFontOfSize:10 weight:UIFontWeightSemibold],NSForegroundColorAttributeName:[UIColor colorWithWhite:1 alpha:.8]}; + CGSize text=[self.caption sizeWithAttributes:attrs]; + [self.caption drawAtPoint:CGPointMake((size-text.width)/2,size-20) withAttributes:attrs]; +} @end + @interface HaloControls : UIView -@property(strong) HaloStick *moveStick; -@property(strong) HaloStick *lookStick; -@property(strong) NSMutableArray *buttons; +@property(nonatomic,strong) HaloStick *moveStick; +@property(nonatomic,strong) HaloStick *lookStick; +@property(nonatomic,strong) NSMutableArray *buttons; @end +static __weak HaloControls *activeControls; +void host_ios_touch_focus(void) {[activeControls becomeFirstResponder];} @implementation HaloControls -- (UIButton *)button:(NSString *)title input:(int)input { - UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; - [button setTitle:title forState:UIControlStateNormal]; - button.titleLabel.font = [UIFont boldSystemFontOfSize:14]; - button.backgroundColor = [UIColor colorWithWhite:0 alpha:0.3]; - button.layer.borderColor = [UIColor colorWithWhite:1 alpha:0.5].CGColor; - button.layer.borderWidth = 1; button.layer.cornerRadius = 22; button.tag = input; - [button addTarget:self action:@selector(down:) forControlEvents:UIControlEventTouchDown | UIControlEventTouchDragEnter]; - [button addTarget:self action:@selector(up:) forControlEvents:UIControlEventTouchUpInside | UIControlEventTouchUpOutside | UIControlEventTouchCancel | UIControlEventTouchDragExit]; - [self addSubview:button]; [self.buttons addObject:button]; - return button; +- (BOOL)canBecomeFirstResponder {return YES;} +- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event { + if(motion==UIEventSubtypeMotionShake)halo_debug_present(); + else [super motionEnded:motion withEvent:event]; } -- (instancetype)initWithFrame:(CGRect)frame { - if ((self = [super initWithFrame:frame])) { - self.multipleTouchEnabled = YES; self.buttons = [NSMutableArray new]; - self.moveStick = [[HaloStick alloc] initWithFrame:CGRectMake(0, 0, 126, 126)]; - self.moveStick.axis = SDL_GAMEPAD_AXIS_LEFTX; self.moveStick.accessibilityLabel = @"Move"; - self.lookStick = [[HaloStick alloc] initWithFrame:CGRectMake(0, 0, 126, 126)]; - self.lookStick.axis = SDL_GAMEPAD_AXIS_RIGHTX; self.lookStick.accessibilityLabel = @"Look"; - [self addSubview:self.moveStick]; [self addSubview:self.lookStick]; - [self button:@"A" input:SDL_GAMEPAD_BUTTON_SOUTH].accessibilityLabel = @"A: Jump or confirm"; - [self button:@"B" input:SDL_GAMEPAD_BUTTON_EAST].accessibilityLabel = @"B: Melee or back"; - [self button:@"X" input:SDL_GAMEPAD_BUTTON_WEST].accessibilityLabel = @"X: Reload or interact"; - [self button:@"Y" input:SDL_GAMEPAD_BUTTON_NORTH].accessibilityLabel = @"Y: Switch weapon"; - [self button:@"Fire" input:100 + SDL_GAMEPAD_AXIS_RIGHT_TRIGGER]; - [self button:@"Grenade" input:100 + SDL_GAMEPAD_AXIS_LEFT_TRIGGER]; - [self button:@"Pause" input:SDL_GAMEPAD_BUTTON_START]; - [self button:@"Light" input:SDL_GAMEPAD_BUTTON_LEFT_SHOULDER]; - [self button:@"Type" input:SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER].accessibilityLabel = @"Switch grenade type"; - [self button:@"Crouch" input:SDL_GAMEPAD_BUTTON_LEFT_STICK]; - [self button:@"Zoom" input:SDL_GAMEPAD_BUTTON_RIGHT_STICK]; - [self button:@"Back" input:SDL_GAMEPAD_BUTTON_BACK]; +- (void)openGraphicsDebug:(id)sender {(void)sender;halo_debug_present();} +- (void)buildMenuWithBuilder:(id)builder { + [super buildMenuWithBuilder:builder]; + if(builder.system==UIMenuSystem.mainSystem) { + UIKeyCommand *command=[UIKeyCommand commandWithTitle:@"Graphics Debug…" image:nil action:@selector(openGraphicsDebug:) input:@"d" modifierFlags:UIKeyModifierCommand|UIKeyModifierShift propertyList:nil]; + [builder insertSiblingMenu:[UIMenu menuWithTitle:@"Debug" image:nil identifier:@"halo.graphics-debug" options:0 children:@[command]] beforeMenuForIdentifier:UIMenuWindow]; } +} +- (HaloButton *)addButton:(NSString *)title label:(NSString *)label button:(int)button axis:(int)axis { + HaloButton *b=[HaloButton buttonWithType:UIButtonTypeCustom];b.gameButton=button;b.gameAxis=axis; + [b setTitle:title forState:UIControlStateNormal];b.titleLabel.font=[UIFont systemFontOfSize:14 weight:UIFontWeightSemibold]; + b.backgroundColor=[UIColor colorWithWhite:0 alpha:.28];b.layer.borderColor=[UIColor colorWithWhite:1 alpha:.5].CGColor;b.layer.borderWidth=1; + b.accessibilityLabel=label;b.exclusiveTouch=NO;[self addSubview:b];[self.buttons addObject:b];return b; +} +- (instancetype)initWithFrame:(CGRect)frame { + if(!(self=[super initWithFrame:frame]))return nil; + self.autoresizingMask=UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight; + self.multipleTouchEnabled=YES;self.buttons=[NSMutableArray array]; + self.moveStick=[[HaloStick alloc]init];self.moveStick.firstAxis=SDL_GAMEPAD_AXIS_LEFTX;self.moveStick.caption=@"MOVE"; + self.lookStick=[[HaloStick alloc]init];self.lookStick.firstAxis=SDL_GAMEPAD_AXIS_RIGHTX;self.lookStick.caption=@"LOOK"; + for(HaloStick *s in @[self.moveStick,self.lookStick]){s.backgroundColor=UIColor.clearColor;s.isAccessibilityElement=YES;s.accessibilityLabel=s.caption;[self addSubview:s];} + [self addButton:@"A" label:@"A — Jump or select" button:SDL_GAMEPAD_BUTTON_SOUTH axis:-1]; + [self addButton:@"B" label:@"B — Melee or back" button:SDL_GAMEPAD_BUTTON_EAST axis:-1]; + [self addButton:@"X" label:@"X — Reload or use" button:SDL_GAMEPAD_BUTTON_WEST axis:-1]; + [self addButton:@"Y" label:@"Y — Switch weapon" button:SDL_GAMEPAD_BUTTON_NORTH axis:-1]; + [self addButton:@"FIRE" label:@"Fire" button:0 axis:SDL_GAMEPAD_AXIS_RIGHT_TRIGGER]; + [self addButton:@"GRENADE" label:@"Throw grenade" button:0 axis:SDL_GAMEPAD_AXIS_LEFT_TRIGGER]; + [self addButton:@"↑" label:@"Menu up" button:SDL_GAMEPAD_BUTTON_DPAD_UP axis:-1]; + [self addButton:@"↓" label:@"Menu down" button:SDL_GAMEPAD_BUTTON_DPAD_DOWN axis:-1]; + [self addButton:@"←" label:@"Menu left" button:SDL_GAMEPAD_BUTTON_DPAD_LEFT axis:-1]; + [self addButton:@"→" label:@"Menu right" button:SDL_GAMEPAD_BUTTON_DPAD_RIGHT axis:-1]; + [self addButton:@"PAUSE" label:@"Pause or start" button:SDL_GAMEPAD_BUTTON_START axis:-1]; + [self addButton:@"CROUCH" label:@"Crouch" button:SDL_GAMEPAD_BUTTON_LEFT_STICK axis:-1]; + [self addButton:@"ZOOM" label:@"Zoom" button:SDL_GAMEPAD_BUTTON_RIGHT_STICK axis:-1]; + [self addButton:@"LIGHT" label:@"Flashlight" button:SDL_GAMEPAD_BUTTON_LEFT_SHOULDER axis:-1]; + [self addButton:@"SWAP G" label:@"Switch grenade" button:SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER axis:-1]; + [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(reset) name:UIApplicationWillResignActiveNotification object:nil]; + [NSNotificationCenter.defaultCenter addObserver:self selector:@selector(controllerChanged) name:controllerChanged object:nil]; + [self controllerChanged]; return self; } -- (void)layoutSubviews { - [super layoutSubviews]; - CGRect safe = UIEdgeInsetsInsetRect(self.bounds, self.safeAreaInsets); - CGFloat left = CGRectGetMinX(safe) + 18, right = CGRectGetMaxX(safe) - 40; - CGFloat bottom = CGRectGetMaxY(safe) - 14, top = CGRectGetMinY(safe) + 12; - self.moveStick.frame = CGRectMake(left, bottom - 126, 126, 126); - self.lookStick.frame = CGRectMake(right - 254, bottom - 126, 126, 126); - CGPoint points[] = {{right-50,bottom-44},{right,bottom-94},{right-100,bottom-94},{right-50,bottom-144}, - {right-45,top+32},{left+45,top+32},{CGRectGetMidX(safe),top+12}, - {left+158,top+12},{right-158,top+12},{left+158,bottom-20},{right-254,bottom-160}, - {CGRectGetMidX(safe)-85,top+12}}; - for (NSUInteger i = 0; i < self.buttons.count; i++) { - UIButton *button = self.buttons[i]; CGFloat width = i < 4 ? 44 : 70; - button.frame = CGRectMake(points[i].x-width/2, points[i].y-22, width, 44); - } +- (void)controllerChanged { + BOOL connected=primary_hardware!=0; + [self setControlsHidden:connected]; } -- (void)down:(UIButton *)button { - button.alpha = 0.65; - if (button.tag >= 100) SDL_SetJoystickVirtualAxis(touch_pad, (int)button.tag - 100, 32767); - else SDL_SetJoystickVirtualButton(touch_pad, (int)button.tag, true); +- (void)setControlsHidden:(BOOL)hidden { + [self reset]; + self.moveStick.hidden=self.lookStick.hidden=hidden; + for(UIView *button in self.buttons)button.hidden=hidden; } -- (void)up:(UIButton *)button { - button.alpha = 1; - if (button.tag >= 100) SDL_SetJoystickVirtualAxis(touch_pad, (int)button.tag - 100, -32768); - else SDL_SetJoystickVirtualButton(touch_pad, (int)button.tag, false); +- (void)reset {host_ios_touch_reset();[self.moveStick reset];[self.lookStick reset];} +- (void)layoutSubviews { + [super layoutSubviews];CGRect r=UIEdgeInsetsInsetRect(self.bounds,self.safeAreaInsets); + CGFloat left=r.origin.x+16,right=CGRectGetMaxX(r)-16,bottom=CGRectGetMaxY(r)-12,top=r.origin.y+10; + CGFloat stick=MIN(136,r.size.height*.32),s=44,gap=4; + self.moveStick.frame=CGRectMake(left,bottom-stick,stick,stick); + self.lookStick.frame=CGRectMake(right-3*s-20-stick,bottom-stick,stick,stick); + // Four face buttons in the traditional diamond. + CGPoint face[4]={{right-2*s-gap,bottom-s},{right-s,bottom-2*s-gap},{right-3*s-2*gap,bottom-2*s-gap},{right-2*s-gap,bottom-3*s-2*gap}}; + for(int i=0;i<4;i++)self.buttons[i].frame=CGRectMake(face[i].x,face[i].y,s,s); + self.buttons[4].frame=CGRectMake(right-84,top+55,84,48); + self.buttons[5].frame=CGRectMake(left,top+55,90,48); + CGFloat d=34,dx=left+stick+12,dy=bottom-3*d; + self.buttons[6].frame=CGRectMake(dx+d,dy,d,d); + self.buttons[7].frame=CGRectMake(dx+d,dy+2*d,d,d); + self.buttons[8].frame=CGRectMake(dx,dy+d,d,d); + self.buttons[9].frame=CGRectMake(dx+2*d,dy+d,d,d); + self.buttons[10].frame=CGRectMake(CGRectGetMidX(r)-38,top,76,34); + self.buttons[11].frame=CGRectMake(left,bottom-stick-42,74,34); + self.buttons[12].frame=CGRectMake(right-3*s-20-stick,bottom-stick-42,74,34); + self.buttons[13].frame=CGRectMake(right-180,top+55,80,36); + self.buttons[14].frame=CGRectMake(left+104,top+55,80,36); + for(UIButton *b in self.buttons){b.layer.cornerRadius=MIN(b.bounds.size.width,b.bounds.size.height)/2;b.titleLabel.adjustsFontSizeToFitWidth=YES;} } - (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event { - for (UIView *view in self.subviews) - if (!view.hidden && [view pointInside:[view convertPoint:point fromView:self] withEvent:event]) return YES; + for(UIView *view in self.subviews)if(!view.hidden && [view pointInside:[self convertPoint:point toView:view] withEvent:event])return YES; return NO; } -- (void)reset { - [self.moveStick reset]; [self.lookStick reset]; - for (UIButton *button in self.buttons) [self up:button]; -} @end -static HaloControls *controls; -static void refresh_controls(void) { - BOOL physical = NO; - for (GCController *controller in GCController.controllers) - if (controller.extendedGamepad) physical = YES; - const char *setting = SDL_getenv("HALO_TOUCH_CONTROLS"); - if (setting) physical = !SDL_atoi(setting); - controls.hidden = physical; [controls reset]; - host_logf(HOST_LOG_INFO, "Touch controls %s; %lu system controllers", - physical ? "hidden" : "visible", (unsigned long)GCController.controllers.count); -} -void host_ios_controls_initialize(SDL_Window *window) { - if (controls) return; - SDL_VirtualJoystickDesc descriptor; - SDL_INIT_INTERFACE(&descriptor); - descriptor.type = SDL_JOYSTICK_TYPE_GAMEPAD; - descriptor.naxes = SDL_GAMEPAD_AXIS_COUNT; descriptor.nbuttons = SDL_GAMEPAD_BUTTON_COUNT; - descriptor.axis_mask = (1u << SDL_GAMEPAD_AXIS_COUNT) - 1; - descriptor.button_mask = (1u << SDL_GAMEPAD_BUTTON_COUNT) - 1; - descriptor.name = "Halo OG Touch Controls"; - SDL_JoystickID id = SDL_AttachVirtualJoystick(&descriptor); - touch_pad = SDL_OpenJoystick(id); - if (!touch_pad) { host_logf(HOST_LOG_WARN, "Touch controls: %s", SDL_GetError()); return; } - UIWindow *native = (__bridge UIWindow *)SDL_GetPointerProperty(SDL_GetWindowProperties(window), SDL_PROP_WINDOW_UIKIT_WINDOW_POINTER, NULL); - UIView *view = native.rootViewController.view; - controls = [[HaloControls alloc] initWithFrame:view.bounds]; - controls.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; - [view addSubview:controls]; - for (NSNotificationName name in @[GCControllerDidConnectNotification, GCControllerDidDisconnectNotification]) - [NSNotificationCenter.defaultCenter addObserverForName:name object:nil queue:NSOperationQueue.mainQueue - usingBlock:^(NSNotification *notification) { (void)notification; refresh_controls(); }]; - [NSNotificationCenter.defaultCenter addObserverForName:UIApplicationWillResignActiveNotification object:nil queue:NSOperationQueue.mainQueue - usingBlock:^(NSNotification *notification) { (void)notification; [controls reset]; }]; - refresh_controls(); - host_logf(HOST_LOG_INFO, "Touch controls ready (%u)", id); + +void host_ios_touch_attach(SDL_Window *window) { + UIWindow *native=(__bridge UIWindow *)SDL_GetPointerProperty(SDL_GetWindowProperties(window),SDL_PROP_WINDOW_UIKIT_WINDOW_POINTER,NULL); + /* Retire SDL's temporary launch window before entering the non-returning + game loop. Its fade animation can otherwise keep accessibility/input + attached to the launch controller on recent scene-based iOS versions. */ + for(UIWindow *candidate in native.windowScene.windows) { + if(candidate!=native && [NSStringFromClass(candidate.rootViewController.class) hasPrefix:@"SDLLaunch"]) + candidate.hidden=YES; + } + [native makeKeyAndVisible]; + host_ios_require_landscape(native); + UIView *root=native.rootViewController.view; + HaloControls *controls=[[HaloControls alloc]initWithFrame:root.bounds]; + [root addSubview:controls]; + activeControls=controls; + [controls becomeFirstResponder]; + [UIMenuSystem.mainSystem setNeedsRebuild]; + if([NSProcessInfo.processInfo.environment[@"HALO_IOS_TEST_DEBUG_UI"] boolValue]) + dispatch_after(dispatch_time(DISPATCH_TIME_NOW,NSEC_PER_SEC*3),dispatch_get_main_queue(),^{halo_debug_present();}); + host_logf(HOST_LOG_INFO,"touch controls attached, %.0fx%.0f",root.bounds.size.width,root.bounds.size.height); } + +void host_ios_controls_initialize(SDL_Window *window) { host_ios_touch_initialize(); host_ios_touch_attach(window); } diff --git a/port/ios/host/host_import.m b/port/ios/host/host_import.m new file mode 100644 index 0000000000..5323b3495c --- /dev/null +++ b/port/ios/host/host_import.m @@ -0,0 +1,194 @@ +/* Native Files picker and transactional XISO import before the game starts. */ +#import +#import +#include "host.h" +#include "../../apple/xiso.h" +#import "../../apple/game_store.h" +#import "host_orientation.h" + +#if !__has_feature(objc_arc) +#error The asynchronous importer requires Objective-C ARC. +#endif + +@interface HaloImportController : HaloLandscapeController +@property(nonatomic, copy) NSString *documents; +@property(nonatomic, strong) UILabel *statusLabel; +@property(nonatomic, strong) UIButton *chooseButton; +@property(nonatomic, strong) UIButton *cancelButton; +@property(nonatomic, strong) UIProgressView *progress; +@property(nonatomic, strong) UIActivityIndicatorView *spinner; +@property(nonatomic, strong) NSURL *pendingImage; +@property(atomic) BOOL cancelled; +@property(atomic, strong) NSFileCoordinator *coordinator; +@property(nonatomic) BOOL importing; +@property(nonatomic) BOOL ready; +@property(nonatomic) UIBackgroundTaskIdentifier backgroundTask; +@property(nonatomic) double lastProgressTime; /* extraction thread only */ +@end + +static int import_progress(void *context, const char *file, uint64_t done, uint64_t total) { + HaloImportController *controller=(__bridge HaloImportController *)context; + if (controller.cancelled) return 0; + double now=NSProcessInfo.processInfo.systemUptime; + if (done!=total && done && now-controller.lastProgressTime<0.1) return 1; + controller.lastProgressTime=now; + NSString *name=[NSString stringWithUTF8String:file]; + float fraction=total?(float)((double)done/total):0; + dispatch_async(dispatch_get_main_queue(), ^{ + controller.progress.hidden=NO; + [controller.spinner stopAnimating]; + controller.progress.progress=fraction; + controller.statusLabel.text=[NSString stringWithFormat:@"Importing %@ · %.0f%%",name,fraction*100]; + }); + return 1; +} + +@implementation HaloImportController +- (void)viewDidLoad { + [super viewDidLoad]; + self.backgroundTask=UIBackgroundTaskInvalid; + self.view.backgroundColor=[UIColor colorWithRed:0.025 green:0.045 blue:0.055 alpha:1]; + self.overrideUserInterfaceStyle=UIUserInterfaceStyleDark; + UIScrollView *scroll=[UIScrollView new];scroll.translatesAutoresizingMaskIntoConstraints=NO; + [self.view addSubview:scroll]; + UIView *content=[UIView new];content.translatesAutoresizingMaskIntoConstraints=NO;[scroll addSubview:content]; + UIStackView *stack=[UIStackView new];stack.axis=UILayoutConstraintAxisVertical;stack.spacing=14; + stack.alignment=UIStackViewAlignmentCenter;stack.translatesAutoresizingMaskIntoConstraints=NO;[content addSubview:stack]; + UIImageView *icon=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"AppArtwork"]]; + icon.contentMode=UIViewContentModeScaleAspectFill;icon.clipsToBounds=YES;icon.layer.cornerRadius=16; + [icon.widthAnchor constraintEqualToConstant:72].active=YES;[icon.heightAnchor constraintEqualToConstant:72].active=YES; + [stack addArrangedSubview:icon]; + UILabel *title=[UILabel new];title.text=@"Halo: CE";title.font=[UIFont preferredFontForTextStyle:UIFontTextStyleLargeTitle]; + title.adjustsFontForContentSizeCategory=YES;title.textAlignment=NSTextAlignmentCenter;[stack addArrangedSubview:title]; + UILabel *body=[UILabel new];body.text=@"Choose your own Halo: Combat Evolved Xbox XISO.\nWe'll verify and keep a private copy, then start the game."; + body.font=[UIFont preferredFontForTextStyle:UIFontTextStyleBody];body.adjustsFontForContentSizeCategory=YES; + body.numberOfLines=0;body.textAlignment=NSTextAlignmentCenter;body.textColor=UIColor.secondaryLabelColor;[stack addArrangedSubview:body]; + self.chooseButton=[UIButton buttonWithType:UIButtonTypeSystem]; + UIButtonConfiguration *style=UIButtonConfiguration.filledButtonConfiguration; + style.title=@"Choose Halo ISO";style.baseBackgroundColor=UIColor.systemBlueColor; + style.baseForegroundColor=UIColor.whiteColor;style.cornerStyle=UIButtonConfigurationCornerStyleLarge; + style.contentInsets=NSDirectionalEdgeInsetsMake(14,24,14,24);self.chooseButton.configuration=style; + self.chooseButton.accessibilityIdentifier=@"chooseXISO"; + [self.chooseButton addTarget:self action:@selector(chooseImage) forControlEvents:UIControlEventTouchUpInside];[stack addArrangedSubview:self.chooseButton]; + self.statusLabel=[UILabel new];self.statusLabel.font=[UIFont preferredFontForTextStyle:UIFontTextStyleFootnote]; + self.statusLabel.adjustsFontForContentSizeCategory=YES;self.statusLabel.numberOfLines=0;self.statusLabel.textAlignment=NSTextAlignmentCenter; + self.statusLabel.text=@"Original Xbox PAL or NTSC-US · .iso or .xiso\nNo game files are included."; + self.statusLabel.accessibilityIdentifier=@"importStatus";[stack addArrangedSubview:self.statusLabel]; + self.spinner=[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleMedium]; + self.spinner.hidesWhenStopped=YES;[stack addArrangedSubview:self.spinner]; + self.progress=[[UIProgressView alloc] initWithProgressViewStyle:UIProgressViewStyleDefault];self.progress.hidden=YES; + self.progress.accessibilityLabel=@"Game import progress";[stack addArrangedSubview:self.progress]; + [self.progress.widthAnchor constraintEqualToAnchor:stack.widthAnchor].active=YES; + self.cancelButton=[UIButton buttonWithType:UIButtonTypeSystem];[self.cancelButton setTitle:@"Cancel import" forState:UIControlStateNormal]; + self.cancelButton.accessibilityIdentifier=@"cancelImport"; + [self.cancelButton addTarget:self action:@selector(cancelImport) forControlEvents:UIControlEventTouchUpInside]; + self.cancelButton.hidden=YES;[stack addArrangedSubview:self.cancelButton]; + NSLayoutConstraint *width=[stack.widthAnchor constraintEqualToAnchor:content.widthAnchor constant:-48];width.priority=999; + [NSLayoutConstraint activateConstraints:@[ + [scroll.topAnchor constraintEqualToAnchor:self.view.safeAreaLayoutGuide.topAnchor], + [scroll.bottomAnchor constraintEqualToAnchor:self.view.safeAreaLayoutGuide.bottomAnchor], + [scroll.leadingAnchor constraintEqualToAnchor:self.view.leadingAnchor],[scroll.trailingAnchor constraintEqualToAnchor:self.view.trailingAnchor], + [content.topAnchor constraintEqualToAnchor:scroll.contentLayoutGuide.topAnchor],[content.bottomAnchor constraintEqualToAnchor:scroll.contentLayoutGuide.bottomAnchor], + [content.leadingAnchor constraintEqualToAnchor:scroll.contentLayoutGuide.leadingAnchor],[content.trailingAnchor constraintEqualToAnchor:scroll.contentLayoutGuide.trailingAnchor], + [content.widthAnchor constraintEqualToAnchor:scroll.frameLayoutGuide.widthAnchor],[content.heightAnchor constraintGreaterThanOrEqualToAnchor:scroll.frameLayoutGuide.heightAnchor], + [stack.centerXAnchor constraintEqualToAnchor:content.centerXAnchor],[stack.centerYAnchor constraintEqualToAnchor:content.centerYAnchor], + [stack.topAnchor constraintGreaterThanOrEqualToAnchor:content.topAnchor constant:24], + [stack.bottomAnchor constraintLessThanOrEqualToAnchor:content.bottomAnchor constant:-24], + [stack.widthAnchor constraintLessThanOrEqualToConstant:520],width]]; +} +- (void)viewDidAppear:(BOOL)animated { + [super viewDidAppear:animated]; + if (self.pendingImage && !self.importing) {NSURL *url=self.pendingImage;self.pendingImage=nil;[self importImage:url];} +} +- (void)chooseImage { + if (self.importing) return; + /* Some Files providers classify .xiso as generic data. Validate the file's + contents ourselves, allowing both that type and normal ISO disk images. */ + UIDocumentPickerViewController *picker=[[HaloLandscapeDocumentPicker alloc] initForOpeningContentTypes:@[UTTypeData] asCopy:NO]; + picker.delegate=self;picker.allowsMultipleSelection=NO; + [self presentViewController:picker animated:YES completion:nil]; +} +- (void)documentPicker:(UIDocumentPickerViewController *)controller didPickDocumentsAtURLs:(NSArray *)urls { + (void)controller;if (urls.count) [self importImage:urls.firstObject]; +} +- (void)documentPickerWasCancelled:(UIDocumentPickerViewController *)controller { + (void)controller;self.statusLabel.text=@"Choose your Halo XISO whenever you're ready."; +} +- (void)cancelImport {self.cancelled=YES;[self.coordinator cancel];self.cancelButton.enabled=NO;self.statusLabel.text=@"Cancelling import…";} +- (void)importImage:(NSURL *)url { + if (self.importing) return; + self.importing=YES;self.cancelled=NO;self.lastProgressTime=0; + self.chooseButton.hidden=YES;self.cancelButton.hidden=NO;self.cancelButton.enabled=YES; + self.progress.hidden=YES;self.progress.progress=0;[self.spinner startAnimating]; + self.statusLabel.text=@"Opening disc image… If it's in iCloud, it may need to download first."; + BOOL scoped=[url startAccessingSecurityScopedResource]; + self.backgroundTask=[UIApplication.sharedApplication beginBackgroundTaskWithName:@"Import Halo" expirationHandler:^{self.cancelled=YES;[self.coordinator cancel];}]; + dispatch_async(dispatch_get_global_queue(QOS_CLASS_USER_INITIATED,0), ^{ + @autoreleasepool { + __block NSString *failure=nil;__block BOOL imported=NO; + NSFileCoordinator *coordinator=[[NSFileCoordinator alloc] initWithFilePresenter:nil];NSError *coordinationError=nil; + self.coordinator=coordinator; + if(self.cancelled)[coordinator cancel]; + [coordinator coordinateReadingItemAtURL:url options:0 error:&coordinationError byAccessor:^(NSURL *readable) { + if(self.cancelled){failure=@"Import cancelled.";return;} + imported=halo_game_store_import(readable,self.documents,import_progress,(__bridge void *)self,&failure); + }]; + if(coordinationError && !imported)failure=self.cancelled?@"Import cancelled.":@"Could not access the image. Download it in Files, then choose it again."; + self.coordinator=nil; + if (scoped) [url stopAccessingSecurityScopedResource]; + dispatch_async(dispatch_get_main_queue(), ^{ + [self.spinner stopAnimating];self.cancelButton.hidden=YES;self.importing=NO; + if (self.backgroundTask!=UIBackgroundTaskInvalid) { [UIApplication.sharedApplication endBackgroundTask:self.backgroundTask];self.backgroundTask=UIBackgroundTaskInvalid; } + if (imported) {self.statusLabel.text=@"Ready. Starting Halo…";self.ready=YES;} + else {self.statusLabel.text=failure?:@"Could not import this disc image.";self.chooseButton.hidden=NO;self.progress.hidden=YES;} + }); + } + }); +} +@end + +void host_ios_prepare_assets(const char *root) { + NSString *documents=[NSString stringWithUTF8String:root]; + NSFileManager *files=NSFileManager.defaultManager; + NSString *maps=[documents stringByAppendingPathComponent:@"maps"]; + /* Recover only directories carrying our own marker. Interrupted copies + can be discarded; a displaced maps folder is restored before retrying. */ + for (NSString *name in [files contentsOfDirectoryAtPath:documents error:nil]) { + if (![name hasPrefix:@".halo-import-"] || ![[NSUUID alloc] initWithUUIDString:[name substringFromIndex:13]]) continue; + NSString *staging=[documents stringByAppendingPathComponent:name]; + if (![[NSString stringWithContentsOfFile:[staging stringByAppendingPathComponent:@"owner.txt"] encoding:NSUTF8StringEncoding error:nil] isEqualToString:@"Halo XISO import v1"]) continue; + NSString *backup=[staging stringByAppendingPathComponent:@"previous-maps"]; + if ([files fileExistsAtPath:backup]) { + if (![files fileExistsAtPath:maps]) [files moveItemAtPath:backup toPath:maps error:nil]; + if ([files fileExistsAtPath:backup] && !xiso_maps_ready(maps.fileSystemRepresentation,NULL,0)) continue; + } + [files removeItemAtPath:staging error:nil]; + } + if (halo_game_store_current(documents)) return; + UIWindowScene *scene=nil; + for (UIScene *candidate in UIApplication.sharedApplication.connectedScenes) + if ([candidate isKindOfClass:UIWindowScene.class]) {scene=(UIWindowScene *)candidate;break;} + if (!scene) host_fatal("Could not open the game import screen."); + HaloImportController *controller=[HaloImportController new];controller.documents=documents; + /* Dropping an XISO into the app with Finder/Files also works. Only choose + automatically when exactly one image is present; never alter the source. */ + NSMutableArray *images=[NSMutableArray new]; + for (NSString *directory in @[documents,[documents stringByAppendingPathComponent:@"Inbox"]]) { + for (NSURL *url in [files contentsOfDirectoryAtURL:[NSURL fileURLWithPath:directory] includingPropertiesForKeys:@[NSURLIsRegularFileKey] options:NSDirectoryEnumerationSkipsHiddenFiles error:nil]) { + NSString *extension=url.pathExtension.lowercaseString;NSNumber *regular=nil;[url getResourceValue:®ular forKey:NSURLIsRegularFileKey error:nil]; + if (regular.boolValue && ([extension isEqualToString:@"iso"] || [extension isEqualToString:@"xiso"])) [images addObject:url]; + } + } + if (images.count==1) controller.pendingImage=images.firstObject; + UIWindow *window=[[UIWindow alloc] initWithWindowScene:scene];window.frame=scene.coordinateSpace.bounds; + window.windowLevel=UIWindowLevelNormal+2;window.rootViewController=controller;[window makeKeyAndVisible]; + while (!controller.ready) { + @autoreleasepool { + /* Like SDL's UIKit event pump, service tracking as well as the + default mode so controls inside the scroll view receive taps. */ + CFRunLoopRunInMode(kCFRunLoopDefaultMode,0.01,true); + CFRunLoopRunInMode((__bridge CFStringRef)UITrackingRunLoopMode,0.01,true); + } + } + window.hidden=YES;window.rootViewController=nil; +} diff --git a/port/ios/host/host_main.m b/port/ios/host/host_main.m index bcdbc526c0..f271e407ef 100644 --- a/port/ios/host/host_main.m +++ b/port/ios/host/host_main.m @@ -3,6 +3,8 @@ #include #include #import +#import "../../apple/game_store.h" +extern void host_ios_prepare_assets(const char *root); #include #include #include @@ -28,6 +30,34 @@ void host_fatal(const char *format, ...) { void host_android_path(int which, char *buffer, uint32_t size) { snprintf(buffer, size, "%s", which ? save_root : data_root); } +/* UIKit touch controls use an SDL virtual gamepad; disable the Android overlay. */ +void host_gesture_insets(int *insets) { + if (!insets) + return; + insets[0] = insets[1] = insets[2] = insets[3] = 0; +} +void host_touch_read(int *state) { + int i; + + if (!state) + return; + for (i = 0; i < 7; i++) + state[i] = 0; +} +void host_touch_look_read(float *delta) { + int i; + + if (!delta) + return; + for (i = 0; i < 4; i++) + delta[i] = 0.0f; +} +void host_touch_rumble(unsigned int low, unsigned int high) { + (void)low; + (void)high; +} +void host_touch_scene(int scene) { (void)scene; } +void host_touch_bindings(const int *controls) { (void)controls; } extern char **environ; static uint32_t make_boot(void) { size_t size = 0x20000; @@ -51,14 +81,27 @@ static uint32_t make_boot(void) { extern void macos_enter_guest_stack(void *, uint32_t) __attribute__((noreturn)); int main(int argc, char **argv) { (void)argc; (void)argv; + SDL_SetHint(SDL_HINT_ORIENTATIONS, "LandscapeLeft LandscapeRight"); + SDL_SetHint(SDL_HINT_IOS_HIDE_HOME_INDICATOR, "2"); + if (!SDL_InitSubSystem(SDL_INIT_VIDEO | SDL_INIT_GAMEPAD)) + host_fatal("Cannot initialize display: %s", SDL_GetError()); @autoreleasepool { NSFileManager *files = NSFileManager.defaultManager; NSString *documents = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject; - NSString *data = [documents stringByAppendingPathComponent:@"GameData"]; - [files createDirectoryAtPath:data withIntermediateDirectories:YES attributes:nil error:NULL]; - if (![files fileExistsAtPath:[data stringByAppendingPathComponent:@"maps/ui.map"]]) - data = [NSBundle.mainBundle.resourcePath stringByAppendingPathComponent:@"GameData"]; - NSString *saves = [NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES).firstObject stringByAppendingPathComponent:@"Halo"]; + NSString *data = halo_game_store_current(documents); + NSString *legacy = [documents stringByAppendingPathComponent:@"GameData"]; + // Existing innerhat extracted maps and our retained ISO generations + // both remain readable; new installations import through Files. + if (!data && xiso_maps_ready([legacy stringByAppendingPathComponent:@"maps"].fileSystemRepresentation, NULL, 0)) + data = legacy; + if (!data) { + host_ios_prepare_assets(documents.fileSystemRepresentation); + data = halo_game_store_current(documents); + } + NSString *saves = [documents stringByAppendingPathComponent:@"save"]; + NSString *legacySaves = [NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES).firstObject stringByAppendingPathComponent:@"Halo"]; + if (![files fileExistsAtPath:saves] && [files fileExistsAtPath:legacySaves]) saves = legacySaves; + setenv("HALO_CONFIG_ROOT", documents.fileSystemRepresentation, 1); [files createDirectoryAtPath:saves withIntermediateDirectories:YES attributes:nil error:NULL]; snprintf(data_root, sizeof(data_root), "%s", data.fileSystemRepresentation); snprintf(save_root, sizeof(save_root), "%s", saves.fileSystemRepresentation); @@ -73,10 +116,6 @@ int main(int argc, char **argv) { } host_install_signal_handlers(); setenv("HALO_DATA_ROOT", data_root, 1); setenv("HALO_SAVE_ROOT", save_root, 1); - SDL_SetHint(SDL_HINT_ORIENTATIONS, "LandscapeLeft LandscapeRight"); - SDL_SetHint(SDL_HINT_IOS_HIDE_HOME_INDICATOR, "2"); - if (!SDL_InitSubSystem(SDL_INIT_VIDEO | SDL_INIT_GAMEPAD)) - host_fatal("Cannot initialize display: %s", SDL_GetError()); const SDL_DisplayMode *display = SDL_GetDesktopDisplayMode(SDL_GetPrimaryDisplay()); if (display && display->h > 0 && display->w > 0) { int long_side = display->w > display->h ? display->w : display->h; diff --git a/port/ios/host/host_orientation.h b/port/ios/host/host_orientation.h new file mode 100644 index 0000000000..b4e5e59592 --- /dev/null +++ b/port/ios/host/host_orientation.h @@ -0,0 +1,11 @@ +#pragma once +#import + +/* Keep launch, import, Files, and SDL on the same landscape policy. */ +@interface HaloLandscapeController : UIViewController +@end + +@interface HaloLandscapeDocumentPicker : UIDocumentPickerViewController +@end + +void host_ios_require_landscape(UIWindow *window); diff --git a/port/ios/host/host_orientation.m b/port/ios/host/host_orientation.m new file mode 100644 index 0000000000..4cd4551719 --- /dev/null +++ b/port/ios/host/host_orientation.m @@ -0,0 +1,82 @@ +#import "host_orientation.h" +#include "host.h" + +/* SDL 3.4.16 owns these controllers. These categories add only orientation + preferences inherited from UIKit, never replace SDL's own methods. Recheck + the selectors when upgrading SDL; no runtime class mutation is needed. */ +@interface SDL_uikitviewcontroller : UIViewController +@end +@interface SDLLaunchScreenController : UIViewController +@end +@interface SDLUIKitSceneDelegate : NSObject +@end + +static BOOL landscape_lock(UIViewController *controller) { + /* Don't lock a transient portrait scene before the geometry request has + completed. The scene callback updates this preference after rotation. */ + return UIInterfaceOrientationIsLandscape(controller.viewIfLoaded.window.windowScene.interfaceOrientation); +} + +#define HALO_LANDSCAPE_PREFERENCES \ +- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { return UIInterfaceOrientationLandscapeRight; } \ +- (BOOL)prefersInterfaceOrientationLocked { return landscape_lock(self); } + +@implementation HaloLandscapeController +- (UIInterfaceOrientationMask)supportedInterfaceOrientations { return UIInterfaceOrientationMaskLandscape; } +HALO_LANDSCAPE_PREFERENCES +- (void)viewDidAppear:(BOOL)animated { + [super viewDidAppear:animated]; + host_ios_require_landscape(self.view.window); +} +@end + +@implementation HaloLandscapeDocumentPicker +- (UIInterfaceOrientationMask)supportedInterfaceOrientations { return UIInterfaceOrientationMaskLandscape; } +HALO_LANDSCAPE_PREFERENCES +@end + +@implementation SDL_uikitviewcontroller (HaloLandscape) +HALO_LANDSCAPE_PREFERENCES +@end + +@implementation SDLLaunchScreenController (HaloLandscape) +HALO_LANDSCAPE_PREFERENCES +@end + +@implementation SDLUIKitSceneDelegate (HaloLandscape) +/* iPadOS 27 consults the scene delegate in preference to Info.plist. */ +- (UIInterfaceOrientationMask)supportedInterfaceOrientationsForWindowScene:(UIWindowScene *)scene { + (void)scene; + return UIInterfaceOrientationMaskLandscape; +} +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 260000 +- (void)windowScene:(UIWindowScene *)scene didUpdateEffectiveGeometry:(UIWindowSceneGeometry *)previousGeometry API_AVAILABLE(ios(26.0)) { + BOOL wasLandscape=UIInterfaceOrientationIsLandscape(previousGeometry.interfaceOrientation); + BOOL isLandscape=UIInterfaceOrientationIsLandscape(scene.effectiveGeometry.interfaceOrientation); + if (wasLandscape != isLandscape) { + for (UIWindow *window in scene.windows) { + UIViewController *controller=window.rootViewController; + while (controller.presentedViewController) controller=controller.presentedViewController; + [controller setNeedsUpdateOfPrefersInterfaceOrientationLocked]; + } + } + CGSize size=scene.effectiveGeometry.coordinateSpace.bounds.size; + host_logf(HOST_LOG_INFO,"scene geometry %.0fx%.0f orientation=%ld locked=%d", + size.width,size.height,(long)scene.effectiveGeometry.interfaceOrientation, + scene.effectiveGeometry.isInterfaceOrientationLocked); +} +#endif +@end + +void host_ios_require_landscape(UIWindow *window) { + if (!window) return; + [window.rootViewController setNeedsUpdateOfSupportedInterfaceOrientations]; +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 260000 + if (@available(iOS 26.0,*)) [window.rootViewController setNeedsUpdateOfPrefersInterfaceOrientationLocked]; +#endif + UIWindowSceneGeometryPreferencesIOS *geometry=[[UIWindowSceneGeometryPreferencesIOS alloc] + initWithInterfaceOrientations:UIInterfaceOrientationMaskLandscape]; + [window.windowScene requestGeometryUpdateWithPreferences:geometry errorHandler:^(NSError *error) { + host_logf(HOST_LOG_WARN,"landscape request: %s",error.localizedDescription.UTF8String); + }]; +} diff --git a/port/ios/host_imports.list b/port/ios/host_imports.list new file mode 100644 index 0000000000..ac9d9ef95c --- /dev/null +++ b/port/ios/host_imports.list @@ -0,0 +1,5 @@ +# Shared custom-map cache hooks on iOS. +halo_map_download_directory +halo_map_download_request + +host_ios_metalfx_present diff --git a/port/ios/tests/xiso_probe.c b/port/ios/tests/xiso_probe.c new file mode 100644 index 0000000000..4d3fa9ef43 --- /dev/null +++ b/port/ios/tests/xiso_probe.c @@ -0,0 +1,23 @@ +#include "xiso.h" +#include +#include +#include +static uint64_t cancel_after, previous; +static int progress(void *context, const char *file, uint64_t done, uint64_t total) { + (void)context;(void)file; + if (donetotal) abort(); + previous=done; + return !cancel_after || done4) cancel_after=strtoull(argv[4],NULL,10); + ok=xiso_extract_maps(argv[2],argv[3],progress,NULL,error,sizeof(error)); + } + printf("%s: %s\n",ok?"OK":"ERROR",ok?"maps validated":error); + return ok?0:1; +} diff --git a/port/linux/game/menu_functions.c b/port/linux/game/menu_functions.c index 76622c831e..decd603433 100644 --- a/port/linux/game/menu_functions.c +++ b/port/linux/game/menu_functions.c @@ -126,7 +126,7 @@ void pc_menu_game_data_function_invoke(struct widget_instance *widget, long func /* ---------- constants */ -#define MAXIMUM_STRINGS 64 +#define MAXIMUM_STRINGS 128 /* the PC version's custom activation event (this engine never sends it) */ #define EVENT_CUSTOM_ACTIVATION 32 #define BUTTON_A 0 diff --git a/port/linux/game/menu_tags.c b/port/linux/game/menu_tags.c index 2fa0038a1a..0a0e311be9 100644 --- a/port/linux/game/menu_tags.c +++ b/port/linux/game/menu_tags.c @@ -89,7 +89,7 @@ adds to */ #define UNICODE_STRING_LIST_TAG 'ustr' #define FONT_TAG 'font' #define SOUND_TAG 'snd!' -#define MAXIMUM_STRINGS 64 +#define MAXIMUM_STRINGS 128 #define MAXIMUM_TEXT 2048 /* the size of a menu bitmap's D3D texture, which only stands for its PNG */ #define PLACEHOLDER_SIZE 4 diff --git a/port/linux/src/d3d8_gl.c b/port/linux/src/d3d8_gl.c index 8e05e57ec8..9f1bd6e568 100644 --- a/port/linux/src/d3d8_gl.c +++ b/port/linux/src/d3d8_gl.c @@ -28,6 +28,7 @@ Conventions carried over from the Xbox: #include "main/console.h" #ifdef HALO_MACOS #include "../../macos/renderer_config.h" +extern int host_ios_metalfx_present(unsigned int texture, unsigned int width, unsigned int height, unsigned int output_width, unsigned int output_height); #endif #include @@ -5720,6 +5721,11 @@ void WINAPI D3DDevice_Present(CONST RECT *source_rectangle, CONST RECT *destinat } x = (window_width - width) / 2; y = (window_height - height) / 2; +#ifdef HALO_MACOS + if (!host_ios_metalfx_present(back_buffer->target.texture, back_buffer->target.gl_width, + back_buffer->target.gl_height, width, height)) +#endif + { /* Creating an FBO binds both read and draw targets. Resolve it before selecting the window, including on the first/loading frame. */ read_framebuffer = framebuffer_get(back_buffer->target.texture, 0); @@ -5732,6 +5738,7 @@ void WINAPI D3DDevice_Present(CONST RECT *source_rectangle, CONST RECT *destinat /* row 0 of the render target is the top of the picture */ glBlitFramebuffer(0, 0, (GLint)back_buffer->target.gl_width, (GLint)back_buffer->target.gl_height, x, y + height, x + width, y, GL_COLOR_BUFFER_BIT, GL_LINEAR); + } platform_video_swap(); gl_check_errors("present"); xgpu_gl_state_invalidate(); diff --git a/port/linux/src/port_config.c b/port/linux/src/port_config.c index b803f9a7a6..e7d5129e5a 100644 --- a/port/linux/src/port_config.c +++ b/port/linux/src/port_config.c @@ -176,6 +176,24 @@ static const struct config_setting config_settings[] = "of each vertex shows across curved surfaces; false lights each vertex,\n" "as the Xbox does." }, + { "display.viewmodel_shield", _config_boolean, "false", "HALO_VIEWMODEL_SHIELD", _environment_value, _platform_all, + "The energy shield's flare on the first-person arms too, as on the body\n" + "(the stock game draws it on the body only)." }, + { "display.first_person_legs", _config_boolean, "false", "HALO_FIRST_PERSON_LEGS", _environment_value, _platform_all, + "Your own legs in first person, seen looking down: your body as others\n" + "see it, drawn from the waist down, moving as it moves." }, + { "display.shield_glow", _config_boolean, "false", "HALO_SHIELD_GLOW", _environment_value, _platform_all, + "Energy shields light what is around them as they flare, as plasma\n" + "does, in the shield's own color." }, + { "display.shield_glow_intensity", _config_string, "\"default\"", "HALO_SHIELD_GLOW_INTENSITY", _environment_value, _platform_all, + "How far the shield glow reaches: \"default\" or \"light_show\" (three\n" + "times as far, and at full strength from a third of the flare)." }, + { "display.shield_color", _config_string, "\"default\"", "HALO_SHIELD_COLOR", _environment_value, _platform_all, + "Your energy shield's color, as this machine draws it: \"default\" (the\n" + "shield's own) or a multiplayer armor color: white, black, red, blue,\n" + "gray, yellow, green, pink, purple, cyan, cobalt, orange, teal, sage,\n" + "brown, tan, maroon or salmon." }, + { "audio.enabled", _config_boolean, "true", "HALO_NO_AUDIO", _environment_set_is_false, _platform_all, "Play sound." }, { "audio.volume", _config_real, "1.0", "HALO_VOLUME", _environment_value, _platform_all, @@ -235,7 +253,7 @@ static const struct config_setting config_settings[] = "The touch controls' swipe aiming gets a controller's aim assist: the\n" "aim slows over a target and follows a moving one. false: none, as a\n" "mouse (the bullets' own autoaim stays)." }, - { "input.mouse_sensitivity", _config_real, "1.0", "HALO_MOUSE_SENSITIVITY", _environment_value, _platform_desktop, + { "input.mouse_sensitivity", _config_real, "0.1", "HALO_MOUSE_SENSITIVITY", _environment_value, _platform_desktop, "How far the view turns for the mouse's movement." }, { "input.invert_mouse", _config_boolean, "false", "HALO_MOUSE_INVERT", _environment_set_is_true, _platform_desktop, "Moving the mouse forward looks down." }, @@ -321,23 +339,6 @@ static const struct config_setting config_settings[] = "as CUSTOM SINGLEPLAYER and CUSTOM MULTIPLAYER. Their tags are checked\n" "as the game's own maps' are before they run; false refuses them\n" "(docs/custom_edition_caches.md)." }, - { "display.viewmodel_shield", _config_boolean, "false", "HALO_VIEWMODEL_SHIELD", _environment_value, _platform_all, - "The energy shield's flare on the first-person arms too, as on the body\n" - "(the stock game draws it on the body only)." }, - { "display.first_person_legs", _config_boolean, "false", "HALO_FIRST_PERSON_LEGS", _environment_value, _platform_all, - "Your own legs in first person, seen looking down: your body as others\n" - "see it, drawn from the waist down, moving as it moves." }, - { "display.shield_glow", _config_boolean, "false", "HALO_SHIELD_GLOW", _environment_value, _platform_all, - "Energy shields light what is around them as they flare, as plasma\n" - "does, in the shield's own color." }, - { "display.shield_glow_intensity", _config_string, "\"default\"", "HALO_SHIELD_GLOW_INTENSITY", _environment_value, _platform_all, - "How far the shield glow reaches: \"default\" or \"light_show\" (three\n" - "times as far, and at full strength from a third of the flare)." }, - { "display.shield_color", _config_string, "\"default\"", "HALO_SHIELD_COLOR", _environment_value, _platform_all, - "Your energy shield's color, as this machine draws it: \"default\" (the\n" - "shield's own) or a multiplayer armor color: white, black, red, blue,\n" - "gray, yellow, green, pink, purple, cyan, cobalt, orange, teal, sage,\n" - "brown, tan, maroon or salmon." }, { "paths.data", _config_string, "\"\"", "HALO_DATA_ROOT", _environment_value, _platform_desktop, "The folder holding the game data's maps folder; empty looks in the\n" diff --git a/port/linux/src/xinput_sdl.c b/port/linux/src/xinput_sdl.c index 6869d38aa1..4644687448 100644 --- a/port/linux/src/xinput_sdl.c +++ b/port/linux/src/xinput_sdl.c @@ -105,7 +105,7 @@ worn stick's drift */ #define STICK_AIMING_DEFLECTION 8000 /* (input.mouse_vertical_sensitivity, read with it) */ -static float vertical_sensitivity = 1.0f; +static float vertical_sensitivity = 0.1f; static float mouse_sensitivity(void) { @@ -117,7 +117,7 @@ static float mouse_sensitivity(void) read_at = config_changes(); sensitivity = (float)config_real("input.mouse_sensitivity"); if (sensitivity <= 0.0f) - sensitivity = 1.0f; + sensitivity = 0.1f; vertical_sensitivity = (float)config_real("input.mouse_vertical_sensitivity"); if (vertical_sensitivity <= 0.0f) vertical_sensitivity = sensitivity; diff --git a/port/macos/dependencies.json b/port/macos/dependencies.json index a8953dad7f..a688482662 100644 --- a/port/macos/dependencies.json +++ b/port/macos/dependencies.json @@ -64,6 +64,11 @@ "path": "KHR/khrplatform.h", "url": "https://raw.githubusercontent.com/KhronosGroup/EGL-Registry/db3425b8246136faccb5e2782b5694960bd6edf1/api/KHR/khrplatform.h", "sha256": "7b1e01aaa7ad8f6fc34b5c7bdf79ebf5189bb09e2c4d2e79fc5d350623d11e83" + }, + { + "path": "EGL/eglext_angle.h", + "url": "https://raw.githubusercontent.com/google/angle/c053bf85793bbb83016b1196d04e5df3594b9bcc/include/EGL/eglext_angle.h", + "sha256": "85c92699d39526c9157c939e46e1a49c5016495713182d21ebd78fc1ef5292e4" } ] } diff --git a/port/macos/host/host.h b/port/macos/host/host.h index 78500cd493..de354f30a2 100644 --- a/port/macos/host/host.h +++ b/port/macos/host/host.h @@ -12,7 +12,11 @@ #include "halo_android_abi.h" #ifdef HALO_IOS +#if defined(HALO_IOS_SIMULATOR) +#define HALO_MACOS_BIAS UINT64_C(0x10000000000) +#else #define HALO_MACOS_BIAS UINT64_C(0x400000000) +#endif /* The allocator, Xbox window and linked image all fit below 0x90000000. * Reserve only that span so UIKit/Metal can use the rest of the address space. */ #define HALO_ARENA_SIZE UINT64_C(0x90000000) diff --git a/port/macos/host/host_gl.c b/port/macos/host/host_gl.c index 1039a3430a..8f1fc666a8 100644 --- a/port/macos/host/host_gl.c +++ b/port/macos/host/host_gl.c @@ -17,6 +17,11 @@ void *host_gl_bridge(const char *name); void *host_gl_resolve(const char *name) { void *profile = host_perf_resolve(name); if (profile) return profile; +#ifdef HALO_APPLE_GRAPHICS + extern void *halo_debug_gl_resolve(const char *); + void *diagnostics = halo_debug_gl_resolve(name); + if (diagnostics) return diagnostics; +#endif void *bridge = host_gl_bridge(name); return bridge ? bridge : (void *)eglGetProcAddress(name); } diff --git a/port/macos/host/host_sdl.c b/port/macos/host/host_sdl.c index 558847726a..4bfc120c47 100644 --- a/port/macos/host/host_sdl.c +++ b/port/macos/host/host_sdl.c @@ -11,6 +11,9 @@ SDL's stream lock recursively from a different thread. */ #include "host.h" +#ifdef HALO_APPLE_GRAPHICS +#include "../../apple/host_debug.h" +#endif #ifndef HALO_IOS #include "../native/host_menu.h" #include "../../linux/include/native_input_events.h" @@ -289,7 +292,7 @@ uint32_t host_sdl_gl_create_context(uint32_t window) { return 0; } const EGLint configAttributes[] = {EGL_SURFACE_TYPE, - metal_window_hidden ? EGL_PBUFFER_BIT : EGL_WINDOW_BIT, + metal_window_hidden ? EGL_PBUFFER_BIT : EGL_WINDOW_BIT | EGL_PBUFFER_BIT, EGL_RENDERABLE_TYPE, EGL_OPENGL_ES3_BIT, EGL_RED_SIZE, @@ -308,6 +311,10 @@ uint32_t host_sdl_gl_create_context(uint32_t window) { EGLConfig config; if (!eglChooseConfig(metal_display, configAttributes, &config, 1, &count) || !count) return 0; +#ifdef HALO_APPLE_GRAPHICS + extern void halo_graphics_attach(EGLDisplay, EGLConfig); + halo_graphics_attach(metal_display, config); +#endif eglBindAPI(EGL_OPENGL_ES_API); const EGLint contextAttributes[] = {EGL_CONTEXT_CLIENT_VERSION, 3, EGL_NONE}; metal_context = eglCreateContext(metal_display, config, EGL_NO_CONTEXT, contextAttributes); @@ -328,6 +335,9 @@ uint32_t host_sdl_gl_create_context(uint32_t window) { return 0; } eglMakeCurrent(metal_display, metal_surface, metal_surface, metal_context); +#if defined(HALO_APPLE_GRAPHICS) && !defined(HALO_IOS) + halo_debug_install_menu(); +#endif #if defined(HALO_IOS) && !defined(HALO_IOS_MAC_CHECK) // Attach controls after SDL has installed the Metal view, otherwise // the drawable can cover the controller's UIKit overlay. @@ -416,6 +426,10 @@ int host_sdl_show_simple_message_box(uint32_t flags, const char *title, const ch /* ---------- gamepads */ int host_sdl_get_gamepads(uint32_t *ids, int capacity) { +#if defined(HALO_IOS) && !defined(HALO_IOS_MAC_CHECK) + extern int host_ios_gamepads(uint32_t *, int); + return host_ios_gamepads(ids, capacity); +#endif int count = 0, index; SDL_JoystickID *list = SDL_GetGamepads(&count); @@ -452,21 +466,42 @@ void host_sdl_close_gamepad(uint32_t gamepad) { } int host_sdl_gamepad_axis(uint32_t gamepad, int axis) { +#ifdef HALO_APPLE_GRAPHICS + if (halo_debug_is_presented()) return 0; +#endif SDL_Gamepad *object = handle_get(gamepad, _handle_gamepad); +#if defined(HALO_IOS) && !defined(HALO_IOS_MAC_CHECK) + extern int host_ios_gamepad_axis(SDL_Gamepad *, int); + return object ? host_ios_gamepad_axis(object, axis) : 0; +#else return object ? SDL_GetGamepadAxis(object, (SDL_GamepadAxis)axis) : 0; +#endif } int host_sdl_gamepad_button(uint32_t gamepad, int button) { +#ifdef HALO_APPLE_GRAPHICS + if (halo_debug_is_presented()) return 0; +#endif SDL_Gamepad *object = handle_get(gamepad, _handle_gamepad); +#if defined(HALO_IOS) && !defined(HALO_IOS_MAC_CHECK) + extern int host_ios_gamepad_button(SDL_Gamepad *, int); + return object ? host_ios_gamepad_button(object, button) : 0; +#else return object ? SDL_GetGamepadButton(object, (SDL_GamepadButton)button) : 0; +#endif } int host_sdl_gamepad_type(uint32_t gamepad) { SDL_Gamepad *object = handle_get(gamepad, _handle_gamepad); +#if defined(HALO_IOS) && !defined(HALO_IOS_MAC_CHECK) + extern int host_ios_gamepad_type(SDL_Gamepad *); + return object ? host_ios_gamepad_type(object) : SDL_GAMEPAD_TYPE_UNKNOWN; +#else return object ? SDL_GetGamepadType(object) : SDL_GAMEPAD_TYPE_UNKNOWN; +#endif } int host_sdl_rumble_gamepad(uint32_t gamepad, uint32_t low, uint32_t high, uint32_t milliseconds) { @@ -699,3 +734,9 @@ uint32_t host_sdl_audio_device_id(int recording, const char *name) { SDL_free(devices); return found; } + +#ifndef HALO_IOS +void *host_macos_game_window(void) { + return metal_window ? SDL_GetPointerProperty(SDL_GetWindowProperties(metal_window), SDL_PROP_WINDOW_COCOA_WINDOW_POINTER, NULL) : NULL; +} +#endif diff --git a/port/macos/host_imports.list b/port/macos/host_imports.list index d65b4fd871..d3882d87ba 100644 --- a/port/macos/host_imports.list +++ b/port/macos/host_imports.list @@ -5,3 +5,5 @@ halo_map_download_request host_sdl_audio_device_count host_sdl_audio_device_name host_sdl_audio_device_id + +host_ios_metalfx_present diff --git a/port/macos/native/HaloPreferences.m b/port/macos/native/HaloPreferences.m index 004b669c8a..66b221df82 100644 --- a/port/macos/native/HaloPreferences.m +++ b/port/macos/native/HaloPreferences.m @@ -142,6 +142,8 @@ - (BOOL)setCommunityDownloadsEnabled:(BOOL)enabled error:(NSError **)error { return root; } +static NSString *copiedFileHash(NSURL *file); + NSURL *HaloImportDiscImage(NSURL *image, NSURL *supportDirectory, xiso_progress_proc progress, void *context, NSError **error) { /* A new directory for every import. Failed imports never replace working data. */ @@ -149,13 +151,28 @@ - (BOOL)setCommunityDownloadsEnabled:(BOOL)enabled error:(NSError **)error { URLByAppendingPathComponent:NSUUID.UUID.UUIDString isDirectory:YES]; if (![NSFileManager.defaultManager createDirectoryAtURL:destination withIntermediateDirectories:YES attributes:nil error:error]) return nil; + BOOL scoped = [image startAccessingSecurityScopedResource]; + NSURL *privateImage = [destination URLByAppendingPathComponent:@"disc.iso"]; + if (progress) progress(context, "Copying and verifying disc image", 0, 1); + NSString *digest = copiedFileHash(image); + BOOL copied = digest && [NSFileManager.defaultManager copyItemAtURL:image toURL:privateImage error:error]; + BOOL verified = copied && [digest isEqual:copiedFileHash(privateImage)]; + if (scoped) [image stopAccessingSecurityScopedResource]; char detail[512] = {0}; - BOOL extracted = xiso_extract_maps(image.fileSystemRepresentation, destination.fileSystemRepresentation, + BOOL extracted = verified && xiso_extract_maps(privateImage.fileSystemRepresentation, destination.fileSystemRepresentation, progress, context, detail, sizeof(detail)); NSURL *validated = extracted ? HaloValidateGameData(destination, error) : nil; + if (validated) { + NSDictionary *attributes = [NSFileManager.defaultManager attributesOfItemAtPath:privateImage.path error:error]; + NSDictionary *record = @{@"version": @1, @"sha256": digest, + @"size": attributes[NSFileSize] ?: @0, @"originalName": image.lastPathComponent}; + if (!attributes || ![record writeToURL:[destination URLByAppendingPathComponent:@"integrity.plist"] atomically:YES]) validated = nil; + [destination setResourceValue:@YES forKey:NSURLIsExcludedFromBackupKey error:nil]; + } if (!validated) { [NSFileManager.defaultManager removeItemAtURL:destination error:nil]; - if (!extracted && error) *error = failure([NSString stringWithUTF8String:detail] ?: @"The disc image could not be read."); + if (error) *error = failure(!verified ? @"Could not copy and verify the disc image. Check available storage and try again." + : (*detail ? [NSString stringWithUTF8String:detail] : @"Could not save the private game data.")); } return validated; } diff --git a/port/macos/native/host_menu.m b/port/macos/native/host_menu.m index cb8302635b..b9c45a756a 100644 --- a/port/macos/native/host_menu.m +++ b/port/macos/native/host_menu.m @@ -188,7 +188,7 @@ - (void)buildMenus { item(statusMenu, @"Enter Full Screen", @selector(toggleFullscreen:), @""); item(statusMenu, @"Settings…", @selector(showSettings:), @","); [statusMenu addItem:NSMenuItem.separatorItem]; - item(statusMenu, @"Choose Disc Image…", @selector(selectImage:), @""); + item(statusMenu, @"Choose Halo ISO…", @selector(selectImage:), @""); item(statusMenu, @"Choose Maps Folder…", @selector(selectFolder:), @""); item(statusMenu, @"Open Saves Folder", @selector(openSaves:), @""); item(statusMenu, @"Edit Controls and Advanced Settings…", @selector(openConfig:), @""); @@ -317,7 +317,7 @@ - (void)buildSettings { label(content, @"Game Data", NSMakeRect(24, 235, 472, 22), NO).font = [NSFont boldSystemFontOfSize:13]; self.dataLabel = label(content, @"No maps selected", NSMakeRect(24, 206, 472, 20), YES); self.sourceLabel = label(content, @"", NSMakeRect(24, 182, 472, 20), YES); - button(content, @"Choose Disc Image…", @selector(selectImage:), NSMakeRect(20, 143, 183, 32)); + button(content, @"Choose Halo ISO…", @selector(selectImage:), NSMakeRect(20, 143, 183, 32)); button(content, @"Choose Maps Folder…", @selector(selectFolder:), NSMakeRect(211, 143, 193, 32)); label(content, @"Changes to game data take effect when Halo OG next opens.", NSMakeRect(24, 116, 472, 19), YES).font = [NSFont systemFontOfSize:11]; self.automaticUpdatesButton = [NSButton checkboxWithTitle:@"Automatically check for updates" @@ -561,7 +561,7 @@ - (BOOL)chooseImage { host_sdl_release_mouse(); NSOpenPanel *panel = NSOpenPanel.openPanel; panel.title = @"Choose Your Xbox Halo Disc Image"; - panel.message = @"The app imports only the maps from your local disc image."; + panel.message = @"The app verifies and keeps a private copy of your ISO/XISO for future launches."; panel.canChooseDirectories = NO; panel.canChooseFiles = YES; panel.allowsMultipleSelection = NO; @@ -578,7 +578,7 @@ - (BOOL)chooseImage { - (void)importImage:(NSURL *)image completion:(void (^)(BOOL))completion { NSWindow *window = [[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, 470, 130) styleMask:NSWindowStyleMaskTitled backing:NSBackingStoreBuffered defer:NO]; - window.title = @"Importing Halo OG Maps"; + window.title = @"Importing Halo Disc Image"; window.level = NSFloatingWindowLevel; NSTextField *progressLabel = label(window.contentView, @"Reading disc image…", NSMakeRect(24, 78, 422, 22), NO); NSProgressIndicator *bar = [[NSProgressIndicator alloc] initWithFrame:NSMakeRect(24, 48, 422, 18)]; @@ -598,7 +598,7 @@ - (void)importImage:(NSURL *)image completion:(void (^)(BOOL))completion { self.importing = NO; [window orderOut:self]; NSError *selectionError = error; - BOOL succeeded = imported && [self.preferences selectDataRoot:imported iso:image error:&selectionError]; + BOOL succeeded = imported && [self.preferences selectDataRoot:imported iso:[imported URLByAppendingPathComponent:@"disc.iso"] error:&selectionError]; if (!succeeded) { if (imported) [NSFileManager.defaultManager removeItemAtURL:imported error:nil]; showError(selectionError); @@ -640,7 +640,7 @@ - (void)selectImage:(id)sender { [self showSettings:nil]; NSOpenPanel *panel = NSOpenPanel.openPanel; panel.title = @"Choose Your Xbox Halo Disc Image"; - panel.message = @"The app imports only the maps from your local disc image."; + panel.message = @"The app verifies and keeps a private copy of your ISO/XISO for future launches."; panel.canChooseDirectories = NO; panel.canChooseFiles = YES; panel.allowsMultipleSelection = NO; @@ -749,7 +749,7 @@ int host_menu_prepare(const char *support, const char *fallback, char *data, siz NSAlert *alert = [[NSAlert alloc] init]; alert.messageText = @"Choose your Halo OG game data"; alert.informativeText = @"Use your own original Xbox Halo disc image or extracted maps folder. The app does not include game data."; - [alert addButtonWithTitle:@"Choose Disc Image…"]; + [alert addButtonWithTitle:@"Choose Halo ISO…"]; [alert addButtonWithTitle:@"Choose Maps Folder…"]; [alert addButtonWithTitle:@"Quit"]; NSModalResponse answer = [alert runModal]; diff --git a/port/macos/tests/menu_preferences.m b/port/macos/tests/menu_preferences.m index 09180f4148..fb2bc69938 100644 --- a/port/macos/tests/menu_preferences.m +++ b/port/macos/tests/menu_preferences.m @@ -203,11 +203,15 @@ int main(int argc, const char **argv) { assert([[NSData dataWithContentsOfURL:settings] isEqual:unchanged]); NSURL *image = [test URLByAppendingPathComponent:@"disc.iso"]; NSURL *imported = HaloImportDiscImage(image, support, progress, NULL, &error); - assert(imported && progressCalls == 2); + assert(imported && progressCalls >= 2); + NSURL *privateImage = [imported URLByAppendingPathComponent:@"disc.iso"]; + assert([[NSData dataWithContentsOfURL:privateImage] isEqual:[NSData dataWithContentsOfURL:image]]); + NSDictionary *integrity = [NSDictionary dictionaryWithContentsOfURL:[imported URLByAppendingPathComponent:@"integrity.plist"]]; + assert([integrity[@"sha256"] length] == 64); assert([preferences.dataPath isEqualToString:valid.path]); assert([[NSData dataWithContentsOfURL:[imported URLByAppendingPathComponent:@"maps/ui.map"]] isEqualToData:[NSData dataWithContentsOfURL:[valid URLByAppendingPathComponent:@"maps/ui.map"]]]); - assert([preferences selectDataRoot:imported iso:image error:&error]); + assert([preferences selectDataRoot:imported iso:privateImage error:&error]); before = [NSData dataWithContentsOfURL:settings]; NSURL *imports = [support URLByAppendingPathComponent:@"Game Data"]; NSUInteger count = [NSFileManager.defaultManager contentsOfDirectoryAtURL:imports @@ -218,8 +222,11 @@ int main(int argc, const char **argv) { includingPropertiesForKeys:nil options:0 error:nil].count == count); assert([[NSData dataWithContentsOfURL:settings] isEqualToData:before]); } + assert([NSFileManager.defaultManager removeItemAtURL:image error:&error]); + assert(HaloValidateGameData(imported, &error)); + assert([NSData dataWithContentsOfURL:privateImage].length > 0); preferences = [[HaloPreferences alloc] initWithSupportDirectory:support]; - assert(preferences.windowed && [preferences.isoPath isEqualToString:image.path]); + assert(preferences.windowed && [preferences.isoPath isEqualToString:privateImage.path]); assert([preferences.dataPath isEqualToString:imported.path]); saved = [NSJSONSerialization JSONObjectWithData:before options:0 error:nil]; assert([saved[@"future_setting"] isEqualToString:@"preserve me"]); @@ -236,7 +243,7 @@ int main(int argc, const char **argv) { assert(!HaloUpdateConfigurationIsValid(@{@"SUFeedURL":url, @"SUPublicEDKey":key})); assert(!HaloUpdateConfigurationIsValid(@{})); assert(!HaloUpdateConfigurationIsValid(@{@"SUFeedURL":@"https://example.com/feed.xml", @"SUPublicEDKey":@"invalid"})); - migrationFixtures(test, valid, image); + migrationFixtures(test, valid, privateImage); puts("Map validation, XISO import, failed-import rollback, persistent preferences and update configuration passed"); } return 0; diff --git a/tools/android_build.py b/tools/android_build.py index 0a0552e583..abfa182ab4 100644 --- a/tools/android_build.py +++ b/tools/android_build.py @@ -238,7 +238,8 @@ def android_configure_inputs() -> List[Path]: def generate_android_build(n: Writer, sln: Any) -> None: macos = getattr(sln, "macos", False) ios = getattr(sln, "ios", False) - build_root = Path("build/ios") if ios else Path("build/macos") if macos else BUILD + ios_simulator = ios and os.environ.get("HALO_IOS_SIMULATOR") == "1" + build_root = Path("build/ios-simulator" if ios_simulator else "build/ios") if ios else Path("build/macos") if macos else BUILD config_path = LINUX_DIR / "port.json" if not config_path.is_file() or not (PORT_DIR / "host").is_dir(): return @@ -289,6 +290,8 @@ def generate_android_build(n: Writer, sln: Any) -> None: config: Dict[str, Any] = json.loads(config_path.read_text(encoding="utf-8")) guest_cc = getattr(sln, "android_guest_cc", None) or "clang" + if ios_simulator: + guest_cc += " --simulator" guest_dir = build_root / "guest" obj_dir = guest_dir / "obj" @@ -374,10 +377,10 @@ def generate_android_build(n: Writer, sln: Any) -> None: imports_s = gen_dir / "imports.s" host_table_c = build_root / "host" / "host_import_table.c" host_imports_list = PORT_DIR / "host_imports.list" - platform_imports = [Path("port/macos/host_imports.list")] if macos else [] + platform_imports = [Path("port/macos/host_imports.list")] if macos else [Path("port/ios/host_imports.list")] if ios else [] n.rule( name="android_imports", - command=f"{python} tools/android_imports.py {'--ios ' if ios else ''}--host-table {host_table_c} {imports_s} $in", + command=f"{python} tools/android_imports.py {'--ios ' if ios else ''}{'--simulator ' if ios_simulator else ''}--host-table {host_table_c} {imports_s} $in", description="ANDROID IMPORTS", ) n.build(outputs=[imports_s, host_table_c], rule="android_imports", @@ -415,7 +418,7 @@ def generate_android_build(n: Writer, sln: Any) -> None: platform = "ios" if ios else "macos" n.rule(name="macos_rebase_plugin", command=f"{python} tools/{platform}_build.py --plugin-only", description="MACOS COMPILER PASS") - plugin = build_root / "guest_rebase.dylib" + plugin = (Path("build/ios") if ios else build_root) / "guest_rebase.dylib" n.build(outputs=plugin, rule="macos_rebase_plugin", inputs=[Path("port/macos/compiler/guest_rebase.cpp")], implicit=[Path(f"tools/{platform}_build.py")]) diff --git a/tools/android_gl_stubs.py b/tools/android_gl_stubs.py index db473fe474..2a8a52b522 100644 --- a/tools/android_gl_stubs.py +++ b/tools/android_gl_stubs.py @@ -63,7 +63,7 @@ def main(): "#include ", "#include ", "#include ", - "#ifdef HALO_IOS", + "#if defined(HALO_IOS) && !defined(HALO_IOS_SIMULATOR)", "#define HOST_POINTER(p) ((p) ? (0x400000000ull | (unsigned int)(p)) : 0ull)", "#elif defined(HALO_MACOS)", "#define HOST_POINTER(p) ((p) ? (0x10000000000ull | (unsigned int)(p)) : 0ull)", diff --git a/tools/android_imports.py b/tools/android_imports.py index c687174412..295b908269 100644 --- a/tools/android_imports.py +++ b/tools/android_imports.py @@ -22,6 +22,9 @@ def main(): ios = "--ios" in arguments if ios: arguments.remove("--ios") + simulator = "--simulator" in arguments + if simulator: + arguments.remove("--simulator") host_table = None if arguments[0] == "--host-table": host_table = arguments[1] @@ -45,7 +48,7 @@ def main(): if ios: out += [f"\tmovz w16, #:abs_g0_nc:__host_import_table+{offset}", f"\tmovk w16, #:abs_g1_nc:__host_import_table+{offset}", - "\torr x16, x16, #0x400000000", "\tldr x16, [x16]"] + f"\torr x16, x16, #{'0x10000000000' if simulator else '0x400000000'}", "\tldr x16, [x16]"] else: out += [f"\tadrp x16, __host_import_table+{offset}", f"\tldr x16, [x16, :lo12:__host_import_table+{offset}]"] diff --git a/tools/ios_build.py b/tools/ios_build.py index f746e3ba85..8897d9ce5c 100644 --- a/tools/ios_build.py +++ b/tools/ios_build.py @@ -28,7 +28,7 @@ def build_app(platform, args): run(cmake, '-S', 'port/ios', '-B', directory, '-G', 'Xcode', '-DCMAKE_SYSTEM_NAME=iOS', f'-DCMAKE_OSX_SYSROOT={sdk}', '-DCMAKE_OSX_ARCHITECTURES=arm64', '-DCMAKE_OSX_DEPLOYMENT_TARGET=26.0', - f'-DHALO_BUNDLE_MAPS={"OFF" if args.no_bundle_maps else "ON"}', + f'-DHALO_BUNDLE_IDENTIFIER={args.bundle_id}', f'-DHALO_DEVELOPMENT_TEAM={args.team or ""}') settings = ['-jobs', str(args.jobs)] @@ -53,7 +53,7 @@ def main(): p.add_argument('--guest-only', action='store_true') p.add_argument('--host-only', action='store_true', help='Reuse the compiled game image') p.add_argument('--platform', choices=['simulator', 'device', 'both'], default='simulator') - p.add_argument('--no-bundle-maps', action='store_true', help='Install game files separately through Files/Finder') + p.add_argument('--no-bundle-maps', action='store_true', help='Compatibility option: game data is always imported after installation') p.add_argument('--team', help='Apple development team ID for device signing') p.add_argument('--bundle-id', default='local.halo.ce-universal.ios', help='Unique reverse-DNS app identifier registered to your development team') @@ -66,16 +66,20 @@ def main(): if args.plugin_only: build_plugin() return - if not args.host_only: - run(sys.executable, 'configure.py', '--ios', '--android-guest-llvm-bin', 'build/macos/toolchain/bin', - '--android-guest-gl-include', 'build/macos/toolchain/gl', '--pgo', 'off') - ninja = shutil.which('ninja') or ROOT / 'build/macos/toolchain/venv/bin/ninja' - if not Path(ninja).is_file(): - raise RuntimeError('Install Ninja and run tools/macos_setup.py first; see docs/apple-build.md') - run(ninja, f'-j{args.jobs}', 'ios_guest') - run(sys.executable, 'tools/ios_embed.py', BUILD / 'halo_guest.elf', BUILD / 'embed') - if not args.guest_only: - for platform in (['simulator', 'device'] if args.platform == 'both' else [args.platform]): + for platform in (['simulator', 'device'] if args.platform == 'both' else [args.platform]): + # The simulator reserves the device's 16-GB arena. Its separately built + # signed image uses the Mac's 1-TB arena; never reuse it on a device. + os.environ['HALO_IOS_SIMULATOR'] = '1' if platform == 'simulator' else '0' + guest = ROOT / ('build/ios-simulator' if platform == 'simulator' else 'build/ios') + if not args.host_only: + run(sys.executable, 'configure.py', '--ios', '--android-guest-llvm-bin', 'build/macos/toolchain/bin', + '--android-guest-gl-include', 'build/macos/toolchain/gl', '--pgo', 'off') + ninja = shutil.which('ninja') or ROOT / 'build/macos/toolchain/venv/bin/ninja' + if not Path(ninja).is_file(): + raise RuntimeError('Install Ninja and run tools/macos_setup.py first; see docs/apple-build.md') + run(ninja, f'-j{args.jobs}', 'ios_guest') + run(sys.executable, 'tools/ios_embed.py', guest / 'halo_guest.elf', guest / 'embed') + if not args.guest_only: build_app(platform, args) if __name__ == '__main__': diff --git a/tools/ios_extract_assets.py b/tools/ios_extract_assets.py new file mode 100644 index 0000000000..4616ab6e34 --- /dev/null +++ b/tools/ios_extract_assets.py @@ -0,0 +1,72 @@ +#!/usr/bin/env python3 +"""Inspect and extract Halo map files from a user's Xbox XISO without changing them.""" +import argparse +import hashlib +import json +import struct +from pathlib import Path + + +def map_entries(image): + """Read bounded XDVDFS directory trees and return map file extents.""" + length=image.seek(0,2) + for base in (0,0xFD90000,0x2080000,0x18300000): + image.seek(base+32*2048);header=image.read(2048) + if header[:20]==b'MICROSOFT*XBOX*MEDIA':break + else:raise ValueError('No Xbox filesystem header found') + root,size=struct.unpack_from('length or size>16*1024*1024 or sector in visited: + raise ValueError('Invalid or cyclic directory extent') + visited.add(sector);image.seek(extent);data=image.read(size);nodes=set() + def node(offset): + if offset in nodes or offset+14>len(data):raise ValueError('Invalid directory tree') + nodes.add(offset) + left,right,sector,size,attr,count=struct.unpack_from('len(data):raise ValueError('Invalid filename length') + name=data[offset+14:offset+14+count].decode('ascii') + if not name or name in ('.','..') or any(c in name for c in '/\\\0'):raise ValueError('Invalid filename') + if left:yield from node(left*4) + path=prefix/name + if attr&16: + yield from directory(sector,size,path) + elif path.parts[0].lower()=='maps' and path.suffix.lower()=='.map': + start=base+sector*2048 + if start+size>length:raise ValueError('Map extends beyond image') + yield path,start,size + if right:yield from node(right*4) + yield from node(0) + return list(directory(root,size,Path())) + + +def main(): + """Report exact cache build IDs; optionally copy the maps unchanged.""" + parser=argparse.ArgumentParser(description=__doc__) + parser.add_argument('image',type=Path) + parser.add_argument('--output',type=Path,help='new output directory; existing files are never replaced') + args=parser.parse_args();manifest=[] + with args.image.open('rb') as image: + for path,start,size in map_entries(image): + image.seek(start);header=image.read(2048) + if header[:4]!=b'daeh' or header[-4:]!=b'toof':raise ValueError(f'Invalid Halo cache header: {path}') + build=header[64:96].split(b'\0',1)[0].decode('ascii') + entry={'path':str(path),'bytes':size,'build':build,'version':struct.unpack_from('> 16 + if (path.is_absolute() or '..' in path.parts or '\\' in entry.filename + or not path.parts or path.parts[0] != 'Payload' + or stat.S_ISLNK(mode)): + parser.error('Expected a Halo IPA containing only Payload, without unsafe paths or symlinks.') + archive.extractall(stage) + apps = list((stage/'Payload').glob('*.app')) + if len(apps) != 1: + parser.error('Expected exactly one application in Payload.') + app = apps[0] + info_path = app/'Info.plist' + info = plistlib.loads(info_path.read_bytes()) + if (info.get('CFBundleExecutable') not in ('Halo', 'HaloCE') + or info.get('CFBundleSupportedPlatforms') != ['iPhoneOS'] + or not (app/info['CFBundleExecutable']).is_file()): + parser.error('Expected a HaloCE iPhone/iPad device build.') + if any(app.rglob('*.appex')) or any(app.rglob('*.app')): + parser.error('Nested apps/extensions require separate profiles and are unsupported.') + for signature in app.rglob('_CodeSignature'): + shutil.rmtree(signature) + info['CFBundleIdentifier'] = args.bundle_id + info_path.write_bytes(plistlib.dumps(info)) + shutil.copyfile(args.profile, app/'embedded.mobileprovision') + entitlement_path = stage/'entitlements.plist' + entitlement_path.write_bytes(plistlib.dumps(entitlements)) + # ZIP extraction does not preserve executable mode. Restore bundle + # executables before signing, including SDL and ANGLE frameworks. + nested = list(app.rglob('*.framework')) + list(app.rglob('*.dylib')) + for target in sorted(nested, key=lambda p: len(p.parts), reverse=True): + if target.suffix == '.framework': + framework = plistlib.loads((target/'Info.plist').read_bytes()) + executable = target/framework['CFBundleExecutable'] + else: + executable = target + executable.chmod(0o755) + run('codesign', '--force', '--sign', identity, '--timestamp=none', target) + (app/info['CFBundleExecutable']).chmod(0o755) + run('codesign', '--force', '--sign', identity, '--timestamp=none', + '--generate-entitlement-der', '--entitlements', entitlement_path, app) + run('codesign', '--verify', '--deep', '--strict', app) + args.output.parent.mkdir(parents=True, exist_ok=True) + with zipfile.ZipFile(args.output, 'x', zipfile.ZIP_DEFLATED) as archive: + for path in sorted(app.rglob('*')): + if path.is_file(): + archive.write(path, path.relative_to(stage)) + digest = hashlib.sha256(args.output.read_bytes()).hexdigest() + args.output.with_suffix(args.output.suffix+'.sha256').write_text(f'{digest} {args.output.name}\n') + print(f'Signed IPA: {args.output}\nBundle ID: {args.bundle_id}\nProfile expires: {profile["ExpirationDate"]} UTC') + print('Install with Apple Configurator, or extract the IPA and use xcrun devicectl device install app.') + print('Keep your signing account and bundle ID unchanged when updating to preserve imported game data.') + + +if __name__ == '__main__': + try: + main() + except (OSError, ValueError, KeyError, zipfile.BadZipFile, subprocess.CalledProcessError) as error: + sys.exit(f'Re-signing failed: {error}') diff --git a/tools/ios_resign.sh b/tools/ios_resign.sh new file mode 100755 index 0000000000..21c725304c --- /dev/null +++ b/tools/ios_resign.sh @@ -0,0 +1,4 @@ +#!/bin/bash +# Re-sign the public Halo IPA on macOS using your own keychain identity/profile. +set -euo pipefail +exec python3 "$(dirname "$0")/ios_resign.py" "$@" diff --git a/tools/ios_xiso_test.py b/tools/ios_xiso_test.py new file mode 100644 index 0000000000..8de99ff178 --- /dev/null +++ b/tools/ios_xiso_test.py @@ -0,0 +1,128 @@ +#!/usr/bin/env python3 +"""Test native XISO import with synthetic, non-proprietary disc images.""" +from pathlib import Path +import hashlib +import os +import random +import struct +import subprocess +import tempfile +import unittest +from ios_extract_assets import map_entries + +ROOT=Path(__file__).resolve().parents[1] +BUILD=ROOT/'build/ios/xiso-tests' +BUILD.mkdir(parents=True,exist_ok=True) +PROBE=BUILD/'probe' +subprocess.run(['xcrun','clang','-std=c11','-Wall','-Wextra','-Werror','-g', + '-fsanitize=address,undefined','-Iport/apple','port/apple/xiso.c', + 'port/ios/tests/xiso_probe.c','-o',str(PROBE)],cwd=ROOT,check=True) +NAMES=['ui.map','a10.map','a30.map','a50.map','b30.map','b40.map','c10.map','c20.map','c40.map','d20.map','d40.map'] +MAGIC=b'MICROSOFT*XBOX*MEDIA' + + +def fixture(path, build='01.10.12.2276', names=None, partition=0): + names=NAMES if names is None else names + entries=bytearray(2048);payloads={} + with path.open('wb') as image: + header=bytearray(2048);header[:20]=header[0x7ec:]=MAGIC + struct.pack_into(' +#include "port_config.h" +void platform_log(const char *format, ...) { (void)format; } +int main(int argc, char **argv) { + const char *key = "input.mouse_sensitivity"; + double value = 0.225; + if (argc > 1 && !config_write_numbers(&key, &value, 1)) return 2; + printf("%.3f\n", config_real("input.mouse_sensitivity")); + return 0; +} +''' + +class AppleDefaults(unittest.TestCase): + def test_defaults_and_reload(self): + with tempfile.TemporaryDirectory() as temporary: + directory = Path(temporary) + (directory/'prefix.h').write_text(PREFIX) + (directory/'probe.c').write_text(HARNESS) + for platform in ('mac', 'ios'): + with self.subTest(platform=platform): + binary = directory/platform + flags = ['-DHALO_ANDROID=1', '-DHALO_MACOS=1'] + if platform == 'ios': flags += ['-DHALO_IOS=1'] + subprocess.run(['clang', '-std=gnu11', *flags, '-include', str(directory/'prefix.h'), + '-I'+str(PORT), '-I'+str(SDL/'include'), '-I'+str(ROOT/'port/third_party/tomlc17'), + str(directory/'probe.c'), str(PORT/'port_config.c'), str(ROOT/'port/third_party/tomlc17/tomlc17.c'), + '-L'+str(SDL/'lib'), '-lSDL3', '-o', str(binary)], check=True) + saves = directory/(platform+'-saves'); saves.mkdir() + env = {k:v for k,v in os.environ.items() if not k.startswith('HALO_')} + env.update(HALO_SAVE_ROOT=str(saves), HALO_CONFIG_ROOT=str(saves)) + def run(*args): + return subprocess.check_output([str(binary), *args], env=env, text=True).strip() + self.assertEqual(run(), '0.100') + data = tomllib.loads((saves/'config.toml').read_text()) + self.assertFalse(data['display']['viewmodel_shield']) + self.assertEqual(run('save'), '0.225') + self.assertEqual(run(), '0.225') diff --git a/tools/test_linux_port.py b/tools/test_linux_port.py index f85072824f..542a8e1582 100644 --- a/tools/test_linux_port.py +++ b/tools/test_linux_port.py @@ -229,6 +229,9 @@ def test_menus_are_well_formed(): root = MENUS.parent.parent.parent tags = root / "port/linux/game/menu_tags.c" + string_limit = int(re.search(r"#define MAXIMUM_STRINGS (\d+)", tags.read_text())[1]) + functions_text = (root / "port/linux/game/menu_functions.c").read_text() + assert string_limit == int(re.search(r"#define MAXIMUM_STRINGS (\d+)", functions_text)[1]) events = c_strings(tags, "event_names[] =", "};") flags = c_strings(tags, "widget_flag_names[] =", "};") functions = set(c_strings(root / "source/interface/ui_widget_event_handler_functions.c", '\t{\n\t\t"NULL",', "}")) @@ -287,6 +290,8 @@ def test_menus_are_well_formed(): assert len(children) in (0, 1, 3), where if element.get("strings") or "items_from_strings" in element.get("list_flags", ""): assert element.get("type") == "spinner" and not children, where + if element.get("strings"): + assert len(element.get("strings").split("|")) <= string_limit, where if element.get("setting"): assert len(element.get("strings").split("|")) == len(element.get("values").split("|")), where for attribute in ("bitmap", "header_bitmap", "footer_bitmap"): From 2d876534dc1be1f2e06b9ccd5434d2bc08f9df6b Mon Sep 17 00:00:00 2001 From: Logan Shire Date: Mon, 12 Oct 2026 18:57:05 -0400 Subject: [PATCH 02/29] Explicitly restrict iPad interface orientations to landscape --- port/ios/Info.plist.in | 1 + 1 file changed, 1 insertion(+) diff --git a/port/ios/Info.plist.in b/port/ios/Info.plist.in index 0537fcdd4b..1cf8838efc 100644 --- a/port/ios/Info.plist.in +++ b/port/ios/Info.plist.in @@ -12,6 +12,7 @@ MinimumOSVersion26.0 UIRequiredDeviceCapabilitiesarm64metal UISupportedInterfaceOrientationsUIInterfaceOrientationLandscapeLeftUIInterfaceOrientationLandscapeRight +UISupportedInterfaceOrientations~ipadUIInterfaceOrientationLandscapeLeftUIInterfaceOrientationLandscapeRight UIRequiresFullScreen CADisableMinimumFrameDurationOnPhone UIStatusBarHidden From deceae83c71de2fc22b0fb6e70f98ab1f070848a Mon Sep 17 00:00:00 2001 From: Logan Shire Date: Mon, 12 Oct 2026 19:05:11 -0400 Subject: [PATCH 03/29] Move iOS guest arena above Metal virtual memory reservations --- port/ios/host/host_main.m | 2 +- port/ios/tests/signed_image.c | 2 +- port/macos/compiler/guest_rebase.cpp | 2 +- port/macos/host/host.h | 4 +++- tools/android_gl_stubs.py | 2 +- tools/android_imports.py | 2 +- tools/ios_build.py | 2 +- tools/test_ios_runtime.py | 4 ++-- 8 files changed, 11 insertions(+), 9 deletions(-) diff --git a/port/ios/host/host_main.m b/port/ios/host/host_main.m index f271e407ef..6dce8401f5 100644 --- a/port/ios/host/host_main.m +++ b/port/ios/host/host_main.m @@ -123,7 +123,7 @@ int main(int argc, char **argv) { char width[32]; snprintf(width, sizeof(width), "%d", (480 * long_side / short_side) & ~1); setenv("HALO_DISPLAY_WIDTH", width, 0); } - if (host_load_image(NULL, 0)) host_fatal("Cannot initialize game memory. Check the app's Extended Virtual Addressing signing capability."); + if (host_load_image(NULL, 0)) host_fatal("Cannot initialize game memory. See save/halo.log for the failed memory reservation or image load."); uint32_t boot = make_boot(); size_t stack_size = 16 * 1024 * 1024; char *stack = host_low_map(stack_size + HALO_MACOS_PAGE, PROT_READ | PROT_WRITE); diff --git a/port/ios/tests/signed_image.c b/port/ios/tests/signed_image.c index 27d5b4d606..34feff969f 100644 --- a/port/ios/tests/signed_image.c +++ b/port/ios/tests/signed_image.c @@ -10,7 +10,7 @@ #ifdef HALO_IOS_MAC_CHECK #define BIAS UINT64_C(0x10000000000) #else -#define BIAS UINT64_C(0x400000000) +#define BIAS UINT64_C(0x1000000000) #endif static void *run(void *unused) { (void)unused; diff --git a/port/macos/compiler/guest_rebase.cpp b/port/macos/compiler/guest_rebase.cpp index 4848277ae6..2b8714ad01 100644 --- a/port/macos/compiler/guest_rebase.cpp +++ b/port/macos/compiler/guest_rebase.cpp @@ -27,7 +27,7 @@ struct RebasePass : PassInfoMixin { bool macCheck = false; explicit RebasePass(bool ios = false, bool macCheck = false) : ios(ios), macCheck(macCheck) {} PreservedAnalyses run(Module &module, ModuleAnalysisManager &) { - const uint64_t bias = ios && !macCheck ? 0x400000000ULL : GuestBias; + const uint64_t bias = ios && !macCheck ? 0x1000000000ULL : GuestBias; if (module.getDataLayout().getPointerSize(0) != 4 || module.getDataLayout().getPointerSize(272) != 8) report_fatal_error("Halo rebase requires arm64_32 with 64-bit address space 272"); diff --git a/port/macos/host/host.h b/port/macos/host/host.h index de354f30a2..3192071e9c 100644 --- a/port/macos/host/host.h +++ b/port/macos/host/host.h @@ -15,7 +15,9 @@ #if defined(HALO_IOS_SIMULATOR) #define HALO_MACOS_BIAS UINT64_C(0x10000000000) #else -#define HALO_MACOS_BIAS UINT64_C(0x400000000) +// iOS Metal may reserve up to 0xfc0000000 before guest startup. +// Extended Virtual Addressing allows this arena above that reservation. +#define HALO_MACOS_BIAS UINT64_C(0x1000000000) #endif /* The allocator, Xbox window and linked image all fit below 0x90000000. * Reserve only that span so UIKit/Metal can use the rest of the address space. */ diff --git a/tools/android_gl_stubs.py b/tools/android_gl_stubs.py index 2a8a52b522..203d2f5420 100644 --- a/tools/android_gl_stubs.py +++ b/tools/android_gl_stubs.py @@ -64,7 +64,7 @@ def main(): "#include ", "#include ", "#if defined(HALO_IOS) && !defined(HALO_IOS_SIMULATOR)", - "#define HOST_POINTER(p) ((p) ? (0x400000000ull | (unsigned int)(p)) : 0ull)", + "#define HOST_POINTER(p) ((p) ? (0x1000000000ull | (unsigned int)(p)) : 0ull)", "#elif defined(HALO_MACOS)", "#define HOST_POINTER(p) ((p) ? (0x10000000000ull | (unsigned int)(p)) : 0ull)", "#else", diff --git a/tools/android_imports.py b/tools/android_imports.py index 295b908269..b8f8ccbc01 100644 --- a/tools/android_imports.py +++ b/tools/android_imports.py @@ -48,7 +48,7 @@ def main(): if ios: out += [f"\tmovz w16, #:abs_g0_nc:__host_import_table+{offset}", f"\tmovk w16, #:abs_g1_nc:__host_import_table+{offset}", - f"\torr x16, x16, #{'0x10000000000' if simulator else '0x400000000'}", "\tldr x16, [x16]"] + f"\torr x16, x16, #{'0x10000000000' if simulator else '0x1000000000'}", "\tldr x16, [x16]"] else: out += [f"\tadrp x16, __host_import_table+{offset}", f"\tldr x16, [x16, :lo12:__host_import_table+{offset}]"] diff --git a/tools/ios_build.py b/tools/ios_build.py index 8897d9ce5c..8dcb45c9ea 100644 --- a/tools/ios_build.py +++ b/tools/ios_build.py @@ -67,7 +67,7 @@ def main(): build_plugin() return for platform in (['simulator', 'device'] if args.platform == 'both' else [args.platform]): - # The simulator reserves the device's 16-GB arena. Its separately built + # Device code uses a 64-GB arena above iOS's Metal reservations. The simulator's # signed image uses the Mac's 1-TB arena; never reuse it on a device. os.environ['HALO_IOS_SIMULATOR'] = '1' if platform == 'simulator' else '0' guest = ROOT / ('build/ios-simulator' if platform == 'simulator' else 'build/ios') diff --git a/tools/test_ios_runtime.py b/tools/test_ios_runtime.py index 713f2d4c7d..a3620510bd 100644 --- a/tools/test_ios_runtime.py +++ b/tools/test_ios_runtime.py @@ -13,7 +13,7 @@ def run(*args): def normalized_ir(path, bias): text = path.read_text().split('\n', 1)[1] # ModuleID contains the temporary filename. for offset in (0, 0xff0000): - text = text.replace(str(bias + offset), str(0x400000000 + offset)) + text = text.replace(str(bias + offset), str(0x1000000000 + offset)) return text def main(): @@ -28,7 +28,7 @@ def main(): run(sys.executable, 'tools/ios_guest_cc.py', '--mac-check', '--target=arm64_32-apple-watchos', '-mcpu=cortex-a53', '-O2', '-ffreestanding', '-fno-stack-protector', '-fno-unwind-tables', '-fno-asynchronous-unwind-tables', '-S', source, '-o', str(base) + '.darwin.s') - if normalized_ir(Path(str(device) + '.darwin.rebased.ll'), 0x400000000) != normalized_ir(Path(str(base) + '.darwin.rebased.ll'), 0x10000000000): + if normalized_ir(Path(str(device) + '.darwin.rebased.ll'), 0x1000000000) != normalized_ir(Path(str(base) + '.darwin.rebased.ll'), 0x10000000000): raise RuntimeError('Mac signed-image lowering differs from device IR beyond the arena address') run(sys.executable, 'tools/android_asm_convert.py', str(base) + '.darwin.s', str(base) + '.s') run(LLVM / 'clang', '--target=aarch64-linux-android', '-c', str(base) + '.s', '-o', str(base) + '.o') From f1aa80343b10745b7775c3c2ff26e139a47256e4 Mon Sep 17 00:00:00 2001 From: Logan Shire Date: Mon, 12 Oct 2026 19:18:48 -0400 Subject: [PATCH 04/29] Use the verified iOS arena between GPU carveout and virtual address limit --- docs/apple-build.md | 11 +++++++++++ port/ios/tests/signed_image.c | 7 ++++++- port/macos/compiler/guest_rebase.cpp | 2 +- port/macos/host/host.h | 6 +++--- tools/android_gl_stubs.py | 2 +- tools/android_imports.py | 2 +- tools/ios_build.py | 2 +- tools/test_ios_runtime.py | 5 +++-- 8 files changed, 27 insertions(+), 10 deletions(-) diff --git a/docs/apple-build.md b/docs/apple-build.md index 4773ba1692..f29a0a0b50 100644 --- a/docs/apple-build.md +++ b/docs/apple-build.md @@ -186,3 +186,14 @@ but does not turn a locally built app into an approved redistributable package. Keep compiled apps, logs and provisioning profiles local. When contributing source, inspect `git diff --cached --name-only` and `git diff --cached` before committing; ignore rules cannot prevent an explicit `git add -f`. + +### iOS guest address bounds + +The device guest uses `0x7000000000` (448 GiB); the simulator keeps the +Mac's 1-TiB base. Compiler lowering, GL/import bridges and host translation +must agree. XNU reserves 64–448 GiB for GPU mappings. The iPhone 15 Pro +runtime reports a 512-GiB upper limit with Extended Virtual Addressing active. +Direct on-device probes rejected 16 GiB (reserved), 64 GiB (GPU carveout) and +1 TiB (outside the map), and successfully reserved the full arena at 448 GiB. +See [XNU ARM VM definitions](https://github.com/apple-oss-distributions/xnu/blob/main/osfmk/mach/arm/vm_param.h). +The signed-image test checks both device bounds and consistent pointer lowering. diff --git a/port/ios/tests/signed_image.c b/port/ios/tests/signed_image.c index 34feff969f..78cb6e82a4 100644 --- a/port/ios/tests/signed_image.c +++ b/port/ios/tests/signed_image.c @@ -10,7 +10,7 @@ #ifdef HALO_IOS_MAC_CHECK #define BIAS UINT64_C(0x10000000000) #else -#define BIAS UINT64_C(0x1000000000) +#define BIAS UINT64_C(0x7000000000) #endif static void *run(void *unused) { (void)unused; @@ -21,6 +21,11 @@ static void *run(void *unused) { return (void *)(uintptr_t)(result != 93); } int main(void) { +#ifndef HALO_IOS_MAC_CHECK + _Static_assert(BIAS >= UINT64_C(0x7000000000), "Device arena overlaps GPU carveout"); + _Static_assert(BIAS + UINT64_C(0x100000000) <= UINT64_C(0x8000000000), + "Device arena exceeds iOS extended VA limit"); +#endif mach_vm_address_t address = BIAS; kern_return_t reserved = mach_vm_allocate(mach_task_self(), &address, UINT64_C(0x100000000), VM_FLAGS_FIXED); if (reserved) { diff --git a/port/macos/compiler/guest_rebase.cpp b/port/macos/compiler/guest_rebase.cpp index 2b8714ad01..bc55a30084 100644 --- a/port/macos/compiler/guest_rebase.cpp +++ b/port/macos/compiler/guest_rebase.cpp @@ -27,7 +27,7 @@ struct RebasePass : PassInfoMixin { bool macCheck = false; explicit RebasePass(bool ios = false, bool macCheck = false) : ios(ios), macCheck(macCheck) {} PreservedAnalyses run(Module &module, ModuleAnalysisManager &) { - const uint64_t bias = ios && !macCheck ? 0x1000000000ULL : GuestBias; + const uint64_t bias = ios && !macCheck ? 0x7000000000ULL : GuestBias; if (module.getDataLayout().getPointerSize(0) != 4 || module.getDataLayout().getPointerSize(272) != 8) report_fatal_error("Halo rebase requires arm64_32 with 64-bit address space 272"); diff --git a/port/macos/host/host.h b/port/macos/host/host.h index 3192071e9c..826de7ee5d 100644 --- a/port/macos/host/host.h +++ b/port/macos/host/host.h @@ -15,9 +15,9 @@ #if defined(HALO_IOS_SIMULATOR) #define HALO_MACOS_BIAS UINT64_C(0x10000000000) #else -// iOS Metal may reserve up to 0xfc0000000 before guest startup. -// Extended Virtual Addressing allows this arena above that reservation. -#define HALO_MACOS_BIAS UINT64_C(0x1000000000) +// iOS reserves 64–448 GB for the GPU; extended VA ends at 512 GB. +// The device arena starts just after the carveout and stays below that limit. +#define HALO_MACOS_BIAS UINT64_C(0x7000000000) #endif /* The allocator, Xbox window and linked image all fit below 0x90000000. * Reserve only that span so UIKit/Metal can use the rest of the address space. */ diff --git a/tools/android_gl_stubs.py b/tools/android_gl_stubs.py index 203d2f5420..bb5cf81385 100644 --- a/tools/android_gl_stubs.py +++ b/tools/android_gl_stubs.py @@ -64,7 +64,7 @@ def main(): "#include ", "#include ", "#if defined(HALO_IOS) && !defined(HALO_IOS_SIMULATOR)", - "#define HOST_POINTER(p) ((p) ? (0x1000000000ull | (unsigned int)(p)) : 0ull)", + "#define HOST_POINTER(p) ((p) ? (0x7000000000ull | (unsigned int)(p)) : 0ull)", "#elif defined(HALO_MACOS)", "#define HOST_POINTER(p) ((p) ? (0x10000000000ull | (unsigned int)(p)) : 0ull)", "#else", diff --git a/tools/android_imports.py b/tools/android_imports.py index b8f8ccbc01..e655b3680b 100644 --- a/tools/android_imports.py +++ b/tools/android_imports.py @@ -48,7 +48,7 @@ def main(): if ios: out += [f"\tmovz w16, #:abs_g0_nc:__host_import_table+{offset}", f"\tmovk w16, #:abs_g1_nc:__host_import_table+{offset}", - f"\torr x16, x16, #{'0x10000000000' if simulator else '0x1000000000'}", "\tldr x16, [x16]"] + f"\torr x16, x16, #{'0x10000000000' if simulator else '0x7000000000'}", "\tldr x16, [x16]"] else: out += [f"\tadrp x16, __host_import_table+{offset}", f"\tldr x16, [x16, :lo12:__host_import_table+{offset}]"] diff --git a/tools/ios_build.py b/tools/ios_build.py index 8dcb45c9ea..0c7c4572cf 100644 --- a/tools/ios_build.py +++ b/tools/ios_build.py @@ -67,7 +67,7 @@ def main(): build_plugin() return for platform in (['simulator', 'device'] if args.platform == 'both' else [args.platform]): - # Device code uses a 64-GB arena above iOS's Metal reservations. The simulator's + # Device code uses a 448-GB arena above iOS's GPU carveout. The simulator's # signed image uses the Mac's 1-TB arena; never reuse it on a device. os.environ['HALO_IOS_SIMULATOR'] = '1' if platform == 'simulator' else '0' guest = ROOT / ('build/ios-simulator' if platform == 'simulator' else 'build/ios') diff --git a/tools/test_ios_runtime.py b/tools/test_ios_runtime.py index a3620510bd..e8dd6dce38 100644 --- a/tools/test_ios_runtime.py +++ b/tools/test_ios_runtime.py @@ -13,7 +13,7 @@ def run(*args): def normalized_ir(path, bias): text = path.read_text().split('\n', 1)[1] # ModuleID contains the temporary filename. for offset in (0, 0xff0000): - text = text.replace(str(bias + offset), str(0x1000000000 + offset)) + text = text.replace(str(bias + offset), str(0x7000000000 + offset)) return text def main(): @@ -28,7 +28,7 @@ def main(): run(sys.executable, 'tools/ios_guest_cc.py', '--mac-check', '--target=arm64_32-apple-watchos', '-mcpu=cortex-a53', '-O2', '-ffreestanding', '-fno-stack-protector', '-fno-unwind-tables', '-fno-asynchronous-unwind-tables', '-S', source, '-o', str(base) + '.darwin.s') - if normalized_ir(Path(str(device) + '.darwin.rebased.ll'), 0x1000000000) != normalized_ir(Path(str(base) + '.darwin.rebased.ll'), 0x10000000000): + if normalized_ir(Path(str(device) + '.darwin.rebased.ll'), 0x7000000000) != normalized_ir(Path(str(base) + '.darwin.rebased.ll'), 0x10000000000): raise RuntimeError('Mac signed-image lowering differs from device IR beyond the arena address') run(sys.executable, 'tools/android_asm_convert.py', str(base) + '.darwin.s', str(base) + '.s') run(LLVM / 'clang', '--target=aarch64-linux-android', '-c', str(base) + '.s', '-o', str(base) + '.o') @@ -36,6 +36,7 @@ def main(): run('build/macos/toolchain/bin/ld.lld', '-m', 'aarch64linux', '-static', '-nostdlib', '-Ttext=0x88000000', '-e', 'guest_test', *objects, '-o', OUT / 'guest.elf') run(sys.executable, 'tools/ios_embed.py', OUT / 'guest.elf', OUT / 'embed') + run('clang', '-fsyntax-only', f'-I{OUT / "embed"}', 'port/ios/tests/signed_image.c') run('clang', '-arch', 'arm64', '-O2', '-DHALO_IOS_MAC_CHECK=1', f'-I{OUT / "embed"}', 'port/ios/tests/signed_image.c', OUT / 'embed/guest_image.s', '-o', OUT / 'signed_image') run('codesign', '--force', '--sign', '-', OUT / 'signed_image') From a60c67a5730d94d541b27e3bd9f6a3b679226e3a Mon Sep 17 00:00:00 2001 From: Logan Shire Date: Mon, 12 Oct 2026 19:45:33 -0400 Subject: [PATCH 05/29] Restore iOS graphics controls and add shareable session performance diagnostics --- docs/apple-build.md | 18 +++ port/apple/host_debug.h | 6 + port/apple/host_debug.m | 182 ++++++++++++++++++++++++++----- port/apple/host_gl_diagnostics.c | 1 + port/apple/host_gl_dispatch.h | 27 +++++ port/apple/host_graphics.c | 22 +++- port/apple/host_metalfx.m | 6 +- port/ios/host/host_main.m | 6 + port/ios/host/host_orientation.m | 5 + port/linux/src/d3d8_gl.c | 7 ++ port/linux/src/port_config.c | 2 +- port/macos/host/host_gl.c | 20 ++++ port/macos/host/host_gl_bridge.c | 3 + port/macos/host/host_perf.c | 3 + port/macos/host/host_sdl.c | 42 ++++++- 15 files changed, 314 insertions(+), 36 deletions(-) diff --git a/docs/apple-build.md b/docs/apple-build.md index f29a0a0b50..670ebb6248 100644 --- a/docs/apple-build.md +++ b/docs/apple-build.md @@ -197,3 +197,21 @@ Direct on-device probes rejected 16 GiB (reserved), 64 GiB (GPU carveout) and 1 TiB (outside the map), and successfully reserved the full arena at 448 GiB. See [XNU ARM VM definitions](https://github.com/apple-oss-distributions/xnu/blob/main/osfmk/mach/arm/vm_param.h). The signed-image test checks both device bounds and consistent pointer lowering. + +### iPhone/iPad graphics and diagnostics + +Shake the device to open Graphics & Diagnostics, including with a hardware +controller. Metal (ANGLE) remains the default; native Apple OpenGL ES is an +alternative. Driver and render-resolution changes take effect on relaunch. +Choose 480p, 720p (default), 900p, 1080p or native, with a 30/60/120 FPS render +limit (default 60). Smooth motion restores the older Apple build's rendering +interpolation, without changing the original 30-Hz game simulation. + +MetalFX spatial upscaling and the FPS overlay can be toggled live; upscaling +is available only with the active Metal renderer. Ordinary game-console chatter +is hidden; logs are retained. Share Play-session Report opens the system share +sheet (AirDrop or Save to Files) with bounded log excerpts, settings, the last +ten minutes of half-second timing summaries and shader diagnostics. It does +not include maps, the ISO or saves. First-use GPU-stall capture is opt-in because +its GPU synchronization changes performance. Normal timing capture avoids that +synchronization. diff --git a/port/apple/host_debug.h b/port/apple/host_debug.h index c2c2888487..fee9b8b57a 100644 --- a/port/apple/host_debug.h +++ b/port/apple/host_debug.h @@ -20,3 +20,9 @@ unsigned int host_ios_render_height(void); void halo_debug_replay_shader_report(void); void halo_debug_test_export(void); + +void halo_debug_configure_launch(void); +int halo_debug_frame_limit(void); +void halo_debug_frame(double milliseconds); + +int halo_metalfx_take_presented(void); diff --git a/port/apple/host_debug.m b/port/apple/host_debug.m index 3cfb5d018a..519666c3e8 100644 --- a/port/apple/host_debug.m +++ b/port/apple/host_debug.m @@ -28,6 +28,78 @@ #define HALO_BUILD_REVISION "unknown" #endif static NSUInteger sourceBytes,dropped; +static int frameLimit = 60; +static BOOL showFPS; +static NSMutableArray *frameSamples; +static double frameTotal,frameWorst; +static NSUInteger frameCount; +static double lastSample; +#ifdef HALO_IOS +static UILabel *fpsLabel; +#endif +int halo_debug_renderer_preference(void) { +#ifdef HALO_IOS + NSString *forced=NSProcessInfo.processInfo.environment[@"HALO_IOS_TEST_RENDERER"]; + NSString *setting=forced?:[NSUserDefaults.standardUserDefaults stringForKey:@"HaloRenderer"]; + return ![setting isEqualToString:@"opengl"]; +#else + return 1; +#endif +} +void halo_debug_set_renderer_preference(int metal) { + [NSUserDefaults.standardUserDefaults setObject:metal?@"metal":@"opengl" forKey:@"HaloRenderer"]; +} +int halo_debug_frame_limit(void) {return frameLimit;} +void halo_debug_configure_launch(void) { +#ifdef HALO_IOS + NSUserDefaults *settings=NSUserDefaults.standardUserDefaults; + [settings registerDefaults:@{@"HaloRenderHeight":@720,@"HaloFrameLimit":@60,@"HaloFPSOverlay":@NO,@"HaloInterpolation":@YES}]; + int height=(int)[settings integerForKey:@"HaloRenderHeight"]; + if (!height) { + CGSize pixels=UIScreen.mainScreen.nativeBounds.size; + height=(int)MIN(pixels.width,pixels.height); + } + char value[32];snprintf(value,sizeof(value),"%d",height); + setenv("HALO_IOS_RENDER_HEIGHT",value,0); + setenv("HALO_CONSOLE_LOG","none",0); + setenv("HALO_INTERPOLATION",[settings boolForKey:@"HaloInterpolation"]?"1":"0",0); + setenv("HALO_IOS_REFRESH_RATE","60",0); + frameLimit=(int)[settings integerForKey:@"HaloFrameLimit"]; + if(frameLimit!=30 && frameLimit!=60 && frameLimit!=120)frameLimit=60; + if(frameLimit==120)setenv("HALO_IOS_REFRESH_RATE","120",1); + showFPS=[settings boolForKey:@"HaloFPSOverlay"]; +#endif +} +void halo_debug_frame(double milliseconds) { +#ifdef HALO_IOS + if(milliseconds<=0)return; + frameCount++;frameTotal+=milliseconds;frameWorst=MAX(frameWorst,milliseconds); + double now=CACurrentMediaTime(); + if(now-lastSample<0.5)return; + if(!frameSamples)frameSamples=[NSMutableArray new]; + double mean=frameTotal/MAX((NSUInteger)1,frameCount); + [frameSamples addObject:@{@"time":@(NSDate.date.timeIntervalSince1970),@"frames":@(frameCount),@"mean_ms":@(mean),@"worst_ms":@(frameWorst),@"thermal_state":@(NSProcessInfo.processInfo.thermalState)}]; + if(frameSamples.count>1200)[frameSamples removeObjectAtIndex:0]; + if(showFPS && !fpsLabel) { + UIWindow *window=nil; + for(UIWindowScene *scene in UIApplication.sharedApplication.connectedScenes) + if([scene isKindOfClass:UIWindowScene.class])for(UIWindow *w in scene.windows)if(w.isKeyWindow)window=w; + if(window) { + fpsLabel=[[UILabel alloc]initWithFrame:CGRectMake(window.safeAreaInsets.left+12,window.safeAreaInsets.top+8,160,26)]; + fpsLabel.font=[UIFont monospacedDigitSystemFontOfSize:13 weight:UIFontWeightSemibold]; + fpsLabel.textColor=UIColor.whiteColor;fpsLabel.backgroundColor=[UIColor colorWithWhite:0 alpha:.6]; + fpsLabel.userInteractionEnabled=NO;fpsLabel.accessibilityLabel=@"Frame rate"; + [window.rootViewController.view addSubview:fpsLabel]; + } + } + fpsLabel.hidden=!showFPS; + fpsLabel.text=[NSString stringWithFormat:@" %.0f FPS · %.1f ms",1000.0/mean,mean]; + frameCount=0;frameTotal=frameWorst=0;lastSample=now; +#else + (void)milliseconds; +#endif +} + #if !defined(HALO_IOS) static BOOL debugPresented; #else @@ -113,7 +185,7 @@ static void exportReport(UIViewController *presenter) { @"build":[NSBundle.mainBundle objectForInfoDictionaryKey:@"CFBundleVersion"]?:@"unknown",@"threshold_ms":@2, @"note":@"CPU compile/link completion timings are always recorded. Synchronized first-use draw waits are opt-in. First-use waits include draw cost and may include deferred driver compilation; they are not isolated shader-compiler timings. Shader sources can guide warm-up updates.", @"first_use_gpu_recording":@(atomic_load(&recording)),@"programs":programs, - @"dropped":@(dropped),@"events":[events copy],@"sources":[sources copy]}; + @"render_height":@([NSUserDefaults.standardUserDefaults integerForKey:@"HaloRenderHeight"]),@"frame_limit":@(frameLimit),@"fps_overlay":@(showFPS),@"frame_samples":[frameSamples copy]?:@[],@"dropped":@(dropped),@"events":[events copy],@"sources":[sources copy]}; NSError *error=nil;NSData *data=[NSJSONSerialization dataWithJSONObject:report options:NSJSONWritingPrettyPrinted error:&error]; NSURL *folder=[[NSFileManager.defaultManager URLsForDirectory:NSCachesDirectory inDomains:NSUserDomainMask].firstObject URLByAppendingPathComponent:@"ShaderReports" isDirectory:YES]; [NSFileManager.defaultManager createDirectoryAtURL:folder withIntermediateDirectories:YES attributes:nil error:&error]; @@ -134,7 +206,21 @@ static void exportReport(UIViewController *presenter) { } #else if(!data || ![data writeToURL:file options:NSDataWritingAtomic error:&error]){UIAlertController *alert=[UIAlertController alertControllerWithTitle:@"Export failed" message:error.localizedDescription preferredStyle:UIAlertControllerStyleAlert];[alert addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:nil]];[presenter presentViewController:alert animated:YES completion:nil];return;} - UIActivityViewController *share=[[UIActivityViewController alloc]initWithActivityItems:@[file] applicationActivities:nil]; + NSMutableArray *files=[NSMutableArray arrayWithObject:file]; + const char *roots[]={getenv("HALO_SAVE_ROOT"),getenv("HALO_DATA_ROOT")}; + const char *names[]={"halo.log","debug.txt"}; + for(int i=0;i<2;i++)if(roots[i]) { + NSString *path=[[NSString stringWithUTF8String:roots[i]] stringByAppendingPathComponent:[NSString stringWithUTF8String:names[i]]]; + NSFileHandle *input=[NSFileHandle fileHandleForReadingAtPath:path]; + if(input) { + unsigned long long length=[input seekToEndOfFile]; + [input seekToFileOffset:length>2*1024*1024?length-2*1024*1024:0]; + NSData *tail=[input readDataToEndOfFile];[input closeFile]; + NSURL *log=[folder URLByAppendingPathComponent:[NSString stringWithFormat:@"halo-session-%d.txt",i]]; + if([tail writeToURL:log atomically:YES])[files addObject:log]; + } + } + UIActivityViewController *share=[[UIActivityViewController alloc]initWithActivityItems:files applicationActivities:nil]; share.popoverPresentationController.sourceView=presenter.view;share.popoverPresentationController.sourceRect=CGRectMake(CGRectGetMidX(presenter.view.bounds),40,1,1); [presenter presentViewController:share animated:YES completion:nil]; } @@ -142,51 +228,93 @@ @interface HaloDebugController : UITableViewController +#include "host_gl_dispatch.h" #include #include "host_debug.h" static void shader_source(GLuint shader, GLsizei count, const GLchar *const *text, const GLint *lengths) { diff --git a/port/apple/host_gl_dispatch.h b/port/apple/host_gl_dispatch.h index a3c866f36a..990f6e9787 100644 --- a/port/apple/host_gl_dispatch.h +++ b/port/apple/host_gl_dispatch.h @@ -16,3 +16,30 @@ #define glGetShaderiv HALO_GL_PROC(glGetShaderiv) #define glGetString HALO_GL_PROC(glGetString) #define glIsEnabled HALO_GL_PROC(glIsEnabled) +#define glAttachShader HALO_GL_PROC(glAttachShader) +#define glBindBuffer HALO_GL_PROC(glBindBuffer) +#define glBufferData HALO_GL_PROC(glBufferData) +#define glBufferSubData HALO_GL_PROC(glBufferSubData) +#define glClientWaitSync HALO_GL_PROC(glClientWaitSync) +#define glCompileShader HALO_GL_PROC(glCompileShader) +#define glCompressedTexImage3D HALO_GL_PROC(glCompressedTexImage3D) +#define glCopyImageSubData HALO_GL_PROC(glCopyImageSubData) +#define glDeleteProgram HALO_GL_PROC(glDeleteProgram) +#define glDeleteShader HALO_GL_PROC(glDeleteShader) +#define glDeleteSync HALO_GL_PROC(glDeleteSync) +#define glDisableVertexAttribArray HALO_GL_PROC(glDisableVertexAttribArray) +#define glDrawArrays HALO_GL_PROC(glDrawArrays) +#define glDrawElements HALO_GL_PROC(glDrawElements) +#define glEnableVertexAttribArray HALO_GL_PROC(glEnableVertexAttribArray) +#define glFenceSync HALO_GL_PROC(glFenceSync) +#define glGetQueryObjectuiv HALO_GL_PROC(glGetQueryObjectuiv) +#define glGetStringi HALO_GL_PROC(glGetStringi) +#define glLinkProgram HALO_GL_PROC(glLinkProgram) +#define glMapBufferRange HALO_GL_PROC(glMapBufferRange) +#define glShaderSource HALO_GL_PROC(glShaderSource) +#define glTexImage2D HALO_GL_PROC(glTexImage2D) +#define glTexImage3D HALO_GL_PROC(glTexImage3D) +#define glTexSubImage2D HALO_GL_PROC(glTexSubImage2D) +#define glUnmapBuffer HALO_GL_PROC(glUnmapBuffer) +#define glUseProgram HALO_GL_PROC(glUseProgram) +#define glVertexAttribPointer HALO_GL_PROC(glVertexAttribPointer) diff --git a/port/apple/host_graphics.c b/port/apple/host_graphics.c index 294316f834..fb97f88ab9 100644 --- a/port/apple/host_graphics.c +++ b/port/apple/host_graphics.c @@ -1,3 +1,4 @@ +#include #include #include #include @@ -11,10 +12,23 @@ static EGLConfig config; static EGLSurface sharedSurface; static GLuint sharedTexture; static int sharedBound; -int halo_graphics_metal(void) { return 1; } -int halo_graphics_prefer_metal(void) { return 1; } -void halo_graphics_set_preference(int metal) { (void)metal; } -void *halo_graphics_proc(const char *name) { return (void *)eglGetProcAddress(name); } +static int metal = 1; +extern int halo_debug_renderer_preference(void); +extern void halo_debug_set_renderer_preference(int); +int halo_graphics_metal(void) { return metal; } +int halo_graphics_prefer_metal(void) { return halo_debug_renderer_preference(); } +void halo_graphics_set_preference(int value) { halo_debug_set_renderer_preference(value); } +void halo_graphics_initialize(void) { +#ifdef HALO_IOS + metal = halo_graphics_prefer_metal(); +#endif +} +void *halo_graphics_proc(const char *name) { +#ifdef HALO_IOS + if (!metal) return (void *)SDL_GL_GetProcAddress(name); +#endif + return (void *)eglGetProcAddress(name); +} void halo_graphics_attach(EGLDisplay current, EGLConfig configuration) { display=current; config=configuration; halo_debug_initialize(); diff --git a/port/apple/host_metalfx.m b/port/apple/host_metalfx.m index 25b61e6eed..9ee65d9571 100644 --- a/port/apple/host_metalfx.m +++ b/port/apple/host_metalfx.m @@ -1,6 +1,7 @@ #include #if TARGET_OS_SIMULATOR #include "host_debug.h" +int halo_metalfx_take_presented(void) {return 0;} int halo_metalfx_supported(void) {return 0;} int halo_metalfx_enabled(void) {return 0;} void halo_metalfx_set_enabled(int enabled) {(void)enabled;} @@ -26,6 +27,8 @@ #include "host_debug.h" static BOOL enabled; +static int presented; +int halo_metalfx_take_presented(void) {int value=presented;presented=0;return value;} static id device; static id queue; static id pending; @@ -119,7 +122,7 @@ int host_ios_metalfx_present(unsigned int texture,unsigned int w,unsigned int h, UIWindow *window=nil; for(UIScene *scene in UIApplication.sharedApplication.connectedScenes)if([scene isKindOfClass:UIWindowScene.class])for(UIWindow *candidate in ((UIWindowScene*)scene).windows)if(candidate.isKeyWindow)window=candidate; UIView *root=window.rootViewController.view; - if(root){surface=[[UIView alloc]initWithFrame:root.bounds];surface.userInteractionEnabled=NO;surface.autoresizingMask=UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;layer=[CAMetalLayer layer];layer.device=device;layer.pixelFormat=MTLPixelFormatBGRA8Unorm;layer.framebufferOnly=NO;[surface.layer addSublayer:layer];[root insertSubview:surface atIndex:0];} + if(root){surface=[[UIView alloc]initWithFrame:root.bounds];surface.userInteractionEnabled=NO;surface.autoresizingMask=UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;layer=[CAMetalLayer layer];layer.device=device;layer.pixelFormat=MTLPixelFormatBGRA8Unorm;layer.framebufferOnly=NO;[surface.layer addSublayer:layer];[root insertSubview:surface atIndex:MIN((NSUInteger)1,root.subviews.count)];} else success=NO; #endif } @@ -154,6 +157,7 @@ int host_ios_metalfx_present(unsigned int texture,unsigned int w,unsigned int h, glBindFramebuffer(GL_READ_FRAMEBUFFER,oldRead);glBindFramebuffer(GL_DRAW_FRAMEBUFFER,oldWrite);glBindTexture(GL_TEXTURE_2D,oldTexture); if(scissor)glEnable(GL_SCISSOR_TEST);else glDisable(GL_SCISSOR_TEST); if(!success){halo_metalfx_set_enabled(0);releaseImages();} + presented=success; return success; } } diff --git a/port/ios/host/host_main.m b/port/ios/host/host_main.m index 6dce8401f5..1c88cbd8ad 100644 --- a/port/ios/host/host_main.m +++ b/port/ios/host/host_main.m @@ -1,5 +1,7 @@ /* SDL owns UIApplication and invokes this entry on the UIKit main thread. */ #include "host.h" +#include "../../apple/host_graphics.h" +#include "../../apple/host_debug.h" #include #include #import @@ -81,10 +83,14 @@ static uint32_t make_boot(void) { extern void macos_enter_guest_stack(void *, uint32_t) __attribute__((noreturn)); int main(int argc, char **argv) { (void)argc; (void)argv; + halo_debug_configure_launch(); + halo_graphics_initialize(); SDL_SetHint(SDL_HINT_ORIENTATIONS, "LandscapeLeft LandscapeRight"); SDL_SetHint(SDL_HINT_IOS_HIDE_HOME_INDICATOR, "2"); if (!SDL_InitSubSystem(SDL_INIT_VIDEO | SDL_INIT_GAMEPAD)) host_fatal("Cannot initialize display: %s", SDL_GetError()); + if (!halo_graphics_metal() && !SDL_GL_LoadLibrary(NULL)) + host_fatal("Cannot load native OpenGL ES: %s", SDL_GetError()); @autoreleasepool { NSFileManager *files = NSFileManager.defaultManager; NSString *documents = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject; diff --git a/port/ios/host/host_orientation.m b/port/ios/host/host_orientation.m index 4cd4551719..c21ffb1453 100644 --- a/port/ios/host/host_orientation.m +++ b/port/ios/host/host_orientation.m @@ -1,5 +1,6 @@ #import "host_orientation.h" #include "host.h" +#include "../../apple/host_debug.h" /* SDL 3.4.16 owns these controllers. These categories add only orientation preferences inherited from UIKit, never replace SDL's own methods. Recheck @@ -36,6 +37,10 @@ - (UIInterfaceOrientationMask)supportedInterfaceOrientations { return UIInterfac @end @implementation SDL_uikitviewcontroller (HaloLandscape) +- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event { + if (motion == UIEventSubtypeMotionShake) halo_debug_present(); + else [super motionEnded:motion withEvent:event]; +} HALO_LANDSCAPE_PREFERENCES @end diff --git a/port/linux/src/d3d8_gl.c b/port/linux/src/d3d8_gl.c index 9f1bd6e568..daa4c08d0d 100644 --- a/port/linux/src/d3d8_gl.c +++ b/port/linux/src/d3d8_gl.c @@ -190,6 +190,13 @@ static void screen_mode_choose(long *width, float scale[2]) *width = 1600; *width &= ~1L; scale[0] = scale[1] = 1.0f; +#ifdef HALO_IOS + const char *render_height = getenv("HALO_IOS_RENDER_HEIGHT"); + int height = render_height ? atoi(render_height) : 720; + if (height < 480) height = 480; + if (height > 2160) height = 2160; + scale[0] = scale[1] = height / 480.0f; +#endif #else long display_width, display_height; diff --git a/port/linux/src/port_config.c b/port/linux/src/port_config.c index e7d5129e5a..269f39cd85 100644 --- a/port/linux/src/port_config.c +++ b/port/linux/src/port_config.c @@ -316,7 +316,7 @@ static const struct config_setting config_settings[] = #include "input_bindings.def" #undef BINDING - { "game.console_log", _config_string, "\"important\"", NULL, _environment_value, _platform_all, + { "game.console_log", _config_string, "\"important\"", "HALO_CONSOLE_LOG", _environment_value, _platform_all, "What the game's console shows on screen of what it logs: \"important\"\n" "(bans, players dropped for cheating, what refuses a command, and the\n" "asserts that stop the game), \"all\" (every line, the game's own\n" diff --git a/port/macos/host/host_gl.c b/port/macos/host/host_gl.c index 8f1fc666a8..de4e1f785e 100644 --- a/port/macos/host/host_gl.c +++ b/port/macos/host/host_gl.c @@ -10,10 +10,18 @@ already have host types by then. Only strings need copying back. #include #include +#ifdef HALO_APPLE_GRAPHICS +#include "../../apple/host_gl_dispatch.h" +#endif #include #include void *host_gl_bridge(const char *name); +#ifdef HALO_IOS +static void unsupported_gles_entry(void) { + host_fatal("The selected OpenGL ES driver was asked to use an unsupported optional feature."); +} +#endif void *host_gl_resolve(const char *name) { void *profile = host_perf_resolve(name); if (profile) return profile; @@ -23,7 +31,19 @@ void *host_gl_resolve(const char *name) { if (diagnostics) return diagnostics; #endif void *bridge = host_gl_bridge(name); +#ifdef HALO_APPLE_GRAPHICS + void *driver = bridge ? bridge : halo_graphics_proc(name); +#ifdef HALO_IOS + /* ES 3.1/3.2 calls stay in the import table, but capability checks exclude + them on Apple's ES 3.0 driver. Keep a fail-fast entry if that regresses. */ + if (!driver && !halo_graphics_metal() && + (!strcmp(name,"glMemoryBarrier") || !strcmp(name,"glDrawElementsBaseVertex"))) + return (void *)unsupported_gles_entry; +#endif + return driver; +#else return bridge ? bridge : (void *)eglGetProcAddress(name); +#endif } void host_gl_get_string(uint32_t name, int index, char *buffer, uint32_t size) { diff --git a/port/macos/host/host_gl_bridge.c b/port/macos/host/host_gl_bridge.c index c2743a5f7e..fc9401cda0 100644 --- a/port/macos/host/host_gl_bridge.c +++ b/port/macos/host/host_gl_bridge.c @@ -1,5 +1,8 @@ /* Darwin packs stack arguments; the Android guest bridge widens each slot. */ #include +#ifdef HALO_APPLE_GRAPHICS +#include "../../apple/host_gl_dispatch.h" +#endif #include static void bridge_glCopyImageSubData(GLuint a0, GLenum a1, GLint a2, GLint a3, GLint a4, GLint a5, GLuint a6, GLenum a7, long long a8, long long a9, diff --git a/port/macos/host/host_perf.c b/port/macos/host/host_perf.c index 3019520fd8..39800edf32 100644 --- a/port/macos/host/host_perf.c +++ b/port/macos/host/host_perf.c @@ -1,6 +1,9 @@ /* Opt-in frame and driver diagnostics. No per-draw work when disabled. */ #include "host.h" #include +#ifdef HALO_APPLE_GRAPHICS +#include "../../apple/host_gl_dispatch.h" +#endif #include #include #include diff --git a/port/macos/host/host_sdl.c b/port/macos/host/host_sdl.c index 4bfc120c47..4046a14985 100644 --- a/port/macos/host/host_sdl.c +++ b/port/macos/host/host_sdl.c @@ -13,6 +13,7 @@ SDL's stream lock recursively from a different thread. #include "host.h" #ifdef HALO_APPLE_GRAPHICS #include "../../apple/host_debug.h" +#include "../../apple/host_graphics.h" #endif #ifndef HALO_IOS #include "../native/host_menu.h" @@ -164,6 +165,9 @@ static SDL_HitTestResult SDLCALL window_hit_test(SDL_Window *window, const SDL_P uint32_t host_sdl_create_window(const char *title, int width, int height, int64_t flags) { const char *windowed = SDL_getenv("HALO_WINDOWED"); SDL_WindowFlags mode = SDL_WINDOW_METAL | SDL_WINDOW_RESIZABLE | SDL_WINDOW_HIGH_PIXEL_DENSITY; +#ifdef HALO_IOS + if (!halo_graphics_metal()) mode = (mode & ~SDL_WINDOW_METAL) | SDL_WINDOW_OPENGL; +#endif metal_window_hidden = (flags & SDL_WINDOW_HIDDEN) != 0; if (metal_window_hidden) mode |= SDL_WINDOW_HIDDEN; else if (!windowed || !SDL_atoi(windowed)) mode |= SDL_WINDOW_FULLSCREEN; @@ -272,12 +276,25 @@ int host_sdl_set_relative_mouse(uint32_t window, int enabled) { } int host_sdl_gl_set_attribute(int attribute, int value) { +#ifdef HALO_IOS + if (!halo_graphics_metal()) return SDL_GL_SetAttribute(attribute, value); +#endif if (attribute == SDL_GL_CONTEXT_MINOR_VERSION) requested_minor = value; return 1; } uint32_t host_sdl_gl_create_context(uint32_t window) { SDL_Window *object = handle_get(window, _handle_window); +#ifdef HALO_IOS + if (!halo_graphics_metal()) { + SDL_GLContext native = object ? SDL_GL_CreateContext(object) : NULL; + if (!native) return 0; + halo_debug_initialize(); + extern void host_ios_controls_initialize(SDL_Window *); + host_ios_controls_initialize(object); + return handle_new(_handle_context, native); + } +#endif if (!object || requested_minor > 0) { SDL_SetError("ANGLE Metal uses ES 3.0"); return 0; @@ -304,9 +321,9 @@ uint32_t host_sdl_gl_create_context(uint32_t window) { EGL_ALPHA_SIZE, 8, EGL_DEPTH_SIZE, - 24, + 0, EGL_STENCIL_SIZE, - 8, + 0, EGL_NONE}; EGLConfig config; if (!eglChooseConfig(metal_display, configAttributes, &config, 1, &count) || !count) @@ -347,18 +364,37 @@ uint32_t host_sdl_gl_create_context(uint32_t window) { return handle_new(_handle_context, metal_context); } int host_sdl_gl_make_current(uint32_t window, uint32_t context) { +#ifdef HALO_IOS + if (!halo_graphics_metal()) return SDL_GL_MakeCurrent(handle_get(window, _handle_window), handle_get(context, _handle_context)); +#endif (void)window; return eglMakeCurrent(metal_display, metal_surface, metal_surface, handle_get(context, _handle_context)); } int host_sdl_gl_set_swap_interval(int interval) { +#ifdef HALO_IOS + if (!halo_graphics_metal()) return SDL_GL_SetSwapInterval(interval); +#endif metal_swap_interval = interval; return eglSwapInterval(metal_display, interval); } int host_sdl_gl_swap_window(uint32_t window) { (void)window; uint64_t start = SDL_GetTicksNS(); - int result = eglSwapBuffers(metal_display, metal_surface); + int result; +#ifdef HALO_IOS + result = halo_graphics_metal() ? (halo_metalfx_take_presented() ? 1 : eglSwapBuffers(metal_display, metal_surface)) : SDL_GL_SwapWindow(handle_get(window, _handle_window)); + static uint64_t last_frame; + int limit = halo_debug_frame_limit(); + uint64_t now = SDL_GetTicksNS(); + uint64_t period = limit > 0 ? 1000000000ull / limit : 0; + if (last_frame && now - last_frame < period) SDL_DelayNS(period - (now - last_frame)); + now = SDL_GetTicksNS(); + if (last_frame) halo_debug_frame((now-last_frame)/1e6); + last_frame = now; +#else + result = eglSwapBuffers(metal_display, metal_surface); +#endif host_perf_frame((SDL_GetTicksNS() - start) / 1e6); if (metal_window_hidden && metal_swap_interval > 0) { uint64_t elapsed = SDL_GetTicksNS() - start; From fe497148ba965693c454b515e3b16736cdc0d9f0 Mon Sep 17 00:00:00 2001 From: Logan Shire Date: Mon, 12 Oct 2026 19:54:03 -0400 Subject: [PATCH 06/29] Fix native EAGL dispatch and window framebuffer presentation --- port/apple/host_debug.m | 28 +++++++++++++++++++++------- port/ios/CMakeLists.txt | 3 +++ port/ios/host/host_controls.m | 2 +- port/macos/host/host_gl.c | 9 +++++++++ port/macos/host/host_sdl.c | 8 +++++++- 5 files changed, 41 insertions(+), 9 deletions(-) diff --git a/port/apple/host_debug.m b/port/apple/host_debug.m index 519666c3e8..e52cf95f89 100644 --- a/port/apple/host_debug.m +++ b/port/apple/host_debug.m @@ -36,6 +36,7 @@ static double lastSample; #ifdef HALO_IOS static UILabel *fpsLabel; +static void exportReport(UIViewController *presenter); #endif int halo_debug_renderer_preference(void) { #ifdef HALO_IOS @@ -92,9 +93,17 @@ void halo_debug_frame(double milliseconds) { [window.rootViewController.view addSubview:fpsLabel]; } } + if(fpsLabel.superview) { + UIEdgeInsets insets=fpsLabel.superview.safeAreaInsets; + fpsLabel.frame=CGRectMake(insets.left+12,insets.top+8,160,26); + } fpsLabel.hidden=!showFPS; fpsLabel.text=[NSString stringWithFormat:@" %.0f FPS · %.1f ms",1000.0/mean,mean]; frameCount=0;frameTotal=frameWorst=0;lastSample=now; + static BOOL testExported; + if(!testExported && frameSamples.count>=10 && [NSProcessInfo.processInfo.environment[@"HALO_IOS_TEST_REPORT_EXPORT"] boolValue]) { + testExported=YES;exportReport(nil); + } #else (void)milliseconds; #endif @@ -181,11 +190,15 @@ static void exportReport(UIViewController *presenter) { prepare();struct utsname device;uname(&device); NSMutableDictionary *programs=[NSMutableDictionary new]; for(NSNumber *name in attachments)programs[name.stringValue]=[attachments[name] copy]; - NSDictionary *report=@{@"schema":@2,@"renderer":halo_graphics_metal()?@"Metal (ANGLE)":@"OpenGL ES (Apple)",@"gpu":glRenderer?:@"unknown",@"revision":@HALO_BUILD_REVISION,@"metalfx":@(halo_metalfx_enabled()!=0),@"device":[NSString stringWithUTF8String:device.machine],@"os":NSProcessInfo.processInfo.operatingSystemVersionString, + NSMutableDictionary *report=[@{@"schema":@3,@"renderer":halo_graphics_metal()?@"Metal (ANGLE)":@"OpenGL ES (Apple)",@"gpu":glRenderer?:@"unknown",@"revision":@HALO_BUILD_REVISION,@"metalfx":@(halo_metalfx_enabled()!=0),@"device":[NSString stringWithUTF8String:device.machine],@"os":NSProcessInfo.processInfo.operatingSystemVersionString, @"build":[NSBundle.mainBundle objectForInfoDictionaryKey:@"CFBundleVersion"]?:@"unknown",@"threshold_ms":@2, @"note":@"CPU compile/link completion timings are always recorded. Synchronized first-use draw waits are opt-in. First-use waits include draw cost and may include deferred driver compilation; they are not isolated shader-compiler timings. Shader sources can guide warm-up updates.", @"first_use_gpu_recording":@(atomic_load(&recording)),@"programs":programs, - @"render_height":@([NSUserDefaults.standardUserDefaults integerForKey:@"HaloRenderHeight"]),@"frame_limit":@(frameLimit),@"fps_overlay":@(showFPS),@"frame_samples":[frameSamples copy]?:@[],@"dropped":@(dropped),@"events":[events copy],@"sources":[sources copy]}; + @"requested_render_height":@([NSUserDefaults.standardUserDefaults integerForKey:@"HaloRenderHeight"]),@"frame_limit":@(frameLimit),@"fps_overlay":@(showFPS),@"frame_samples":[frameSamples copy]?:@[],@"dropped":@(dropped),@"events":[events copy],@"sources":[sources copy]} mutableCopy]; +#ifdef HALO_IOS + report[@"render_height"]=@(atoi(getenv("HALO_IOS_RENDER_HEIGHT")?:"720")); + report[@"interpolation"]=@(!strcmp(getenv("HALO_INTERPOLATION")?:"0","1")); +#endif NSError *error=nil;NSData *data=[NSJSONSerialization dataWithJSONObject:report options:NSJSONWritingPrettyPrinted error:&error]; NSURL *folder=[[NSFileManager.defaultManager URLsForDirectory:NSCachesDirectory inDomains:NSUserDomainMask].firstObject URLByAppendingPathComponent:@"ShaderReports" isDirectory:YES]; [NSFileManager.defaultManager createDirectoryAtURL:folder withIntermediateDirectories:YES attributes:nil error:&error]; @@ -220,6 +233,7 @@ static void exportReport(UIViewController *presenter) { if([tail writeToURL:log atomically:YES])[files addObject:log]; } } + if([NSProcessInfo.processInfo.environment[@"HALO_IOS_TEST_REPORT_EXPORT"] boolValue])return; UIActivityViewController *share=[[UIActivityViewController alloc]initWithActivityItems:files applicationActivities:nil]; share.popoverPresentationController.sourceView=presenter.view;share.popoverPresentationController.sourceRect=CGRectMake(CGRectGetMidX(presenter.view.bounds),40,1,1); [presenter presentViewController:share animated:YES completion:nil]; @@ -409,11 +423,11 @@ void halo_debug_replay_shader_report(void) { NSDictionary *report=data?[NSJSONSerialization JSONObjectWithData:data options:0 error:nil]:nil; NSDictionary *entries=[report isKindOfClass:NSDictionary.class]?report[@"sources"]:nil; if(![entries isKindOfClass:NSDictionary.class] || entries.count>4096)host_fatal("Invalid shader replay report"); - __typeof__(&glCreateShader) create=halo_graphics_proc("glCreateShader"); - __typeof__(&glShaderSource) source=halo_graphics_proc("glShaderSource"); - __typeof__(&glCompileShader) compile=halo_graphics_proc("glCompileShader"); - __typeof__(&glDeleteShader) destroy=halo_graphics_proc("glDeleteShader"); - __typeof__(&glGetShaderInfoLog) getLog=halo_graphics_proc("glGetShaderInfoLog"); + PFNGLCREATESHADERPROC create=halo_graphics_proc("glCreateShader"); + PFNGLSHADERSOURCEPROC source=halo_graphics_proc("glShaderSource"); + PFNGLCOMPILESHADERPROC compile=halo_graphics_proc("glCompileShader"); + PFNGLDELETESHADERPROC destroy=halo_graphics_proc("glDeleteShader"); + PFNGLGETSHADERINFOLOGPROC getLog=halo_graphics_proc("glGetShaderInfoLog"); unsigned passed=0,failed=0; for(NSString *key in entries) { NSDictionary *entry=entries[key]; diff --git a/port/ios/CMakeLists.txt b/port/ios/CMakeLists.txt index 2f2d144c8c..7d5bd0ae34 100644 --- a/port/ios/CMakeLists.txt +++ b/port/ios/CMakeLists.txt @@ -42,6 +42,9 @@ else() set(ANGLE_PLATFORM ios-arm64) target_link_libraries(Halo PRIVATE "-framework MetalFX") endif() +# SDL UIKit uses direct GL calls for its EAGL drawable. Bind those to Apple, +# while the game and diagnostics select ANGLE/Apple through host_gl_dispatch. +target_link_libraries(Halo PRIVATE "-framework OpenGLES") foreach(NAME EGL GLESv2) set(FRAMEWORK "${HALO_ROOT}/build/macos/angle/dist/${NAME}.xcframework/${ANGLE_PLATFORM}/lib${NAME}.framework") list(APPEND ANGLE_FRAMEWORKS "${FRAMEWORK}") diff --git a/port/ios/host/host_controls.m b/port/ios/host/host_controls.m index 386dba82ba..9bafb22dd3 100644 --- a/port/ios/host/host_controls.m +++ b/port/ios/host/host_controls.m @@ -247,7 +247,7 @@ void host_ios_touch_attach(SDL_Window *window) { [controls becomeFirstResponder]; [UIMenuSystem.mainSystem setNeedsRebuild]; if([NSProcessInfo.processInfo.environment[@"HALO_IOS_TEST_DEBUG_UI"] boolValue]) - dispatch_after(dispatch_time(DISPATCH_TIME_NOW,NSEC_PER_SEC*3),dispatch_get_main_queue(),^{halo_debug_present();}); + dispatch_after(dispatch_time(DISPATCH_TIME_NOW,NSEC_PER_SEC*3),dispatch_get_main_queue(),^{[native.rootViewController motionEnded:UIEventSubtypeMotionShake withEvent:nil];}); host_logf(HOST_LOG_INFO,"touch controls attached, %.0fx%.0f",root.bounds.size.width,root.bounds.size.height); } diff --git a/port/macos/host/host_gl.c b/port/macos/host/host_gl.c index de4e1f785e..722077ee40 100644 --- a/port/macos/host/host_gl.c +++ b/port/macos/host/host_gl.c @@ -18,11 +18,20 @@ already have host types by then. Only strings need copying back. void *host_gl_bridge(const char *name); #ifdef HALO_IOS +extern unsigned int host_sdl_ios_default_framebuffer(void); +static void native_bind_framebuffer(GLenum target, GLuint framebuffer) { + /* EAGL's window drawable is an SDL-owned FBO, not framebuffer zero. */ + glBindFramebuffer(target, framebuffer ? framebuffer : host_sdl_ios_default_framebuffer()); +} static void unsupported_gles_entry(void) { host_fatal("The selected OpenGL ES driver was asked to use an unsupported optional feature."); } #endif void *host_gl_resolve(const char *name) { +#ifdef HALO_IOS + if (!halo_graphics_metal() && !strcmp(name,"glBindFramebuffer")) + return (void *)native_bind_framebuffer; +#endif void *profile = host_perf_resolve(name); if (profile) return profile; #ifdef HALO_APPLE_GRAPHICS diff --git a/port/macos/host/host_sdl.c b/port/macos/host/host_sdl.c index 4046a14985..e1bb816dd3 100644 --- a/port/macos/host/host_sdl.c +++ b/port/macos/host/host_sdl.c @@ -199,7 +199,7 @@ uint32_t host_sdl_create_window(const char *title, int width, int height, int64_ #endif int w, h; SDL_GetWindowSizeInPixels(metal_window, &w, &h); - host_logf(HOST_LOG_INFO, "Metal drawable %dx%d (%s)", w, h, + host_logf(HOST_LOG_INFO, "%s drawable %dx%d (%s)", halo_graphics_metal() ? "Metal" : "OpenGL", w, h, (mode & SDL_WINDOW_FULLSCREEN) ? "borderless fullscreen" : "windowed"); } return handle_new(_handle_window, metal_window); @@ -275,6 +275,12 @@ int host_sdl_set_relative_mouse(uint32_t window, int enabled) { return object ? SDL_SetWindowRelativeMouseMode(object, enabled != 0) : 0; } +#ifdef HALO_IOS +unsigned int host_sdl_ios_default_framebuffer(void) { + return (unsigned int)SDL_GetNumberProperty(SDL_GetWindowProperties(metal_window), + SDL_PROP_WINDOW_UIKIT_OPENGL_FRAMEBUFFER_NUMBER, 0); +} +#endif int host_sdl_gl_set_attribute(int attribute, int value) { #ifdef HALO_IOS if (!halo_graphics_metal()) return SDL_GL_SetAttribute(attribute, value); From 0f6a5ab2fed70abb094d586d86b52bf463867823 Mon Sep 17 00:00:00 2001 From: Logan Shire Date: Mon, 12 Oct 2026 20:15:45 -0400 Subject: [PATCH 07/29] Keep scenario music cue prints out of the gameplay overlay --- source/hs/hs_library_external.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/source/hs/hs_library_external.c b/source/hs/hs_library_external.c index 73dde5cf6c..d6bdca3863 100644 --- a/source/hs/hs_library_external.c +++ b/source/hs/hs_library_external.c @@ -176,7 +176,12 @@ void hs_print( (0x4b8970 +0x0c pushes it as terminal_printf's format), so a '%' in it, from a scenario script or typed at the console, read arguments that were never passed */ - terminal_printf(global_real_argb_green, "%s", message); + /* Scenario scripts print music cues and other development chatter. + Keep it in debug.txt, but respect the same screen filter as engine logs. + Explicit console commands still show their requested output. */ + error(_error_log, "%s", message); + if (terminal_shows(terminal_command_running ? _terminal_message_serious : _terminal_message_chatter)) + terminal_printf(global_real_argb_green, "%s", message); return; } From 8b96c61fae2f53db6dd5f1eb4c47dbe7c095bcba Mon Sep 17 00:00:00 2001 From: Brendan Turner Date: Sun, 11 Oct 2026 11:23:04 -0500 Subject: [PATCH 08/29] Ask STUN and the brokers again after the p2p thread was stopped When the process is suspended (a phone app in the background) or the machine sleeps (a laptop), the p2p thread's wait lasts far longer than it asked for. The NAT's mapping of the tunnel may have lapsed and the brokers' TCP connections may be gone, but nothing notices until each one's silence timeout, so joins and listings fail for a while after the game resumes. When a wait lasts longer than its length plus PEER_TIMEOUT, the thread now discards what the sockets reported, asks the STUN servers for the public address again, and has every broker close and connect again at once (p2p_signal_reconnect). A wait of normal length changes nothing. Nothing sent over the network changes, so HALO_PORT_NETWORK_VERSION stays. Checked: the Android guest and the web build compile with no new warnings. The same change, together with an iOS host fix for the sockets iOS takes from a suspended app, made server browser joins work on an iPad Pro after about five minutes in the background (they failed until a relaunch without both). Not run on Linux, Windows or Android. (cherry picked from commit 0a5a235f5e7813d4d6f6dae804352bc450d3173c) --- port/linux/src/p2p.c | 29 +++++++++++++++++++++++++++++ port/linux/src/p2p_internal.h | 4 ++++ port/linux/src/p2p_signal.c | 17 +++++++++++++++++ 3 files changed, 50 insertions(+) diff --git a/port/linux/src/p2p.c b/port/linux/src/p2p.c index e790175d26..9789965a7b 100644 --- a/port/linux/src/p2p.c +++ b/port/linux/src/p2p.c @@ -1408,6 +1408,26 @@ static int stun_settled(void) return 1; } +/* the p2p thread was stopped for longer than a peer lasts: the process was +suspended (a phone app in the background) or the machine slept (a laptop). +The NAT's mapping of the tunnel may have lapsed, so this machine's public +address is asked again before an offer names it, and the brokers' +connections, which the network may have dropped, are made anew rather than +at their silence timeout */ +static void network_resumed(unsigned long stopped) +{ + int index; + + for (index = 0; index < p2p.stun_count; index++) + { + p2p.stun[index].has_mapped = 0; + p2p.stun[index].attempts = 0; + } + p2p_signal_reconnect(); + platform_log("Internet play: the game was stopped for %lu seconds; its public address is asked again and " + "the brokers reconnected", stopped / 1000); +} + /* ---------- stand-ins for peers' ports */ static void close_socket(int *socket) @@ -2952,6 +2972,7 @@ static void *p2p_thread(void *unused) streams; otherwise the thread can sleep longer */ int wait = webrtc_busy ? LOOP_INTERVAL : LOOP_INTERVAL * 5; int index, asked; + unsigned long waited; /* what to wait for */ read_owners[read_count] = _owner_tunnel; @@ -3012,6 +3033,7 @@ static void *p2p_thread(void *unused) memcpy(asked_write, write, sizeof(*write) * (size_t)write_count); pthread_mutex_unlock(&p2p_lock); + waited = p2p_now(); if (posix_socket_select(read, &read_count, write, &write_count, NULL, &error_count, 0, wait * 1000, 0) < 0) { @@ -3021,6 +3043,13 @@ static void *p2p_thread(void *unused) #ifdef HALO_PROFILE profile_trace_begin(p2p_profile_names.pass); #endif + /* the wait lasted far longer than asked (the process was suspended + or the machine slept): what the sockets report is stale */ + if (elapsed(waited, (unsigned long)wait + PEER_TIMEOUT)) + { + network_resumed(p2p_now() - waited); + read_count = write_count = 0; + } /* what is ready (the lists now hold only ready sockets, in the order asked, so each one's owner is found going along both); a socket diff --git a/port/linux/src/p2p_internal.h b/port/linux/src/p2p_internal.h index b3e54d6a64..dfd59bc8d9 100644 --- a/port/linux/src/p2p_internal.h +++ b/port/linux/src/p2p_internal.h @@ -130,6 +130,10 @@ void p2p_signal_join(const unsigned char *host_hash, const unsigned char *token) void p2p_signal_stop_joining(void); /* whether any broker is connected */ int p2p_signal_connected(void); +/* every broker's connection made anew at once: after the p2p thread was +stopped (the process was suspended, or the machine slept), the old ones +may carry nothing, and would be noticed only at their silence timeout */ +void p2p_signal_reconnect(void); /* the server browser's topics: the own slot and the queries (a listed game), and every slot (browsing) */ void p2p_signal_lobby_topics(int listed, int browsing); diff --git a/port/linux/src/p2p_signal.c b/port/linux/src/p2p_signal.c index a3c90eac02..efcaac1ebb 100644 --- a/port/linux/src/p2p_signal.c +++ b/port/linux/src/p2p_signal.c @@ -1844,6 +1844,23 @@ int p2p_signal_connected(void) return 0; } +void p2p_signal_reconnect(void) +{ + int index; + + for (index = 0; index < signalling.broker_count; index++) + { + struct broker *broker = &signalling.brokers[index]; + + if (broker->state == _broker_idle && broker->socket < 0 && !broker->failures) + continue; + broker_close(broker, 0); + broker->failures = 0; + /* (again at once) */ + broker->state_time = p2p_now() - MAXIMUM_RETRY_INTERVAL; + } +} + static void sync_all_topics(void) { int index; From 27f48fb6c871243c0c79b87ff543a88baac5ab99 Mon Sep 17 00:00:00 2001 From: justinfilip Date: Sun, 11 Oct 2026 13:37:40 -0500 Subject: [PATCH 09/29] A player joining or leaving the lobby no longer restarts the countdown. (cherry picked from commit 2059b6cef5339f4717b14c6cc98ec477aedfdd9e) --- source/networking/network_server_manager.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/source/networking/network_server_manager.c b/source/networking/network_server_manager.c index cbb903eaa6..82acb68c6c 100644 --- a/source/networking/network_server_manager.c +++ b/source/networking/network_server_manager.c @@ -3271,11 +3271,14 @@ static boolean server_alone( return server->game.player_count == 1; } +/* port: a machine joining or leaving is in the game before its player is. +The countdown used to stop for that, and then start over, so a lobby rarely +finished. The players already in the game decide. A machine with no player +can join the game in progress. */ boolean server_ok_to_countdown( struct network_game_server *server) { if (server_has_enough_machines(server) && - server_has_a_player_on_each_machine(server) && (!server_needs_more_teams(server) || server_alone(server)) && (server->game.player_count >= server->game.minimum_players || server_alone(server))) { @@ -4716,7 +4719,13 @@ static boolean network_game_server_have_all_machines_have_precached( if (network_game_server_client_machine_is_joined_to_game(server, machine)) { - boolean client_has_precached = TEST_FLAG( + boolean client_has_precached; + + /* port: a machine with no player is joining or leaving. It does + not hold the start; it can join the game in progress. */ + if (!network_game_server_machine_has_players(server, machine->machine_index)) + continue; + client_has_precached = TEST_FLAG( server->client_machines[i].flags, _network_client_machine_precached_bit); @@ -4792,9 +4801,9 @@ static boolean network_game_server_idle_pregame_tasks( server, client_machine); } - /* port: a machine that joined and can add no player (the lobby - filled after it joined), or adds none, holds the countdown for - ever: refused */ + /* port: a machine that joined and adds no player (the lobby filled + after it joined, or it never adds one) is refused, so it does not + stay in the lobby */ else if (network_game_server_client_machine_is_joined_to_game(server, client_machine) && !network_game_server_client_machine_is_local(server, client_machine) && !network_game_server_machine_has_players(server, client_machine->machine_index) && From 7c805291bc6f3dc7ad5d5af3ec139f4f0d0716b9 Mon Sep 17 00:00:00 2001 From: MrBruh <4706866+cybersecurity@users.noreply.github.com> Date: Mon, 12 Oct 2026 08:07:14 +1300 Subject: [PATCH 10/29] Custom Edition map sharing Hosts send players who join without the game's Custom Edition map the map and the resource maps it needs; the other players help, torrent-style. Network version 27: new map sharing messages, and players of an internet game now reach each other. --- docs/custom_edition_caches.md | 30 +- port/assets/menus/ce/bitmaps.xml | 3 + ...ultiplayer_type_select.server_settings.xml | 104 +- ...profile_edit.network_setup.map_sharing.xml | 74 + ...etup.player_profile_edit.network_setup.xml | 11 + .../header_map_share_options.png | Bin 0 -> 64514 bytes port/assets/menus/menus.json | 2 + .../header_map_share_options.svg | 13 + port/linux/NETCODE.md | 68 +- port/linux/README.md | 48 + port/linux/game/cache_file_formats.c | 82 + port/linux/game/cache_file_formats.h | 10 + port/linux/game/custom_edition_cache.c | 128 +- port/linux/game/custom_edition_cache.h | 23 +- port/linux/game/custom_edition_maps.c | 68 +- port/linux/game/map_share.c | 3086 +++++++++++++++++ port/linux/game/map_share.h | 198 ++ port/linux/game/map_share_files.c | 720 ++++ port/linux/game/menu_functions.c | 11 +- port/linux/game/network_distributed.c | 10 + port/linux/game/network_distributed.h | 7 + port/linux/include/halo_port_limits.h | 2 +- port/linux/src/p2p.c | 204 +- port/linux/src/p2p.h | 35 + port/linux/src/p2p_crypto.c | 7 + port/linux/src/p2p_internal.h | 36 +- port/linux/src/p2p_signal.c | 244 +- port/linux/src/port_config.c | 22 + port/tools/cache_file_report.c | 15 + source/cache/cache_files.c | 15 +- source/interface/interface.c | 3 + source/main/main.c | 3 + source/networking/network_client_manager.c | 7 + source/networking/network_server_manager.c | 13 + .../network_server_message_handler.c | 17 + tools/harness/tests/map_share_names.c | 120 + tools/harness/tests/test_map_share_names.py | 68 + tools/port_settings.py | 90 +- tools/test_cache_file_formats.py | 27 + 39 files changed, 5498 insertions(+), 126 deletions(-) create mode 100644 port/assets/menus/ce/main_menu.settings_select.player_setup.player_profile_edit.network_setup.map_sharing.xml create mode 100644 port/assets/menus/ce/port/main_menu/multiplayer_type_select/server_settings/map_share_options/header_map_share_options.png create mode 100644 port/assets/menus/port_svg/main_menu/multiplayer_type_select/server_settings/map_share_options/header_map_share_options.svg create mode 100644 port/linux/game/map_share.c create mode 100644 port/linux/game/map_share.h create mode 100644 port/linux/game/map_share_files.c create mode 100644 tools/harness/tests/map_share_names.c create mode 100644 tools/harness/tests/test_map_share_names.py diff --git a/docs/custom_edition_caches.md b/docs/custom_edition_caches.md index 2b5177f1f9..215b51b7b7 100644 --- a/docs/custom_edition_caches.md +++ b/docs/custom_edition_caches.md @@ -33,6 +33,26 @@ network games, and is never taken for one of the campaign's levels (saved games, progress, the next level). The game engine keeps 63 characters of a level name, so a map whose file name is longer than 51 is not listed. +A map in `custom_maps` is named for its contents once the map lists (or a +host picking it) find it: `hugeass.map` becomes `hugeass_0e2b3ee4.map`, the +first 8 hexadecimal digits of its hash after `_`, its `.bmp` and `.txt` +renamed with it (`port/linux/game/map_share_files.c`; the name is cut short +to keep the level name within 63 characters). A network game's level name +then says which version of the map it is on, a player without it downloads +it under that name (`port/linux/NETCODE.md`, "Map sharing"), and two +versions of a map keep apart. A level name without the hash (a saved last +map, a test's) finds the one map of that name in `custom_maps`. The menus +show a map without its hash, unless two versions of it are listed. Maps in +a Custom Edition install's folder keep their names. + +A map needs only the resource maps that hold its tags: its tag index says +which (`cache_file_resource_maps_needed`, `cache_file_formats.c`: a tag +whose entry's word at 0x18 is set is held whole by `bitmaps.map` for a +bitmap, `sounds.map` for a sound, `loc.map` for a font, string list or HUD +message text). A map without such tags of a kind plays without that +resource map; one that lacks a resource map it needs is refused, saying +which. + ### In the menus The map lists (New Game's, and the Map screen of Create Game's INTERNET and @@ -438,8 +458,14 @@ a campaign level at the difficulty chosen; the Map screen's (LAN) listed its difficulties, set up co-op in Server Setup and showed it in the lobby as co-op. With `debug.network_test`, two machines on loopback played `custom_maps\a30` as network co-op and `custom_maps\hugeass` as slayer; a -joining machine without the map, without the resource maps, or with a maps -folder missing the host's Xbox map was shown each error and left the game. +joining machine with a maps folder missing the host's Xbox map was shown the +error and left the game. A joining machine without `hugeass` (or without +`sounds.map` and `loc.map` too) downloaded them and played (map sharing, +`port/linux/NETCODE.md`): in the lobby, into a game in progress, from the +host and another player at once with a second machine downloading beside it +(on loopback, and through internet play's tunnels with a local broker), each +file the same as the host's; with `network.map_download` off, or a host with +`network.map_share` off, it was shown the error and left. ### Not tested diff --git a/port/assets/menus/ce/bitmaps.xml b/port/assets/menus/ce/bitmaps.xml index 129b2b1f83..1b1038e5b9 100644 --- a/port/assets/menus/ce/bitmaps.xml +++ b/port/assets/menus/ce/bitmaps.xml @@ -335,6 +335,9 @@ + + + diff --git a/port/assets/menus/ce/main_menu.multiplayer_type_select.server_settings.xml b/port/assets/menus/ce/main_menu.multiplayer_type_select.server_settings.xml index 732cb636c3..36c6c2fbf7 100644 --- a/port/assets/menus/ce/main_menu.multiplayer_type_select.server_settings.xml +++ b/port/assets/menus/ce/main_menu.multiplayer_type_select.server_settings.xml @@ -15,18 +15,19 @@ - - - - - - - - - - - - + + + + + + + + + + + + + @@ -90,6 +91,14 @@ + + + + + + + + @@ -194,6 +203,7 @@ + @@ -211,6 +221,7 @@ + @@ -478,4 +489,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/port/assets/menus/ce/main_menu.settings_select.player_setup.player_profile_edit.network_setup.map_sharing.xml b/port/assets/menus/ce/main_menu.settings_select.player_setup.player_profile_edit.network_setup.map_sharing.xml new file mode 100644 index 0000000000..e0f74662bc --- /dev/null +++ b/port/assets/menus/ce/main_menu.settings_select.player_setup.player_profile_edit.network_setup.map_sharing.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/port/assets/menus/ce/main_menu.settings_select.player_setup.player_profile_edit.network_setup.xml b/port/assets/menus/ce/main_menu.settings_select.player_setup.player_profile_edit.network_setup.xml index c5677d850f..8626fd178b 100644 --- a/port/assets/menus/ce/main_menu.settings_select.player_setup.player_profile_edit.network_setup.xml +++ b/port/assets/menus/ce/main_menu.settings_select.player_setup.player_profile_edit.network_setup.xml @@ -21,6 +21,7 @@ + @@ -100,6 +101,14 @@ + + + + + + + + @@ -119,6 +128,7 @@ + @@ -130,5 +140,6 @@ + diff --git a/port/assets/menus/ce/port/main_menu/multiplayer_type_select/server_settings/map_share_options/header_map_share_options.png b/port/assets/menus/ce/port/main_menu/multiplayer_type_select/server_settings/map_share_options/header_map_share_options.png new file mode 100644 index 0000000000000000000000000000000000000000..b09f447c9cf6450e182e2b8647beafaf49686ef3 GIT binary patch literal 64514 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 + + + + + + + + + + + + diff --git a/port/linux/NETCODE.md b/port/linux/NETCODE.md index d08c6efcbb..17b1c09d5b 100644 --- a/port/linux/NETCODE.md +++ b/port/linux/NETCODE.md @@ -187,7 +187,9 @@ times (a client waits for a player's blow before its body dies without one), and switches co-op's BSP on the host's crossing alone; version 26 has each machine say its WebRTC in internet play's signalling (a native build's certificate, a browser's ICE credentials too), so that browsers play -(port/linux/README.md, "Browsers"). +(port/linux/README.md, "Browsers"); version 27 shares Custom Edition maps +(below, "Map sharing"): a client asks the host for a map it lacks, and the +game's players reach each other to send it. This Mac build plays that options record (time limit, loadout, friendly fire, vehicle respawn, team balance, radar, vehicle sets, and no-map-weapons) and @@ -326,6 +328,70 @@ machine in the pregame refuses, and which the others no longer need), only a pregame keep-alive every five seconds from the host (`network_server_manager.c`, `network_server_message_handler.c`). +## Map sharing + +A client may join a game on a Custom Edition map it does not have +(`port/linux/game/map_share.c`, `map_share_files.c`). Every map in the +custom_maps folder is named for its contents: once the map lists (or a host +picking it) find it, `hugeass.map` is renamed `hugeass_<8 hex digits>.map`, +the first digits of its hash, with its picture and description, so a game's +level name (`custom_maps\hugeass_0e2b3ee4`) says which version of the map it +is, and two versions never meet. A file's hash is BLAKE2b's (32 bytes) of a +label, its size and the BLAKE2b hashes of its pieces (256 KiB each). The +menus show a map without its hash, unless two versions are listed. + +- **Asking.** A client whose settings name a map it lacks + (`cache_files_map_present`), or one whose resource maps it lacks, asks the + host over its connection (`_distributed_message_map_share_request`: the + level, and which of the map, bitmaps.map, sounds.map and loc.map it + lacks) instead of leaving, if `network.map_download` lets it; the map must + be named for its hash. Its players wait to join until the host's settings + have named the map, and for a game in progress until it is downloaded; in + the lobby they join at once, and the host's start waits for the machine to + precache the map, as it waits for any machine. +- **The offer.** A host that shares maps (`network.map_share`) hashes the + map, and the resource maps the map needs (its tag index says which: a tag + whose entry's word at 0x18 is set is held whole by bitmaps.map for a + bitmap, sounds.map for a sound, loc.map for a font, string list or HUD + message text) that the client lacks, on a thread of their own, and + answers with each file's size and hash (`_offer`, or why it does not: + sharing off, or not the game's map), and which of its other machines may + have them (`_sources`: an address on a LAN, internet play's key hash on the + internet), again every ten seconds. A map whose hash is not its name's is + not offered. The client checks that the map's hash is its name's, and + that no file is larger than the cache loader takes. +- **The swarm.** The client connects to the host and up to eight of the + others on port 5153 (of two downloading, the one of the lower machine + connects). Each end says which files it has, whole or by piece, and tells + the other of each piece it gets; the client asks for the rarest pieces + first (from a random place, so that clients ask for different pieces), two + at a time from each connection, sixteen in all, and the last few again of + whoever is quicker. The pieces' hashes come from any end that has them, + checked against the file's hash; each piece is checked against its own as + it arrives, and an end that sends a wrong one is not asked again. A machine + sends of the game's files (its map, the resource maps the map needs, a + download's pieces) no faster than `network.map_share_upload` (the host, + 1024 KB/s) or `network.map_seed_upload` (a player, 256 KB/s), round all + its connections a 16 KiB block at a time, so that the game's own traffic + keeps the rest of the upload; `network.map_seed = false` sends none. A + player that has downloaded the map sends it on at once. +- **Internet play.** The players of an internet game reach its host alone. + A player that shares answers the holders of the invite it joined with as + its host does (`p2p_set_answering_players`), and a downloading client asks + another player, by the key hash the host told, for a session as it asked + the host (`p2p_reach_player`: up to eight at once, alongside the request to + the host, in one topic of the invite's token). Its map sharing connection + then goes through their tunnel, as the game's connections go. +- **Writing.** A download is written to `.part` beside its file in + custom_maps, and renamed when every piece is had. A part file found again + is checked piece by piece on the hashing thread and taken up where it was. + The client checks the map again once it has it (`custom_edition_cache_present`), + and tells the host its progress every two seconds (`_progress`); the host + does not drop a machine downloading (and for 20 seconds after) for adding + no players or loading slowly. A download that brings nothing for a minute, + or a host that does not answer in 30 seconds, leaves the game, saying why. +- The download's progress is drawn at the top of the screen. + ## Stages 1. (Done) Decoupled ticks: clients tick on their own clock with local input diff --git a/port/linux/README.md b/port/linux/README.md index 1f88d6aae0..c468fbe80e 100644 --- a/port/linux/README.md +++ b/port/linux/README.md @@ -429,6 +429,11 @@ display. Firing, animation, sound and world lights continue. | `network.votekick` | `true` | `HALO_NET_VOTEKICK` | When you host: `true`, the players can vote to kick a player. Refer to "Security". `false`: no votes. VOTE KICK in Server Setup > Teamplay Options (in co-op, Voice and Voting) writes its choice here. | | `network.votekick_minutes` | `5` | `HALO_NET_VOTEKICK_MINUTES` | When you host: the minutes that a player must play on the server before the player can start a vote to kick (`0` to `60`). To vote, a player must play for 2 minutes, or for this time if it is less. | | `network.votekick_ban_minutes` | `30` | `HALO_NET_VOTEKICK_BAN_MINUTES` | When you host: the minutes that a player who is kicked by a vote cannot join again (`1` to `1440`). | +| `network.map_share` | `true` | `HALO_NET_MAP_SHARE` | When you host: send a player who joins without the game's Custom Edition map the map, and the resource maps that it needs and that the player does not have. SHARE MAPS in Server Setup > Map Sharing writes its choice here. Refer to "Map sharing". | +| `network.map_share_upload` | `1024` | `HALO_NET_MAP_SHARE_UPLOAD` | When you host: the most kilobytes per second that the game sends of maps (`16` to `65536`). UPLOAD LIMIT in Server Setup > Map Sharing writes its choice here. | +| `network.map_seed` | `true` | `HALO_NET_MAP_SEED` | When you play in the game of another machine: help send its map to players who join without it. HELP SEND MAPS in Settings > Network Setup > Map Sharing. | +| `network.map_seed_upload` | `256` | `HALO_NET_MAP_SEED_UPLOAD` | When you play in the game of another machine: the most kilobytes per second that the game sends of maps to other players (`16` to `65536`). UPLOAD LIMIT in Settings > Network Setup > Map Sharing. | +| `network.map_download` | `true` | `HALO_NET_MAP_DOWNLOAD` | When you join a game on a Custom Edition map that you do not have: download it from the players of the game. `false`: leave the game and show which map is missing. DOWNLOAD MAPS in Settings > Network Setup > Map Sharing. | | `network.coop_public` | `false` | `HALO_NET_COOP_PUBLIC` | `true`: an online co-op game (Create Game > Internet, a SINGLEPLAYER map) starts as PUBLIC. `false`: it starts as PRIVATE. LISTING in co-op's Server Setup writes its choice here. Refer to "Server browser". | | `network.brokers_file` | `"brokers.txt"` | `HALO_NET_BROKERS_FILE` | The file of the public MQTT brokers that let the machines of an invite find each other, and that carry the listings of the server browser: next to `config.toml`, unless a full path. One `host:port` on each line, up to 4; `#` starts a comment. | | `network.stun_servers` | Google and Cloudflare | `HALO_NET_STUN` | The public STUN servers (`host:port`, with commas between them) that give the internet address of a machine. | @@ -798,6 +803,48 @@ MQTT 5 if the broker has it, else MQTT 3.1.1. A broker that does not keep retained messages, or does not let clients subscribe with wildcards, carries only invites, not listings. +### Map sharing + +When you join a game on a Custom Edition map that you do not have, the game +downloads the map from the players of the game, if the host shares its maps +(SHARE MAPS in Server Setup > Map Sharing, `network.map_share`, on by +default). This operates on a local network and +on the internet. It also downloads the resource maps that the map needs +(`bitmaps.map`, `sounds.map`, `loc.map`) if you do not have them. A line at +the top of the screen shows the progress. In the lobby, the game starts when +every player has the map. If the game already operates, you join it when +the download is complete. If no player sends any of the map for a minute, +you leave the game, and the main menu tells you why. + +All the players help (HELP SEND MAPS in Settings > Network Setup > Map +Sharing, `network.map_seed`), as the peers of a torrent do: +the downloaded map comes in pieces from the host and from each player who +has it or has a part of it. The game checks each piece against its hash, so +a player cannot send a different map. A player who sends a bad piece is not +asked again. To keep the upload free for the game, the host sends at most +`network.map_share_upload` (1024 KB/s: UPLOAD LIMIT in Server Setup > Map +Sharing) and each other player at most `network.map_seed_upload` (256 KB/s: +UPLOAD LIMIT in Settings > Network Setup > Map Sharing). Set these lower on +a slow connection. DOWNLOAD MAPS there (`network.map_download`) turns +downloading off: you then leave a game whose map you do not have. + +The name of each map in `custom_maps` ends with the start of its hash: when +the map lists find `hugeass.map`, the game renames it `hugeass_0e2b3ee4.map` +(and its picture and description). Thus two versions of a map have different +names, and a game always loads the version of the host. The menus show the +map without the hash, and with it only when you have two versions of the +map. The downloaded map has the same name. A download that stops leaves a +`.part` file in `custom_maps`; the next download of that map continues from +it. Maps in the folder of a Halo Custom Edition install +(`paths.custom_edition`) keep their names, and the host does not share them. +Copy a map to `custom_maps` to share it. + +Over the internet, the players of a game connect only to the host. To send +each other a map, a player answers the other players of the game (who have +its invite) as the host does, and a player who downloads connects to them in +the same way that it connected to the host. Map sharing uses port 5153 for +its connections. Refer to `NETCODE.md`, "Map sharing". + ### Security Only machines with the invite can find the game: @@ -1139,6 +1186,7 @@ Other changes: | `rasterizer/xbox/rasterizer_xbox_decals.c` | Decals drawn one after another with the same blend function and bitmap are one draw, with each decal's color in its vertices, not a draw each: a long fight leaves hundreds in view. Within a run of decals whose blend functions commute (multiply, add, min, max, reverse subtract), they are drawn by bitmap, so more of them share a draw. | | `rasterizer/xbox/rasterizer_xbox_widgets.c`, `objects/widgets/light_volumes.c` | A light volume's sprites (a plasma bolt's glow, a couple of hundred) are one draw. | | `structures/structure_render.c` | The structure's visible surfaces are put in order by a radix sort, not `qsort_4byte`: the same order. | +| `cache/cache_files.c`, `networking/network_client_manager.c`, `networking/network_server_manager.c`, `networking/network_server_message_handler.c`, `main/main.c`, `interface/interface.c` | Map sharing (`game/map_share.c`): a client that does not have the game's Custom Edition map asks the host for it instead of leaving, is not given time to precache it until it has it, and adds its players to a game in progress only then; the host names the game's map for its hash, takes the requests from any machine in the game, lobby too, and does not drop a machine that downloads; the transfers run each frame, and their progress is drawn over the screen. | | `tag_files/tag_groups.h` | `TAG_BLOCK_GET_ELEMENT` returns an element in the block without a call, and calls `tag_block_get_element_with_size` for anything else. | The x86 inline assembly of the game is replaced by C. Thus the compiler diff --git a/port/linux/game/cache_file_formats.c b/port/linux/game/cache_file_formats.c index bffd73e0cf..77f85dc102 100644 --- a/port/linux/game/cache_file_formats.c +++ b/port/linux/game/cache_file_formats.c @@ -2117,6 +2117,88 @@ enum cache_file_status resource_map_open( return _cache_file_status_ok; } +enum cache_file_status cache_file_resource_maps_needed( + struct cache_file_source *source, + uint32_t *types) +{ + struct cache_file_identity identity; + uint8_t tag_index[TAG_INDEX_BYTES]; + uint8_t *instances; + uint32_t instances_address; + uint32_t instances_offset; + int32_t tag_count; + int32_t tag_index_value; + enum cache_file_status status = cache_file_identify(source, &identity); + + *types = 0; + if (status == _cache_file_status_ok && identity.format != _cache_file_format_custom_edition_cache) + { + status = _cache_file_status_unsupported_version; + } + if (status != _cache_file_status_ok) + { + return status; + } + if (identity.tag_data_size < TAG_INDEX_BYTES || + !source->read(source->context, identity.tag_data_offset, TAG_INDEX_BYTES, tag_index)) + { + return _cache_file_status_read_failed; + } + if (read_u32(tag_index + TAG_INDEX_SIGNATURE_OFFSET) != TAG_INDEX_SIGNATURE) + { + return _cache_file_status_bad_tag_index_signature; + } + /* (the instances lie in the tag data, at the address the tag cache + gives them) */ + tag_count = read_s32(tag_index + TAG_INDEX_COUNT_OFFSET); + instances_address = read_u32(tag_index + TAG_INDEX_INSTANCES_OFFSET); + if (tag_count <= 0 || (uint32_t)tag_count > ABSOLUTE_INDEX_MASK + 1 || + instances_address < CUSTOM_EDITION_TAG_CACHE_ADDRESS || + !range_fits(instances_address - CUSTOM_EDITION_TAG_CACHE_ADDRESS, (uint32_t)tag_count * TAG_INSTANCE_BYTES, + identity.tag_data_size)) + { + return _cache_file_status_bad_tag_instances_range; + } + instances_offset = instances_address - CUSTOM_EDITION_TAG_CACHE_ADDRESS; + instances = malloc((size_t)tag_count * TAG_INSTANCE_BYTES); + if (!instances) + { + return _cache_file_status_out_of_memory; + } + if (!source->read(source->context, identity.tag_data_offset + instances_offset, + (uint32_t)tag_count * TAG_INSTANCE_BYTES, instances)) + { + free(instances); + return _cache_file_status_read_failed; + } + for (tag_index_value = 0; tag_index_value < tag_count; tag_index_value++) + { + uint8_t const *instance = instances + (uint32_t)tag_index_value * TAG_INSTANCE_BYTES; + + if (!read_u32(instance + TAG_INSTANCE_IN_RESOURCE_MAP_OFFSET)) + { + continue; + } + switch (read_u32(instance + TAG_INSTANCE_GROUP_OFFSET)) + { + case BITMAP_GROUP_TAG: + *types |= 1u << _resource_map_bitmaps; + break; + case SOUND_GROUP_TAG: + *types |= 1u << _resource_map_sounds; + break; + case FONT_GROUP_TAG: + case UNICODE_STRING_LIST_GROUP_TAG: + case HUD_MESSAGE_TEXT_GROUP_TAG: + *types |= 1u << _resource_map_locale; + break; + } + } + free(instances); + + return _cache_file_status_ok; +} + void resource_map_close( struct resource_map *map) { diff --git a/port/linux/game/cache_file_formats.h b/port/linux/game/cache_file_formats.h index b629ad5a4a..616cc919b6 100644 --- a/port/linux/game/cache_file_formats.h +++ b/port/linux/game/cache_file_formats.h @@ -346,6 +346,16 @@ enum cache_file_status cache_file_identify( struct cache_file_source *source, struct cache_file_identity *identity); +/* The resource maps a Custom Edition cache needs, from its tag index alone: +in *types a bit (1 << type) for each resource_map_type holding one of its +tags whole, which the tag's index entry says (its word at 0x18): bitmaps +(bitm) bitmaps.map, sounds (snd!) sounds.map, fonts, string lists and HUD +message text (font, ustr, hmt ) loc.map (map sharing sends them with the +map: port/linux/game/map_share.c). */ +enum cache_file_status cache_file_resource_maps_needed( + struct cache_file_source *source, + uint32_t *types); + /* The format of a cache header already in memory (CACHE_FILE_HEADER_BYTES bytes), from its signatures and version alone: for callers that hold a header but not its file. */ diff --git a/port/linux/game/custom_edition_cache.c b/port/linux/game/custom_edition_cache.c index 01de111c9c..1dc4159572 100644 --- a/port/linux/game/custom_edition_cache.c +++ b/port/linux/game/custom_edition_cache.c @@ -30,8 +30,10 @@ where its offset falls in their combined offset space. #include "cache_file_formats.h" #include "custom_edition_cache.h" #include "tag_schema.h" +#include "map_share.h" #include +#include /* ---------- constants */ @@ -71,6 +73,9 @@ struct custom_edition_file struct custom_edition_cache_globals { boolean tags_loaded; + /* the loaded map's file (custom_edition_cache_loaded_path), while it + is open */ + char map_path[MAP_PATH_SIZE]; /* the Halo PC behaviours the loaded map relies on (enum custom_edition_behaviour, flags) */ uint32_t behaviours; @@ -204,13 +209,64 @@ static boolean maps_folder_has( return file_path_exists(path); } +/* The custom_maps folder's one map named _.map, for a name +without the hash its file has: its file name (without the extension) in +`hashed` (MAP_PATH_SIZE characters). Maps there are named for their hash as +the map lists find them (map_share_name_map), so a level name of before (a +saved last map, a test's) still finds its map; FALSE if there are more. */ +static boolean maps_folder_hashed_name( + char const *name, + char *hashed) +{ + char pattern[MAP_PATH_SIZE]; + WIN32_FIND_DATAA data; + HANDLE find; + short count = 0; + + if (map_share_name_hashed(name) || + strlen(CUSTOM_EDITION_MAP_DIRECTORY) + strlen(name) + 1 + MAP_SHARE_NAME_DIGITS + 4 >= MAP_PATH_SIZE) + { + return FALSE; + } + sprintf(pattern, "%s%s_*%s", CUSTOM_EDITION_MAP_DIRECTORY, name, MAP_FILE_EXTENSION); + find = FindFirstFileA(pattern, &data); + if (find == INVALID_HANDLE_VALUE) + return FALSE; + do + { + char found[sizeof(data.cFileName) + 1]; + size_t length; + + memcpy(found, data.cFileName, sizeof(data.cFileName)); + found[sizeof(data.cFileName)] = 0; + length = strlen(found); + if ((data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) || length <= strlen(MAP_FILE_EXTENSION)) + continue; + found[length - strlen(MAP_FILE_EXTENSION)] = 0; + /* (the name and a hash: not a longer name that starts the same) */ + if (!map_share_name_hashed(found) || (size_t)map_share_name_base_length(found) != strlen(name) || + _strnicmp(found, name, strlen(name))) + { + continue; + } + if (count++) + break; + strcpy(hashed, found); + } while (FindNextFileA(find, &data)); + CloseHandle(find); + + return count == 1; +} + /* the file that holds the map `map_name` names (a level name or a file -name): \.map */ +name): \.map (custom_maps' _.map for +a name without the hash, if it has one map of that name) */ static boolean custom_edition_map_path( char const *map_name, char *path) { char const *name = tag_name_strip_path(map_name); + char hashed[MAP_PATH_SIZE]; short folder; for (folder = 0; folder < NUMBER_OF_MAPS_FOLDERS; folder++) @@ -221,7 +277,8 @@ static boolean custom_edition_map_path( } } - return FALSE; + return maps_folder_hashed_name(name, hashed) && + maps_folder_has(maps_folder(0), hashed, MAP_FILE_EXTENSION, path); } /* A cache's resource map of `type`, bitmaps.map and so on, in the first maps @@ -261,6 +318,7 @@ static void custom_edition_cache_files_close( custom_edition_file_close(&globals->resource_files[type]); } custom_edition_file_close(&globals->map); + globals->map_path[0] = 0; return; } @@ -568,6 +626,54 @@ boolean custom_edition_level_name( !_strnicmp(level_name, CUSTOM_EDITION_LEVEL_NAME_PREFIX, csstrlen(CUSTOM_EDITION_LEVEL_NAME_PREFIX)); } +boolean custom_edition_map_file_path( + char const *map_name, + char *path) +{ + return custom_edition_map_path(map_name, path); +} + +boolean custom_edition_resource_map_file_path( + short type, + char *path) +{ + short folder; + + if (type <= _resource_map_none || type >= NUMBER_OF_RESOURCE_MAP_TYPES) + return FALSE; + for (folder = 0; folder < NUMBER_OF_MAPS_FOLDERS; folder++) + { + if (maps_folder_has(maps_folder(folder), resource_map_type_describe((enum resource_map_type)type), + MAP_FILE_EXTENSION, path)) + { + return TRUE; + } + } + return FALSE; +} + +unsigned long custom_edition_map_resource_maps_needed( + char const *level_name) +{ + char path[MAP_PATH_SIZE]; + struct custom_edition_file file; + uint32_t types = 0; + + if (custom_edition_map_path(level_name, path) && custom_edition_file_open(&file, path)) + { + if (cache_file_resource_maps_needed(&file.source, &types) != _cache_file_status_ok) + types = 0; + custom_edition_file_close(&file); + } + return types; +} + +char const *custom_edition_cache_loaded_path( + void) +{ + return custom_edition_cache_globals.map.stream ? custom_edition_cache_globals.map_path : NULL; +} + boolean custom_edition_map_file_present( char const *map_name) { @@ -608,13 +714,14 @@ boolean custom_edition_cache_present( struct custom_edition_file file; struct cache_file_identity identity; enum cache_file_status status = _cache_file_status_read_failed; + uint32_t needed = 0; short folder; short type; if (!custom_edition_map_path(level_name, path)) { - snprintf(message, message_size, "You don't have the map %.64s.map. If you have it, copy it into custom_maps.", - name); + snprintf(message, message_size, "You don't have the map %.*s.map. If you have it, copy it into custom_maps.", + (int)MIN(64, map_share_name_base_length(name)), name); return FALSE; } if (!halo_custom_edition_tag_cache()) @@ -628,6 +735,13 @@ boolean custom_edition_cache_present( if (custom_edition_file_open(&file, path)) { status = cache_file_identify(&file.source, &identity); + /* (the resource maps the map's tags are read from: those its tag + index says it holds tags in) */ + if (status == _cache_file_status_ok && identity.format == _cache_file_format_custom_edition_cache && + cache_file_resource_maps_needed(&file.source, &needed) != _cache_file_status_ok) + { + needed = (1u << _resource_map_bitmaps) | (1u << _resource_map_sounds) | (1u << _resource_map_locale); + } custom_edition_file_close(&file); } if (status != _cache_file_status_ok || identity.format != _cache_file_format_custom_edition_cache) @@ -648,12 +762,13 @@ boolean custom_edition_cache_present( "Your %.64s.map is a different version from the host's. Copy the host's into custom_maps.", name); return FALSE; } - /* (the resource maps every Custom Edition map's tags are read from) */ for (type = _resource_map_bitmaps; type < NUMBER_OF_RESOURCE_MAP_TYPES; type++) { char const *resource_name = resource_map_type_describe((enum resource_map_type)type); char resource_path[MAP_PATH_SIZE]; + if (!(needed & (1u << type))) + continue; for (folder = 0; folder < NUMBER_OF_MAPS_FOLDERS; folder++) { if (maps_folder_has(maps_folder(folder), resource_name, MAP_FILE_EXTENSION, resource_path)) @@ -664,7 +779,7 @@ boolean custom_edition_cache_present( error(_error_silent, "custom edition: the map '%s' needs %s.map, which no maps folder has", level_name, resource_name); snprintf(message, message_size, - "The map %.64s needs Custom Edition's bitmaps.map, sounds.map and loc.map in custom_maps.", name); + "The map %.64s needs Custom Edition's %s.map in custom_maps.", name, resource_name); return FALSE; } } @@ -723,6 +838,7 @@ struct cache_file_tag_header *custom_edition_cache_tags_load( map_name); return NULL; } + strcpy(globals->map_path, path); status = cache_file_identify(&globals->map.source, &identity); if (status != _cache_file_status_ok || identity.format != _cache_file_format_custom_edition_cache || diff --git a/port/linux/game/custom_edition_cache.h b/port/linux/game/custom_edition_cache.h index 55782a5aab..c2bfc3eb0c 100644 --- a/port/linux/game/custom_edition_cache.h +++ b/port/linux/game/custom_edition_cache.h @@ -85,11 +85,32 @@ versions of a map; 0 if it has no file or the file is not a Custom Edition cache. */ unsigned long custom_edition_map_checksum( char const *level_name); +/* The file of the map `map_name` (a level name or a file name) in the +Custom Edition maps folders, into `path` (256 characters): the custom_maps +folder's map named for its hash (_.map, map_share.h) for a name +without it, if there is one map of that name. FALSE if none. */ +boolean custom_edition_map_file_path( + char const *map_name, + char *path); +/* The resource map of `type` (enum resource_map_type: bitmaps.map, +sounds.map, loc.map) in the first maps folder that has it, into `path` (256 +characters); FALSE if none has it. */ +boolean custom_edition_resource_map_file_path( + short type, + char *path); +/* The resource maps the level's map needs (a bit, 1 << type, for each +resource map its tags are held in: cache_file_resource_maps_needed); 0 if +it has no file, or none. */ +unsigned long custom_edition_map_resource_maps_needed( + char const *level_name); +/* the file of the Custom Edition map loaded, or NULL */ +char const *custom_edition_cache_loaded_path( + void); /* Whether this machine can play the level `level_name` (custom_maps\), as a network game's client must: its file present and a Custom Edition cache of the host's version (`checksum`, custom_edition_map_checksum's on the host; 0 for any), Custom Edition maps able to run, and the resource maps -present. When not, `message` (`message_size` characters) says why, for the +it needs present. When not, `message` (`message_size` characters) says why, for the player, and what to do. */ boolean custom_edition_cache_present( char const *level_name, diff --git a/port/linux/game/custom_edition_maps.c b/port/linux/game/custom_edition_maps.c index e40f0013c7..85253e5db0 100644 --- a/port/linux/game/custom_edition_maps.c +++ b/port/linux/game/custom_edition_maps.c @@ -15,10 +15,15 @@ A map's level name is custom_maps\ (CUSTOM_EDITION_LEVEL_NAME_PREFIX), which the cache loader reads from the custom maps folders alone: a map named as one of the game's own levels (a30.map, bloodgulch.map) is listed and played as itself. The game engine keeps 63 characters of a level name, so a -map whose name is longer than 51 is skipped. +map whose name is longer than 51 is skipped. A map in the custom_maps folder +is named for its hash (_.map) once it has been found: a network +game's level name then says which version of the map it is on, and a player +without it can download it (map_share.h). The menus show the name without +the hash, unless two versions of a map are listed. Each map can have, beside it in its folder: -- .bmp, its picture (bmp_files.c). The middle is cropped to the +- .bmp, its picture (bmp_files.c; for a map named for its hash, a + picture named without the hash also does). The middle is cropped to the menus' picture shape. It is read the first time it is drawn, and freed when the maps are rescanned. Without one, the unknown level's picture is shown. @@ -41,6 +46,7 @@ Each map can have, beside it in its folder: #include "bmp_files.h" #include "custom_edition_cache.h" #include "custom_edition_maps.h" +#include "map_share.h" #include #include @@ -180,29 +186,32 @@ static void custom_edition_maps_forget( return; } -/* the map's index in stock_maps, or NONE */ +/* the map's index in stock_maps, or NONE (by its name without its hash) */ static short stock_map_index( char const *name) { + short length = map_share_name_base_length(name); short index; for (index = 0; index < NUMBEROF(stock_maps); index++) { - if (!csstrcasecmp(name, stock_maps[index].file)) + if ((short)csstrlen(stock_maps[index].file) == length && !_strnicmp(name, stock_maps[index].file, length)) return index; } return NONE; } /* A map's menu name: Halo PC's name for its own maps, otherwise the file -name with underscores as spaces and words capitalized ("the_bay_of_pigs" -becomes "The Bay Of Pigs"). */ +name (without the hash it ends in, unless `hash`) with underscores as spaces +and words capitalized ("the_bay_of_pigs" becomes "The Bay Of Pigs"). */ static void display_name_make( char const *name, + boolean hash, wchar_t *display_name) { boolean word_start = TRUE; - short index = stock_map_index(name); + short index = hash ? NONE : stock_map_index(name); + short length = hash ? (short)csstrlen(name) : map_share_name_base_length(name); if (index != NONE) { @@ -210,7 +219,7 @@ static void display_name_make( return; } - for (index = 0; name[index]; index++) + for (index = 0; index < length; index++) { unsigned char character = (unsigned char)name[index]; @@ -245,6 +254,13 @@ static void custom_edition_map_description_read( csprintf(path, "%s%s%s", map->folder, map->name, DESCRIPTION_EXTENSION); stream = fopen(path, "rb"); + /* (a map named for its hash: its description named without it too) */ + if (!stream && map_share_name_hashed(map->name)) + { + csprintf(path, "%s%.*s%s", map->folder, (int)map_share_name_base_length(map->name), map->name, + DESCRIPTION_EXTENSION); + stream = fopen(path, "rb"); + } if (stream) { text_size = (long)fread(text, 1, sizeof(text), stream); @@ -371,8 +387,11 @@ static void custom_edition_map_add( csstrcpy(map->name, name); csstrncpy(map->folder, folder, sizeof(map->folder) - 1); csprintf(map->level_name, "%s%s", CUSTOM_EDITION_LEVEL_NAME_PREFIX, name); - display_name_make(name, map->display_name); + display_name_make(name, FALSE, map->display_name); custom_edition_map_description_read(map); + /* (named for its hash, renamed: map_share_files.c) */ + if (!map_share_name_hashed(name)) + map_share_name_map(folder, name); return; } @@ -386,6 +405,28 @@ static int custom_edition_map_compare( ((struct custom_edition_map const *)second)->name); } +/* Two versions of a map (its name the same but for its hash) listed: each +shown with its hash, to tell them apart. The maps are sorted by name. */ +static void custom_edition_maps_tell_versions_apart( + struct custom_edition_map *maps, + short count) +{ + short index; + + for (index = 0; index + 1 < count; index++) + { + struct custom_edition_map *map = &maps[index]; + struct custom_edition_map *next = &maps[index + 1]; + short length = map_share_name_base_length(map->name); + + if (length == map_share_name_base_length(next->name) && !_strnicmp(map->name, next->name, length)) + { + display_name_make(map->name, TRUE, map->display_name); + display_name_make(next->name, TRUE, next->display_name); + } + } +} + static void custom_edition_maps_look_for( void) { @@ -441,6 +482,8 @@ static void custom_edition_maps_look_for( } qsort(globals->maps, globals->map_count, sizeof(globals->maps[0]), custom_edition_map_compare); qsort(globals->campaigns, globals->campaign_count, sizeof(globals->campaigns[0]), custom_edition_map_compare); + custom_edition_maps_tell_versions_apart(globals->maps, globals->map_count); + custom_edition_maps_tell_versions_apart(globals->campaigns, globals->campaign_count); error(_error_silent, "custom edition: %d multiplayer maps for the level list, %d campaign maps", globals->map_count, globals->campaign_count); @@ -462,6 +505,13 @@ static struct bitmap_data *custom_edition_map_picture_read( csprintf(path, "%s%s%s", map->folder, map->name, PICTURE_EXTENSION); stream = fopen(path, "rb"); + /* (a map named for its hash: its picture named without it too) */ + if (!stream && map_share_name_hashed(map->name)) + { + csprintf(path, "%s%.*s%s", map->folder, (int)map_share_name_base_length(map->name), map->name, + PICTURE_EXTENSION); + stream = fopen(path, "rb"); + } if (!stream) { return NULL; diff --git a/port/linux/game/map_share.c b/port/linux/game/map_share.c new file mode 100644 index 0000000000..1c74becdce --- /dev/null +++ b/port/linux/game/map_share.c @@ -0,0 +1,3086 @@ +/* +MAP_SHARE.C + +Custom Edition maps shared over network games (map_share.h, +port/linux/NETCODE.md "Map sharing"). + +A client joining a game on a map it does not have asks the host, over its +connection (_distributed_message_map_share_request: the level, and which +of its files it lacks: the map, bitmaps.map, sounds.map, loc.map). A host +that shares maps (network.map_share) hashes them (map_share_files.c) and +answers with each file's size and hash (_offer), and which of the game's +other machines may have them (_sources, again every few seconds: they are +the tracker's). The client then fetches the files from all of them at once, +as a torrent's peers do, over connections of their own on MAP_SHARE_PORT: + +- each end says which files it has, whole or by piece, and tells the other + of each piece it gets; +- the client asks for the rarest pieces first, a few at a time from each, + and checks each against its hash (the pieces' hashes come from any of + them: they are checked against the file's hash, the host's word); a + machine that sends a wrong piece is not asked again; +- a machine sends what it has of the game's files (its map, the resource + maps the map needs, a download's pieces) no faster than its limit + (network.map_share_upload for the host, network.map_seed_upload for the + others, network.map_seed turning that off), so the game's own traffic + keeps the rest of the upload. + +Over the internet the players reach their host alone: the host also says how +another player is reached (its key's hash), and a player asks that one for a +session as it asked the host (p2p.c: a player answers holders of the invite +it joined with while it may share). Each downloaded file is written beside +the others as .part and renamed when whole (a .part found again is +checked piece by piece and taken up where it was), into custom_maps under +the map's own name, which is its hash's. + +A game in the lobby waits for the download (its host waits for every +machine to have the map), and a game in progress is joined once it is done; +the host does not drop a machine that says it is downloading. +*/ + +/* ---------- headers */ + +#include "cseries.h" +#include "cseries/errors.h" +#include "tag_files/tag_groups.h" +#include "tag_files/tag_files.h" +#include "bungie_net/network/transport.h" +#include "bungie_net/network/transport_endpoint_winsock.h" +#include "bungie_net/network/transport_address_constants.h" +#include "game/game.h" +#include "interface/interface.h" +#include "interface/ui_widget.h" +#include "networking/network_game_globals.h" +#include "networking/network_game_manager.h" +#include "networking/network_client_manager.h" +#include "networking/network_connection.h" +#include "render/render.h" +#include "text/draw_string.h" +#include "text/font_group.h" +#include "rasterizer/rasterizer.h" +#include "network_distributed.h" +#include "cache_file_formats.h" +#include "custom_edition_cache.h" +#include "custom_edition_maps.h" +#include "map_share.h" +#include "../src/p2p.h" + +#include +#include +#include + +/* (the C library's allocator, not the game's tracked one (cseries.h): the +hashing thread allocates what the game's thread frees) */ +#undef malloc +#undef free +#undef realloc + +/* port_config.c's, network_game_globals.c's, network_server_message_handler.c's, +network_server_manager.c's, cseries_windows.c's */ +int config_boolean(const char *name); +long config_integer(const char *name); +boolean network_distributed_client_send_reliably(void *message, word size); +boolean network_distributed_server_send_to_machine_reliably(long machine_index, void *message, word size); +unsigned long network_game_server_machine_address(long machine_index); +word network_game_server_get_state(struct network_game_server *server, short *substate); +unsigned long system_milliseconds(void); + +/* ---------- constants */ + +enum +{ + /* where each machine takes the others' connections */ + MAP_SHARE_PORT = P2P_MAP_SHARE_PORT, + MAP_SHARE_MACHINES = HALO_PORT_MAXIMUM_NETWORK_MACHINES, + /* the files of a map: the map and its three resource maps */ + MAXIMUM_FILES = NUMBER_OF_MAP_SHARE_FILE_KINDS, + /* the machines the host names to a client, and those a client reaches + at once (the host, and others) */ + MAXIMUM_SOURCES = 32, + MAXIMUM_OUTGOING = 8, + /* connections at once, those other machines made included, and of + those, from one address */ + MAXIMUM_CONNECTIONS = 24, + MAXIMUM_CONNECTIONS_PER_ADDRESS = 4, + /* a connection's buffers: a whole frame in (the largest a block), and + a few blocks out */ + INPUT_BYTES = 0x6000, + OUTPUT_BYTES = 0xC000, + MAXIMUM_FRAME_BYTES = INPUT_BYTES - 4, + /* pieces asked of one connection at once, and of all of them; pieces + another machine may ask of this one at once */ + REQUESTS_PER_CONNECTION = 2, + MAXIMUM_PIECES_IN_FLIGHT = 16, + SERVING_PER_CONNECTION = 8, + /* the pieces' hashes sent at once */ + HASHES_PER_FRAME = 256, + /* a level name as a message carries it */ + LEVEL_NAME_BYTES = 64, + + /* milliseconds */ + OFFER_TIMEOUT = 30000, + STALL_TIMEOUT = 60000, + PROGRESS_INTERVAL = 2000, + SOURCES_INTERVAL = 10000, + /* the host takes a machine for downloading this long after it said so */ + DOWNLOADING_TIMEOUT = 20000, + CONNECTION_IDLE_TIMEOUT = 30000, + CONNECT_TIMEOUT = 10000, + KEEP_ALIVE_INTERVAL = 10000, + REQUEST_TIMEOUT = 30000, + SOURCE_RETRY_INTERVAL = 15000, + LISTEN_RETRY_INTERVAL = 10000, + RATE_WINDOW = 2000, + LOG_INTERVAL = 10000, + + /* the largest file of each kind the cache loader takes + (custom_edition_cache.c's combined offset space), so that a host cannot + have its players fill their disks */ + MAXIMUM_MAP_BYTES = 0x30000000, + MAXIMUM_RESOURCE_MAP_BYTES = 0x20000000, + + /* the kilobytes a second a machine sends, at least and at most */ + MINIMUM_UPLOAD_KILOBYTES = 16, + MAXIMUM_UPLOAD_KILOBYTES = 65536, + + /* network_server_manager.c's host state in game, transport_endpoint_winsock.c's + stream endpoint and hud_messaging.c's centred text (their enums are their + own) */ + _map_share_server_state_ingame = 1, + _map_share_endpoint_tcp = 0x12, + _map_share_text_centered = 2, +}; + +/* a connection's frames: its length (4 bytes, little-endian, of what +follows), its type, and its body */ +enum +{ + /* the files the connection is about: its magic, a version, the count, + and each file's hash (the end that connected says; the other repeats + them) */ + _frame_hello = 1, + /* what this end has of a file: none, all, or a byte of pieces each + eight (the first the lowest bit) */ + _frame_state, + /* a piece this end got (the file, the piece) */ + _frame_have, + /* a piece asked for (the file, the piece) */ + _frame_request, + /* part of a piece (the file, the piece, its offset, the bytes) */ + _frame_block, + /* a piece this end does not send (the file, the piece) */ + _frame_refuse, + /* the pieces' hashes asked for (the file), and some of them (the file, + the first, the count, the hashes) */ + _frame_hashes_request, + _frame_hashes, + _frame_keep_alive, +}; + +#define FRAME_MAGIC 0x3153484DUL /* 'MHS1' */ +#define FRAME_VERSION 1 + +enum +{ + _have_none, + _have_all, + _have_pieces, +}; + +/* the host's answer to a request */ +enum +{ + _offer_ok, + /* it does not share maps (network.map_share) */ + _offer_off, + /* not the game's map, not named for its hash, or not readable */ + _offer_unavailable, +}; + +enum +{ + _offer_in_progress_bit, +}; + +enum +{ + /* the machine is reached through internet play (its key hash), else + at its address */ + _source_internet_bit, + /* it is downloading the files too */ + _source_downloading_bit, +}; + +enum +{ + _progress_downloading, + _progress_done, + _progress_failed, +}; + +enum +{ + _download_none, + /* asked the host; waiting for its offer */ + _download_asking, + _download_transferring, + _download_done, + _download_failed, +}; + +enum +{ + /* its pieces' hashes not known yet */ + _file_awaiting_hashes, + /* its part file being checked */ + _file_checking, + _file_transferring, + _file_complete, +}; + +enum +{ + _connection_connecting, + _connection_open, +}; + +/* ---------- structures */ + +struct distributed_map_share_request +{ + char level_name[LEVEL_NAME_BYTES]; + unsigned long version; + /* the files the client lacks: a bit each (_map_share_file_*) */ + byte wanted; + byte pad[3]; +}; + +struct distributed_map_share_offer +{ + char level_name[LEVEL_NAME_BYTES]; + byte result; + byte file_count; + byte flags; + byte pad; +}; + +struct distributed_map_share_offer_file +{ + byte kind; + byte pad[3]; + unsigned long size; + byte hash[MAP_SHARE_HASH_BYTES]; +}; + +struct distributed_map_share_sources +{ + byte count; + byte flags; + byte pad[2]; +}; + +struct distributed_map_share_source +{ + byte machine_index; + byte flags; + byte pad[2]; + /* IPv4, host byte order */ + unsigned long address; + byte identifier[6]; + byte pad2[2]; + byte key_hash[P2P_PLAYER_KEY_HASH_SIZE]; +}; + +struct distributed_map_share_progress +{ + byte state; + byte pad[3]; + unsigned long done; + unsigned long total; +}; + +typedef char distributed_map_share_request_size_assert[sizeof(struct distributed_map_share_request) == 72 ? 1 : -1]; +typedef char distributed_map_share_offer_size_assert[sizeof(struct distributed_map_share_offer) == 68 ? 1 : -1]; +typedef char distributed_map_share_offer_file_size_assert[sizeof(struct distributed_map_share_offer_file) == 40 ? 1 : -1]; +typedef char distributed_map_share_source_size_assert[sizeof(struct distributed_map_share_source) == 32 ? 1 : -1]; +typedef char distributed_map_share_progress_size_assert[sizeof(struct distributed_map_share_progress) == 12 ? 1 : -1]; + +/* a file of the download */ +struct download_file +{ + short kind; + short state; + unsigned long size; + byte hash[MAP_SHARE_HASH_BYTES]; + long piece_count; + /* known once a machine sent them, checked against the hash */ + byte *piece_hashes; + /* the pieces' hashes as they come (from one connection at a time) */ + byte *hashes_coming; + long hashes_received; + short hashes_connection; + unsigned long hashes_asked_at; + /* the pieces had (a bit each), and asked for (a count each) */ + byte *have; + byte *asked; + long have_count; + char part_path[MAP_SHARE_PATH_SIZE]; + char final_path[MAP_SHARE_PATH_SIZE]; + FILE *stream; +}; + +/* a machine the host named */ +struct source +{ + byte machine_index; + byte flags; + unsigned long address; + byte identifier[6]; + byte key_hash[P2P_PLAYER_KEY_HASH_SIZE]; + /* the host itself (the client's own connection's address) */ + boolean host; + /* sent a wrong piece: not asked again */ + boolean banned; + short connection; + unsigned long tried_at; +}; + +struct download +{ + short state; + /* this download's number, which its part files' checks are asked for + with (map_share_pieces_hash: a check of the last's is not this one's) */ + long serial; + char level_name[LEVEL_NAME_BYTES]; + unsigned long version; + /* why the map cannot be played (custom_edition_cache_present's), for a + download that fails */ + char message[256]; + byte wanted; + boolean in_progress; + short file_count; + struct download_file files[MAXIMUM_FILES]; + short source_count; + struct source sources[MAXIMUM_SOURCES + 1]; + unsigned long asked_at; + unsigned long progress_at; + unsigned long reported_at; + /* the bytes of the pieces had, of all of them; and for the rate shown, + those got in this window and the last's */ + unsigned long done_bytes; + unsigned long total_bytes; + unsigned long window_at; + unsigned long window_bytes; + unsigned long last_window_bytes; + unsigned long last_window_time; + unsigned long logged_at; +}; + +/* a piece asked of a connection */ +struct request +{ + short file; + long piece; + unsigned long received; + unsigned long asked_at; + byte *buffer; +}; + +/* a piece another machine asked of this one, sent a block at a time */ +struct serving +{ + short file; + long piece; + unsigned long offset; +}; + +struct connection +{ + boolean used; + short state; + boolean outgoing; + /* the download's source this reached (outgoing), or NONE */ + short source; + /* IPv4, host byte order */ + unsigned long address; + struct transport_endpoint *endpoint; + unsigned long created_at; + unsigned long heard_at; + unsigned long sent_at; + /* the bytes of pieces it brought and took, for the log */ + unsigned long bytes_in; + unsigned long bytes_out; + boolean hello_heard; + /* the files it is about, and for each: the download's file, the + catalog's file this machine sends (map_share_files.c), what the other + end has, whether this end said what it has, and the next of the pieces' + hashes to send it (NONE: none asked) */ + short file_count; + byte file_hashes[MAXIMUM_FILES][MAP_SHARE_HASH_BYTES]; + short download_file[MAXIMUM_FILES]; + short catalog_file[MAXIMUM_FILES]; + short remote_has[MAXIMUM_FILES]; + byte *remote_pieces[MAXIMUM_FILES]; + boolean state_heard[MAXIMUM_FILES]; + boolean state_told[MAXIMUM_FILES]; + long hashes_next[MAXIMUM_FILES]; + short request_count; + struct request requests[REQUESTS_PER_CONNECTION]; + short serving_count; + struct serving serving[SERVING_PER_CONNECTION]; + /* (allocated with the connection: INPUT_BYTES, OUTPUT_BYTES) */ + byte *input; + long input_size; + byte *output; + long output_size; +}; + +/* what the host knows of each client machine's download */ +struct host_machine +{ + boolean asked; + struct distributed_map_share_request request; + unsigned long asked_at; + boolean offered; + short catalog_files[MAXIMUM_FILES]; + short file_kinds[MAXIMUM_FILES]; + short file_count; + unsigned long sources_at; + /* downloading (and for DOWNLOADING_TIMEOUT after it said it was done: + its players join then), and done */ + boolean downloading; + boolean downloaded; + unsigned long heard_at; + unsigned long done; + unsigned long total; + unsigned long address; +}; + +struct map_share_globals +{ + struct download download; + struct connection connections[MAXIMUM_CONNECTIONS]; + short next_connection; + struct host_machine machines[MAP_SHARE_MACHINES]; + struct transport_endpoint *listener; + unsigned long listen_tried_at; + boolean listen_failed_logged; + /* the upload's allowance (bytes) and when it was topped up */ + long upload_tokens; + unsigned long upload_at; + /* the catalog files of the game's map and its resource maps, which + this machine sends (NONE: none), and the level they are of */ + char current_level[LEVEL_NAME_BYTES]; + short current_files[MAXIMUM_FILES]; +}; + +/* ---------- globals */ + +static struct map_share_globals map_share_globals; + +/* ---------- little-endian bytes */ + +static void put_long( + byte *bytes, + unsigned long value) +{ + bytes[0] = (byte)value; + bytes[1] = (byte)(value >> 8); + bytes[2] = (byte)(value >> 16); + bytes[3] = (byte)(value >> 24); +} + +static unsigned long get_long( + byte const *bytes) +{ + return (unsigned long)bytes[0] | (unsigned long)bytes[1] << 8 | (unsigned long)bytes[2] << 16 | + (unsigned long)bytes[3] << 24; +} + +static unsigned long network_order( + unsigned long value) +{ + byte bytes[4]; + unsigned long result; + + bytes[0] = (byte)(value >> 24); + bytes[1] = (byte)(value >> 16); + bytes[2] = (byte)(value >> 8); + bytes[3] = (byte)value; + csmemcpy(&result, bytes, sizeof(result)); + return result; +} + +static unsigned long host_order( + unsigned long value) +{ + byte const *bytes = (byte const *)&value; + + return (unsigned long)bytes[0] << 24 | (unsigned long)bytes[1] << 16 | (unsigned long)bytes[2] << 8 | bytes[3]; +} + +/* whether `time` milliseconds have passed from `since` to `now` (a time +taken after now has not) */ +static boolean elapsed( + unsigned long since, + unsigned long now, + unsigned long time) +{ + return (long)(now - since) >= (long)time; +} + +/* whether an address (host byte order) is internet play's (100.64.0.0/10) */ +static boolean address_internet( + unsigned long address) +{ + return (address & 0xFFC00000UL) == 0x64400000UL; +} + +/* ---------- this machine's network game */ + +static struct network_game *map_share_network_game( + void) +{ + struct network_game_client *client = global_network_game_client_get(); + + return client ? network_game_client_get_game(client) : NULL; +} + +static boolean map_share_host( + void) +{ + return global_network_game_server_get() != NULL; +} + +/* the host's address as this client's connection has it (host byte +order; 0 if none) */ +static unsigned long map_share_host_address( + void) +{ + struct network_game_client *client = global_network_game_client_get(); + struct network_connection *connection = client ? network_game_client_get_connection(client) : NULL; + struct transport_address reliable; + struct transport_address unreliable; + + if (!connection || map_share_host()) + return 0; + csmemset(&reliable, 0, sizeof(reliable)); + network_connection_get_address(connection, &reliable, &unreliable); + return reliable.address_length == IPV4_ADDRESS_LENGTH ? reliable.address.long_words[0] : 0; +} + +static long upload_limit( + void) +{ + long kilobytes = map_share_host() ? config_integer("network.map_share_upload") : + config_integer("network.map_seed_upload"); + + return PIN(kilobytes, MINIMUM_UPLOAD_KILOBYTES, MAXIMUM_UPLOAD_KILOBYTES) * 1024; +} + +/* whether this machine sends the game's files to the others: in a game on +a Custom Edition map, as its settings say */ +static boolean map_share_sending( + void) +{ + struct network_game *game = map_share_network_game(); + + if (!game || !custom_edition_level_name(game->map.name) || network_game_client_get_local_machine_index() == NONE) + return FALSE; + return map_share_host() ? config_boolean("network.map_share") != 0 : config_boolean("network.map_seed") != 0; +} + +/* a message's headers (voice_fill_header's) */ +static void map_share_fill_header( + struct distributed_message_header *header, + byte type, + word size) +{ + header->header = 0; + build_message_header(&header->header, size, 2, 0); + header->type = type; + header->count = 1; + header->game_time = game_in_progress() ? game_time_get() : 0; +} + +/* a level name copied into a message's field, ended within it */ +static void level_name_copy( + char *destination, + char const *source) +{ + csmemset(destination, 0, LEVEL_NAME_BYTES); + csstrncpy(destination, source, LEVEL_NAME_BYTES - 1); +} + +static boolean level_name_valid( + char const *name) +{ + return memchr(name, 0, LEVEL_NAME_BYTES) != NULL && name[0]; +} + +/* ---------- the game's files: those this machine sends */ + +/* the catalog files of the level's map and of the resource maps there are +(asked to be hashed only when another machine asks for them: hashing a +resource map reads hundreds of megabytes) */ +static void current_files_update( + boolean hash) +{ + struct map_share_globals *globals = &map_share_globals; + struct network_game *game = map_share_network_game(); + char const *level_name = game ? game->map.name : ""; + short kind; + + if (csstrncmp(globals->current_level, level_name, LEVEL_NAME_BYTES - 1)) + { + level_name_copy(globals->current_level, level_name); + for (kind = 0; kind < MAXIMUM_FILES; kind++) + globals->current_files[kind] = NONE; + } + if (!hash || !custom_edition_level_name(level_name)) + return; + for (kind = 0; kind < MAXIMUM_FILES; kind++) + { + char path[MAP_SHARE_PATH_SIZE]; + boolean present = kind == _map_share_file_map ? custom_edition_map_file_path(level_name, path) : + custom_edition_resource_map_file_path(kind, path); + + globals->current_files[kind] = present ? map_share_file_hash(path, kind) : NONE; + } +} + +/* whether the current files are all hashed (or failed): what this machine +has of a hash asked for is known */ +static boolean current_files_hashed( + void) +{ + struct map_share_globals *globals = &map_share_globals; + short kind; + + for (kind = 0; kind < MAXIMUM_FILES; kind++) + { + struct map_share_file *file = map_share_file_get(globals->current_files[kind]); + + if (file && !file->ready && !file->failed) + return FALSE; + } + return TRUE; +} + +/* the catalog file with this hash that this machine sends, or NONE */ +static short current_file_with_hash( + byte const *hash) +{ + struct map_share_globals *globals = &map_share_globals; + short kind; + + for (kind = 0; kind < MAXIMUM_FILES; kind++) + { + struct map_share_file *file = map_share_file_get(globals->current_files[kind]); + + if (file && file->ready && !csmemcmp(file->hash, hash, MAP_SHARE_HASH_BYTES)) + return globals->current_files[kind]; + } + return NONE; +} + +/* the download's file with this hash, or NONE */ +static short download_file_with_hash( + byte const *hash) +{ + struct download *download = &map_share_globals.download; + short index; + + if (download->state != _download_transferring) + return NONE; + for (index = 0; index < download->file_count; index++) + { + if (!csmemcmp(download->files[index].hash, hash, MAP_SHARE_HASH_BYTES)) + return index; + } + return NONE; +} + +/* ---------- connections: frames */ + +static void connection_close( + struct connection *connection, + char const *reason); + +/* room for a frame of `size` bytes of body in the connection's output */ +static boolean frame_room( + struct connection *connection, + long size) +{ + return connection->output_size + 5 + size <= OUTPUT_BYTES; +} + +/* a frame's head written to the output, its body to follow (frame_room +checked) */ +static byte *frame_begin( + struct connection *connection, + byte type, + long size) +{ + byte *frame = connection->output + connection->output_size; + + put_long(frame, (unsigned long)(size + 1)); + frame[4] = type; + connection->output_size += 5 + size; + return frame + 5; +} + +static void frame_piece( + struct connection *connection, + byte type, + short file, + long piece) +{ + byte *body; + + if (!frame_room(connection, 5)) + return; + body = frame_begin(connection, type, 5); + body[0] = (byte)file; + put_long(body + 1, (unsigned long)piece); +} + +static void send_hello( + struct connection *connection) +{ + byte *body; + short index; + + if (!frame_room(connection, 6 + connection->file_count * MAP_SHARE_HASH_BYTES)) + return; + body = frame_begin(connection, _frame_hello, 6 + connection->file_count * MAP_SHARE_HASH_BYTES); + put_long(body, FRAME_MAGIC); + body[4] = FRAME_VERSION; + body[5] = (byte)connection->file_count; + for (index = 0; index < connection->file_count; index++) + csmemcpy(body + 6 + index * MAP_SHARE_HASH_BYTES, connection->file_hashes[index], MAP_SHARE_HASH_BYTES); +} + +/* what this end has of a connection's file, once it knows */ +static void send_state( + struct connection *connection, + short index) +{ + struct download *download = &map_share_globals.download; + short download_file = connection->download_file[index]; + byte *body; + + if (connection->catalog_file[index] != NONE) + { + if (!frame_room(connection, 2)) + return; + body = frame_begin(connection, _frame_state, 2); + body[0] = (byte)index; + body[1] = _have_all; + } + else if (download_file != NONE && download->files[download_file].state == _file_transferring) + { + struct download_file *file = &download->files[download_file]; + long bytes = (file->piece_count + 7) / 8; + + if (!frame_room(connection, 2 + bytes)) + return; + body = frame_begin(connection, _frame_state, 2 + bytes); + body[0] = (byte)index; + body[1] = _have_pieces; + csmemcpy(body + 2, file->have, bytes); + } + else if (download_file != NONE && download->files[download_file].state == _file_complete) + { + if (!frame_room(connection, 2)) + return; + body = frame_begin(connection, _frame_state, 2); + body[0] = (byte)index; + body[1] = _have_all; + } + else + { + /* (not known yet: said once it is) */ + if (download_file != NONE || !current_files_hashed()) + return; + if (!frame_room(connection, 2)) + return; + body = frame_begin(connection, _frame_state, 2); + body[0] = (byte)index; + body[1] = _have_none; + } + connection->state_told[index] = TRUE; +} + +/* the connection's files matched to this machine's: the download's, and +those it sends */ +static void connection_match_files( + struct connection *connection) +{ + short index; + + for (index = 0; index < connection->file_count; index++) + { + short catalog_file = current_file_with_hash(connection->file_hashes[index]); + + connection->download_file[index] = download_file_with_hash(connection->file_hashes[index]); + if (catalog_file != connection->catalog_file[index] && map_share_sending()) + { + connection->catalog_file[index] = catalog_file; + /* (had now: said again) */ + if (catalog_file != NONE) + connection->state_told[index] = FALSE; + } + } +} + +/* ---------- connections */ + +static struct connection *connection_new( + void) +{ + struct map_share_globals *globals = &map_share_globals; + short index; + short file; + + for (index = 0; index < MAXIMUM_CONNECTIONS; index++) + { + struct connection *connection = &globals->connections[index]; + + if (!connection->used) + { + csmemset(connection, 0, sizeof(*connection)); + connection->input = malloc(INPUT_BYTES); + connection->output = malloc(OUTPUT_BYTES); + if (!connection->input || !connection->output) + { + free(connection->input); + free(connection->output); + connection->input = NULL; + connection->output = NULL; + return NULL; + } + connection->used = TRUE; + connection->source = NONE; + connection->created_at = system_milliseconds(); + connection->heard_at = connection->created_at; + connection->sent_at = connection->created_at; + for (file = 0; file < MAXIMUM_FILES; file++) + { + connection->download_file[file] = NONE; + connection->catalog_file[file] = NONE; + connection->hashes_next[file] = NONE; + } + return connection; + } + } + return NULL; +} + +static void connection_free( + struct connection *connection) +{ + struct download *download = &map_share_globals.download; + short index; + + for (index = 0; index < connection->request_count; index++) + { + struct request *request = &connection->requests[index]; + + if (request->file < download->file_count && download->files[request->file].asked && + download->files[request->file].asked[request->piece]) + { + download->files[request->file].asked[request->piece]--; + } + free(request->buffer); + } + for (index = 0; index < MAXIMUM_FILES; index++) + { + free(connection->remote_pieces[index]); + if (index < download->file_count && download->files[index].hashes_connection == + (short)(connection - map_share_globals.connections)) + { + download->files[index].hashes_connection = NONE; + } + } + if (connection->endpoint) + delete_transport_endpoint(connection->endpoint); + free(connection->input); + free(connection->output); + csmemset(connection, 0, sizeof(*connection)); +} + +static void connection_close( + struct connection *connection, + char const *reason) +{ + struct download *download = &map_share_globals.download; + + if (!connection->used) + return; + if (reason || connection->bytes_in || connection->bytes_out) + { + error(_error_silent, "map sharing: the connection with %d.%d.%d.%d closed: %s (%lu bytes in, %lu out)", + (int)(connection->address >> 24), (int)(connection->address >> 16 & 255), + (int)(connection->address >> 8 & 255), (int)(connection->address & 255), reason ? reason : "done", + connection->bytes_in, connection->bytes_out); + } + if (connection->source != NONE && connection->source < download->source_count) + download->sources[connection->source].connection = NONE; + connection->source = NONE; + connection_free(connection); +} + +static void connection_set_files( + struct connection *connection) +{ + struct download *download = &map_share_globals.download; + short index; + + connection->file_count = download->file_count; + for (index = 0; index < download->file_count; index++) + csmemcpy(connection->file_hashes[index], download->files[index].hash, MAP_SHARE_HASH_BYTES); +} + +/* connects to a source (its address known: host byte order), without +waiting: the connect is looked at each frame (connection_connected; the +transport's own waits up to ten seconds, or has a thread of its own) */ +static void connection_connect( + struct connection *connection, + unsigned long address) +{ + struct sockaddr_in remote; + unsigned long nonblocking = 1; + SOCKET socket_handle; + + connection->address = address; + connection->endpoint = create_transport_endpoint(_map_share_endpoint_tcp); + if (!connection->endpoint) + { + connection_close(connection, "no endpoint"); + return; + } + socket_handle = socket(AF_INET, SOCK_STREAM, 0); + if (socket_handle == INVALID_SOCKET) + { + connection_close(connection, "no socket"); + return; + } + connection->endpoint->socket = (long)socket_handle; + csmemset(&remote, 0, sizeof(remote)); + remote.sin_family = AF_INET; + remote.sin_port = (word)SWAP2(MAP_SHARE_PORT); + remote.sin_addr.s_addr = network_order(address); + if (ioctlsocket(socket_handle, FIONBIO, &nonblocking) != 0 || + (connect(socket_handle, (struct sockaddr *)&remote, sizeof(remote)) != 0 && + WSAGetLastError() != WSAEWOULDBLOCK)) + { + connection_close(connection, "could not connect"); + return; + } + SET_FLAG(connection->endpoint->flags, _transport_endpoint_nonblocking_bit, TRUE); + connection->state = _connection_connecting; +} + +/* whether the connect is over: TRUE when it is, *connected saying how */ +static boolean connection_connected( + struct connection *connection, + boolean *connected) +{ + SOCKET socket_handle = (SOCKET)connection->endpoint->socket; + fd_set writeable; + fd_set failed; + struct timeval timeout; + long ready; + + writeable.fd_array[0] = socket_handle; + writeable.fd_count = 1; + failed.fd_array[0] = socket_handle; + failed.fd_count = 1; + timeout.tv_sec = 0; + timeout.tv_usec = 0; + /* (a failed connect is in the error set: transport_endpoint_winsock.c) */ + ready = select(1, NULL, &writeable, &failed, &timeout); + if (ready < 0) + { + *connected = FALSE; + return TRUE; + } + if (!ready) + return FALSE; + *connected = !(failed.fd_count && __WSAFDIsSet(socket_handle, &failed)); + if (*connected) + SET_FLAG(connection->endpoint->flags, _transport_endpoint_connected_bit, TRUE); + return TRUE; +} + +static void connection_accept( + void) +{ + struct map_share_globals *globals = &map_share_globals; + struct transport_endpoint *endpoint; + struct connection *connection; + struct transport_address address; + short count; + short index; + + while (globals->listener && endpoint_readable(globals->listener, 0)) + { + count = 0; + endpoint = accept_endpoint(globals->listener); + if (!endpoint) + return; + csmemset(&address, 0, sizeof(address)); + if (set_endpoint_blocking(endpoint, FALSE) != _transport_error_none || + get_endpoint_address(endpoint, &address) != _transport_error_none || + (!map_share_sending() && map_share_globals.download.state != _download_transferring)) + { + delete_transport_endpoint(endpoint); + continue; + } + /* (a few from one address: anyone can connect) */ + for (index = 0; index < MAXIMUM_CONNECTIONS; index++) + { + count += globals->connections[index].used && + globals->connections[index].address == address.address.long_words[0]; + } + connection = count < MAXIMUM_CONNECTIONS_PER_ADDRESS ? connection_new() : NULL; + if (!connection) + { + delete_transport_endpoint(endpoint); + continue; + } + connection->endpoint = endpoint; + connection->address = address.address.long_words[0]; + connection->state = _connection_open; + connection->outgoing = FALSE; + } +} + +/* the listener for the others' connections: while this machine is in a +network game and sends maps or downloads one */ +static void listener_update( + void) +{ + struct map_share_globals *globals = &map_share_globals; + boolean want = map_share_network_game() && + (map_share_sending() || globals->download.state == _download_transferring); + unsigned long now = system_milliseconds(); + + if (!want) + { + if (globals->listener) + { + delete_transport_endpoint(globals->listener); + globals->listener = NULL; + } + return; + } + if (globals->listener || (globals->listen_tried_at && !elapsed(globals->listen_tried_at, now, LISTEN_RETRY_INTERVAL))) + return; + globals->listen_tried_at = now | 1; + globals->listener = create_transport_endpoint(_map_share_endpoint_tcp); + if (globals->listener) + { + struct transport_address address; + + csmemset(&address, 0, sizeof(address)); + address.address_length = IPV4_ADDRESS_LENGTH; + address.port = MAP_SHARE_PORT; + if (bind_endpoint(globals->listener, &address) != _transport_error_none || + listen_endpoint(globals->listener) != _transport_error_none || + set_endpoint_blocking(globals->listener, FALSE) != _transport_error_none) + { + if (!globals->listen_failed_logged) + { + error(_error_silent, "map sharing: cannot take connections on port %d (in use?)", MAP_SHARE_PORT); + globals->listen_failed_logged = TRUE; + } + delete_transport_endpoint(globals->listener); + globals->listener = NULL; + } + } +} + +/* ---------- the download */ + +static void download_report( + byte state); +static void request_remove( + struct connection *connection, + short index); + +/* the download over: its files closed (a part file is kept, to be taken +up again), and the connections it made closed, unless they are kept for +what this machine sends now that it has the files (keep_connections) */ +static void download_end( + boolean keep_connections) +{ + struct map_share_globals *globals = &map_share_globals; + struct download *download = &globals->download; + short index; + + for (index = 0; index < MAXIMUM_CONNECTIONS; index++) + { + struct connection *connection = &globals->connections[index]; + short file; + + if (!connection->used) + continue; + connection->source = NONE; + if (connection->outgoing && !keep_connections) + { + connection_close(connection, NULL); + continue; + } + /* (another's connection, which may still fetch what this machine + sends: what it asked of the download let go) */ + while (connection->request_count) + request_remove(connection, (short)(connection->request_count - 1)); + for (file = 0; file < MAXIMUM_FILES; file++) + connection->download_file[file] = NONE; + } + for (index = 0; index < download->file_count; index++) + { + struct download_file *file = &download->files[index]; + + if (file->stream) + fclose(file->stream); + free(file->piece_hashes); + free(file->hashes_coming); + free(file->have); + free(file->asked); + } + csmemset(download, 0, sizeof(*download)); +} + +/* the download failed: the player told why when the main menu comes, and +the game left */ +static void download_fail( + char const *reason) +{ + struct download *download = &map_share_globals.download; + wchar_t text[512]; + char message[512]; + short index; + + error(_error_silent, "map sharing: the download of %s failed: %s", download->level_name, reason); + snprintf(message, sizeof(message), "%s\r\n\r\n%s", download->message, reason); + for (index = 0; message[index] && index < NUMBEROF(text) - 1; index++) + text[index] = (wchar_t)(unsigned char)message[index]; + text[index] = 0; + download_report(_progress_failed); + download_end(FALSE); + download->state = _download_failed; + display_error_text_when_main_menu_loaded(text); + network_game_abort(); +} + +static void download_report( + byte state) +{ + struct download *download = &map_share_globals.download; + struct + { + struct distributed_message_header header; + struct distributed_map_share_progress progress; + } message; + + csmemset(&message, 0, sizeof(message)); + map_share_fill_header(&message.header, _distributed_message_map_share_progress, (word)sizeof(message)); + message.progress.state = state; + message.progress.done = download->done_bytes; + message.progress.total = download->total_bytes; + network_distributed_client_send_reliably(&message, (word)sizeof(message)); + download->reported_at = system_milliseconds(); +} + +static void download_ask( + void) +{ + struct download *download = &map_share_globals.download; + struct + { + struct distributed_message_header header; + struct distributed_map_share_request request; + } message; + + csmemset(&message, 0, sizeof(message)); + map_share_fill_header(&message.header, _distributed_message_map_share_request, (word)sizeof(message)); + level_name_copy(message.request.level_name, download->level_name); + message.request.version = download->version; + message.request.wanted = download->wanted; + network_distributed_client_send_reliably(&message, (word)sizeof(message)); +} + +/* the files this machine lacks for the level: a bit each */ +static byte files_wanted( + char const *level_name) +{ + char path[MAP_SHARE_PATH_SIZE]; + byte wanted = 0; + short kind; + + if (!custom_edition_map_file_path(level_name, path)) + wanted |= FLAG(_map_share_file_map); + for (kind = _map_share_file_bitmaps; kind < MAXIMUM_FILES; kind++) + { + if (!custom_edition_resource_map_file_path(kind, path)) + wanted |= FLAG(kind); + } + return wanted; +} + +boolean map_share_download_begin( + char const *level_name, + unsigned long version, + char const *message) +{ + struct download *download = &map_share_globals.download; + char const *name; + byte wanted; + + if (!level_name || !custom_edition_level_name(level_name) || csstrlen(level_name) >= LEVEL_NAME_BYTES || + !config_boolean("network.map_download") || map_share_host() || !global_network_game_client_get() || + !halo_custom_edition_tag_cache()) + { + return FALSE; + } + if (download->state == _download_asking || download->state == _download_transferring) + { + if (!csstrcmp(download->level_name, level_name) && download->version == version) + return TRUE; + download_end(FALSE); + } + name = tag_name_strip_path(level_name); + wanted = files_wanted(level_name); + /* (the map named for its hash, so that the download is the host's + version under its own name, a file of custom_maps alone, whatever the + host's level name holds; a map this machine has of another version is + not replaced) */ + if (!wanted || !map_share_name_safe(name) || + (TEST_FLAG(wanted, _map_share_file_map) && !map_share_name_hashed(name)) || + (!TEST_FLAG(wanted, _map_share_file_map) && custom_edition_map_checksum(level_name) != version && version)) + { + return FALSE; + } + { + static long serial; + + csmemset(download, 0, sizeof(*download)); + download->serial = ++serial; + } + download->state = _download_asking; + level_name_copy(download->level_name, level_name); + download->version = version; + csstrncpy(download->message, message ? message : "", sizeof(download->message) - 1); + download->wanted = wanted; + download->asked_at = system_milliseconds(); + download->progress_at = download->asked_at; + error(_error_silent, "map sharing: asking the host for %s (files 0x%X)", level_name, (unsigned)wanted); + download_ask(); + return TRUE; +} + +boolean map_share_downloading( + char const *level_name) +{ + struct download *download = &map_share_globals.download; + + return (download->state == _download_asking || download->state == _download_transferring) && + level_name && !csstrcmp(download->level_name, level_name); +} + +boolean map_share_holds_players( + void) +{ + struct download *download = &map_share_globals.download; + struct network_game *game = map_share_network_game(); + + /* (a client whose host has not named the game's map yet: whether this + machine has it is not known, and a game in progress would start it at + once. Asking: whether the game is in progress is not known yet) */ + if (!map_share_host() && game && !game->map.name[0]) + return TRUE; + /* (failed: the game is being left) */ + return download->state == _download_asking || download->state == _download_failed || + (download->state == _download_transferring && download->in_progress); +} + +/* the download's file made anew for writing: its part file the file's size */ +static boolean download_file_create( + struct download_file *file) +{ + FILE *stream = fopen(file->part_path, "wb"); + + if (!stream) + return FALSE; + if (file->size && (fseek(stream, (long)file->size - 1, SEEK_SET) != 0 || fputc(0, stream) == EOF)) + { + fclose(stream); + return FALSE; + } + fclose(stream); + file->stream = fopen(file->part_path, "r+b"); + if (!file->stream) + return FALSE; + file->state = _file_transferring; + return TRUE; +} + +/* the download's file opened for writing: a part file of its size there +already checked piece by piece first (on the hashing thread, asked again +while it is busy: download_update), else one made anew */ +static boolean download_file_open( + struct download_file *file, + short index) +{ + FILE *stream = fopen(file->part_path, "rb"); + long size = -1; + + if (stream) + { + if (fseek(stream, 0, SEEK_END) == 0) + size = ftell(stream); + fclose(stream); + } + if (size == (long)file->size && file->size) + { + file->state = _file_checking; + map_share_pieces_hash(file->part_path, map_share_globals.download.serial << 3 | index); + return TRUE; + } + return download_file_create(file); +} + +/* the host's offer: the files to fetch */ +static void download_offered( + struct distributed_map_share_offer const *offer, + struct distributed_map_share_offer_file const *files) +{ + struct download *download = &map_share_globals.download; + char const *name = tag_name_strip_path(download->level_name); + byte offered = 0; + short index; + + if (download->state != _download_asking || csstrcmp(offer->level_name, download->level_name)) + return; + if (offer->result == _offer_off) + { + download_fail("The host does not share its maps."); + return; + } + if (offer->result != _offer_ok || !offer->file_count || offer->file_count > MAXIMUM_FILES) + { + download_fail("The host cannot share this map."); + return; + } + download->in_progress = TEST_FLAG(offer->flags, _offer_in_progress_bit); + download->file_count = offer->file_count; + for (index = 0; index < download->file_count; index++) + { + struct download_file *file = &download->files[index]; + char digits[MAP_SHARE_NAME_DIGITS + 1]; + + csmemset(file, 0, sizeof(*file)); + file->kind = files[index].kind; + file->size = files[index].size; + file->hashes_connection = NONE; + csmemcpy(file->hash, files[index].hash, MAP_SHARE_HASH_BYTES); + file->piece_count = map_share_piece_count(file->size); + map_share_hash_digits(file->hash, digits); + /* (a file this machine did not ask for, or offered twice, or a map + whose hash is not its name's) */ + if (file->kind >= MAXIMUM_FILES || !TEST_FLAG(download->wanted, file->kind) || + TEST_FLAG(offered, file->kind) || !file->size || + file->size > (unsigned long)(file->kind == _map_share_file_map ? MAXIMUM_MAP_BYTES : + MAXIMUM_RESOURCE_MAP_BYTES) || + (file->kind == _map_share_file_map && csstrcmp(name + map_share_name_base_length(name) + 1, digits))) + { + download->file_count = index; + download_fail("The host's offer was not of this map."); + return; + } + offered |= (byte)FLAG(file->kind); + if (file->kind == _map_share_file_map) + { + snprintf(file->final_path, sizeof(file->final_path), "%s%s.map", CUSTOM_EDITION_MAP_DIRECTORY, name); + } + else + { + snprintf(file->final_path, sizeof(file->final_path), "%s%s.map", CUSTOM_EDITION_MAP_DIRECTORY, + resource_map_type_describe((enum resource_map_type)file->kind)); + } + snprintf(file->part_path, sizeof(file->part_path), "%s.part", file->final_path); + file->have = calloc((unsigned long)(file->piece_count + 7) / 8, 1); + file->asked = calloc((unsigned long)file->piece_count, 1); + if (!file->have || !file->asked) + { + download->file_count = index + 1; + download_fail("There is not enough memory to download the map."); + return; + } + download->total_bytes += file->size; + } + /* (the hashes come first: no piece can be checked without them) */ + for (index = 0; index < download->file_count; index++) + download->files[index].state = _file_awaiting_hashes; + download->state = _download_transferring; + download->progress_at = system_milliseconds(); + error(_error_silent, "map sharing: downloading %s, %d files, %lu bytes", download->level_name, + (int)download->file_count, download->total_bytes); +} + +/* the host's sources: the client's to reach */ +static void download_sources( + struct distributed_map_share_sources const *sources, + struct distributed_map_share_source const *entries) +{ + struct download *download = &map_share_globals.download; + short index; + + if (download->state != _download_asking && download->state != _download_transferring) + return; + download->in_progress = TEST_FLAG(sources->flags, _offer_in_progress_bit); + /* the host, first (its address, the connection's) */ + if (!download->source_count) + { + csmemset(&download->sources[0], 0, sizeof(download->sources[0])); + download->sources[0].host = TRUE; + download->sources[0].address = map_share_host_address(); + download->sources[0].connection = NONE; + download->source_count = 1; + } + for (index = 0; index < sources->count && index < MAXIMUM_SOURCES; index++) + { + struct distributed_map_share_source const *entry = &entries[index]; + struct source *source = NULL; + short known; + + if (entry->machine_index == network_game_client_get_local_machine_index()) + continue; + for (known = 1; known < download->source_count; known++) + { + if (download->sources[known].machine_index == entry->machine_index && + !csmemcmp(download->sources[known].key_hash, entry->key_hash, sizeof(entry->key_hash)) && + download->sources[known].address == entry->address) + { + source = &download->sources[known]; + break; + } + } + if (!source) + { + if (download->source_count >= NUMBEROF(download->sources)) + continue; + source = &download->sources[download->source_count++]; + csmemset(source, 0, sizeof(*source)); + source->machine_index = entry->machine_index; + source->address = entry->address; + csmemcpy(source->identifier, entry->identifier, sizeof(source->identifier)); + csmemcpy(source->key_hash, entry->key_hash, sizeof(source->key_hash)); + source->connection = NONE; + } + source->flags = entry->flags; + } +} + +/* (internet play: the source reached, and its address) */ +static boolean source_address( + struct source *source, + unsigned long *address) +{ + unsigned long virtual_address; + + if (source->host) + { + *address = source->address; + return *address != 0; + } + if (!TEST_FLAG(source->flags, _source_internet_bit)) + { + *address = source->address; + return TRUE; + } + if (!p2p_peer_reached(source->identifier, &virtual_address)) + return FALSE; + *address = host_order(virtual_address); + return TRUE; +} + +/* the sources reached: the host, and up to MAXIMUM_OUTGOING others */ +static void download_reach_sources( + void) +{ + struct map_share_globals *globals = &map_share_globals; + struct download *download = &globals->download; + unsigned long host_address = map_share_host_address(); + boolean internet = address_internet(host_address); + short local_machine = network_game_client_get_local_machine_index(); + unsigned long now = system_milliseconds(); + short outgoing = 0; + short index; + + for (index = 0; index < MAXIMUM_CONNECTIONS; index++) + outgoing += globals->connections[index].used && globals->connections[index].outgoing; + for (index = 0; index < download->source_count && outgoing < MAXIMUM_OUTGOING + 1; index++) + { + struct source *source = &download->sources[index]; + struct connection *connection; + unsigned long address; + + if (source->banned || source->connection != NONE || + (source->tried_at && !elapsed(source->tried_at, now, SOURCE_RETRY_INTERVAL))) + { + continue; + } + if (!source->host) + { + /* (the internet's players over internet play alone, a LAN's at + their addresses alone; of two downloading, the one of the lower + machine connects) */ + if (internet != TEST_FLAG(source->flags, _source_internet_bit)) + continue; + if (TEST_FLAG(source->flags, _source_downloading_bit) && source->machine_index < local_machine) + continue; + } + if (!source_address(source, &address)) + { + if (TEST_FLAG(source->flags, _source_internet_bit)) + p2p_reach_player(source->key_hash); + continue; + } + source->tried_at = now | 1; + connection = connection_new(); + if (!connection) + return; + connection->outgoing = TRUE; + connection->source = index; + source->connection = (short)(connection - globals->connections); + connection_set_files(connection); + connection_connect(connection, address); + outgoing++; + } +} + +/* a piece had: written, told to every connection about its file */ +static void download_piece_had( + short file_index, + long piece, + byte const *data) +{ + struct map_share_globals *globals = &map_share_globals; + struct download *download = &globals->download; + struct download_file *file = &download->files[file_index]; + unsigned long offset = (unsigned long)piece * MAP_SHARE_PIECE_BYTES; + unsigned long bytes = MIN(MAP_SHARE_PIECE_BYTES, file->size - offset); + short index; + + if (file->have[piece >> 3] & (1 << (piece & 7))) + return; + if (!file->stream || fseek(file->stream, (long)offset, SEEK_SET) != 0 || + fwrite(data, 1, bytes, file->stream) != bytes) + { + download_fail("The map could not be written (is the disk full?)."); + return; + } + file->have[piece >> 3] |= (byte)(1 << (piece & 7)); + file->have_count++; + download->done_bytes += bytes; + download->window_bytes += bytes; + download->progress_at = system_milliseconds(); + for (index = 0; index < MAXIMUM_CONNECTIONS; index++) + { + struct connection *connection = &globals->connections[index]; + short connection_file; + + if (!connection->used || connection->state != _connection_open || !connection->hello_heard) + continue; + for (connection_file = 0; connection_file < connection->file_count; connection_file++) + { + if (connection->download_file[connection_file] == file_index) + frame_piece(connection, _frame_have, connection_file, piece); + } + } +} + +/* the download's files, all had: renamed, the map checked */ +static void download_finish( + void) +{ + struct download *download = &map_share_globals.download; + char message[256]; + short index; + + for (index = 0; index < download->file_count; index++) + { + struct download_file *file = &download->files[index]; + + if (file->stream) + { + fclose(file->stream); + file->stream = NULL; + } + if (!MoveFileA(file->part_path, file->final_path)) + { + download_fail("The downloaded map could not be put in custom_maps (a file of its name is there)."); + return; + } + } + custom_edition_maps_look_again(); + if (!custom_edition_cache_present(download->level_name, download->version, message, sizeof(message))) + { + csstrncpy(download->message, message, sizeof(download->message) - 1); + download_fail("The map was downloaded, but cannot be played."); + return; + } + error(_error_silent, "map sharing: downloaded %s (%lu bytes)", download->level_name, download->done_bytes); + download_report(_progress_done); + /* (sent on to the others from here, without hashing them again) */ + for (index = 0; index < download->file_count; index++) + { + struct download_file *file = &download->files[index]; + + map_share_file_hashed(file->final_path, file->kind, file->size, file->piece_hashes, file->piece_count, + file->hash); + } + download_end(TRUE); + download->state = _download_done; + if (map_share_sending()) + current_files_update(TRUE); +} + +/* the rarest piece of a file the connection has that this machine needs +and has not asked anyone for (any it has not asked this connection for, +once every piece has been asked for: the last few from whoever is +quickest), or NONE */ +static long piece_choose( + struct connection *connection, + short connection_file, + boolean again) +{ + struct map_share_globals *globals = &map_share_globals; + struct download_file *file = &globals->download.files[connection->download_file[connection_file]]; + long best = NONE; + short best_count = 0x7FFF; + long start; + long step; + + if (!file->piece_count) + return NONE; + /* (from a random place, so the machines downloading ask for different + pieces of the same rarity) */ + start = (long)(((unsigned long)rand() << 15 ^ (unsigned long)rand()) % (unsigned long)file->piece_count); + for (step = 0; step < file->piece_count; step++) + { + long piece = (start + step) % file->piece_count; + short count = 0; + short index; + + if ((file->have[piece >> 3] & (1 << (piece & 7))) || (!again && file->asked[piece]) || + (again && file->asked[piece] >= 2)) + { + continue; + } + if (connection->remote_has[connection_file] != _have_all && + !(connection->remote_has[connection_file] == _have_pieces && connection->remote_pieces[connection_file] && + (connection->remote_pieces[connection_file][piece >> 3] & (1 << (piece & 7))))) + { + continue; + } + for (index = 0; index < connection->request_count; index++) + { + if (connection->requests[index].file == connection->download_file[connection_file] && + connection->requests[index].piece == piece) + { + break; + } + } + if (index < connection->request_count) + continue; + /* (its rarity: how many of the connections have it, each by its own + index of the file) */ + for (index = 0; index < MAXIMUM_CONNECTIONS; index++) + { + struct connection const *other = &globals->connections[index]; + short other_file; + + if (!other->used || other->state != _connection_open || !other->hello_heard) + continue; + for (other_file = 0; other_file < other->file_count; other_file++) + { + if (other->download_file[other_file] == connection->download_file[connection_file]) + break; + } + if (other_file < other->file_count && + (other->remote_has[other_file] == _have_all || + (other->remote_has[other_file] == _have_pieces && other->remote_pieces[other_file] && + (other->remote_pieces[other_file][piece >> 3] & (1 << (piece & 7)))))) + { + count++; + } + } + if (count < best_count) + { + best = piece; + best_count = count; + } + } + return best; +} + +/* whether any piece needed has not been asked for */ +static boolean download_unasked_pieces( + void) +{ + struct download *download = &map_share_globals.download; + short index; + + for (index = 0; index < download->file_count; index++) + { + struct download_file const *file = &download->files[index]; + long piece; + + if (file->state != _file_transferring) + { + if (file->state != _file_complete) + return TRUE; + continue; + } + for (piece = 0; piece < file->piece_count; piece++) + { + if (!(file->have[piece >> 3] & (1 << (piece & 7))) && !file->asked[piece]) + return TRUE; + } + } + return FALSE; +} + +/* the connection asked for pieces, while it may */ +static void connection_ask( + struct connection *connection) +{ + struct download *download = &map_share_globals.download; + long in_flight = 0; + short index; + + if (download->state != _download_transferring || !connection->hello_heard) + return; + for (index = 0; index < MAXIMUM_CONNECTIONS; index++) + in_flight += map_share_globals.connections[index].used ? map_share_globals.connections[index].request_count : 0; + while (connection->request_count < REQUESTS_PER_CONNECTION && in_flight < MAXIMUM_PIECES_IN_FLIGHT && + frame_room(connection, 5)) + { + struct request *request; + short connection_file; + long piece = NONE; + short again; + + for (again = 0; again < 2 && piece == NONE; again++) + { + /* (the last pieces asked again of whoever is quicker, once + every piece needed has been asked for) */ + if (again && download_unasked_pieces()) + break; + for (connection_file = 0; connection_file < connection->file_count; connection_file++) + { + short file_index = connection->download_file[connection_file]; + + if (file_index == NONE || download->files[file_index].state != _file_transferring) + continue; + piece = piece_choose(connection, connection_file, again != 0); + if (piece != NONE) + break; + } + } + if (piece == NONE) + return; + request = &connection->requests[connection->request_count]; + request->buffer = malloc(MAP_SHARE_PIECE_BYTES); + if (!request->buffer) + return; + request->file = connection->download_file[connection_file]; + request->piece = piece; + request->received = 0; + request->asked_at = system_milliseconds(); + download->files[request->file].asked[piece]++; + connection->request_count++; + in_flight++; + frame_piece(connection, _frame_request, connection_file, piece); + } +} + +/* the request of the connection's at `index` done with (had, refused or +given up on) */ +static void request_remove( + struct connection *connection, + short index) +{ + struct download *download = &map_share_globals.download; + struct request *request = &connection->requests[index]; + + if (request->file < download->file_count && download->files[request->file].asked && + download->files[request->file].asked[request->piece]) + { + download->files[request->file].asked[request->piece]--; + } + free(request->buffer); + connection->request_count--; + csmemmove(request, request + 1, (connection->request_count - index) * sizeof(*request)); + /* (the next is sent now: its time from here) */ + if (!index && connection->request_count) + connection->requests[0].asked_at = system_milliseconds(); +} + +/* ---------- a connection's frames, as they come */ + +static void frame_hello( + struct connection *connection, + byte const *body, + long size) +{ + short count; + short index; + + if (size < 6 || get_long(body) != FRAME_MAGIC || body[4] != FRAME_VERSION || connection->hello_heard) + { + connection_close(connection, "not a map sharing connection"); + return; + } + count = body[5]; + if (count < 1 || count > MAXIMUM_FILES || size != 6 + count * MAP_SHARE_HASH_BYTES) + { + connection_close(connection, "a bad hello"); + return; + } + /* (the end that connected says which files; this end repeats them) */ + if (!connection->outgoing) + { + connection->file_count = count; + for (index = 0; index < count; index++) + csmemcpy(connection->file_hashes[index], body + 6 + index * MAP_SHARE_HASH_BYTES, MAP_SHARE_HASH_BYTES); + send_hello(connection); + /* (asked for files this machine may have: those it sends hashed, to + know) */ + if (map_share_sending()) + current_files_update(TRUE); + } + else if (count != connection->file_count || + csmemcmp(connection->file_hashes, body + 6, count * MAP_SHARE_HASH_BYTES)) + { + connection_close(connection, "another file's hello"); + return; + } + connection->hello_heard = TRUE; + connection_match_files(connection); +} + +static void frame_state( + struct connection *connection, + byte const *body, + long size) +{ + struct download *download = &map_share_globals.download; + short index; + + if (size < 2 || body[0] >= connection->file_count) + return; + index = body[0]; + free(connection->remote_pieces[index]); + connection->remote_pieces[index] = NULL; + connection->remote_has[index] = _have_none; + connection->state_heard[index] = TRUE; + if (body[1] == _have_all) + { + connection->remote_has[index] = _have_all; + } + else if (body[1] == _have_pieces) + { + /* (which pieces only matters to a machine downloading the file too: + to another, the end is downloading it) */ + connection->remote_has[index] = _have_pieces; + if (connection->download_file[index] != NONE) + { + long bytes = (download->files[connection->download_file[index]].piece_count + 7) / 8; + + connection->remote_pieces[index] = size == 2 + bytes ? malloc(bytes) : NULL; + if (connection->remote_pieces[index]) + csmemcpy(connection->remote_pieces[index], body + 2, bytes); + } + } +} + +static void frame_have( + struct connection *connection, + byte const *body, + long size) +{ + struct download *download = &map_share_globals.download; + struct download_file *file; + short index; + long piece; + + if (size != 5 || body[0] >= connection->file_count || connection->download_file[body[0]] == NONE) + return; + index = body[0]; + file = &download->files[connection->download_file[index]]; + piece = (long)get_long(body + 1); + if (piece < 0 || piece >= file->piece_count || connection->remote_has[index] == _have_all) + return; + if (!connection->remote_pieces[index]) + { + connection->remote_pieces[index] = calloc((unsigned long)(file->piece_count + 7) / 8, 1); + if (!connection->remote_pieces[index]) + return; + } + connection->remote_pieces[index][piece >> 3] |= (byte)(1 << (piece & 7)); + connection->remote_has[index] = _have_pieces; +} + +/* whether this machine has the connection's file's piece, to send */ +static boolean piece_sendable( + struct connection *connection, + short index, + long piece) +{ + struct download *download = &map_share_globals.download; + struct map_share_file *catalog_file = map_share_file_get(connection->catalog_file[index]); + + if (catalog_file && catalog_file->ready && map_share_sending()) + return piece >= 0 && piece < catalog_file->piece_count; + if (connection->download_file[index] != NONE) + { + struct download_file *file = &download->files[connection->download_file[index]]; + + return piece >= 0 && piece < file->piece_count && (file->have[piece >> 3] & (1 << (piece & 7))); + } + return FALSE; +} + +static void frame_request( + struct connection *connection, + byte const *body, + long size) +{ + long piece; + + if (size != 5 || body[0] >= connection->file_count) + return; + piece = (long)get_long(body + 1); + if (!piece_sendable(connection, body[0], piece) || connection->serving_count >= SERVING_PER_CONNECTION) + { + frame_piece(connection, _frame_refuse, body[0], piece); + return; + } + connection->serving[connection->serving_count].file = body[0]; + connection->serving[connection->serving_count].piece = piece; + connection->serving[connection->serving_count].offset = 0; + connection->serving_count++; +} + +static void frame_block( + struct connection *connection, + byte const *body, + long size) +{ + struct download *download = &map_share_globals.download; + struct download_file *file; + struct request *request = NULL; + unsigned long offset; + unsigned long bytes; + unsigned long piece_bytes; + byte hash[MAP_SHARE_HASH_BYTES]; + short index; + long piece; + + if (size < 9 || body[0] >= connection->file_count || connection->download_file[body[0]] == NONE) + return; + piece = (long)get_long(body + 1); + offset = get_long(body + 5); + bytes = (unsigned long)(size - 9); + for (index = 0; index < connection->request_count; index++) + { + if (connection->requests[index].file == connection->download_file[body[0]] && + connection->requests[index].piece == piece) + { + request = &connection->requests[index]; + break; + } + } + if (!request) + return; + file = &download->files[request->file]; + piece_bytes = MIN(MAP_SHARE_PIECE_BYTES, file->size - (unsigned long)piece * MAP_SHARE_PIECE_BYTES); + if (offset != request->received || bytes > piece_bytes - offset || !bytes) + { + connection_close(connection, "a block out of place"); + return; + } + csmemcpy(request->buffer + offset, body + 9, bytes); + request->received += bytes; + connection->bytes_in += bytes; + request->asked_at = system_milliseconds(); + if (request->received < piece_bytes) + return; + p2p_blake2b_256(request->buffer, piece_bytes, hash); + if (!file->piece_hashes || csmemcmp(hash, file->piece_hashes + piece * MAP_SHARE_HASH_BYTES, MAP_SHARE_HASH_BYTES)) + { + if (connection->source != NONE) + download->sources[connection->source].banned = TRUE; + connection_close(connection, "a piece that is not the map's"); + return; + } + download_piece_had(request->file, piece, request->buffer); + /* (the download may have ended) */ + if (connection->used && index < connection->request_count) + request_remove(connection, index); +} + +static void frame_refuse( + struct connection *connection, + byte const *body, + long size) +{ + short index; + long piece; + + if (size != 5 || body[0] >= connection->file_count) + return; + piece = (long)get_long(body + 1); + for (index = 0; index < connection->request_count; index++) + { + if (connection->requests[index].file == connection->download_file[body[0]] && + connection->requests[index].piece == piece) + { + request_remove(connection, index); + /* (what it has is not what it said: asked again only by what it + says next) */ + if (connection->remote_has[body[0]] == _have_all) + connection->remote_has[body[0]] = _have_none; + else if (connection->remote_pieces[body[0]]) + connection->remote_pieces[body[0]][piece >> 3] &= (byte)~(1 << (piece & 7)); + return; + } + } +} + +static void frame_hashes_request( + struct connection *connection, + byte const *body, + long size) +{ + if (size != 1 || body[0] >= connection->file_count) + return; + connection->hashes_next[body[0]] = 0; +} + +static void frame_hashes( + struct connection *connection, + byte const *body, + long size) +{ + struct download *download = &map_share_globals.download; + struct download_file *file; + unsigned long first; + long count; + byte hash[MAP_SHARE_HASH_BYTES]; + short connection_index = (short)(connection - map_share_globals.connections); + + if (size < 7 || body[0] >= connection->file_count || connection->download_file[body[0]] == NONE) + return; + file = &download->files[connection->download_file[body[0]]]; + first = get_long(body + 1); + count = body[5] | body[6] << 8; + if (file->piece_hashes || file->hashes_connection != connection_index || !file->hashes_coming || + size != 7 + count * MAP_SHARE_HASH_BYTES || first != (unsigned long)file->hashes_received || + count > file->piece_count - file->hashes_received) + { + return; + } + csmemcpy(file->hashes_coming + first * MAP_SHARE_HASH_BYTES, body + 7, count * MAP_SHARE_HASH_BYTES); + file->hashes_received += count; + file->hashes_asked_at = system_milliseconds(); + if (file->hashes_received < file->piece_count) + return; + /* (checked against the file's hash, the host's word) */ + map_share_file_hash_of_pieces(file->size, file->hashes_coming, file->piece_count, hash); + file->hashes_connection = NONE; + if (csmemcmp(hash, file->hash, MAP_SHARE_HASH_BYTES)) + { + file->hashes_received = 0; + if (connection->source != NONE) + download->sources[connection->source].banned = TRUE; + connection_close(connection, "pieces' hashes that are not the map's"); + return; + } + file->piece_hashes = file->hashes_coming; + file->hashes_coming = NULL; + if (!download_file_open(file, connection->download_file[body[0]])) + download_fail("The map could not be written to custom_maps."); +} + +/* the frames read in, handled */ +static void connection_read( + struct connection *connection) +{ + for (;;) + { + long result; + long offset = 0; + + if (connection->input_size < INPUT_BYTES) + { + result = read_endpoint(connection->endpoint, connection->input + connection->input_size, + INPUT_BYTES - connection->input_size); + if (result == _transport_result_operation_would_block) + result = 0; + else if (result <= 0) + { + connection_close(connection, "lost"); + return; + } + connection->input_size += result; + if (!result && connection->input_size < 5) + return; + if (result) + connection->heard_at = system_milliseconds(); + } + while (connection->used && connection->input_size - offset >= 5) + { + unsigned long length = get_long(connection->input + offset); + byte type; + byte const *body; + long size; + + if (!length || length > MAXIMUM_FRAME_BYTES) + { + connection_close(connection, "a frame too large"); + return; + } + if ((unsigned long)(connection->input_size - offset - 4) < length) + break; + type = connection->input[offset + 4]; + body = connection->input + offset + 5; + size = (long)length - 1; + offset += 4 + (long)length; + if (type != _frame_hello && !connection->hello_heard) + { + connection_close(connection, "no hello"); + return; + } + switch (type) + { + case _frame_hello: frame_hello(connection, body, size); break; + case _frame_state: frame_state(connection, body, size); break; + case _frame_have: frame_have(connection, body, size); break; + case _frame_request: frame_request(connection, body, size); break; + case _frame_block: frame_block(connection, body, size); break; + case _frame_refuse: frame_refuse(connection, body, size); break; + case _frame_hashes_request: frame_hashes_request(connection, body, size); break; + case _frame_hashes: frame_hashes(connection, body, size); break; + } + } + if (!connection->used) + return; + if (offset) + { + csmemmove(connection->input, connection->input + offset, connection->input_size - offset); + connection->input_size -= offset; + } + /* (nothing more to read, or a frame not whole yet) */ + if (connection->input_size < INPUT_BYTES) + return; + } +} + +/* the output written, as much as the connection takes */ +static void connection_flush( + struct connection *connection) +{ + while (connection->output_size > 0) + { + long result = write_endpoint(connection->endpoint, connection->output, connection->output_size); + + if (result == _transport_result_operation_would_block) + return; + if (result <= 0) + { + connection_close(connection, "lost"); + return; + } + csmemmove(connection->output, connection->output + result, connection->output_size - result); + connection->output_size -= result; + connection->sent_at = system_milliseconds(); + } +} + +/* the pieces' hashes this machine was asked for, that fit */ +static void connection_send_hashes( + struct connection *connection) +{ + struct download *download = &map_share_globals.download; + short index; + + for (index = 0; index < connection->file_count; index++) + { + byte const *hashes = NULL; + long piece_count = 0; + struct map_share_file *catalog_file = map_share_file_get(connection->catalog_file[index]); + + if (connection->hashes_next[index] == NONE) + continue; + if (catalog_file && catalog_file->ready) + { + hashes = catalog_file->piece_hashes; + piece_count = catalog_file->piece_count; + } + else if (connection->download_file[index] != NONE && + download->files[connection->download_file[index]].piece_hashes) + { + hashes = download->files[connection->download_file[index]].piece_hashes; + piece_count = download->files[connection->download_file[index]].piece_count; + } + if (!hashes) + { + /* (not known here: asked of another) */ + if (current_files_hashed()) + connection->hashes_next[index] = NONE; + continue; + } + while (connection->hashes_next[index] < piece_count) + { + long first = connection->hashes_next[index]; + long count = MIN(HASHES_PER_FRAME, piece_count - first); + byte *body; + + if (!frame_room(connection, 7 + count * MAP_SHARE_HASH_BYTES)) + return; + body = frame_begin(connection, _frame_hashes, 7 + count * MAP_SHARE_HASH_BYTES); + body[0] = (byte)index; + put_long(body + 1, (unsigned long)first); + body[5] = (byte)count; + body[6] = (byte)(count >> 8); + csmemcpy(body + 7, hashes + first * MAP_SHARE_HASH_BYTES, count * MAP_SHARE_HASH_BYTES); + connection->hashes_next[index] += count; + } + connection->hashes_next[index] = NONE; + } +} + +/* the size of a connection's file this machine sends (0: none) */ +static unsigned long serving_file_size( + struct connection *connection, + short index) +{ + struct download *download = &map_share_globals.download; + struct map_share_file *catalog_file = map_share_file_get(connection->catalog_file[index]); + + if (catalog_file && catalog_file->ready && map_share_sending()) + return catalog_file->size; + if (connection->download_file[index] != NONE) + return download->files[connection->download_file[index]].size; + return 0; +} + +/* a block of a piece asked for, read from this machine's file */ +static boolean block_read( + struct connection *connection, + struct serving const *serving, + byte *buffer, + unsigned long *bytes) +{ + struct download *download = &map_share_globals.download; + struct map_share_file *catalog_file = map_share_file_get(connection->catalog_file[serving->file]); + unsigned long size; + unsigned long offset = (unsigned long)serving->piece * MAP_SHARE_PIECE_BYTES + serving->offset; + FILE *stream; + boolean read; + + if (catalog_file && catalog_file->ready && map_share_sending()) + { + size = catalog_file->size; + stream = fopen(catalog_file->path, "rb"); + } + else if (connection->download_file[serving->file] != NONE) + { + size = download->files[connection->download_file[serving->file]].size; + stream = download->files[connection->download_file[serving->file]].stream; + if (!stream) + return FALSE; + *bytes = MIN(MAP_SHARE_BLOCK_BYTES, MIN(size - offset, MAP_SHARE_PIECE_BYTES - serving->offset)); + return fseek(stream, (long)offset, SEEK_SET) == 0 && fread(buffer, 1, *bytes, stream) == *bytes; + } + else + { + return FALSE; + } + if (!stream) + return FALSE; + *bytes = MIN(MAP_SHARE_BLOCK_BYTES, MIN(size - offset, MAP_SHARE_PIECE_BYTES - serving->offset)); + read = fseek(stream, (long)offset, SEEK_SET) == 0 && fread(buffer, 1, *bytes, stream) == *bytes; + fclose(stream); + return read; +} + +/* the pieces asked of this machine, a block at a time, round all the +connections, as the upload's allowance lets */ +static void serve_blocks( + void) +{ + struct map_share_globals *globals = &map_share_globals; + unsigned long now = system_milliseconds(); + long limit = upload_limit(); + boolean sent = TRUE; + + /* (the allowance: the limit a second, a quarter second of it at once) */ + globals->upload_tokens += (long)(MIN(now - globals->upload_at, 1000UL) * (unsigned long)limit / 1000); + globals->upload_tokens = MIN(globals->upload_tokens, MAX(limit / 4, MAP_SHARE_BLOCK_BYTES * 2)); + globals->upload_at = now; + while (sent && globals->upload_tokens >= MAP_SHARE_BLOCK_BYTES) + { + short step; + + sent = FALSE; + for (step = 0; step < MAXIMUM_CONNECTIONS && globals->upload_tokens >= MAP_SHARE_BLOCK_BYTES; step++) + { + short index = (short)((globals->next_connection + step) % MAXIMUM_CONNECTIONS); + struct connection *connection = &globals->connections[index]; + struct serving *serving; + unsigned long bytes; + byte *body; + + if (!connection->used || connection->state != _connection_open || !connection->serving_count || + !frame_room(connection, 9 + MAP_SHARE_BLOCK_BYTES)) + { + continue; + } + serving = &connection->serving[0]; + body = connection->output + connection->output_size + 5; + if (!block_read(connection, serving, body + 9, &bytes) || !bytes) + { + frame_piece(connection, _frame_refuse, serving->file, serving->piece); + connection->serving_count--; + csmemmove(serving, serving + 1, connection->serving_count * sizeof(*serving)); + continue; + } + body = frame_begin(connection, _frame_block, 9 + (long)bytes); + body[0] = (byte)serving->file; + put_long(body + 1, (unsigned long)serving->piece); + put_long(body + 5, serving->offset); + serving->offset += bytes; + connection->bytes_out += bytes; + globals->upload_tokens -= (long)bytes; + sent = TRUE; + if ((unsigned long)serving->piece * MAP_SHARE_PIECE_BYTES + serving->offset >= + serving_file_size(connection, serving->file) || serving->offset >= MAP_SHARE_PIECE_BYTES) + { + connection->serving_count--; + csmemmove(serving, serving + 1, connection->serving_count * sizeof(*serving)); + } + connection_flush(connection); + } + globals->next_connection = (short)((globals->next_connection + 1) % MAXIMUM_CONNECTIONS); + } +} + +/* each connection: connected, read, its states said, its pieces and +hashes asked for, written */ +static void connections_update( + void) +{ + struct map_share_globals *globals = &map_share_globals; + struct download *download = &globals->download; + unsigned long now = system_milliseconds(); + short index; + + for (index = 0; index < MAXIMUM_CONNECTIONS; index++) + { + struct connection *connection = &globals->connections[index]; + short file_index; + + if (!connection->used) + continue; + if (connection->state == _connection_connecting) + { + boolean connected; + + if (!connection_connected(connection, &connected)) + { + if (elapsed(connection->created_at, now, CONNECT_TIMEOUT)) + connection_close(connection, "could not connect in time"); + continue; + } + if (!connected) + { + connection_close(connection, "could not connect"); + continue; + } + connection->state = _connection_open; + connection->heard_at = now; + send_hello(connection); + } + /* (matched first: the download may have changed since) */ + if (connection->hello_heard) + connection_match_files(connection); + connection_read(connection); + if (!connection->used) + continue; + if (elapsed(connection->heard_at, now, CONNECTION_IDLE_TIMEOUT)) + { + connection_close(connection, "silent"); + continue; + } + if (!connection->hello_heard) + { + connection_flush(connection); + continue; + } + for (file_index = 0; file_index < connection->file_count; file_index++) + { + short download_file = connection->download_file[file_index]; + + if (!connection->state_told[file_index]) + send_state(connection, file_index); + /* (the pieces' hashes asked of one that has the file whole) */ + if (download_file != NONE && download->files[download_file].state == _file_awaiting_hashes && + download->files[download_file].hashes_connection == NONE && + connection->remote_has[file_index] == _have_all && frame_room(connection, 1)) + { + struct download_file *file = &download->files[download_file]; + byte *body; + + free(file->hashes_coming); + file->hashes_coming = malloc((unsigned long)MAX(file->piece_count, 1) * MAP_SHARE_HASH_BYTES); + if (!file->hashes_coming) + continue; + file->hashes_received = 0; + file->hashes_connection = index; + file->hashes_asked_at = now; + body = frame_begin(connection, _frame_hashes_request, 1); + body[0] = (byte)file_index; + } + } + /* (nothing left to give each other: the other end has every file + whole, and this one needs none of them) */ + for (file_index = 0; file_index < connection->file_count; file_index++) + { + short download_file = connection->download_file[file_index]; + + if (connection->remote_has[file_index] != _have_all || + (download_file != NONE && download->files[download_file].state != _file_complete)) + { + break; + } + } + if (file_index == connection->file_count && !connection->serving_count && !connection->output_size) + { + connection_close(connection, NULL); + continue; + } + /* (nor anything to give each other: the other end has none of the + files, and downloads none of them, or it would say what it has) */ + for (file_index = 0; file_index < connection->file_count; file_index++) + { + if (!connection->state_heard[file_index] || connection->remote_has[file_index] != _have_none) + break; + } + if (file_index == connection->file_count && !connection->serving_count && !connection->output_size) + { + connection_close(connection, "it has none of the files"); + continue; + } + /* (a piece asked for and not coming: asked of another. The pieces + come in turn, so the first's time is since its last block. Likewise + the pieces' hashes) */ + if (connection->request_count && elapsed(connection->requests[0].asked_at, now, REQUEST_TIMEOUT)) + { + connection_close(connection, "a piece did not come"); + continue; + } + for (file_index = 0; file_index < download->file_count; file_index++) + { + if (download->files[file_index].hashes_connection == index && + elapsed(download->files[file_index].hashes_asked_at, now, REQUEST_TIMEOUT)) + { + break; + } + } + if (file_index < download->file_count) + { + connection_close(connection, "the pieces' hashes did not come"); + continue; + } + connection_send_hashes(connection); + connection_ask(connection); + if (elapsed(connection->sent_at, now, KEEP_ALIVE_INTERVAL) && !connection->output_size && frame_room(connection, 0)) + frame_begin(connection, _frame_keep_alive, 0); + connection_flush(connection); + } +} + +/* ---------- the client's download, each frame */ + +static void download_update( + void) +{ + struct download *download = &map_share_globals.download; + struct network_game *game = map_share_network_game(); + unsigned long now = system_milliseconds(); + short index; + + if (download->state != _download_asking && download->state != _download_transferring) + return; + /* (the game left, or its map changed) */ + if (!game || csstrcmp(game->map.name, download->level_name)) + { + error(_error_silent, "map sharing: the download of %s stopped: the game is on another map now", + download->level_name); + download_end(FALSE); + return; + } + if (download->state == _download_asking) + { + if (elapsed(download->asked_at, now, OFFER_TIMEOUT)) + download_fail("The host did not answer the request for the map."); + return; + } + for (index = 0; index < download->file_count; index++) + { + struct download_file *file = &download->files[index]; + byte *piece_hashes; + long piece_count; + unsigned long size; + + /* a part file checked: the pieces it has taken */ + if (file->state == _file_checking && + map_share_pieces_hashed(download->serial << 3 | index, &piece_hashes, &piece_count, &size)) + { + long piece; + + file->stream = piece_hashes && piece_count == file->piece_count && size == file->size ? + fopen(file->part_path, "r+b") : NULL; + for (piece = 0; file->stream && piece < file->piece_count; piece++) + { + if (!csmemcmp(piece_hashes + piece * MAP_SHARE_HASH_BYTES, file->piece_hashes + piece * MAP_SHARE_HASH_BYTES, + MAP_SHARE_HASH_BYTES)) + { + file->have[piece >> 3] |= (byte)(1 << (piece & 7)); + file->have_count++; + download->done_bytes += MIN(MAP_SHARE_PIECE_BYTES, file->size - (unsigned long)piece * MAP_SHARE_PIECE_BYTES); + } + } + free(piece_hashes); + if (file->stream) + { + error(_error_silent, "map sharing: took up %s where it was (%ld of %ld pieces)", file->part_path, + file->have_count, file->piece_count); + file->state = _file_transferring; + } + /* (unreadable, or changed meanwhile: made anew) */ + else if (!download_file_create(file)) + { + download_fail("The map could not be written to custom_maps."); + return; + } + download->progress_at = now; + } + else if (file->state == _file_checking) + { + /* (the hashing thread busy with another's: asked again) */ + map_share_pieces_hash(file->part_path, download->serial << 3 | index); + } + if (file->state == _file_transferring && file->have_count == file->piece_count) + file->state = _file_complete; + } + for (index = 0; index < download->file_count && download->files[index].state == _file_complete; index++) + ; + if (index == download->file_count) + { + download_finish(); + return; + } + if (elapsed(download->progress_at, now, STALL_TIMEOUT)) + { + download_fail("The download stopped: no player sent any of the map for a minute."); + return; + } + download_reach_sources(); + if (elapsed(download->reported_at, now, PROGRESS_INTERVAL)) + download_report(_progress_downloading); + if (elapsed(download->logged_at, now, LOG_INTERVAL)) + { + short connections = 0; + + for (index = 0; index < MAXIMUM_CONNECTIONS; index++) + { + connections += map_share_globals.connections[index].used && + map_share_globals.connections[index].state == _connection_open; + } + download->logged_at = now; + error(_error_silent, "map sharing: %lu of %lu bytes, %d connections, %lu bytes a second", + download->done_bytes, download->total_bytes, (int)connections, + download->last_window_time ? download->last_window_bytes * 1000 / download->last_window_time : 0); + } + if (elapsed(download->window_at, now, RATE_WINDOW)) + { + download->last_window_bytes = download->window_bytes; + download->last_window_time = now - download->window_at; + download->window_bytes = 0; + download->window_at = now; + } +} + +/* ---------- the host */ + +static boolean host_machine_valid( + long machine_index) +{ + return machine_index >= 0 && machine_index < MAP_SHARE_MACHINES; +} + +boolean map_share_machine_downloading( + long machine_index) +{ + struct host_machine const *machine = host_machine_valid(machine_index) ? + &map_share_globals.machines[machine_index] : NULL; + + return machine && machine->downloading && !elapsed(machine->heard_at, system_milliseconds(), DOWNLOADING_TIMEOUT); +} + +static boolean host_in_game( + void) +{ + struct network_game_server *server = global_network_game_server_get(); + + return server && network_game_server_get_state(server, NULL) == _map_share_server_state_ingame; +} + +/* the answer to a machine's request: its files' sizes and hashes */ +static void host_offer( + long machine_index, + byte result) +{ + struct host_machine *machine = &map_share_globals.machines[machine_index]; + struct + { + struct distributed_message_header header; + struct distributed_map_share_offer offer; + struct distributed_map_share_offer_file files[MAXIMUM_FILES]; + } message; + short count = result == _offer_ok ? machine->file_count : 0; + word size = (word)(sizeof(message.header) + sizeof(message.offer) + count * sizeof(message.files[0])); + short index; + + csmemset(&message, 0, sizeof(message)); + map_share_fill_header(&message.header, _distributed_message_map_share_offer, size); + csmemcpy(message.offer.level_name, machine->request.level_name, LEVEL_NAME_BYTES); + message.offer.result = result; + message.offer.file_count = (byte)count; + message.offer.flags = host_in_game() ? FLAG(_offer_in_progress_bit) : 0; + for (index = 0; index < count; index++) + { + struct map_share_file *file = map_share_file_get(machine->catalog_files[index]); + + message.files[index].kind = (byte)machine->file_kinds[index]; + message.files[index].size = file->size; + csmemcpy(message.files[index].hash, file->hash, MAP_SHARE_HASH_BYTES); + } + network_distributed_server_send_to_machine_reliably(machine_index, &message, size); + machine->offered = TRUE; + machine->asked = FALSE; + error(_error_silent, "map sharing: offered machine #%ld %s (%d files)%s", machine_index, + machine->request.level_name, (int)count, result == _offer_ok ? "" : + result == _offer_off ? ": not shared (network.map_share)" : ": unavailable"); +} + +/* the machines a downloading one may fetch from: the game's others */ +static void host_sources( + long machine_index) +{ + struct map_share_globals *globals = &map_share_globals; + struct + { + struct distributed_message_header header; + struct distributed_map_share_sources sources; + struct distributed_map_share_source entries[MAXIMUM_SOURCES]; + } message; + short local_machine = network_game_client_get_local_machine_index(); + short count = 0; + long index; + word size; + + csmemset(&message, 0, sizeof(message)); + for (index = 0; index < MAP_SHARE_MACHINES && count < MAXIMUM_SOURCES; index++) + { + struct distributed_map_share_source *entry = &message.entries[count]; + unsigned long address = network_game_server_machine_address(index); + + if (index == machine_index || index == local_machine || !address) + continue; + entry->machine_index = (byte)index; + entry->address = address; + if (address_internet(address)) + { + if (!p2p_peer_key_hash(network_order(address), entry->identifier, entry->key_hash)) + continue; + entry->flags |= FLAG(_source_internet_bit); + } + if (map_share_machine_downloading(index) && !globals->machines[index].downloaded) + entry->flags |= FLAG(_source_downloading_bit); + count++; + } + size = (word)(sizeof(message.header) + sizeof(message.sources) + count * sizeof(message.entries[0])); + map_share_fill_header(&message.header, _distributed_message_map_share_sources, size); + message.sources.count = (byte)count; + message.sources.flags = host_in_game() ? FLAG(_offer_in_progress_bit) : 0; + network_distributed_server_send_to_machine_reliably(machine_index, &message, size); + globals->machines[machine_index].sources_at = system_milliseconds(); +} + +/* a machine's request: its files asked to be hashed, the answer given once +they are */ +static void host_request( + long machine_index, + struct distributed_map_share_request const *request) +{ + struct host_machine *machine = &map_share_globals.machines[machine_index]; + struct network_game *game = map_share_network_game(); + char const *name; + char path[MAP_SHARE_PATH_SIZE]; + unsigned long needed; + short kind; + + csmemset(machine, 0, sizeof(*machine)); + machine->request = *request; + machine->asked_at = system_milliseconds(); + machine->heard_at = machine->asked_at; + machine->address = network_game_server_machine_address(machine_index); + if (!config_boolean("network.map_share")) + { + host_offer(machine_index, _offer_off); + return; + } + /* (the game's map alone, a Custom Edition map's, named for its hash if + it is asked for) */ + name = tag_name_strip_path(request->level_name); + if (!game || csstrcmp(game->map.name, request->level_name) || !custom_edition_level_name(request->level_name) || + !custom_edition_map_file_path(request->level_name, path) || + (TEST_FLAG(request->wanted, _map_share_file_map) && !map_share_name_hashed(name))) + { + host_offer(machine_index, _offer_unavailable); + return; + } + needed = custom_edition_map_resource_maps_needed(request->level_name) | FLAG(_map_share_file_map); + for (kind = 0; kind < MAXIMUM_FILES; kind++) + { + if (!TEST_FLAG(request->wanted, kind) || !TEST_FLAG(needed, kind)) + continue; + if (kind != _map_share_file_map && !custom_edition_resource_map_file_path(kind, path)) + continue; + machine->catalog_files[machine->file_count] = map_share_file_hash(path, kind); + machine->file_kinds[machine->file_count] = kind; + if (machine->catalog_files[machine->file_count] != NONE) + machine->file_count++; + /* (the map's path again, after a resource map's) */ + custom_edition_map_file_path(request->level_name, path); + } + if (!machine->file_count) + { + host_offer(machine_index, _offer_unavailable); + return; + } + machine->asked = TRUE; + machine->downloading = TRUE; + error(_error_silent, "map sharing: machine #%ld asks for %s (files 0x%X)", machine_index, request->level_name, + (unsigned)request->wanted); +} + +/* the host's machines: answered once their files are hashed, told the +sources again now and then, forgotten once gone */ +static void host_update( + void) +{ + struct map_share_globals *globals = &map_share_globals; + unsigned long now = system_milliseconds(); + long index; + + for (index = 0; index < MAP_SHARE_MACHINES; index++) + { + struct host_machine *machine = &globals->machines[index]; + unsigned long address = network_game_server_machine_address(index); + short file_index; + + if (!machine->asked && !machine->downloading) + continue; + /* (left: another machine may take its slot) */ + if (!address || address != machine->address) + { + csmemset(machine, 0, sizeof(*machine)); + continue; + } + if (machine->asked) + { + boolean ready = TRUE; + boolean failed = FALSE; + + for (file_index = 0; file_index < machine->file_count; file_index++) + { + struct map_share_file *file = map_share_file_get(machine->catalog_files[file_index]); + + if (!file) + failed = TRUE; + else if (file->failed) + failed = TRUE; + else if (!file->ready) + ready = FALSE; + } + if (failed) + { + host_offer(index, _offer_unavailable); + machine->downloading = FALSE; + continue; + } + if (!ready) + continue; + /* (the map's hash its name's, as the client checks) */ + for (file_index = 0; file_index < machine->file_count; file_index++) + { + struct map_share_file *file = map_share_file_get(machine->catalog_files[file_index]); + char const *name = tag_name_strip_path(machine->request.level_name); + char digits[MAP_SHARE_NAME_DIGITS + 1]; + + map_share_hash_digits(file->hash, digits); + if (machine->file_kinds[file_index] == _map_share_file_map && + csstrcmp(name + map_share_name_base_length(name) + 1, digits)) + { + error(_error_silent, "map sharing: %s is not named for its hash (%s): not shared", file->path, + digits); + failed = TRUE; + } + } + host_offer(index, failed ? _offer_unavailable : _offer_ok); + if (failed) + { + machine->downloading = FALSE; + continue; + } + host_sources(index); + } + if (machine->downloading && !machine->downloaded && machine->offered && + elapsed(machine->sources_at, now, SOURCES_INTERVAL) && + !elapsed(machine->heard_at, now, DOWNLOADING_TIMEOUT)) + { + host_sources(index); + } + } +} + +/* a machine's progress */ +static void host_progress( + long machine_index, + struct distributed_map_share_progress const *progress) +{ + struct host_machine *machine = &map_share_globals.machines[machine_index]; + + if (!machine->offered) + return; + machine->heard_at = system_milliseconds(); + machine->done = progress->done; + machine->total = progress->total; + machine->downloading = progress->state != _progress_failed; + machine->downloaded = progress->state == _progress_done; + if (progress->state != _progress_downloading) + { + error(_error_silent, "map sharing: machine #%ld %s %s", machine_index, + progress->state == _progress_done ? "downloaded" : "could not download", machine->request.level_name); + } +} + +/* ---------- messages */ + +boolean map_share_handles_message( + word const *message, + word size) +{ + struct distributed_message_header header; + + if (size < sizeof(header)) + return FALSE; + csmemcpy(&header, message, sizeof(header)); + return header.type == _distributed_message_map_share_request || header.type == _distributed_message_map_share_offer || + header.type == _distributed_message_map_share_sources || header.type == _distributed_message_map_share_progress; +} + +void map_share_handle_message( + long machine_index, + word const *message, + word size, + boolean from_stream) +{ + struct distributed_message_header header; + byte const *entries = (byte const *)message + sizeof(header); + long length = (long)size - (long)sizeof(header); + + /* (over the sender's connection alone: a datagram can be sent as from + anyone) */ + if (!map_share_handles_message(message, size) || !from_stream) + return; + csmemcpy(&header, message, sizeof(header)); + switch (header.type) + { + case _distributed_message_map_share_request: + { + struct distributed_map_share_request request; + + if (machine_index == NONE || !map_share_host() || !host_machine_valid(machine_index) || + length != (long)sizeof(request)) + { + return; + } + csmemcpy(&request, entries, sizeof(request)); + if (!level_name_valid(request.level_name)) + return; + host_request(machine_index, &request); + break; + } + case _distributed_message_map_share_progress: + { + struct distributed_map_share_progress progress; + + if (machine_index == NONE || !map_share_host() || !host_machine_valid(machine_index) || + length != (long)sizeof(progress)) + { + return; + } + csmemcpy(&progress, entries, sizeof(progress)); + host_progress(machine_index, &progress); + break; + } + case _distributed_message_map_share_offer: + { + struct distributed_map_share_offer offer; + struct distributed_map_share_offer_file files[MAXIMUM_FILES]; + + if (machine_index != NONE || map_share_host() || length < (long)sizeof(offer)) + return; + csmemcpy(&offer, entries, sizeof(offer)); + if (!level_name_valid(offer.level_name) || offer.file_count > MAXIMUM_FILES || + length != (long)(sizeof(offer) + offer.file_count * sizeof(files[0]))) + { + return; + } + csmemcpy(files, entries + sizeof(offer), offer.file_count * sizeof(files[0])); + download_offered(&offer, files); + break; + } + case _distributed_message_map_share_sources: + { + struct distributed_map_share_sources sources; + struct distributed_map_share_source sources_entries[MAXIMUM_SOURCES]; + + if (machine_index != NONE || map_share_host() || length < (long)sizeof(sources)) + return; + csmemcpy(&sources, entries, sizeof(sources)); + if (sources.count > MAXIMUM_SOURCES || + length != (long)(sizeof(sources) + sources.count * sizeof(sources_entries[0]))) + { + return; + } + csmemcpy(sources_entries, entries + sizeof(sources), sources.count * sizeof(sources_entries[0])); + download_sources(&sources, sources_entries); + break; + } + } +} + +/* ---------- every frame */ + +void map_share_update( + void) +{ + struct map_share_globals *globals = &map_share_globals; + struct network_game *game = map_share_network_game(); + unsigned long host_address = map_share_host_address(); + short index; + + map_share_files_update(); + /* (internet play: a player that shares answers the others, who reach it + by its key hash) */ + p2p_set_answering_players(!map_share_host() && address_internet(host_address) && map_share_sending()); + /* (none in a build that cannot run Custom Edition maps: the web's) */ + if (!game || !halo_custom_edition_tag_cache()) + { + /* (one done or failed is forgotten too: the next game's players are + not held for it) */ + if (globals->download.state != _download_none) + download_end(FALSE); + for (index = 0; index < MAXIMUM_CONNECTIONS; index++) + { + if (globals->connections[index].used) + connection_close(&globals->connections[index], NULL); + } + connections_update(); + listener_update(); + csmemset(globals->machines, 0, sizeof(globals->machines)); + return; + } + current_files_update(FALSE); + if (map_share_host()) + host_update(); + download_update(); + listener_update(); + connection_accept(); + connections_update(); + serve_blocks(); +} + +void map_share_render( + void) +{ + struct download *download = &map_share_globals.download; + long font_tag_index; + real_argb_color color = { 1.0f, 1.0f, 1.0f, 1.0f }; + rectangle2d bounds; + char text[160]; + char const *name; + short base_length; + long percent; + + if (download->state != _download_asking && download->state != _download_transferring) + return; + font_tag_index = interface_get_tag_index(_interface_font_terminal); + if (font_tag_index == NONE) + return; + name = tag_name_strip_path(download->level_name); + base_length = map_share_name_base_length(name); + if (download->state == _download_asking) + { + snprintf(text, sizeof(text), "Asking the host for the map %.*s...", (int)base_length, name); + } + else + { + unsigned long rate = download->last_window_time ? + download->last_window_bytes * 1000 / download->last_window_time : 0; + short sources = 0; + short index; + + for (index = 0; index < MAXIMUM_CONNECTIONS; index++) + { + struct connection const *connection = &map_share_globals.connections[index]; + + sources += connection->used && connection->state == _connection_open && connection->hello_heard; + } + percent = download->total_bytes ? (long)(download->done_bytes / (download->total_bytes / 100 + 1)) : 0; + snprintf(text, sizeof(text), "Downloading the map %.*s: %ld%% of %lu MB from %d player%s, %lu KB/s", + (int)base_length, name, MIN(percent, 100), (download->total_bytes + 0x80000) >> 20, (int)sources, + sources == 1 ? "" : "s", rate >> 10); + } + /* (at the top of the screen, above the menus' safe area, where the + lobby's title is) */ + bounds = render.camera.window_bounds; + offset_rectangle2d(&bounds, -render.camera.viewport_bounds.x0, -render.camera.viewport_bounds.y0); + bounds.y0 = 4; + bounds.y1 = 22; + draw_string_set_draw_mode(font_tag_index, NONE, _map_share_text_centered, 0, &color); + rasterizer_draw_string(&bounds, NULL, NULL, 0, text); +} diff --git a/port/linux/game/map_share.h b/port/linux/game/map_share.h new file mode 100644 index 0000000000..a4b0f80e24 --- /dev/null +++ b/port/linux/game/map_share.h @@ -0,0 +1,198 @@ +/* +MAP_SHARE.H + +Custom Edition maps shared over network games (map_share.c, map_share_files.c; +port/linux/NETCODE.md, "Map sharing"). + +Every map in the custom_maps folder is named for its contents: its file name +ends in _ and the first 8 hexadecimal digits of its hash (hugeass.map becomes +hugeass_1a2b3c4d.map, renamed as the map lists find it), so the level name a +host's game is on (custom_maps\hugeass_1a2b3c4d) says which version of the map +it is. A client joining without that file asks the host for it. If the host +shares maps (network.map_share), it says which files make up the map (the +map, and the resource maps it needs that the client lacks) and which other +players have them, and the client downloads them in pieces from all of them +at once, as a torrent's peers do, each piece checked against its hash. The +downloaded map keeps its name, so two versions of a map never meet. +*/ + +#ifndef __MAP_SHARE_H +#define __MAP_SHARE_H + +/* ---------- constants */ + +enum +{ + /* a file's hash, of its pieces' (BLAKE2b, 32 bytes) */ + MAP_SHARE_HASH_BYTES = 32, + /* the hexadecimal digits of the hash a map file's name ends in, after _ */ + MAP_SHARE_NAME_DIGITS = 8, + /* a file is hashed and sent in pieces of this size (the last shorter), + each piece in blocks of this */ + MAP_SHARE_PIECE_BYTES = 0x40000, + MAP_SHARE_BLOCK_BYTES = 0x4000, + /* the files of a map: the map, and resource maps (as enum + resource_map_type numbers them, cache_file_formats.h) */ + _map_share_file_map = 0, + _map_share_file_bitmaps, + _map_share_file_sounds, + _map_share_file_locale, + NUMBER_OF_MAP_SHARE_FILE_KINDS, + /* a path of the platform's (d:\custom_maps\...) */ + MAP_SHARE_PATH_SIZE = 256, +}; + +/* ---------- prototypes/MAP_SHARE_FILES.C */ + +/* Whether a map's file name (without its extension) ends in _ and +MAP_SHARE_NAME_DIGITS lowercase hexadecimal digits: named for its hash. */ +boolean map_share_name_hashed( + char const *name); +/* Whether a map's name (from another machine's level name) is only a file +name of the custom_maps folder: printable ASCII, no separator or character +a file system refuses, no dot or space at either end (so never "." or +".."). */ +boolean map_share_name_safe( + char const *name); +/* the length of a map's file name without the hash it ends in (all of it, +when it ends in none) */ +short map_share_name_base_length( + char const *name); + +/* The map lists found the map file .map, a Custom Edition +map, whose name is not its hash's: in the custom_maps folder it is hashed, +on a thread of its own, and renamed _.map, with its picture and +description beside it (.bmp, .txt); the map lists are scanned +again once it has been (custom_edition_maps_look_again). Not while the map +is loaded (a file in use is not renamed on Windows): it is asked for again. */ +void map_share_name_map( + char const *folder, + char const *name); + +/* A host's game is on the level `level_name` (a buffer of `size`): a +Custom Edition map's named without its hash (custom_maps\hugeass, a saved +last map's or a test's) is named with it (custom_maps\hugeass_1a2b3c4d), the +map's file renamed for its hash first if it has not been yet, so that the +players can download it (network_server_manager.c). */ +void map_share_level_name_hash( + char *level_name, + long size); + +/* ---------- prototypes/MAP_SHARE.C */ + +/* A client joining a network game on the level `level_name` (with the +host's `version`, its header checksum) that this machine cannot play +(custom_edition_cache_present said why in `message`): TRUE if it asks the +host for it instead (a Custom Edition map named for its hash, or one whose +resource maps are missing, with network.map_download on). The download +runs in the lobby (the host waits for it to precache), or, for a game in +progress, before this machine's players join. */ +boolean map_share_download_begin( + char const *level_name, + unsigned long version, + char const *message); +/* whether the level's files are being downloaded (cache_files.c gives the +map no time to precache until they are) */ +boolean map_share_downloading( + char const *level_name); +/* whether this machine's players wait to join the host's game: until its +settings name the map (a game in progress would start them at once), and +for a game in progress until the map is downloaded (network_client_manager.c) */ +boolean map_share_holds_players( + void); +/* (the host) whether a client machine is downloading the game's map, as it +said lately: it is not dropped for adding no players or loading slowly +(network_server_manager.c) */ +boolean map_share_machine_downloading( + long machine_index); + +/* the distributed messages of map sharing (network_distributed.c, and the +host's message handler), in the lobby too: from_stream says the message came +over the sender's connection, not as a datagram (anyone can send one) */ +boolean map_share_handles_message( + word const *message, + word size); +void map_share_handle_message( + long machine_index, + word const *message, + word size, + boolean from_stream); + +/* every frame (main.c): the hashing, the transfers and the messages */ +void map_share_update( + void); +/* the download's progress, drawn over the screen (interface.c) */ +void map_share_render( + void); + +/* ---------- prototypes/MAP_SHARE_FILES.C (map_share.c's) */ + +/* A file hashed for sharing: its size, its pieces' hashes and its hash. +map_share_file_hash asks for the file at a path (a map, or a resource map +of a kind, _map_share_file_*) to be hashed on the hashing thread, if it is +not (or has changed since); its index in the catalog, or NONE. */ +struct map_share_file +{ + boolean used; + short kind; + char path[MAP_SHARE_PATH_SIZE]; + /* hashed: ready (pieces and hash known) or failed */ + boolean ready; + boolean failed; + unsigned long size; + unsigned long modified; + long piece_count; + byte *piece_hashes; + byte hash[MAP_SHARE_HASH_BYTES]; +}; + +short map_share_file_hash( + char const *path, + short kind); +/* ... and a file whose pieces' hashes are known (a download's, which were +checked): taken as it is, not hashed again */ +short map_share_file_hashed( + char const *path, + short kind, + unsigned long size, + byte const *piece_hashes, + long piece_count, + byte const *hash); +struct map_share_file *map_share_file_get( + short index); +/* the ready file with this hash, or NONE */ +short map_share_file_find( + byte const *hash); +/* the pieces of a file of `size` bytes */ +long map_share_piece_count( + unsigned long size); +/* the hash of a file of `size` bytes from its pieces' hashes */ +void map_share_file_hash_of_pieces( + unsigned long size, + byte const *piece_hashes, + long piece_count, + byte *hash); +/* the hash's first MAP_SHARE_NAME_DIGITS digits, as a name ends in */ +void map_share_hash_digits( + byte const *hash, + char *digits); + +/* Asks for the pieces of the file at `path` (a download's, part written) +to be hashed, for the caller (`owner`) to compare with what they should be: +FALSE if the hashing thread is busy with another such request. Done, with +the pieces' hashes, when map_share_pieces_hashed returns TRUE (failed: no +hashes, the file unreadable). */ +boolean map_share_pieces_hash( + char const *path, + long owner); +boolean map_share_pieces_hashed( + long owner, + byte **piece_hashes, + long *piece_count, + unsigned long *size); + +/* the hashing thread's work: started and collected each frame */ +void map_share_files_update( + void); + +#endif diff --git a/port/linux/game/map_share_files.c b/port/linux/game/map_share_files.c new file mode 100644 index 0000000000..ff299483f0 --- /dev/null +++ b/port/linux/game/map_share_files.c @@ -0,0 +1,720 @@ +/* +MAP_SHARE_FILES.C + +The files map sharing hashes (map_share.h): a map's name made from its +hash, and the hashes of the files this machine shares, worked out on a +thread of their own a file at a time, so that a map of hundreds of +megabytes costs the game no frames. + +A file's hash is BLAKE2b's (32 bytes) of a label, its size and its pieces' +hashes (each piece MAP_SHARE_PIECE_BYTES of it, the last shorter, hashed with +BLAKE2b): a client that knows a file's hash, from the host, can check the +pieces' hashes any player sends it, and each piece as it arrives. +*/ + +/* ---------- headers */ + +#include "cseries.h" +#include "errors.h" +#include "tag_files/tag_files.h" +#include "bungie_net/common/thread.h" +#include "cache_file_formats.h" +#include "custom_edition_cache.h" +#include "custom_edition_maps.h" +#include "map_share.h" + +#include +#include +#include +#include + +/* (the C library's allocator, not the game's tracked one (cseries.h): the +hashing thread allocates what the game's thread frees) */ +#undef malloc +#undef free +#undef realloc + +/* (p2p_crypto.c's) */ +void p2p_blake2b_256(const void *data, unsigned long size, unsigned char *digest); + +/* ---------- constants */ + +enum +{ + /* the files hashed for sharing at once: a game's map and its three + resource maps, a download's, and the last few games' */ + MAXIMUM_SHARE_FILES = 16, + /* the maps waiting to be named, and those named or given up on this + run (not looked at again) */ + MAXIMUM_NAMING_QUEUE = 64, + MAXIMUM_NAMED = 1024, + /* the longest map file name the map lists take (custom_edition_maps.c: + the level name, custom_maps\ and it, kept whole by the game engine) */ + MAXIMUM_MAP_NAME_LENGTH = CUSTOM_EDITION_MAXIMUM_LEVEL_NAME_LENGTH - (sizeof(CUSTOM_EDITION_LEVEL_NAME_PREFIX) - 1), + /* the largest file hashed (the combined offset space's resource maps + are smaller: custom_edition_cache.c) */ + MAXIMUM_FILE_BYTES = 0x7FFFFFFF, +}; + +/* what a hash is of: these bytes, the file's size (4 bytes, little-endian) +and its pieces' hashes */ +static char const file_hash_label[] = "OpenCE map 1"; +#define FILE_HASH_LABEL_BYTES 12 + +enum +{ + _hash_job_none, + /* a catalog file's (map_share_file_hash) */ + _hash_job_file, + /* a map to name for its hash (map_share_name_map) */ + _hash_job_name, + /* a download's pieces (map_share_pieces_hash) */ + _hash_job_pieces, +}; + +/* ---------- structures */ + +/* the hashing thread's work: the file it reads, and what it finds */ +struct hash_job +{ + char path[MAP_SHARE_PATH_SIZE]; + unsigned long size; + long piece_count; + byte *piece_hashes; + byte hash[MAP_SHARE_HASH_BYTES]; + /* written by the thread: done (ready or failed) when it has exited */ + volatile long failed; +}; + +struct naming +{ + char folder[MAP_SHARE_PATH_SIZE]; + char name[MAP_SHARE_PATH_SIZE]; +}; + +struct map_share_files_globals +{ + struct map_share_file files[MAXIMUM_SHARE_FILES]; + /* the file catalog's next to replace, when full */ + short next_file; + + /* the job running (_hash_job_*), its thread, and whose it is (a + catalog index, or the pieces' owner) */ + short job_type; + struct thread_reference *thread; + struct hash_job job; + long job_owner; + struct naming job_naming; + + /* the maps to name, and those looked at already (folder and name) */ + short naming_count; + struct naming naming_queue[MAXIMUM_NAMING_QUEUE]; + long named_count; + unsigned long named_hashes[MAXIMUM_NAMED]; + + /* the pieces asked for, and what was found for their owner */ + boolean pieces_wanted; + char pieces_path[MAP_SHARE_PATH_SIZE]; + long pieces_owner; + boolean pieces_done; + long pieces_done_owner; + byte *pieces_hashes; + long pieces_count; + unsigned long pieces_size; +}; + +/* ---------- globals */ + +static struct map_share_files_globals map_share_files_globals; + +/* ---------- names */ + +static boolean hex_digit( + char character) +{ + return (character >= '0' && character <= '9') || (character >= 'a' && character <= 'f'); +} + +boolean map_share_name_hashed( + char const *name) +{ + long length = (long)csstrlen(name); + long index; + + if (length < MAP_SHARE_NAME_DIGITS + 2 || name[length - MAP_SHARE_NAME_DIGITS - 1] != '_') + return FALSE; + for (index = length - MAP_SHARE_NAME_DIGITS; index < length; index++) + { + if (!hex_digit(name[index])) + return FALSE; + } + return TRUE; +} + +boolean map_share_name_safe( + char const *name) +{ + long length = (long)csstrlen(name); + long index; + + if (!length || name[0] == '.' || name[0] == ' ' || name[length - 1] == '.' || name[length - 1] == ' ') + return FALSE; + for (index = 0; index < length; index++) + { + unsigned char character = (unsigned char)name[index]; + + if (character < ' ' || character > '~' || strchr("/\\:*?\"<>|", character)) + return FALSE; + } + return TRUE; +} + +short map_share_name_base_length( + char const *name) +{ + short length = (short)csstrlen(name); + + return map_share_name_hashed(name) ? (short)(length - MAP_SHARE_NAME_DIGITS - 1) : length; +} + +void map_share_hash_digits( + byte const *hash, + char *digits) +{ + static char const hex[] = "0123456789abcdef"; + short index; + + for (index = 0; index < MAP_SHARE_NAME_DIGITS / 2; index++) + { + digits[index * 2] = hex[hash[index] >> 4]; + digits[index * 2 + 1] = hex[hash[index] & 15]; + } + digits[MAP_SHARE_NAME_DIGITS] = 0; +} + +/* ---------- hashes */ + +long map_share_piece_count( + unsigned long size) +{ + return (long)((size + MAP_SHARE_PIECE_BYTES - 1) / MAP_SHARE_PIECE_BYTES); +} + +void map_share_file_hash_of_pieces( + unsigned long size, + byte const *piece_hashes, + long piece_count, + byte *hash) +{ + unsigned long bytes = FILE_HASH_LABEL_BYTES + 4 + (unsigned long)piece_count * MAP_SHARE_HASH_BYTES; + byte *data = malloc(bytes); + short index; + + if (!data) + { + csmemset(hash, 0, MAP_SHARE_HASH_BYTES); + return; + } + csmemcpy(data, file_hash_label, FILE_HASH_LABEL_BYTES); + for (index = 0; index < 4; index++) + data[FILE_HASH_LABEL_BYTES + index] = (byte)(size >> (index * 8)); + if (piece_count) + csmemcpy(data + FILE_HASH_LABEL_BYTES + 4, piece_hashes, (unsigned long)piece_count * MAP_SHARE_HASH_BYTES); + p2p_blake2b_256(data, bytes, hash); + free(data); +} + +/* the hashing thread: the job's file read a piece at a time */ +static unsigned long __stdcall hash_job_run( + void *input) +{ + struct hash_job *job = input; + byte *piece = malloc(MAP_SHARE_PIECE_BYTES); + FILE *stream = fopen(job->path, "rb"); + long size = -1; + long index; + + job->piece_hashes = NULL; + if (!piece || !stream || fseek(stream, 0, SEEK_END) != 0 || (size = ftell(stream)) < 0 || + fseek(stream, 0, SEEK_SET) != 0) + { + size = -1; + } + if (size >= 0) + { + job->size = (unsigned long)size; + job->piece_count = map_share_piece_count(job->size); + job->piece_hashes = malloc((unsigned long)MAX(job->piece_count, 1) * MAP_SHARE_HASH_BYTES); + } + for (index = 0; job->piece_hashes && index < job->piece_count; index++) + { + unsigned long bytes = MIN(MAP_SHARE_PIECE_BYTES, job->size - (unsigned long)index * MAP_SHARE_PIECE_BYTES); + + if (fread(piece, 1, bytes, stream) != bytes) + { + free(job->piece_hashes); + job->piece_hashes = NULL; + break; + } + p2p_blake2b_256(piece, bytes, job->piece_hashes + index * MAP_SHARE_HASH_BYTES); + } + if (stream) + fclose(stream); + free(piece); + if (job->piece_hashes) + map_share_file_hash_of_pieces(job->size, job->piece_hashes, job->piece_count, job->hash); + else + job->failed = TRUE; + + return 0; +} + +static boolean hash_job_start( + short type, + char const *path, + long owner) +{ + struct map_share_files_globals *globals = &map_share_files_globals; + + csmemset(&globals->job, 0, sizeof(globals->job)); + csstrncpy(globals->job.path, path, sizeof(globals->job.path) - 1); + if (!create_thread(1, hash_job_run, &globals->job, &globals->thread)) + { + globals->thread = NULL; + return FALSE; + } + globals->job_type = type; + globals->job_owner = owner; + return TRUE; +} + +/* the file's size and when it was last written, as the file system says */ +static boolean file_stamp( + char const *path, + unsigned long *size, + unsigned long *modified) +{ + WIN32_FILE_ATTRIBUTE_DATA data; + + if (!GetFileAttributesExA(path, GetFileExInfoStandard, &data) || data.nFileSizeHigh) + return FALSE; + *size = data.nFileSizeLow; + *modified = data.ftLastWriteTime.dwLowDateTime ^ data.ftLastWriteTime.dwHighDateTime; + return TRUE; +} + +/* ---------- the catalog */ + +short map_share_file_hash( + char const *path, + short kind) +{ + struct map_share_files_globals *globals = &map_share_files_globals; + struct map_share_file *file = NULL; + unsigned long size; + unsigned long modified; + short index; + + if (!file_stamp(path, &size, &modified) || size > MAXIMUM_FILE_BYTES) + return NONE; + for (index = 0; index < MAXIMUM_SHARE_FILES; index++) + { + if (globals->files[index].used && !csstrcasecmp(globals->files[index].path, path)) + { + file = &globals->files[index]; + break; + } + } + /* (changed since: hashed again) */ + if (file && (file->ready || file->failed) && (file->size != size || file->modified != modified)) + { + free(file->piece_hashes); + file->piece_hashes = NULL; + file->ready = FALSE; + file->failed = FALSE; + } + if (!file) + { + /* a free one, else the next in turn not being hashed */ + for (index = 0; index < MAXIMUM_SHARE_FILES && globals->files[index].used; index++) + ; + if (index == MAXIMUM_SHARE_FILES) + { + index = globals->next_file; + if (globals->job_type == _hash_job_file && globals->job_owner == index) + index = (short)((index + 1) % MAXIMUM_SHARE_FILES); + globals->next_file = (short)((index + 1) % MAXIMUM_SHARE_FILES); + free(globals->files[index].piece_hashes); + } + file = &globals->files[index]; + csmemset(file, 0, sizeof(*file)); + file->used = TRUE; + csstrncpy(file->path, path, sizeof(file->path) - 1); + } + file->kind = kind; + file->size = size; + file->modified = modified; + + return (short)(file - globals->files); +} + +short map_share_file_hashed( + char const *path, + short kind, + unsigned long size, + byte const *piece_hashes, + long piece_count, + byte const *hash) +{ + short index = map_share_file_hash(path, kind); + struct map_share_file *file = map_share_file_get(index); + + if (!file || file->size != size || piece_count != map_share_piece_count(size)) + return index; + free(file->piece_hashes); + file->piece_hashes = malloc((unsigned long)MAX(piece_count, 1) * MAP_SHARE_HASH_BYTES); + if (!file->piece_hashes) + return index; + csmemcpy(file->piece_hashes, piece_hashes, (unsigned long)piece_count * MAP_SHARE_HASH_BYTES); + file->piece_count = piece_count; + csmemcpy(file->hash, hash, MAP_SHARE_HASH_BYTES); + file->ready = TRUE; + file->failed = FALSE; + return index; +} + +struct map_share_file *map_share_file_get( + short index) +{ + return index >= 0 && index < MAXIMUM_SHARE_FILES && map_share_files_globals.files[index].used ? + &map_share_files_globals.files[index] : NULL; +} + +short map_share_file_find( + byte const *hash) +{ + short index; + + for (index = 0; index < MAXIMUM_SHARE_FILES; index++) + { + struct map_share_file const *file = &map_share_files_globals.files[index]; + + if (file->used && file->ready && !csmemcmp(file->hash, hash, MAP_SHARE_HASH_BYTES)) + return index; + } + return NONE; +} + +/* ---------- a download's pieces */ + +boolean map_share_pieces_hash( + char const *path, + long owner) +{ + struct map_share_files_globals *globals = &map_share_files_globals; + + if (globals->pieces_wanted || (globals->job_type == _hash_job_pieces)) + return globals->pieces_owner == owner; + globals->pieces_wanted = TRUE; + globals->pieces_owner = owner; + csstrncpy(globals->pieces_path, path, sizeof(globals->pieces_path) - 1); + globals->pieces_path[sizeof(globals->pieces_path) - 1] = 0; + return TRUE; +} + +boolean map_share_pieces_hashed( + long owner, + byte **piece_hashes, + long *piece_count, + unsigned long *size) +{ + struct map_share_files_globals *globals = &map_share_files_globals; + + if (!globals->pieces_done || globals->pieces_done_owner != owner) + return FALSE; + *piece_hashes = globals->pieces_hashes; + *piece_count = globals->pieces_count; + *size = globals->pieces_size; + globals->pieces_done = FALSE; + globals->pieces_hashes = NULL; + return TRUE; +} + +/* ---------- naming */ + +/* a folder and name's own number, to know it again */ +static unsigned long naming_key( + char const *folder, + char const *name) +{ + unsigned long key = 2166136261UL; + char const *text; + + for (text = folder; *text; text++) + key = (key ^ (unsigned char)(*text | 0x20)) * 16777619UL; + for (text = name; *text; text++) + key = (key ^ (unsigned char)(*text | 0x20)) * 16777619UL; + return key; +} + +static boolean naming_known( + unsigned long key) +{ + struct map_share_files_globals *globals = &map_share_files_globals; + long index; + + for (index = 0; index < globals->named_count; index++) + { + if (globals->named_hashes[index] == key) + return TRUE; + } + return FALSE; +} + +static void naming_remember( + unsigned long key) +{ + struct map_share_files_globals *globals = &map_share_files_globals; + + if (globals->named_count < MAXIMUM_NAMED) + globals->named_hashes[globals->named_count++] = key; +} + +void map_share_name_map( + char const *folder, + char const *name) +{ + struct map_share_files_globals *globals = &map_share_files_globals; + unsigned long key = naming_key(folder, name); + short index; + + /* (the custom_maps folder's alone: an install of Custom Edition is + left as it is, for Custom Edition) */ + if (csstrcasecmp(folder, CUSTOM_EDITION_MAP_DIRECTORY) || map_share_name_hashed(name) || naming_known(key)) + return; + for (index = 0; index < globals->naming_count; index++) + { + if (!csstrcasecmp(globals->naming_queue[index].name, name) && + !csstrcasecmp(globals->naming_queue[index].folder, folder)) + { + return; + } + } + if (globals->job_type == _hash_job_name && !csstrcasecmp(globals->job_naming.name, name) && + !csstrcasecmp(globals->job_naming.folder, folder)) + { + return; + } + if (globals->naming_count == MAXIMUM_NAMING_QUEUE) + return; + csstrncpy(globals->naming_queue[globals->naming_count].folder, folder, MAP_SHARE_PATH_SIZE - 1); + csstrncpy(globals->naming_queue[globals->naming_count].name, name, MAP_SHARE_PATH_SIZE - 1); + globals->naming_count++; +} + +/* renamed , if it is there +and that is not */ +static boolean rename_beside( + char const *folder, + char const *from, + char const *to, + char const *extension) +{ + char from_path[MAP_SHARE_PATH_SIZE]; + char to_path[MAP_SHARE_PATH_SIZE]; + + if (csstrlen(folder) + csstrlen(from) + csstrlen(extension) >= MAP_SHARE_PATH_SIZE || + csstrlen(folder) + csstrlen(to) + csstrlen(extension) >= MAP_SHARE_PATH_SIZE) + { + return FALSE; + } + csprintf(from_path, "%s%s%s", folder, from, extension); + csprintf(to_path, "%s%s%s", folder, to, extension); + return MoveFileA(from_path, to_path) != 0; +} + +/* a map hashed: renamed _.map (the name cut short to fit the +map lists), with its picture and description */ +static void naming_finish( + struct naming const *naming, + struct hash_job const *job) +{ + char digits[MAP_SHARE_NAME_DIGITS + 1]; + char hashed[MAP_SHARE_PATH_SIZE]; + char path[MAP_SHARE_PATH_SIZE]; + short base_length = (short)csstrlen(naming->name); + char const *loaded = custom_edition_cache_loaded_path(); + + csprintf(path, "%s%s.map", naming->folder, naming->name); + /* (in use: named another time) */ + if (loaded && !csstrcasecmp(loaded, path)) + return; + naming_remember(naming_key(naming->folder, naming->name)); + if (job->failed) + { + error(_error_silent, "map sharing: '%s' could not be read to name it for its hash", path); + return; + } + map_share_hash_digits(job->hash, digits); + base_length = (short)MIN(base_length, MAXIMUM_MAP_NAME_LENGTH - MAP_SHARE_NAME_DIGITS - 1); + csmemcpy(hashed, naming->name, base_length); + csprintf(hashed + base_length, "_%s", digits); + if (!rename_beside(naming->folder, naming->name, hashed, ".map")) + { + error(_error_silent, "map sharing: '%s' was not renamed %s.map (that file exists, or this one is in use)", + path, hashed); + return; + } + rename_beside(naming->folder, naming->name, hashed, ".bmp"); + rename_beside(naming->folder, naming->name, hashed, ".txt"); + error(_error_silent, "map sharing: %s.map is now %s.map, named for its hash", naming->name, hashed); + custom_edition_maps_look_again(); +} + +void map_share_level_name_hash( + char *level_name, + long size) +{ + struct naming naming; + struct hash_job job; + char path[MAP_SHARE_PATH_SIZE]; + char const *name; + char const *hashed; + + if (!level_name || !custom_edition_level_name(level_name)) + return; + name = tag_name_strip_path(level_name); + if (map_share_name_hashed(name) || !custom_edition_map_file_path(level_name, path)) + return; + /* (the file's own name, which may have its hash already) */ + hashed = tag_name_strip_path(path); + if (_strnicmp(path, CUSTOM_EDITION_MAP_DIRECTORY, csstrlen(CUSTOM_EDITION_MAP_DIRECTORY)) || + strchr(path + csstrlen(CUSTOM_EDITION_MAP_DIRECTORY), '\\')) + { + return; + } + if (!map_share_name_hashed(name) && csstrlen(hashed) > 4 && csstrlen(hashed) - 4 == csstrlen(name) && + !_strnicmp(hashed, name, csstrlen(name))) + { + /* named now: hashed here (a map's hash takes a fraction of a second + to work out) and renamed, unless it is loaded */ + csmemset(&naming, 0, sizeof(naming)); + csmemset(&job, 0, sizeof(job)); + csstrncpy(naming.folder, CUSTOM_EDITION_MAP_DIRECTORY, sizeof(naming.folder) - 1); + csstrncpy(naming.name, name, sizeof(naming.name) - 1); + csstrncpy(job.path, path, sizeof(job.path) - 1); + hash_job_run(&job); + naming_finish(&naming, &job); + free(job.piece_hashes); + if (!custom_edition_map_file_path(level_name, path)) + return; + hashed = tag_name_strip_path(path); + } + /* the level name of the file found: custom_maps\_ */ + if (csstrlen(hashed) <= 4 || csstrlen(CUSTOM_EDITION_LEVEL_NAME_PREFIX) + csstrlen(hashed) - 4 >= (unsigned long)size) + return; + csprintf(level_name, "%s%.*s", CUSTOM_EDITION_LEVEL_NAME_PREFIX, (int)(csstrlen(hashed) - 4), hashed); + if (!map_share_name_hashed(tag_name_strip_path(level_name))) + return; + error(_error_silent, "map sharing: the game's map is %s", level_name); +} + +/* ---------- the hashing thread's work */ + +void map_share_files_update( + void) +{ + struct map_share_files_globals *globals = &map_share_files_globals; + short index; + + if (globals->thread) + { + if (!thread_has_exited(globals->thread)) + return; + dispose_thread(globals->thread); + globals->thread = NULL; + switch (globals->job_type) + { + case _hash_job_file: + { + struct map_share_file *file = map_share_file_get((short)globals->job_owner); + + /* (replaced meanwhile: the catalog's file is another's now) */ + if (file && !csstrcasecmp(file->path, globals->job.path)) + { + /* (changed meanwhile: hashed again) */ + if (globals->job.failed || globals->job.size != file->size) + { + file->failed = globals->job.failed; + free(globals->job.piece_hashes); + } + else + { + file->piece_count = globals->job.piece_count; + file->piece_hashes = globals->job.piece_hashes; + csmemcpy(file->hash, globals->job.hash, MAP_SHARE_HASH_BYTES); + file->ready = TRUE; + } + } + else + { + free(globals->job.piece_hashes); + } + break; + } + case _hash_job_name: + naming_finish(&globals->job_naming, &globals->job); + free(globals->job.piece_hashes); + break; + case _hash_job_pieces: + free(globals->pieces_hashes); + globals->pieces_done = TRUE; + globals->pieces_done_owner = globals->job_owner; + globals->pieces_hashes = globals->job.failed ? NULL : globals->job.piece_hashes; + globals->pieces_count = globals->job.failed ? 0 : globals->job.piece_count; + globals->pieces_size = globals->job.size; + break; + } + globals->job.piece_hashes = NULL; + globals->job_type = _hash_job_none; + } + + /* the next: a download's pieces, a file to share, then a map to name */ + if (globals->pieces_wanted) + { + globals->pieces_wanted = FALSE; + if (!hash_job_start(_hash_job_pieces, globals->pieces_path, globals->pieces_owner)) + { + globals->pieces_done = TRUE; + globals->pieces_done_owner = globals->pieces_owner; + globals->pieces_hashes = NULL; + globals->pieces_count = 0; + } + return; + } + for (index = 0; index < MAXIMUM_SHARE_FILES; index++) + { + struct map_share_file *file = &globals->files[index]; + + if (file->used && !file->ready && !file->failed) + { + if (!hash_job_start(_hash_job_file, file->path, index)) + file->failed = TRUE; + return; + } + } + while (globals->naming_count > 0) + { + char path[MAP_SHARE_PATH_SIZE]; + + globals->job_naming = globals->naming_queue[0]; + globals->naming_count--; + csmemmove(&globals->naming_queue[0], &globals->naming_queue[1], + globals->naming_count * sizeof(globals->naming_queue[0])); + if (csstrlen(globals->job_naming.folder) + csstrlen(globals->job_naming.name) + 4 >= MAP_SHARE_PATH_SIZE) + continue; + csprintf(path, "%s%s.map", globals->job_naming.folder, globals->job_naming.name); + if (hash_job_start(_hash_job_name, path, NONE)) + return; + } +} diff --git a/port/linux/game/menu_functions.c b/port/linux/game/menu_functions.c index decd603433..85afcd21a8 100644 --- a/port/linux/game/menu_functions.c +++ b/port/linux/game/menu_functions.c @@ -2839,10 +2839,11 @@ static char const *const server_settings_gametype_rows[] = /* the most players a co-op game hosted starts with (maximum_players') */ #define COOPERATIVE_DEFAULT_PLAYERS 16 /* Server Setup's help for co-op's options' rows (CO-OP OPTIONS, VOICE AND -VOTING), and PASSWORD's (its help_strings, tools/port_settings.py) */ +VOTING), PASSWORD's and MAP SHARING's (its help_strings, tools/port_settings.py) */ #define COOPERATIVE_OPTIONS_HELP 12 #define COOPERATIVE_VOICE_OPTIONS_HELP 13 #define SERVER_PASSWORD_HELP 14 +#define MAP_SHARE_OPTIONS_HELP 15 /* co-op's EXTRA ENEMIES' choices (network.coop_enemies_mode's values, as gametype_options' coop_extra_enemies_spinner has them, in this order): its @@ -2982,6 +2983,9 @@ static void server_settings_update(struct widget_instance *list) help->parameters.text_box.string_list_index = COOPERATIVE_OPTIONS_HELP; else if (help && list->focused_child == named(list, "op_voice_options", 0)) help->parameters.text_box.string_list_index = COOPERATIVE_VOICE_OPTIONS_HELP; + /* (MAP SHARING's, any game's: map_share.c) */ + else if (help && list->focused_child == named(list, "op_map_share_options", 0)) + help->parameters.text_box.string_list_index = MAP_SHARE_OPTIONS_HELP; } } /* LISTING (an internet game's): PUBLIC, listed in everyone's server @@ -4748,6 +4752,11 @@ static struct gametype_option const gametype_options[] = { "2", "4", "8", "16", "32" } }, { "coop_player_collisions_spinner", _option_setting, 0, 0, 2, { 0 }, "network.coop_player_collisions", { "true", "false" } }, + /* map sharing's (Server Setup's MAP SHARING: tools/port_settings.py's + MAP_SHARE_SETUP; map_share.c) */ + { "map_share_spinner", _option_setting, 0, 0, 2, { 0 }, "network.map_share", { "true", "false" } }, + { "map_share_upload_spinner", _option_setting, 0, 0, 6, { 0 }, "network.map_share_upload", + { "256", "512", "1024", "2048", "4096", "8192" } }, /* vehicle options (the side's set and counts: vehicles_update) */ { "vehicles_respawn_spinner", _option_short, OPTIONS_FIELD(vehicle_respawn_time), 0, 7, { 0, 30, 60, 90, 120, 180, 300 } }, diff --git a/port/linux/game/network_distributed.c b/port/linux/game/network_distributed.c index 76dce7a426..d53964ccaf 100644 --- a/port/linux/game/network_distributed.c +++ b/port/linux/game/network_distributed.c @@ -64,6 +64,7 @@ machine (their datum identifiers need not be). #include "main/main.h" #include "game/player_queues_new.h" #include "networking/network_game_globals.h" +#include "networking/network_connection.h" #include "objects/objects.h" #include "objects/damage.h" #include "scenario/scenario.h" @@ -75,6 +76,7 @@ machine (their datum identifiers need not be). #include "network_coop.h" #include "network_distributed.h" #include "network_voice.h" +#include "map_share.h" #include "profile_sections.h" #include @@ -3976,6 +3978,14 @@ void network_distributed_handle_message( network_voice_handle_message(machine_index, message, size); return; } + /* (map sharing's, in the lobby too, over the host's connection alone: + map_share.c) */ + if (map_share_handles_message(message, size)) + { + map_share_handle_message(machine_index, message, size, machine_index != NONE ? + distributed_handling_stream_message : !network_connection_last_read_was_unreliable()); + return; + } /* (none between games: loading, or in the menus) */ if (size < sizeof(header) || !game_in_progress()) return; diff --git a/port/linux/game/network_distributed.h b/port/linux/game/network_distributed.h index 0ba551911c..097fc599f8 100644 --- a/port/linux/game/network_distributed.h +++ b/port/linux/game/network_distributed.h @@ -118,6 +118,13 @@ enum _distributed_message_voice_up = 80, _distributed_message_voice_down = 81, _distributed_message_voice_config = 82, + /* map sharing (map_share.c), in the lobby too, reliably: a client's + request for the game's map, the host's offer (the files, their sizes and + hashes) and the machines that may have them, and the client's progress */ + _distributed_message_map_share_request = 83, + _distributed_message_map_share_offer = 84, + _distributed_message_map_share_sources = 85, + _distributed_message_map_share_progress = 86, NUMBER_OF_DISTRIBUTED_MESSAGES }; diff --git a/port/linux/include/halo_port_limits.h b/port/linux/include/halo_port_limits.h index 783d160681..fe7e0dcfb4 100644 --- a/port/linux/include/halo_port_limits.h +++ b/port/linux/include/halo_port_limits.h @@ -66,7 +66,7 @@ is newer (network_client_manager.c). A host advertises it, with its netcode, in its game's advertisement's reserved bytes (network_server_message_handler.c), which hosts built before there was a version send as zeros: version 0. Raise it with any change to what the machines send each other. */ -#define HALO_PORT_NETWORK_VERSION 26 +#define HALO_PORT_NETWORK_VERSION 27 /* ... the advertisement's reserved bytes: the version (a little-endian word), then flags */ #define HALO_PORT_ADVERTISED_VERSION_OFFSET 0 diff --git a/port/linux/src/p2p.c b/port/linux/src/p2p.c index 9789965a7b..b2c8cf8873 100644 --- a/port/linux/src/p2p.c +++ b/port/linux/src/p2p.c @@ -121,6 +121,8 @@ enum PEER_TIMEOUT = 20000, PUNCH_TIMEOUT = 30000, JOIN_TIMEOUT = 90000, + /* another player of the game joined, asked for (p2p_reach_player) */ + PLAYER_REACH_TIMEOUT = 30000, STREAM_LINGER_TIME = 10000, PROXY_IDLE_TIME = 60000, STUN_RETRY_INTERVAL = 500, @@ -182,6 +184,11 @@ struct peer unsigned long long receive_window; unsigned long virtual_address; int is_host; + /* (a host's: another player of its game, reached for map sharing: + p2p_reach_player) */ + int is_player; + /* the hash of its public key, which another machine reaches it by */ + unsigned char key_hash[P2P_KEY_HASH_SIZE]; int connected; /* the WebRTC connection carrying its tunnel (p2p_webrtc.c: a browser's), or -1 (the UDP tunnel) */ @@ -363,6 +370,22 @@ static struct int reported_player_count; int reported_player_maximum; + /* answering the other players of the game joined (map sharing: + p2p_set_answering_players): wanted, and doing (p2p_signal_host with the + token joined with) */ + int answer_players; + int answering_players; + /* the other players of the game joined being reached (p2p_reach_player): + the hash of each one's key, and since when */ + struct + { + int used; + int asked; + unsigned char hash[P2P_KEY_HASH_SIZE]; + unsigned char identifier[P2P_IDENTIFIER_SIZE]; + unsigned long time; + } reaching[P2P_MAXIMUM_PLAYER_JOINS]; + /* joining: until the host is reached, or JOIN_TIMEOUT */ int join_requested; int joining; @@ -904,7 +927,8 @@ static void drop_peer(struct peer *peer, const char *reason) struct retired_session *retired = &p2p.retired[p2p.retired_next++ % MAXIMUM_RETIRED_SESSIONS]; int ask_again = p2p.joining && peer->is_host && !memcmp(peer->identifier, p2p.join_host, P2P_IDENTIFIER_SIZE); - platform_log("Internet play: %s %s: %s", peer->is_host ? "host" : "player", peer->name, reason); + platform_log("Internet play: %s %s: %s", peer->is_host && !peer->is_player ? "host" : "player", peer->name, + reason); if (peer->connected) { unsigned char bye = _packet_bye; @@ -997,10 +1021,12 @@ int p2p_peer_turned_away(const unsigned char *peer_identifier, int is_host) return 1; } -int p2p_peer_offered(const unsigned char *peer_identifier, const unsigned char *secret, - const struct p2p_candidate *candidates, int count, const struct p2p_webrtc *webrtc, int is_host) +int p2p_peer_offered(const unsigned char *peer_identifier, const unsigned char *public_key, const unsigned char *secret, + const struct p2p_candidate *candidates, int count, const struct p2p_webrtc *webrtc, int offered) { struct peer *peer = find_peer(peer_identifier); + /* (a player answering as a host does: the keys of a host's session) */ + int is_host = offered != _p2p_offered_joiner; if (!memcmp(peer_identifier, identifier, P2P_IDENTIFIER_SIZE)) return 0; @@ -1033,9 +1059,11 @@ int p2p_peer_offered(const unsigned char *peer_identifier, const unsigned char * peer->receive_window = 1; peer->virtual_address = virtual_address_for(peer_identifier); peer->is_host = is_host; + peer->is_player = offered == _p2p_offered_player; + p2p_key_hash(public_key, peer->key_hash); peer->connection = -1; peer->offered_time = p2p_now(); - platform_log("Internet play: reaching %s %s%s", is_host ? "host" : "player", peer->name, + platform_log("Internet play: reaching %s %s%s", offered == _p2p_offered_host ? "host" : "player", peer->name, webrtc->kind == _p2p_webrtc_browser ? " (a browser)" : ""); } add_candidates(peer, candidates, count); @@ -1110,9 +1138,9 @@ static void peer_heard(struct peer *peer, unsigned long address, unsigned short peer->endpoint.address = address; peer->endpoint.port = port; peer->endpoint_heard_time = now; - platform_log("Internet play: connected to %s %s at %s", peer->is_host ? "host" : "player", peer->name, - address_text(address, port, text)); - if (peer->is_host) + platform_log("Internet play: connected to %s %s at %s", peer->is_host && !peer->is_player ? "host" : "player", + peer->name, address_text(address, port, text)); + if (peer->is_host && !peer->is_player) { if (p2p.joining && !memcmp(p2p.join_host, peer->identifier, P2P_IDENTIFIER_SIZE)) { @@ -1826,8 +1854,9 @@ void p2p_socket_port(int socket, int stream, int listening, unsigned short port) entry->stream = (unsigned char)(stream != 0); entry->listening |= (unsigned char)(listening != 0); } - /* the game listens for connections while it hosts */ - if (stream && listening) + /* the game listens for connections while it hosts (on any port but map + sharing's, which every player of a game listens on) */ + if (stream && listening && port != network_short(P2P_MAP_SHARE_PORT)) p2p.hosting_socket = socket; /* (and no stand-in that closed has the port now) */ forget_closed(stream != 0, port); @@ -2479,6 +2508,8 @@ static void update_joining(void) p2p.join_requested = 0; p2p.joining = 1; p2p.join_time = p2p_now(); + /* (the last game's players are not this one's) */ + memset(p2p.reaching, 0, sizeof(p2p.reaching)); p2p_hex(p2p.join_host, P2P_IDENTIFIER_SIZE, name); platform_log("Internet play: joining %s's game", name); p2p_signal_start(); @@ -2492,6 +2523,70 @@ static void update_joining(void) } } +/* the host of the game this machine joined, if the tunnel reaches it */ +static struct peer *joined_host(void) +{ + struct peer *peer = find_peer(p2p.join_host); + + return peer && peer->connected && peer->is_host && !peer->is_player ? peer : NULL; +} + +/* answering the other players of the game joined (with the token joined +with), as its host does, while asked and not hosting */ +static void update_answering(void) +{ + int want = p2p.answer_players && !p2p.hosting && joined_host() != NULL; + + if (want && !p2p.answering_players) + { + p2p.answering_players = 1; + p2p_signal_start(); + p2p_signal_host(p2p.join_token); + platform_log("Internet play: the game's other players may reach this machine (map sharing)"); + } + else if (!want && p2p.answering_players) + { + p2p.answering_players = 0; + /* (hosting took the topic over) */ + if (!p2p.hosting) + p2p_signal_stop_hosting(); + } +} + +/* the other players of the game joined that are asked for: until reached, +or PLAYER_REACH_TIMEOUT */ +static void update_reaching(void) +{ + int index; + + for (index = 0; index < P2P_MAXIMUM_PLAYER_JOINS; index++) + { + struct peer *peer; + + if (!p2p.reaching[index].used) + continue; + peer = find_peer(p2p.reaching[index].identifier); + if ((peer && peer->connected) || elapsed(p2p.reaching[index].time, PLAYER_REACH_TIMEOUT) || !joined_host()) + { + if (p2p.reaching[index].asked) + p2p_signal_stop_joining_player(p2p.reaching[index].identifier); + p2p.reaching[index].used = 0; + continue; + } + /* (the offer carries the public address, if there is one) */ + if (!p2p.reaching[index].asked && stun_settled()) + { + p2p_signal_start(); + if (!p2p_signal_join_player(p2p.reaching[index].hash, p2p.join_token)) + { + p2p.reaching[index].used = 0; + continue; + } + p2p.reaching[index].asked = 1; + } + } +} + static int connected_player_count(void) { int count = 0; @@ -2586,6 +2681,95 @@ static void update_hosting(void) } } +/* ---------- map sharing between the players of a game joined */ + +int p2p_peer_key_hash(unsigned long virtual_address, unsigned char *peer_identifier, unsigned char *key_hash) +{ + struct peer *peer; + int result = 0; + + if (!p2p.running) + return 0; + pthread_mutex_lock(&p2p_lock); + peer = find_peer_by_address(virtual_address); + if (peer) + { + memcpy(peer_identifier, peer->identifier, P2P_IDENTIFIER_SIZE); + memcpy(key_hash, peer->key_hash, P2P_KEY_HASH_SIZE); + result = 1; + } + pthread_mutex_unlock(&p2p_lock); + return result; +} + +void p2p_set_answering_players(int on) +{ + /* (only the game's thread writes it: unchanged, it need not wait for the + lock) */ + if (!p2p.running || !on == !p2p.answer_players) + return; + pthread_mutex_lock(&p2p_lock); + p2p.answer_players = on != 0; + pthread_mutex_unlock(&p2p_lock); +} + +int p2p_reach_player(const unsigned char *key_hash) +{ + unsigned char peer_identifier[P2P_IDENTIFIER_SIZE]; + int free_index = -1; + int result = 0; + int index; + + if (!p2p.running) + return 0; + p2p_identifier_from_hash(key_hash, peer_identifier); + pthread_mutex_lock(&p2p_lock); + if (!memcmp(peer_identifier, identifier, P2P_IDENTIFIER_SIZE) || !joined_host()) + { + pthread_mutex_unlock(&p2p_lock); + return 0; + } + /* (reached, or being reached: by its offer, or by the request below) */ + if (find_peer(peer_identifier)) + result = 1; + for (index = 0; index < P2P_MAXIMUM_PLAYER_JOINS && !result; index++) + { + if (p2p.reaching[index].used && !memcmp(p2p.reaching[index].hash, key_hash, P2P_KEY_HASH_SIZE)) + result = 1; + else if (!p2p.reaching[index].used && free_index < 0) + free_index = index; + } + if (!result && free_index >= 0) + { + memset(&p2p.reaching[free_index], 0, sizeof(p2p.reaching[free_index])); + p2p.reaching[free_index].used = 1; + memcpy(p2p.reaching[free_index].hash, key_hash, P2P_KEY_HASH_SIZE); + memcpy(p2p.reaching[free_index].identifier, peer_identifier, P2P_IDENTIFIER_SIZE); + p2p.reaching[free_index].time = p2p_now(); + result = 1; + } + pthread_mutex_unlock(&p2p_lock); + return result; +} + +int p2p_peer_reached(const unsigned char *peer_identifier, unsigned long *address) +{ + struct peer *peer; + int result = 0; + + if (!p2p.running) + return 0; + pthread_mutex_lock(&p2p_lock); + peer = find_peer(peer_identifier); + if (peer && peer->connected) + { + *address = peer->virtual_address; + result = 1; + } + pthread_mutex_unlock(&p2p_lock); + return result; +} + void p2p_set_hosting_allowed(int allowed) { pthread_mutex_lock(&p2p_lock); @@ -3161,6 +3345,8 @@ static void *p2p_thread(void *unused) } } update_joining(); + update_answering(); + update_reaching(); update_upnp(); p2p_discord_update(); #ifdef HALO_ANDROID diff --git a/port/linux/src/p2p.h b/port/linux/src/p2p.h index 682a305ff6..52d77153e1 100644 --- a/port/linux/src/p2p.h +++ b/port/linux/src/p2p.h @@ -180,4 +180,39 @@ virtual address (network byte order): where its packets come from; 0 if it is no peer's */ unsigned long p2p_peer_endpoint_address(unsigned long virtual_address); +/* ---- map sharing between the players of a game (port/linux/game/map_share.c) + +The players of an internet game reach its host alone. To share a map they +reach each other too: a host tells a player the key hash of another, which +answers holders of the invite it joined with as its host does (only while +answering), and the player asks it for a session as it asked the host. */ + +enum +{ + /* the hash of a machine's public key, which reaches it */ + P2P_PLAYER_KEY_HASH_SIZE = 16, + /* the port each machine takes the others' map sharing connections on: + its game listens there without hosting */ + P2P_MAP_SHARE_PORT = 5153, +}; + +/* the identifier (6 bytes) and key hash of the internet play peer of this +virtual address (network byte order): 0 if it is no peer's */ +int p2p_peer_key_hash(unsigned long virtual_address, unsigned char *identifier, unsigned char *key_hash); +/* whether this machine, a player of an internet game (not its host), +answers the game's other players: holders of the invite it joined with */ +void p2p_set_answering_players(int on); +/* asks for a session with another player of the internet game this +machine joined, whose key has this hash (as the game's host told), if there +is none: nonzero if there is one, or it is asked for (for some seconds, or +until reached; asked again, it is asked for anew) */ +int p2p_reach_player(const unsigned char *key_hash); +/* whether the tunnel reaches the machine with this identifier, and the +virtual address (network byte order) the game reaches it at */ +int p2p_peer_reached(const unsigned char *identifier, unsigned long *address); + +/* BLAKE2b with a 32-byte digest (Monocypher's): a map's pieces +(map_share.c) */ +void p2p_blake2b_256(const void *data, unsigned long size, unsigned char *digest); + #endif diff --git a/port/linux/src/p2p_crypto.c b/port/linux/src/p2p_crypto.c index 935c00a36e..3ddcc2afc1 100644 --- a/port/linux/src/p2p_crypto.c +++ b/port/linux/src/p2p_crypto.c @@ -715,3 +715,10 @@ void p2p_webrtc_credentials(const unsigned char *secret, char *ufrag, char *pass p2p_hmac_sha256(secret, P2P_SHA256_SIZE, "webrtc ice-pwd", 14, digest); p2p_hex(digest, 16, password); } + +/* ---------- BLAKE2b (Monocypher's): map sharing's pieces (map_share.c) */ + +void p2p_blake2b_256(const void *data, unsigned long size, unsigned char *digest) +{ + crypto_blake2b(digest, 32, (const uint8_t *)data, (size_t)size); +} diff --git a/port/linux/src/p2p_internal.h b/port/linux/src/p2p_internal.h index dfd59bc8d9..3bd8328959 100644 --- a/port/linux/src/p2p_internal.h +++ b/port/linux/src/p2p_internal.h @@ -31,6 +31,22 @@ enum /* the most machines one tunnels to: a host and the rest of a system link game's 128 machines (include/halo_port_limits.h) */ P2P_MAXIMUM_PEERS = 127, + /* the other players of its game a machine asks to reach at once + (p2p_reach_player) */ + P2P_MAXIMUM_PLAYER_JOINS = 8, +}; + +typedef char p2p_player_key_hash_size_assert[P2P_PLAYER_KEY_HASH_SIZE == P2P_KEY_HASH_SIZE ? 1 : -1]; + +/* who offered a session (p2p_peer_offered): a joiner (to this machine, +hosting or answering its game's players), the invite's host, or another +player of the host's game this machine asked for (p2p_reach_player), which +answers as a host does */ +enum +{ + _p2p_offered_joiner, + _p2p_offered_host, + _p2p_offered_player, }; typedef char p2p_listing_invite_size_assert[P2P_LISTING_INVITE_SIZE == P2P_LINK_SIZE ? 1 : -1]; @@ -85,13 +101,14 @@ void p2p_identifier_from_hash(const unsigned char *hash, unsigned char *identifi lets go of the p2p lock while it works it out */ int p2p_shared_secret(const unsigned char *public_key, unsigned char *shared); /* a joiner (on the host) or the host (on a joiner) offered its addresses and -its WebRTC through signalling, with the secret of a session (P2P_SHA256_SIZE bytes) its -tunnel's keys come from; the tunnel starts reaching it. Returns 0 if it was -turned away: another session with that machine lives (it must lapse first), -this one has ended, or there is no room */ +its WebRTC through signalling, with its public key and the secret of a +session (P2P_SHA256_SIZE bytes) its tunnel's keys come from; the tunnel +starts reaching it. offered is who it is (_p2p_offered_*). Returns 0 if it +was turned away: another session with that machine lives (it must lapse +first), this one has ended, or there is no room */ struct p2p_webrtc; -int p2p_peer_offered(const unsigned char *identifier, const unsigned char *secret, - const struct p2p_candidate *candidates, int count, const struct p2p_webrtc *webrtc, int is_host); +int p2p_peer_offered(const unsigned char *identifier, const unsigned char *public_key, const unsigned char *secret, + const struct p2p_candidate *candidates, int count, const struct p2p_webrtc *webrtc, int offered); /* whether p2p_peer_offered would turn a new session with that machine away now (it is this machine, a session with it lives, there is no room, or, as a host, too many players are being reached): checked before its secret is @@ -128,6 +145,13 @@ asks anew, with a new nonce (as after the session with the host ended before the tunnel reached it: the host makes one session of a request) */ void p2p_signal_join(const unsigned char *host_hash, const unsigned char *token); void p2p_signal_stop_joining(void); +/* ... and another player of the host's game (whose key has this hash, as +the host told), which answers holders of the token as its host does +(p2p_signal_host with the token it joined with), alongside the request to +the host; 0 if there is no room, or the request to the host is of another +token. Stopped by its identifier */ +int p2p_signal_join_player(const unsigned char *player_hash, const unsigned char *token); +void p2p_signal_stop_joining_player(const unsigned char *identifier); /* whether any broker is connected */ int p2p_signal_connected(void); /* every broker's connection made anew at once: after the p2p thread was diff --git a/port/linux/src/p2p_signal.c b/port/linux/src/p2p_signal.c index efcaac1ebb..4d4173968f 100644 --- a/port/linux/src/p2p_signal.c +++ b/port/linux/src/p2p_signal.c @@ -83,6 +83,9 @@ enum /* the joiners a host made sessions for, so a repeated request gets the same session: as many as it takes */ MAXIMUM_JOINERS = P2P_MAXIMUM_PEERS + 1, + /* the requests to join a machine makes at once: the invite's host, and + other players of its game (p2p_signal_join_player) */ + MAXIMUM_JOINS = 1 + P2P_MAXIMUM_PLAYER_JOINS, /* the nonces of an asker's key it keeps the answer times of */ ASKER_NONCES = 4, /* the requests not proven yet whose keys' work a host keeps, one a key; @@ -273,6 +276,29 @@ struct joiner int used; }; +/* a request to join: to the invite's host, or to another player of its +game (who answers as a host does) */ +struct join +{ + int active; + /* the identifier of the machine asked, and the hash of its key (the + invite's, or as the game's host told) */ + unsigned char host[P2P_IDENTIFIER_SIZE]; + unsigned char host_hash[P2P_KEY_HASH_SIZE]; + unsigned char nonce[NONCE_SIZE]; + /* its public key, once it answered, and pair_base's */ + int has_base; + unsigned char host_public[P2P_KEY_SIZE]; + unsigned char base[P2P_SHA256_SIZE]; + char host_topic[TOPIC_SIZE]; + unsigned long sent_time; + /* when nonce was made, and whether the machine answered it (with + host_nonce, which the proof carries) */ + unsigned long nonce_time; + int answered; + unsigned char host_nonce[NONCE_SIZE]; +}; + /* work allowed: some at once, and one more each interval */ struct budget { @@ -329,24 +355,13 @@ static struct struct budget key_work; struct budget unproven_answers; - /* joining: the host's identifier, and the hash of its key (the invite's) */ - int joining; - unsigned char join_host[P2P_IDENTIFIER_SIZE]; - unsigned char join_host_hash[P2P_KEY_HASH_SIZE]; + /* joining: the invite's host (joins[0]), and the other players of its + game this machine asks for as their host does for it (p2p_signal_join_player); + all of one token, whose answers come to one topic */ + struct join joins[MAXIMUM_JOINS]; + unsigned char join_token[P2P_TOKEN_SIZE]; unsigned char join_key[P2P_SHA256_SIZE]; - unsigned char join_nonce[NONCE_SIZE]; - /* the host's public key, once it answered, and pair_base's */ - int join_has_base; - unsigned char join_host_public[P2P_KEY_SIZE]; - unsigned char join_base[P2P_SHA256_SIZE]; - char join_host_topic[TOPIC_SIZE]; char join_topic[TOPIC_SIZE]; - unsigned long join_sent_time; - /* when join_nonce was made, and whether the host answered it (with - join_host_nonce, which its proof carries) */ - unsigned long join_nonce_time; - int join_answered; - unsigned char join_host_nonce[NONCE_SIZE]; } signalling; static int elapsed(unsigned long since, unsigned long time) @@ -384,6 +399,10 @@ static int budget_left(struct budget *budget, int maximum, int interval, int spe return 1; } +static int joins_active(void); +static void send_join(struct join *join); +static void sync_all_topics(void); + /* ---------- what is derived from a token */ static void derive(const unsigned char *token, const char *label, const unsigned char *identifier, @@ -660,7 +679,7 @@ static void broker_sync_topics(struct broker *broker) if (broker->state != _broker_ready) return; wanted[_topic_host] = signalling.hosting ? signalling.host_topic : ""; - wanted[_topic_join] = signalling.joining ? signalling.join_topic : ""; + wanted[_topic_join] = joins_active() ? signalling.join_topic : ""; wanted[_topic_own_slot] = lobby && signalling.lobby_listed ? signalling.own_slot : ""; wanted[_topic_query] = lobby && signalling.lobby_listed ? P2P_LOBBY_QUERY_TOPIC : ""; wanted[_topic_slots] = lobby && signalling.lobby_browsing ? P2P_LOBBY_SLOT_PREFIX "+" : ""; @@ -1047,7 +1066,7 @@ static int host_nonce_current(const unsigned char *public_key, const unsigned ch /* ---------- the messages */ -static void send_join(void) +static void send_join(struct join *join) { unsigned char message[MAXIMUM_MESSAGE_SIZE]; unsigned char sealed[MAXIMUM_MESSAGE_SIZE + P2P_SEAL_OVERHEAD]; @@ -1057,21 +1076,49 @@ static void send_join(void) message[size++] = MESSAGE_VERSION; memcpy(message + size, p2p_public_key(), P2P_KEY_SIZE); size += P2P_KEY_SIZE; - memcpy(message + size, signalling.join_nonce, NONCE_SIZE); + memcpy(message + size, join->nonce, NONCE_SIZE); size += NONCE_SIZE; - size += put_addresses(message + size, signalling.join_host, 1); + size += put_addresses(message + size, join->host, 1); /* answered: the proof that this machine holds its key, of which the host makes the session */ - if (signalling.join_answered) + if (join->answered) { - memcpy(message + size, signalling.join_host_nonce, NONCE_SIZE); + memcpy(message + size, join->host_nonce, NONCE_SIZE); size += NONCE_SIZE; - message_tag(signalling.join_base, "join", message, size, message + size); + message_tag(join->base, "join", message, size, message + size); size += TAG_SIZE; } size = p2p_seal(signalling.join_key, message, size, sealed); - publish_everywhere(signalling.join_host_topic, sealed, size); - signalling.join_sent_time = p2p_now(); + publish_everywhere(join->host_topic, sealed, size); + join->sent_time = p2p_now(); +} + +/* whether any request to join is under way */ +static int joins_active(void) +{ + int index; + + for (index = 0; index < MAXIMUM_JOINS; index++) + { + if (signalling.joins[index].active) + return 1; + } + return 0; +} + +/* starts a request to the machine whose key has this hash, with a new +nonce (the host makes one session of a request) */ +static void join_start(struct join *join, const unsigned char *host_hash) +{ + memset(join, 0, sizeof(*join)); + memcpy(join->host_hash, host_hash, P2P_KEY_HASH_SIZE); + p2p_identifier_from_hash(host_hash, join->host); + make_topic(signalling.join_token, "host", join->host, join->host_topic); + posix_random_bytes(join->nonce, NONCE_SIZE); + join->nonce_time = p2p_now(); + join->active = 1; + sync_all_topics(); + send_join(join); } /* the request of a key and nonce (NULL: any) in a list */ @@ -1286,7 +1333,7 @@ static void join_received(struct broker *broker, const unsigned char *message, i if (signalling.used_request_count == MAXIMUM_USED_REQUESTS && !elapsed(used->time, USED_REQUEST_TIME)) return; session_secret(base, nonce, host_nonce, secret); - if (!p2p_peer_offered(identifier, secret, candidates, count, &webrtc, 0)) + if (!p2p_peer_offered(identifier, public_key, secret, candidates, count, &webrtc, _p2p_offered_joiner)) return; memcpy(used->request, request, sizeof(request)); used->time = p2p_now(); @@ -1308,7 +1355,7 @@ static void join_received(struct broker *broker, const unsigned char *message, i send_accept(broker, identifier, nonce, host_nonce, base, 1); } -/* the joiner: the host answered */ +/* the joiner: the host (or the player) asked answered */ static void accept_received(const unsigned char *message, int size) { struct p2p_candidate candidates[P2P_MAXIMUM_CANDIDATES]; @@ -1319,44 +1366,57 @@ static void accept_received(const unsigned char *message, int size) const unsigned char *nonce = host_public + P2P_KEY_SIZE; const unsigned char *host_nonce = nonce + NONCE_SIZE; int fixed = 2 + P2P_KEY_SIZE + 2 * NONCE_SIZE; + struct join *join = NULL; int count; + int index; - if (size < fixed + 1 + TAG_SIZE || memcmp(nonce, signalling.join_nonce, NONCE_SIZE)) + if (size < fixed + 1 + TAG_SIZE) + return; + /* (the request it answers: by its nonce) */ + for (index = 0; index < MAXIMUM_JOINS && !join; index++) + { + if (signalling.joins[index].active && !memcmp(nonce, signalling.joins[index].nonce, NONCE_SIZE)) + join = &signalling.joins[index]; + } + if (!join) return; /* the first answer to the request holds: the proof carries its host nonce (the host's changes every HOST_NONCE_PERIOD) */ - if (signalling.join_answered && (memcmp(host_public, signalling.join_host_public, P2P_KEY_SIZE) || - memcmp(host_nonce, signalling.join_host_nonce, NONCE_SIZE))) + if (join->answered && (memcmp(host_public, join->host_public, P2P_KEY_SIZE) || + memcmp(host_nonce, join->host_nonce, NONCE_SIZE))) { return; } - /* the invite's host: its key has the hash in the invite */ + /* the machine asked: its key has the hash in the invite (or the one + the game's host told) */ p2p_key_hash(host_public, hash); - if (memcmp(hash, signalling.join_host_hash, P2P_KEY_HASH_SIZE)) + if (memcmp(hash, join->host_hash, P2P_KEY_HASH_SIZE)) return; - if (!signalling.join_has_base || memcmp(signalling.join_host_public, host_public, P2P_KEY_SIZE)) + if (!join->has_base || memcmp(join->host_public, host_public, P2P_KEY_SIZE)) { - if (!pair_base(p2p_public_key(), host_public, host_public, signalling.join_base)) + if (!pair_base(p2p_public_key(), host_public, host_public, join->base)) return; - memcpy(signalling.join_host_public, host_public, P2P_KEY_SIZE); - signalling.join_has_base = 1; + memcpy(join->host_public, host_public, P2P_KEY_SIZE); + join->has_base = 1; } /* and the answer is its */ - if (!tag_right(signalling.join_base, "accept", message, size)) + if (!tag_right(join->base, "accept", message, size)) return; if (get_addresses(message + fixed, size - TAG_SIZE - fixed, candidates, &count, &webrtc) != size - TAG_SIZE - fixed) { return; } - session_secret(signalling.join_base, nonce, host_nonce, secret); - if (!p2p_peer_offered(signalling.join_host, secret, candidates, count, &webrtc, 1) || - signalling.join_answered) + session_secret(join->base, nonce, host_nonce, secret); + if (!p2p_peer_offered(join->host, host_public, secret, candidates, count, &webrtc, + join == &signalling.joins[0] ? _p2p_offered_host : _p2p_offered_player) || join->answered) + { return; - memcpy(signalling.join_host_nonce, host_nonce, NONCE_SIZE); - signalling.join_answered = 1; + } + memcpy(join->host_nonce, host_nonce, NONCE_SIZE); + join->answered = 1; /* the proof, at once */ - send_join(); + send_join(join); } static void publish_received(struct broker *broker, const char *topic, const unsigned char *payload, int size, @@ -1383,7 +1443,7 @@ static void publish_received(struct broker *broker, const char *topic, const uns if (message_size >= 2 && message[0] == _message_join && message[1] == MESSAGE_VERSION) join_received(broker, message, message_size); } - else if (signalling.joining && !strcmp(topic, signalling.join_topic)) + else if (joins_active() && !strcmp(topic, signalling.join_topic)) { message_size = p2p_open(signalling.join_key, payload, size, message); if (message_size >= 2 && message[0] == _message_accept && message[1] == MESSAGE_VERSION) @@ -1491,9 +1551,16 @@ static int broker_acknowledged(struct broker *broker, const unsigned char *body, broker->publish_tokens = PUBLISH_BURST; broker->publish_time = p2p_now(); broker_sync_topics(broker); - /* a joiner's first request need not wait for the next repeat */ - if (signalling.joining) - send_join(); + /* a joiner's first requests need not wait for the next repeat */ + { + int index; + + for (index = 0; index < MAXIMUM_JOINS; index++) + { + if (signalling.joins[index].active) + send_join(&signalling.joins[index]); + } + } return 1; } @@ -1822,14 +1889,21 @@ void p2p_signal_update(const int *read, int read_count, const int *write, int wr } broker_update_lobby(broker); } - if (signalling.joining && !signalling.join_answered && elapsed(signalling.join_nonce_time, UNANSWERED_TIME)) + for (index = 0; index < MAXIMUM_JOINS; index++) { - posix_random_bytes(signalling.join_nonce, NONCE_SIZE); - signalling.join_nonce_time = p2p_now(); - send_join(); + struct join *join = &signalling.joins[index]; + + if (!join->active) + continue; + if (!join->answered && elapsed(join->nonce_time, UNANSWERED_TIME)) + { + posix_random_bytes(join->nonce, NONCE_SIZE); + join->nonce_time = p2p_now(); + send_join(join); + } + if (elapsed(join->sent_time, JOIN_INTERVAL)) + send_join(join); } - if (signalling.joining && elapsed(signalling.join_sent_time, JOIN_INTERVAL)) - send_join(); } int p2p_signal_connected(void) @@ -1893,28 +1967,72 @@ void p2p_signal_stop_hosting(void) void p2p_signal_join(const unsigned char *host_hash, const unsigned char *token) { - memcpy(signalling.join_host_hash, host_hash, P2P_KEY_HASH_SIZE); - p2p_identifier_from_hash(host_hash, signalling.join_host); + int index; + + /* (the requests to the last game's players end: they hold another + token, whose answers come to another topic) */ + for (index = 1; index < MAXIMUM_JOINS; index++) + signalling.joins[index].active = 0; + memcpy(signalling.join_token, token, P2P_TOKEN_SIZE); derive(token, "seal", NULL, signalling.join_key); - make_topic(token, "host", signalling.join_host, signalling.join_host_topic); make_topic(token, "joiner", p2p_identifier(), signalling.join_topic); /* (new each time: the host makes one session of a request; a browser's connection for the last goes, unless a session took it up) */ p2p_webrtc_new_request(); - posix_random_bytes(signalling.join_nonce, NONCE_SIZE); - signalling.join_nonce_time = p2p_now(); - signalling.join_answered = 0; - signalling.joining = 1; - sync_all_topics(); - send_join(); + join_start(&signalling.joins[0], host_hash); } void p2p_signal_stop_joining(void) { - signalling.joining = 0; + signalling.joins[0].active = 0; sync_all_topics(); } +int p2p_signal_join_player(const unsigned char *player_hash, const unsigned char *token) +{ + struct join *free_join = NULL; + int index; + + /* (another token's requests would be answered on another topic) */ + if (signalling.joins[0].active && memcmp(token, signalling.join_token, P2P_TOKEN_SIZE)) + return 0; + for (index = 1; index < MAXIMUM_JOINS; index++) + { + struct join *join = &signalling.joins[index]; + + if (join->active && !memcmp(join->host_hash, player_hash, P2P_KEY_HASH_SIZE)) + return 1; + if (!join->active && !free_join) + free_join = join; + } + if (!free_join) + return 0; + if (!joins_active() || memcmp(token, signalling.join_token, P2P_TOKEN_SIZE)) + { + memcpy(signalling.join_token, token, P2P_TOKEN_SIZE); + derive(token, "seal", NULL, signalling.join_key); + make_topic(token, "joiner", p2p_identifier(), signalling.join_topic); + for (index = 1; index < MAXIMUM_JOINS; index++) + signalling.joins[index].active = 0; + } + join_start(free_join, player_hash); + return 1; +} + +void p2p_signal_stop_joining_player(const unsigned char *identifier) +{ + int index; + + for (index = 1; index < MAXIMUM_JOINS; index++) + { + if (signalling.joins[index].active && !memcmp(signalling.joins[index].host, identifier, P2P_IDENTIFIER_SIZE)) + { + signalling.joins[index].active = 0; + sync_all_topics(); + } + } +} + void p2p_signal_lobby_topics(int listed, int browsing) { signalling.lobby_listed = listed; diff --git a/port/linux/src/port_config.c b/port/linux/src/port_config.c index 269f39cd85..a57e5e5bf2 100644 --- a/port/linux/src/port_config.c +++ b/port/linux/src/port_config.c @@ -415,6 +415,28 @@ static const struct config_setting config_settings[] = _platform_all, "Hosting: the minutes a player kicked by a vote cannot join again (1 to\n" "1440)." }, + { "network.map_share", _config_boolean, "true", "HALO_NET_MAP_SHARE", _environment_value, _platform_all, + "Hosting: send a player who joins without the game's Custom Edition map\n" + "the map (from custom_maps), and the resource maps it needs that the\n" + "player lacks (bitmaps.map, sounds.map, loc.map). The game's other\n" + "players help (network.map_seed)." }, + { "network.map_share_upload", _config_integer, "1024", "HALO_NET_MAP_SHARE_UPLOAD", _environment_value, + _platform_all, + "Hosting: the most kilobytes a second the host sends of maps (16 to\n" + "65536), so that the game's own traffic keeps the rest of the upload." }, + { "network.map_seed", _config_boolean, "true", "HALO_NET_MAP_SEED", _environment_value, _platform_all, + "Playing in another's game: help send its map to players who join\n" + "without it, as a torrent's peers do (the pieces this machine has, at\n" + "most network.map_seed_upload)." }, + { "network.map_seed_upload", _config_integer, "256", "HALO_NET_MAP_SEED_UPLOAD", _environment_value, + _platform_all, + "Playing in another's game: the most kilobytes a second this machine\n" + "sends of maps to other players (16 to 65536)." }, + { "network.map_download", _config_boolean, "true", "HALO_NET_MAP_DOWNLOAD", _environment_value, _platform_all, + "Joining a game on a Custom Edition map this machine does not have:\n" + "download it (and the resource maps it needs) from the game's players\n" + "into custom_maps, if its host shares it (network.map_share); false\n" + "leaves the game, saying which map is missing." }, { "network.coop_public", _config_boolean, "false", "HALO_NET_COOP_PUBLIC", _environment_value, _platform_all, "Whether an online co-op game (Create Game > Internet, a SINGLEPLAYER\n" "map) starts as PUBLIC or, false, PRIVATE: Server Setup's LISTING in\n" diff --git a/port/tools/cache_file_report.c b/port/tools/cache_file_report.c index 8182f5394b..7d9355a594 100644 --- a/port/tools/cache_file_report.c +++ b/port/tools/cache_file_report.c @@ -177,15 +177,30 @@ static int report_custom_edition_cache( }; struct stdio_source resource_sources[NUMBER_OF_RESOURCE_MAP_TYPES]; struct resource_map resource_map_storage[NUMBER_OF_RESOURCE_MAP_TYPES]; + static char const *const resource_map_names[NUMBER_OF_RESOURCE_MAP_TYPES] = + { + "none", + "bitmaps", + "sounds", + "loc", + }; struct resource_map *resource_maps[NUMBER_OF_RESOURCE_MAP_TYPES]; struct custom_edition_load_report report; uint32_t tag_cache_bytes = CUSTOM_EDITION_TAG_CACHE_BYTES; + uint32_t needed; uint8_t *tag_cache; enum cache_file_status status; int type; memset(resource_sources, 0, sizeof(resource_sources)); memset(resource_maps, 0, sizeof(resource_maps)); + /* the resource maps its tag index says it needs (map sharing sends + them with the map) */ + status = cache_file_resource_maps_needed(source, &needed); + if (status == _cache_file_status_ok) + print_flags("resource_maps_needed", needed, resource_map_names, NUMBER_OF_RESOURCE_MAP_TYPES); + else + printf("resource_maps_needed: %s\n", cache_file_status_describe(status)); for (type = _resource_map_bitmaps; type < NUMBER_OF_RESOURCE_MAP_TYPES; type++) { char path[PATH_BYTES]; diff --git a/source/cache/cache_files.c b/source/cache/cache_files.c index 87da1fb4cc..878c9697a4 100644 --- a/source/cache/cache_files.c +++ b/source/cache/cache_files.c @@ -140,6 +140,7 @@ symbols in this file: #include "tag_schema.h" #include "custom_edition_cache.h" /* port: port/linux/game/custom_edition_cache.c */ #include "cache_file_formats.h" /* port: CUSTOM_EDITION_TAG_CACHE_BYTES */ +#include "map_share.h" /* port: port/linux/game/map_share.c */ /* ---------- constants */ @@ -1180,7 +1181,10 @@ gives (cache_files_give_time_to_precache). A Halo Custom Edition map (custom_maps\) is looked for in the Custom Edition maps folders (port/linux/game/custom_edition_cache.c), and must be the host's version (`version`, cache_files_map_version's on the host); any -other map in the game's own. */ +other map in the game's own. One this machine lacks (or whose resource maps +it lacks) is asked of the host instead, if it may be (map sharing: +port/linux/game/map_share.c): it is taken as present, and downloaded before +it is precached. */ boolean cache_files_map_present( char const *map_name, unsigned long version) @@ -1195,8 +1199,11 @@ boolean cache_files_map_present( return TRUE; if (custom_edition_level_name(map_name)) { - if (custom_edition_cache_present(map_name, version, message, sizeof(message))) + if (custom_edition_cache_present(map_name, version, message, sizeof(message)) || + map_share_download_begin(map_name, version, message)) + { return TRUE; + } } else { @@ -1247,6 +1254,10 @@ boolean cache_files_give_time_to_precache( taken for a map missing from the disc (the damaged disc error) */ if (!map_name || !map_name[0]) return FALSE; + /* port: a map being downloaded (port/linux/game/map_share.c) is not + there yet: precached once it is */ + if (map_share_downloading(map_name)) + return FALSE; if (cache_files_precache_map_loaded(map_name)) { result = TRUE; diff --git a/source/interface/interface.c b/source/interface/interface.c index e0d616f804..a55a641c7b 100644 --- a/source/interface/interface.c +++ b/source/interface/interface.c @@ -104,6 +104,7 @@ symbols in this file: #include "text/draw_string.h" #include "units/unit_definitions.h" #include "units/units.h" +#include "map_share.h" /* port: port/linux/game/map_share.c */ /* ---------- constants */ @@ -381,6 +382,8 @@ void interface_draw_fullscreen_overlays( cinematic_render(); interface_splitscreen_render(); hud_render_timer(); + /* port: a map's download (port/linux/game/map_share.c) */ + map_share_render(); terminal_draw(); main_framerate_render(); render_debug_profile(); diff --git a/source/main/main.c b/source/main/main.c index a3432233eb..bb0c0deee9 100644 --- a/source/main/main.c +++ b/source/main/main.c @@ -381,6 +381,7 @@ symbols in this file: #include "networking/network_server_manager.h" /* port: a co-op game's level won */ #include "network_coop.h" /* port: port/linux/game/network_coop.c */ #include "network_voice.h" /* port: port/linux/game/network_voice.c */ +#include "map_share.h" /* port: port/linux/game/map_share.c */ #include "profile_sections.h" /* port: port/linux/include/profile_sections.h */ #ifdef HALO_PROFILE #include "profile_trace.h" /* port: port/linux/src/profile_trace.c */ @@ -3482,6 +3483,8 @@ void main_loop( network_test_update(main_globals.main_menu_scenario_loaded, main_globals.seconds_elapsed); /* port: voice chat, in the lobby and in game (port/linux/game/network_voice.c) */ network_voice_update(); + /* port: map sharing, in the lobby and in game (port/linux/game/map_share.c) */ + map_share_update(); profile_scope_enter(main_network_start_frame_section) connection = main_globals.connection; if (connection==_game_connection_network_client) diff --git a/source/networking/network_client_manager.c b/source/networking/network_client_manager.c index dbb8ad6b42..1f0801d72f 100644 --- a/source/networking/network_client_manager.c +++ b/source/networking/network_client_manager.c @@ -398,6 +398,7 @@ symbols in this file: #include "networking/network_server_manager.h" #include "networking/network_server_manager_internal.h" #include "text/unicode.h" +#include "map_share.h" /* port: port/linux/game/map_share.c */ /* ---------- constants */ @@ -1515,6 +1516,12 @@ boolean network_game_client_add_player( 0x530, client && (local_player_index>=0) && (local_player_indexgame.map.name[NETWORK_GAME_MAP_NAME_LENGTH - 1] = 0; + /* port: a Custom Edition map by the name its hash makes, which the + players download it by (port/linux/game/map_share.c) */ + map_share_level_name_hash(server->game.map.name, NETWORK_GAME_MAP_NAME_LENGTH); server->game.map.version = (long)cache_files_map_version(server->game.map.name); if (!network_game_server_send_game_data_pregame(server)) @@ -3685,6 +3689,10 @@ static boolean network_game_server_client_machine_timed_out( } if (TEST_FLAG(machine->flags, _network_client_machine_level_loaded_bit)) return silence > NETWORK_GAME_SERVER_CLIENT_TIMEOUT; + /* (port: downloading the map, which it says every few seconds, before + its players join: port/linux/game/map_share.c) */ + if (map_share_machine_downloading(machine->machine_index)) + return FALSE; /* (joining the game in progress: waiting for its players to be added, or loading; port: one that adds none in the time a machine has to in the pregame holds its slot for nothing) */ @@ -4236,6 +4244,8 @@ static void network_game_server_cooperative_round( server->game.variant_options.friendly_fire = friendly_fire; csstrncpy(server->game.map.name, network_game_server_cooperative_next_map, sizeof(server->game.map.name) - 1); server->game.map.name[sizeof(server->game.map.name) - 1] = 0; + /* port: by the name its hash makes (port/linux/game/map_share.c) */ + map_share_level_name_hash(server->game.map.name, sizeof(server->game.map.name)); server->game.map.version = (long)cache_files_map_version(server->game.map.name); main_set_multiplayer_map_name(server->game.map.name); server->game.maximum_teams = 1; @@ -4317,6 +4327,8 @@ static boolean network_game_server_setup_game_from_playlist( network_game_generate_local_machine_name(machine_name); ustrncpy(server->game.name, machine_name, NETWORK_GAME_NAME_LENGTH - 1); server->game.name[NETWORK_GAME_NAME_LENGTH - 1] = L'\0'; + /* port: by the name its hash makes (port/linux/game/map_share.c) */ + map_share_level_name_hash(server->game.map.name, sizeof(server->game.map.name)); server->game.map.version = (long)cache_files_map_version(server->game.map.name); server->game.minimum_players = 2; server->game.maximum_players = MAXIMUM_NETWORK_PLAYER_COUNT; @@ -4807,6 +4819,7 @@ static boolean network_game_server_idle_pregame_tasks( else if (network_game_server_client_machine_is_joined_to_game(server, client_machine) && !network_game_server_client_machine_is_local(server, client_machine) && !network_game_server_machine_has_players(server, client_machine->machine_index) && + !map_share_machine_downloading(client_machine->machine_index) && (!network_game_has_free_player_slot(&server->game) || system_milliseconds() - network_game_server_client_machine_join_times[client_machine->machine_index] > NETWORK_GAME_SERVER_PLAYERLESS_MACHINE_TIMEOUT)) diff --git a/source/networking/network_server_message_handler.c b/source/networking/network_server_message_handler.c index 19b6cff651..974d4c7328 100644 --- a/source/networking/network_server_message_handler.c +++ b/source/networking/network_server_message_handler.c @@ -272,6 +272,9 @@ void network_distributed_handle_message(long machine_index, word const *message, /* port/linux/game/network_voice.c's: voice chat, in the lobby too */ boolean network_voice_handles_message(word const *message, word size); void network_voice_handle_message(long machine_index, word const *message, word size); +/* port/linux/game/map_share.c's: map sharing, in the lobby too */ +boolean map_share_handles_message(word const *message, word size); +void map_share_handle_message(long machine_index, word const *message, word size, boolean from_stream); void network_distributed_handle_stream_message(long machine_index, word const *message, word size); /* ---------- constants */ @@ -1395,6 +1398,20 @@ boolean network_game_server_handle_client_message( } break; } + /* (port: map sharing's from any machine that joined, in the + lobby too, from its stream alone: map_share.c) */ + if (map_share_handles_message(message, message_buffer_size)) + { + long machine_index; + + if (network_game_server_client_machine_is_joined_to_game(server, machine) && + network_game_server_get_client_machine(server, machine, &machine_index)) + { + network_game_server_client_machine_heard(server, machine); + map_share_handle_message(machine_index, message, message_buffer_size, TRUE); + } + break; + } /* (in game, from a machine that has loaded it, as a datagram is: else dropped) */ if (network_game_server_client_machine_is_joined_to_game(server, machine) && diff --git a/tools/harness/tests/map_share_names.c b/tools/harness/tests/map_share_names.c new file mode 100644 index 0000000000..626b0fe32a --- /dev/null +++ b/tools/harness/tests/map_share_names.c @@ -0,0 +1,120 @@ +/* +MAP_SHARE_NAMES.C (test) + +The real names of map sharing (port/linux/game/map_share_files.c): a map's +file name ends in _ and the first digits of its hash, which the menus leave +out and a download is checked against. test_map_share_names.py takes the +constants (config.inc) and the code (under_test.inc). +*/ + +#include "harness.h" +#include "config.inc" + +#include +#include + +#define csstrlen(string) strlen(string) +#define MIN(a, b) ((a) < (b) ? (a) : (b)) +#define NUMBEROF(array) ((short)(sizeof(array) / sizeof((array)[0]))) +#define ustrcpy(destination, source) wcscpy(destination, source) +#define _strnicmp(first, second, count) strncasecmp(first, second, count) + +#include "under_test.inc" + +/* the menus' name of a map file's name (custom_edition_maps.c) */ +static char const *menu_name(char const *name, boolean hash) +{ + static wchar_t display_name[64]; + static char text[64]; + int index; + + display_name_make(name, hash, display_name); + for (index = 0; display_name[index] && index < 63; index++) + text[index] = (char)display_name[index]; + text[index] = 0; + return text; +} + +int main(int argc, char **argv) +{ + char const *case_name = argc > 1 ? argv[1] : ""; + + /* a name ends in _ and the hash's digits, lowercase hexadecimal */ + CASE("hashed-names") + { + CHECK(map_share_name_hashed("hugeass_0e2b3ee4"), "a hashed name was not taken for one"); + CHECK(map_share_name_hashed("a_00000000"), "a short hashed name was not taken for one"); + CHECK(!map_share_name_hashed("hugeass"), "a name without a hash was taken for one"); + CHECK(!map_share_name_hashed("hugeass_0E2B3EE4"), "uppercase digits were taken (the hash's are lowercase)"); + CHECK(!map_share_name_hashed("hugeass_0e2b3ee"), "seven digits were taken"); + CHECK(!map_share_name_hashed("hugeass0e2b3ee4"), "digits without _ were taken"); + CHECK(!map_share_name_hashed("hugeass_0e2b3eg4"), "a letter past f was taken"); + CHECK(!map_share_name_hashed("_0e2b3ee4"), "a hash with no name before it was taken"); + CHECK(!map_share_name_hashed(""), "nothing was taken"); + return 0; + } + /* a host's level name names a file of custom_maps alone */ + CASE("safe-names") + { + static char const *const unsafe[] = + { + "", ".", "..", ".x_0e2b3ee4", "../x_0e2b3ee4", "..\\x", "a/b", "c:x", "x.", " x", "x ", "a*b", "a?b", "a\"b", "ab", "a|b", "a\tb", "caf\xE9", + }; + int index; + + CHECK(map_share_name_safe("hugeass_0e2b3ee4"), "a map's name was refused"); + CHECK(map_share_name_safe("Elite_Alpha_Siege (v2).final"), "a name with spaces and dots inside was refused"); + for (index = 0; index < (int)(sizeof(unsafe) / sizeof(unsafe[0])); index++) + CHECK(!map_share_name_safe(unsafe[index]), "the name \"%s\" was taken", unsafe[index]); + return 0; + } + /* the menus' name leaves the hash out */ + CASE("base-length") + { + CHECK(map_share_name_base_length("hugeass_0e2b3ee4") == 7, "gave %d", (int)map_share_name_base_length("hugeass_0e2b3ee4")); + CHECK(map_share_name_base_length("the_bay_of_pigs") == 15, "a name without a hash was cut"); + CHECK(map_share_name_base_length("the_bay_of_pigs_12345678") == 15, "a name with _ in it lost more than its hash"); + return 0; + } + /* the digits are the hash's first bytes, as a name ends in them */ + CASE("digits") + { + static unsigned char const hash[32] = { 0x0E, 0x2B, 0x3E, 0xE4, 0xFF }; + char digits[MAP_SHARE_NAME_DIGITS + 1]; + char name[64]; + + memset(digits, 'x', sizeof(digits)); + map_share_hash_digits(hash, digits); + CHECK(!strcmp(digits, "0e2b3ee4"), "made %s", digits); + snprintf(name, sizeof(name), "hugeass_%s", digits); + CHECK(map_share_name_hashed(name), "a name made with the digits is not a hashed one"); + return 0; + } + /* a file's pieces: the last one shorter */ + CASE("pieces") + { + CHECK(map_share_piece_count(0) == 0, "an empty file has pieces"); + CHECK(map_share_piece_count(1) == 1, "one byte is not one piece"); + CHECK(map_share_piece_count(MAP_SHARE_PIECE_BYTES) == 1, "a piece's bytes are not one piece"); + CHECK(map_share_piece_count(MAP_SHARE_PIECE_BYTES + 1) == 2, "a byte more is not a second piece"); + CHECK(map_share_piece_count(59221172UL) == 226, "hugeass.map's pieces: %ld", map_share_piece_count(59221172UL)); + return 0; + } + /* the menus show a map without its hash, unless asked to tell versions + apart (Halo PC's own maps by their names) */ + CASE("display-names") + { + CHECK(!strcmp(menu_name("the_bay_of_pigs_0c7e7075", FALSE), "The Bay Of Pigs"), "made %s", + menu_name("the_bay_of_pigs_0c7e7075", FALSE)); + CHECK(!strcmp(menu_name("the_bay_of_pigs", FALSE), "The Bay Of Pigs"), "a name without a hash: %s", + menu_name("the_bay_of_pigs", FALSE)); + CHECK(!strcmp(menu_name("icefields_0e2b3ee4", FALSE), "Ice Fields"), "Halo PC's map: %s", + menu_name("icefields_0e2b3ee4", FALSE)); + CHECK(!strcmp(menu_name("hugeass_0e2b3ee4", TRUE), "Hugeass 0e2b3ee4"), "two versions: %s", + menu_name("hugeass_0e2b3ee4", TRUE)); + return 0; + } + fprintf(stderr, "unknown case: %s\n", case_name); + return 2; +} diff --git a/tools/harness/tests/test_map_share_names.py b/tools/harness/tests/test_map_share_names.py new file mode 100644 index 0000000000..de14505a9c --- /dev/null +++ b/tools/harness/tests/test_map_share_names.py @@ -0,0 +1,68 @@ +"""The real names of map sharing (map_share_files.c): a map named for its hash is known by its name's end, the menus +leave the hash out, and a download is checked against the digits the hash gives.""" + +import sys +from pathlib import Path + +import pytest + +sys.path.insert(0, str(Path(__file__).resolve().parents[2])) +from harness import CHECK_FAILED, build, constant, function, mutated, read, run # noqa: E402 + +CASES = ["hashed-names", "safe-names", "base-length", "digits", "pieces", "display-names"] + +# a fault in map_share_files.c, the function it is in, and the case that must catch it +NEGATIVE_CONTROLS = { + "takes-uppercase": (("(character >= 'a' && character <= 'f')", "(character >= 'A' && character <= 'f')"), + "hex_digit", "hashed-names"), + "lets-slashes-through": (("strchr(\"/\\\\:", "strchr(\"\\\\:"), "map_share_name_safe", "safe-names"), + "lets-dots-through": (("name[0] == '.' || ", ""), "map_share_name_safe", "safe-names"), + "no-underscore": (("|| name[length - MAP_SHARE_NAME_DIGITS - 1] != '_'", ""), "map_share_name_hashed", + "hashed-names"), + "keeps-the-underscore": (("length - MAP_SHARE_NAME_DIGITS - 1)", "length - MAP_SHARE_NAME_DIGITS)"), + "map_share_name_base_length", "base-length"), + "nibbles-swapped": (("hex[hash[index] >> 4]", "hex[hash[index] & 15]"), "map_share_hash_digits", "digits"), + "pieces-rounded-down": (("(size + MAP_SHARE_PIECE_BYTES - 1)", "(size)"), "map_share_piece_count", "pieces"), + "shows-the-hash": (("map_share_name_base_length(name)", "(short)csstrlen(name)"), "display_name_make", + "display-names"), + "stock-by-whole-name": (("map_share_name_base_length(name)", "(short)csstrlen(name)"), "stock_map_index", + "display-names"), +} + + +def generated(fault=None, faulty_function=None): + header = read("port/linux/game/map_share.h") + source = read("port/linux/game/map_share_files.c") + config = "" + for name in ("MAP_SHARE_NAME_DIGITS", "MAP_SHARE_PIECE_BYTES"): + config += f"#define {name} {constant(header, name)}\n" + text = "" + for name in ("hex_digit", "map_share_name_hashed", "map_share_name_safe", "map_share_name_base_length", + "map_share_hash_digits", "map_share_piece_count"): + code = function(source, name) + if fault and name == faulty_function: + code = mutated(code, *fault) + text += code + "\n" + # the menus' names (custom_edition_maps.c): Halo PC's own maps, and the rest + maps = read("port/linux/game/custom_edition_maps.c") + start = maps.index("static struct\n{\n\tchar const *file;") + text += maps[start:maps.index("};", start) + 2] + "\n" + for name in ("stock_map_index", "display_name_make"): + code = function(maps, name) + if fault and name == faulty_function: + code = mutated(code, *fault) + text += code + "\n" + return (("config.inc", config), ("under_test.inc", text)) + + +@pytest.mark.parametrize("case", CASES) +def test_case(case): + status, output = run(build("map_share_names", generated()), case) + assert status == 0, output + + +@pytest.mark.parametrize("control", NEGATIVE_CONTROLS) +def test_negative_control(control): + fault, faulty_function, case = NEGATIVE_CONTROLS[control] + status, output = run(build("map_share_names", generated(fault, faulty_function)), case) + assert status == CHECK_FAILED, f"map_share_files.c with a fault ({control}) passed '{case}': the test cannot see it" diff --git a/tools/port_settings.py b/tools/port_settings.py index 9e3909706d..f536fe24c9 100644 --- a/tools/port_settings.py +++ b/tools/port_settings.py @@ -222,6 +222,29 @@ ], } +# Network Setup's map sharing (port/linux/game/map_share.c): this machine's +# part in another's game, a screen of its own (a category, as Video Setup's) +SEED_UPLOADS = (64, 128, 256, 512, 1024, 2048) +_network = SCREENS["network_setup"] +_network["categories"] = [ + ("MAP SHARING:", "network_setup/map_sharing", + "Downloading Custom Edition maps you do not have,\nand helping send them to other players.", + "desktop android"), +] +SCREENS["network_setup/map_sharing"] = { + "screen": "map_sharing_settings_screen", "header": _network["header"], "spacing": 30, + "rows": [ + ("DOWNLOAD MAPS:", "network.map_download", ON_OFF, + "Joining a game on a Custom Edition map you do not\nhave: download it from the players (if shared).", + None), + ("HELP SEND MAPS:", "network.map_seed", ON_OFF, + "In another's game, send its map to players who\njoin without it, as a torrent's peers do.", None), + ("UPLOAD LIMIT:", "network.map_seed_upload", + [(f"{kb} KB/S" if kb < 1024 else f"{kb // 1024} MB/S", str(kb)) for kb in SEED_UPLOADS], + "The most you send of maps to other players, so\nthat the game keeps the rest of your upload.", None), + ], +} + # Controls Setup: the keyboard and mouse's actions, in groups (the order of # port/linux/game/menu_functions.c's table of them) CONTROL_GROUPS = ["MOVEMENT", "WEAPONS", "ACTIONS"] @@ -377,21 +400,25 @@ def _setting_screen(folder: str, spec: dict) -> list: ("header_bounds", "7 -13 19 -7" if wide else "7 -6 19 0"), ("footer_bounds", "7 208 19 214" if wide else "7 150 19 156")], ['']) - for index, (label, category_folder, _) in enumerate(spec.get("categories", ())): + # (each category's row: its label, the screen it opens, its help, and the + # platforms it is for, as a row's: every one's when it names none) + for index, (label, category_folder, _, *category_platform) in enumerate(spec.get("categories", ())): key = category_folder.rsplit("/", 1)[-1] row = f"{base}/op_{key}" target = f"{PE}/{category_folder}/{SCREENS[category_folder]['screen']}" + platform = category_platform[0] if category_platform else None if spec.get("platform_places"): - for name in places: + members = platform.split() if platform else list(places) + for name in members: places[name] += 1 if places["desktop"] == places["android"]: rows.append((row, None, places["desktop"])) else: rows += [(row, name, places[name]) for name in ("desktop", "android")] else: - rows.append((row, None, place + 1 + index)) + rows.append((row, platform, place + 1 + index)) extra += _widget(row, [("width", 512), ("height", 28), ("flags", "pass_unhandled_to_focused_child"), - ("bitmap", "bitmaps/option_bkds"), ("color", "#FF2896FF")], + ("bitmap", "bitmaps/option_bkds"), ("color", "#FF2896FF"), ("platform", platform)], [f'', f'', '', f'']) @@ -408,7 +435,7 @@ def _setting_screen(folder: str, spec: dict) -> list: # (the help of the row whose label is string n is n + 1: the buttons' is 0) extra += _strings(f"{base}/help_strings", [""] + [help_text.replace("\n", "\\n") for _, _, _, help_text, *_ in spec["rows"]] + - [help_text.replace("\n", "\\n") for _, _, help_text in spec.get("categories", ())]) + [help_text.replace("\n", "\\n") for _, _, help_text, *_ in spec.get("categories", ())]) return _screen(folder, spec, rows, ["port settings help"], [], extra) @@ -833,8 +860,8 @@ def _server_settings() -> list: whether the server browser lists it (PUBLIC or PRIVATE: an internet game's)""" base = f"{MT}/server_settings" - # (eleven rows: closer together, the help lower) - spec = {"screen": "server_settings_screen", "spacing": 26, "help_top": 366, + # (twelve rows: closer together, the help lower) + spec = {"screen": "server_settings_screen", "spacing": 24, "help_top": 366, "header": ("header_server_settings", f"{base}/header_server_settings")} rows, extra = [], [] extra += _value_row(base, "server_name", 0, "ss edit server name") @@ -881,6 +908,22 @@ def _server_settings() -> list: # which players from the server browser must type extra += _value_row(base, "password", 10 + len(COOP_SETUP_SCREENS), "ss edit server password") rows.append((f"{base}/op_password", None)) + # MAP SHARING (map_share.c), a screen of its own as co-op's options are, + # for any game: SETUP_OPTIONS_PLACE below it + key, _, _, _ = MAP_SHARE_SETUP + target = f"{base}/{key}/{key}_screen" + extra += _widget(f"{base}/op_{key}", [("width", 512), ("height", 28), + ("flags", "pass_unhandled_to_focused_child"), + ("bitmap", "bitmaps/option_bkds"), ("color", "#FF2896FF")], + [f'', f'', + '', + f'']) + extra += _widget(f"{base}/{key}_label", [("type", "text"), ("controller", 1), ("width", 300), ("height", 22), + ("string_list", f"{base}/labels"), + ("string_index", 11 + len(COOP_SETUP_SCREENS)), + ("font", "ui\\large_ui"), ("color", "#FF2896FF"), ("text_x", 13), + ("text_y", 4)], []) + rows.append((f"{base}/op_{key}", None, SETUP_OPTIONS_PLACE - 1)) # co-op's options, in the place of the gametype's rows, which co-op hides # as multiplayer hides co-op's (menu_functions.c's server_settings_update): # rows opening their screens, as the gametype's options' do @@ -897,7 +940,7 @@ def _server_settings() -> list: ("string_list", f"{base}/labels"), ("string_index", 10 + index), ("font", "ui\\large_ui"), ("color", "#FF2896FF"), ("text_x", 13), ("text_y", 4)], []) - rows.append((f"{base}/op_{key}", None, 5 + index)) + rows.append((f"{base}/op_{key}", None, SETUP_OPTIONS_PLACE + index)) # the gametype's options for this game (the gametype editor's screens, # editing a copy of the gametype chosen: "port setup edit") for index, (key, screen) in enumerate(SETUP_OPTION_SCREENS): @@ -916,7 +959,7 @@ def _server_settings() -> list: extra += _widget(f"{base}/{key}_value", [("type", "text"), ("controller", 1), ("width", 280), ("height", 22), ("font", "ui\\small_ui"), ("color", "#FF2896FF"), ("align", "center"), ("text_y", 5), ("text_flags", "no_focus_test")], []) - rows.append((f"{base}/op_{key}", None, 5 + index)) + rows.append((f"{base}/op_{key}", None, SETUP_OPTIONS_PLACE + index)) extra += _button(f"{base}/button_defaults", 3, []) extra += _widget(f"{base}/button_ok", [("type", "text"), ("width", 128), ("height", 24), ("bitmap", "bitmaps/text_button_background"), ("text", "START GAME"), @@ -928,7 +971,8 @@ def _server_settings() -> list: extra += _strings(f"{base}/labels", ["GAME NAME:", "MAXIMUM PLAYERS:", "INVITE LINK:", "GAME TYPE:", "PLAYER OPTIONS:", "ITEM OPTIONS:", "VEHICLE OPTIONS:", "INDICATOR OPTIONS:", "TEAMPLAY OPTIONS:", "LISTING:", - *(f"{title}:" for _, title, _, _ in COOP_SETUP_SCREENS), "PASSWORD:"]) + *(f"{title}:" for _, title, _, _ in COOP_SETUP_SCREENS), "PASSWORD:", + f"{MAP_SHARE_SETUP[1]}:"]) extra += _strings(f"{base}/help_strings", [ "", "The name the game shows in the lists of games.\\nEnter changes it.", @@ -947,11 +991,13 @@ def _server_settings() -> list: *(help_text for _, _, help_text, _ in COOP_SETUP_SCREENS), # (PASSWORD's) "Players from the Server Browser must type it to\\njoin (an invite link needs none). Enter sets it.", + # (MAP SHARING's) + MAP_SHARE_SETUP[2], ]) lines = _screen(base, spec, rows, ["server settings update"], [''], extra) - # (co-op's options' screens) - for key, title, _, screen_rows in COOP_SETUP_SCREENS: + # (co-op's options' screens, and map sharing's) + for key, title, _, screen_rows in [*COOP_SETUP_SCREENS, MAP_SHARE_SETUP]: lines += _setup_option_screen(f"{base}/{key}", key, screen_rows) # (no Defaults: the bar is START and CANCEL; B cancels the name's edit # first) @@ -997,8 +1043,26 @@ def _server_settings() -> list: ]), ("voice_options", "VOICE AND VOTING", "Voice chat and votes to kick a player, for this\\ngame.", TEAMPLAY_ROWS), ] +# Server Setup's map sharing (port/linux/game/map_share.c), for any game, +# laid out as co-op's options are (its key, its title, its row's help and +# its rows: menu_functions.c's gametype_options give their settings' values) +MAP_SHARE_UPLOADS = (256, 512, 1024, 2048, 4096, 8192) +MAP_SHARE_SETUP = ("map_share_options", "MAP SHARING", + "Sending players who join without the game's\\nCustom Edition map the map, and how fast.", [ + ("map_share", "SHARE MAPS:", ["ON", "OFF"], [ + "Players who join without the map download it\\nfrom you and the other players.", + "Players who join without the map cannot play.", + ]), + ("map_share_upload", "UPLOAD LIMIT:", [f"{kb} KB/S" if kb < 1024 else f"{kb // 1024} MB/S" + for kb in MAP_SHARE_UPLOADS], + ["The most you send of maps, so that the game\\nkeeps the rest of your upload."] * len(MAP_SHARE_UPLOADS)), +]) +# (Server Setup's place of its options' rows, co-op's or the gametype's: after +# MAP SHARING's) +SETUP_OPTIONS_PLACE = 6 # (their screens' titles) -TITLES.update({f"{MT}/server_settings/{key}/header_{key}": title for key, title, _, _ in COOP_SETUP_SCREENS}) +TITLES.update({f"{MT}/server_settings/{key}/header_{key}": title + for key, title, _, _ in [*COOP_SETUP_SCREENS, MAP_SHARE_SETUP]}) # (the rows of a co-op options screen in one place, the one shown: PER # PLAYER's and MULTIPLIER's, by EXTRA ENEMIES') SETUP_OPTION_SAME_PLACE = {"coop_enemies_multiplier"} diff --git a/tools/test_cache_file_formats.py b/tools/test_cache_file_formats.py index 53d53ec38e..1740aac4f1 100644 --- a/tools/test_cache_file_formats.py +++ b/tools/test_cache_file_formats.py @@ -649,6 +649,33 @@ def test_minimal_custom_edition_cache_loads_with_every_resource(report_tool, tmp assert report["convert"] == "ok" +def test_the_resource_maps_a_map_needs_come_from_its_tag_index(report_tool, tmp_path): + """the tags whose index entry says a resource map holds them (word 0x18): + a bitmap bitmaps.map, a sound sounds.map, strings, a font and HUD text + loc.map (map sharing sends those with the map)""" + _, report = report_one(report_tool, Map().write(tmp_path)) + assert report["resource_maps_needed"] == "bitmaps, sounds, loc" + + +def test_a_map_whose_tags_are_its_own_needs_none_of_their_resource_maps(report_tool, tmp_path): + """the external bitmap and sound marked as held in the map: only + loc.map is needed (the load then fails, as their addresses are not the + map's; the scan reads the index alone)""" + path = Map().write(tmp_path) + _, report = report_one(report_tool, path) + data = bytearray(path.read_bytes()) + tag_data_offset = int(report["tag_data"].split("+")[0], 16) + index_instances = struct.unpack_from(" Date: Sun, 11 Oct 2026 13:37:40 -0500 Subject: [PATCH 11/29] Players who already have the map no longer wait for a machine that is still downloading it. (cherry picked from commit 71ceb363f19200d81b5ce71908577781487ccbc8) --- port/linux/game/map_share.c | 16 +++- port/linux/game/map_share.h | 4 + source/networking/network_server_manager.c | 99 ++++++++++++++++++++-- 3 files changed, 111 insertions(+), 8 deletions(-) diff --git a/port/linux/game/map_share.c b/port/linux/game/map_share.c index 1c74becdce..505da4fc02 100644 --- a/port/linux/game/map_share.c +++ b/port/linux/game/map_share.c @@ -33,9 +33,9 @@ the others as .part and renamed when whole (a .part found again is checked piece by piece and taken up where it was), into custom_maps under the map's own name, which is its hash's. -A game in the lobby waits for the download (its host waits for every -machine to have the map), and a game in progress is joined once it is done; -the host does not drop a machine that says it is downloading. +A machine still downloading does not hold the lobby: the machines that +have the map start, and it joins the game in progress once the download is +done. The host does not drop a machine that says it is downloading. */ /* ---------- headers */ @@ -2647,6 +2647,16 @@ boolean map_share_machine_downloading( return machine && machine->downloading && !elapsed(machine->heard_at, system_milliseconds(), DOWNLOADING_TIMEOUT); } +boolean map_share_machine_needs_map( + long machine_index) +{ + struct host_machine const *machine = host_machine_valid(machine_index) ? + &map_share_globals.machines[machine_index] : NULL; + + return machine && machine->downloading && !machine->downloaded && + !elapsed(machine->heard_at, system_milliseconds(), DOWNLOADING_TIMEOUT); +} + static boolean host_in_game( void) { diff --git a/port/linux/game/map_share.h b/port/linux/game/map_share.h index a4b0f80e24..6c26df8d7a 100644 --- a/port/linux/game/map_share.h +++ b/port/linux/game/map_share.h @@ -105,6 +105,10 @@ said lately: it is not dropped for adding no players or loading slowly (network_server_manager.c) */ boolean map_share_machine_downloading( long machine_index); +/* (the host) whether that download is not finished: the machines that have +the map do not wait for it (network_server_manager.c) */ +boolean map_share_machine_needs_map( + long machine_index); /* the distributed messages of map sharing (network_distributed.c, and the host's message handler), in the lobby too: from_stream says the message came diff --git a/source/networking/network_server_manager.c b/source/networking/network_server_manager.c index 8b66bbe95e..471a437061 100644 --- a/source/networking/network_server_manager.c +++ b/source/networking/network_server_manager.c @@ -737,6 +737,8 @@ static boolean network_game_server_drop_client_machine( static void network_game_server_start_late_joiner( struct network_game_server *server, struct network_game_server_client_machine *machine); +static void network_game_server_release_map_fetchers( + struct network_game_server *server); static void network_game_server_keep_late_joiners_alive( struct network_game_server *server); static boolean network_game_server_add_new_client( @@ -986,6 +988,10 @@ boolean performance_options_set_host_flags( return TRUE; } #endif +/* port: a machine still downloading the map when the game started. It is +not sent the start with the others. Once the download is done it is started +then, in progress if the game has begun. */ +static boolean network_game_server_map_pending[MAXIMUM_NETWORK_MACHINE_COUNT]; enum { NETWORK_GAME_SERVER_PLAYERLESS_MACHINE_TIMEOUT = 15 * MILLISECONDS_PER_SECOND, @@ -1938,7 +1944,34 @@ boolean network_game_server_start_network_game( &begin_game, sizeof(begin_game))) != NULL)) { - if (network_game_server_send_message_to_all_machines(server, message)) + boolean told = TRUE; + long machine_index; + + /* port: a machine still downloading the map is not told to load + with the others. It joins once the download is done + (network_game_server_release_map_fetchers). */ + for (machine_index = 0; machine_index < MAXIMUM_NETWORK_MACHINE_COUNT; machine_index++) + { + struct network_game_server_client_machine *machine = + &server->client_machines[machine_index]; + + if (!network_game_server_client_machine_is_joined_to_game(server, machine)) + { + network_game_server_map_pending[machine_index] = FALSE; + continue; + } + if (map_share_machine_needs_map(machine->machine_index)) + { + network_game_server_map_pending[machine_index] = TRUE; + network_event("machine #%d is still downloading the map; the others will not wait", + machine->machine_index); + continue; + } + network_game_server_map_pending[machine_index] = FALSE; + if (!network_game_server_send_message_to_client_machine(server, machine, message)) + told = FALSE; + } + if (told) network_event("signalling client machines to begin loading for network game"); else network_event("signalling client machines to begin loading for network game (some machines missed it)"); @@ -2411,6 +2444,7 @@ void network_game_server_client_machine_game_loading_complete( /* (the machines in the game: not a connection that has not joined) */ if (network_game_server_client_machine_is_joined_to_game(server, client_machine) && + !map_share_machine_needs_map(client_machine->machine_index) && !TEST_FLAG(client_machine->flags, _network_client_machine_level_loaded_bit)) { loading_machine_count++; @@ -2452,6 +2486,7 @@ static void network_game_server_check_loading_complete( &server->client_machines[client_machine_index]; if (network_game_server_client_machine_is_joined_to_game(server, client_machine) && + !map_share_machine_needs_map(client_machine->machine_index) && !TEST_FLAG(client_machine->flags, _network_client_machine_level_loaded_bit)) { return; @@ -2631,6 +2666,8 @@ void network_game_server_update_ticks( long client_machine_index; short tick_index; + network_game_server_release_map_fetchers(server); + for (tick_index = 0; tick_index < tick_count; tick_index++) { struct message_server_game_update game_update; @@ -2916,6 +2953,49 @@ static void network_game_server_start_late_joiner( begin_game.unused); } +/* port: a machine that was still downloading the map when the others +started. Once the download is done, it loads with them if the game has not +begun, or joins the game in progress if it has. */ +static void network_game_server_release_map_fetchers( + struct network_game_server *server) +{ + long machine_index; + + for (machine_index = 0; machine_index < MAXIMUM_NETWORK_MACHINE_COUNT; machine_index++) + { + struct network_game_server_client_machine *machine = + &server->client_machines[machine_index]; + struct message_server_begin_game begin_game = { 0 }; + struct network_message *message; + + if (!network_game_server_map_pending[machine_index]) + continue; + if (!network_game_server_client_machine_is_joined_to_game(server, machine)) + { + network_game_server_map_pending[machine_index] = FALSE; + continue; + } + if (map_share_machine_needs_map(machine->machine_index)) + continue; + network_game_server_map_pending[machine_index] = FALSE; + if (TEST_FLAG(machine->flags, _network_client_machine_level_loaded_bit) || + TEST_FLAG(machine->flags, _network_client_machine_started_late_bit)) + { + continue; + } + if (server->state == _network_game_server_state_ingame) + { + network_game_server_start_late_joiner(server, machine); + continue; + } + message = create_network_game_message(_message_server_begin_game, &begin_game, sizeof(begin_game)); + if (!message || !network_game_server_send_message_to_client_machine(server, machine, message)) + network_event("failed to start machine #%d now that it has the map", machine->machine_index); + else + network_event("machine #%d has the map; it loads with the others", machine->machine_index); + } +} + /* the machines joining the game in progress (in the pregame, or loading) hear none of the game's messages, and drop a connection they hear nothing on for 15 seconds: a pregame keep-alive every 5 */ @@ -4733,9 +4813,11 @@ static boolean network_game_server_have_all_machines_have_precached( { boolean client_has_precached; - /* port: a machine with no player is joining or leaving. It does - not hold the start; it can join the game in progress. */ - if (!network_game_server_machine_has_players(server, machine->machine_index)) + /* port: a machine with no player is joining or leaving, and one + still downloading the map does not have it. Neither holds the + start. A download joins the game in progress once it is done. */ + if (!network_game_server_machine_has_players(server, machine->machine_index) || + map_share_machine_needs_map(machine->machine_index)) continue; client_has_precached = TEST_FLAG( server->client_machines[i].flags, @@ -4764,6 +4846,11 @@ static boolean network_game_server_idle_pregame_tasks( long now = (long)system_milliseconds(); boolean success = TRUE; + /* port: a machine that finished downloading the map after the others + were told to start loads now, or joins in progress if the game has begun */ + if (server->sent_start_game_message) + network_game_server_release_map_fetchers(server); + if (server->sent_start_game_message == FALSE) { long itr; @@ -4951,7 +5038,8 @@ static boolean network_game_server_idle_pregame_tasks( _network_client_machine_connected_bit) && !TEST_FLAG( server->client_machines[i].flags, - _network_client_machine_level_loaded_bit)) + _network_client_machine_level_loaded_bit) && + !map_share_machine_needs_map(server->client_machines[i].machine_index)) { char ascii_name[MAXIMUM_MACHINE_NAME_LENGTH]; boolean removed; @@ -4992,6 +5080,7 @@ boolean network_game_server_reset_to_pregame( match_assert(NETWORK_SERVER_MANAGER_FILE, 0x324, server); csmemset(&server->countdown_state, 0, sizeof(server->countdown_state)); + csmemset(network_game_server_map_pending, 0, sizeof(network_game_server_map_pending)); server->next_update_number = 0; server->time_of_first_client_loading_completion = 0; server->sent_start_game_message = FALSE; From 035a783ab17167f42ea1443b42566def66b0a34d Mon Sep 17 00:00:00 2001 From: justinfilip Date: Sun, 11 Oct 2026 15:52:45 -0500 Subject: [PATCH 12/29] A player still downloading the map no longer spawns until that player joins. (cherry picked from commit 67f22142197e40a35a36679751b5d794eeaba7bc) --- source/networking/network_server_manager.c | 162 +++++++++++++++++++-- 1 file changed, 149 insertions(+), 13 deletions(-) diff --git a/source/networking/network_server_manager.c b/source/networking/network_server_manager.c index 471a437061..d6642fdc02 100644 --- a/source/networking/network_server_manager.c +++ b/source/networking/network_server_manager.c @@ -737,6 +737,15 @@ static boolean network_game_server_drop_client_machine( static void network_game_server_start_late_joiner( struct network_game_server *server, struct network_game_server_client_machine *machine); +static void network_game_server_hold_map_fetcher_players( + struct network_game_server *server); +static void network_game_server_restore_held_players( + struct network_game_server *server); +static void network_game_server_discard_held_players( + long machine_index); +static boolean network_game_server_admit_held_players( + struct network_game_server *server, + long machine_index); static void network_game_server_release_map_fetchers( struct network_game_server *server); static void network_game_server_keep_late_joiners_alive( @@ -992,6 +1001,10 @@ boolean performance_options_set_host_flags( not sent the start with the others. Once the download is done it is started then, in progress if the game has begun. */ static boolean network_game_server_map_pending[MAXIMUM_NETWORK_MACHINE_COUNT]; +/* port: those machines' players, taken out of the game the others start, and +put back when the download is done (they spawn then, not before) */ +static struct network_player network_game_server_held_players[MAXIMUM_NETWORK_PLAYER_COUNT]; +static long network_game_server_held_player_count; enum { NETWORK_GAME_SERVER_PLAYERLESS_MACHINE_TIMEOUT = 15 * MILLISECONDS_PER_SECOND, @@ -1937,7 +1950,10 @@ boolean network_game_server_start_network_game( /* port: once the settings are out, the start is sent once: a machine that missed it (its connection failed, and is closed) is dropped, and sent again, the start reached those that loaded it already (which - refuse a second start) and the wait for the others never began */ + refuse a second start) and the wait for the others never began. + A machine still downloading the map is left out of this start, and so + are its players: they spawn when it joins, not while it is downloading. */ + network_game_server_hold_map_fetcher_players(server); if (network_game_server_send_game_settings_to_all_machines(server, &server->game, sizeof(server->game)) && ((message = create_network_game_message( _message_server_begin_game, @@ -1958,6 +1974,7 @@ boolean network_game_server_start_network_game( if (!network_game_server_client_machine_is_joined_to_game(server, machine)) { network_game_server_map_pending[machine_index] = FALSE; + network_game_server_discard_held_players(machine_index); continue; } if (map_share_machine_needs_map(machine->machine_index)) @@ -1983,6 +2000,7 @@ boolean network_game_server_start_network_game( } else { + network_game_server_restore_held_players(server); network_event("failed to signal client machines to begin loading for network game"); } } @@ -2953,9 +2971,123 @@ static void network_game_server_start_late_joiner( begin_game.unused); } +/* port: a machine still downloading the map is not in the game the others +start, and neither are its players. They are put back when it joins. */ +static void network_game_server_hold_map_fetcher_players( + struct network_game_server *server) +{ + long index; + + network_game_server_held_player_count = 0; + for (index = 0; index < MAXIMUM_NETWORK_PLAYER_COUNT; index++) + { + struct network_player player = server->game.players[index]; + + if (!network_player_is_valid(&player) || !map_share_machine_needs_map(player.machine_index)) + continue; + if (network_game_server_held_player_count < MAXIMUM_NETWORK_PLAYER_COUNT) + { + network_game_server_held_players[network_game_server_held_player_count++] = player; + } + if (!network_game_remove_player(&server->game, &player)) + network_event("failed to hold a player still downloading the map"); + else + network_event("holding a player on machine #%d until the map is downloaded", + player.machine_index); + } +} + +static void network_game_server_restore_held_players( + struct network_game_server *server) +{ + long index; + + for (index = 0; index < network_game_server_held_player_count; index++) + { + struct network_player player = network_game_server_held_players[index]; + + if (!network_game_add_player(&server->game, &player)) + network_event("failed to put back a player held for a map download"); + } + network_game_server_held_player_count = 0; +} + +static void network_game_server_discard_held_players( + long machine_index) +{ + long index = 0; + + while (index < network_game_server_held_player_count) + { + if (network_game_server_held_players[index].machine_index != machine_index) + { + index++; + continue; + } + network_game_server_held_player_count--; + if (index < network_game_server_held_player_count) + { + network_game_server_held_players[index] = + network_game_server_held_players[network_game_server_held_player_count]; + } + } +} + +/* the held players join the game that is already going, which spawns them */ +static boolean network_game_server_admit_held_players( + struct network_game_server *server, + long machine_index) +{ + boolean any = FALSE; + long index = 0; + + while (index < network_game_server_held_player_count) + { + struct network_player player; + short *count; + + if (network_game_server_held_players[index].machine_index != machine_index) + { + index++; + continue; + } + player = network_game_server_held_players[index]; + network_game_server_held_player_count--; + if (index < network_game_server_held_player_count) + { + network_game_server_held_players[index] = + network_game_server_held_players[network_game_server_held_player_count]; + } + player.player_list_index = NONE; + if (!network_game_server_original_grenade_peers_support(server, &server->game.variant, + server->game.player_count + 1) || + !network_game_server_machine_may_add_player_ingame(server, machine_index) || + !network_game_add_player(&server->game, &player)) + { + network_event("failed to add a player from machine #%ld after the map downloaded", + machine_index); + continue; + } + any = TRUE; + if (!network_game_server_client_machine_is_local(server, &server->client_machines[machine_index])) + { + count = network_game_server_ingame_addition_count( + network_game_server_client_machine_addresses[machine_index], TRUE); + if (count) + (*count)++; + } + if (!network_game_server_send_player_joined_info_ingame(server, &player)) + network_event("failed to tell the game of a player joining after the map downloaded"); + else + network_event("a player from machine #%ld joins now that the map is downloaded", + machine_index); + } + return any; +} + /* port: a machine that was still downloading the map when the others -started. Once the download is done, it loads with them if the game has not -begun, or joins the game in progress if it has. */ +started. Once the download is done and the game has begun, its players +join, and then it does. */ static void network_game_server_release_map_fetchers( struct network_game_server *server) { @@ -2965,34 +3097,30 @@ static void network_game_server_release_map_fetchers( { struct network_game_server_client_machine *machine = &server->client_machines[machine_index]; - struct message_server_begin_game begin_game = { 0 }; - struct network_message *message; if (!network_game_server_map_pending[machine_index]) continue; if (!network_game_server_client_machine_is_joined_to_game(server, machine)) { network_game_server_map_pending[machine_index] = FALSE; + network_game_server_discard_held_players(machine_index); continue; } if (map_share_machine_needs_map(machine->machine_index)) continue; + if (server->state != _network_game_server_state_ingame) + continue; network_game_server_map_pending[machine_index] = FALSE; if (TEST_FLAG(machine->flags, _network_client_machine_level_loaded_bit) || TEST_FLAG(machine->flags, _network_client_machine_started_late_bit)) { + network_game_server_discard_held_players(machine_index); continue; } - if (server->state == _network_game_server_state_ingame) - { + if (network_game_server_admit_held_players(server, machine_index)) network_game_server_start_late_joiner(server, machine); - continue; - } - message = create_network_game_message(_message_server_begin_game, &begin_game, sizeof(begin_game)); - if (!message || !network_game_server_send_message_to_client_machine(server, machine, message)) - network_event("failed to start machine #%d now that it has the map", machine->machine_index); else - network_event("machine #%d has the map; it loads with the others", machine->machine_index); + network_game_server_refuse_late_joiner(server, machine, _rejection_code_game_is_full); } } @@ -3773,6 +3901,12 @@ static boolean network_game_server_client_machine_timed_out( its players join: port/linux/game/map_share.c) */ if (map_share_machine_downloading(machine->machine_index)) return FALSE; + /* (its players were held out of the game until the download finishes) */ + if (machine->machine_index >= 0 && machine->machine_index < MAXIMUM_NETWORK_MACHINE_COUNT && + network_game_server_map_pending[machine->machine_index]) + { + return FALSE; + } /* (joining the game in progress: waiting for its players to be added, or loading; port: one that adds none in the time a machine has to in the pregame holds its slot for nothing) */ @@ -5081,6 +5215,8 @@ boolean network_game_server_reset_to_pregame( csmemset(&server->countdown_state, 0, sizeof(server->countdown_state)); csmemset(network_game_server_map_pending, 0, sizeof(network_game_server_map_pending)); + csmemset(network_game_server_held_players, 0, sizeof(network_game_server_held_players)); + network_game_server_held_player_count = 0; server->next_update_number = 0; server->time_of_first_client_loading_completion = 0; server->sent_start_game_message = FALSE; From 4100f95227d3fadbc9522210cb3057a613fe997b Mon Sep 17 00:00:00 2001 From: justinfilip Date: Sun, 11 Oct 2026 17:24:15 -0500 Subject: [PATCH 13/29] Adding a player after a map download uses the same checks as any other late join. (cherry picked from commit baab0780f6c230ef8a994e843057e6f1d1e16f16) --- source/networking/network_server_manager.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/source/networking/network_server_manager.c b/source/networking/network_server_manager.c index d6642fdc02..8777385785 100644 --- a/source/networking/network_server_manager.c +++ b/source/networking/network_server_manager.c @@ -3059,9 +3059,7 @@ static boolean network_game_server_admit_held_players( network_game_server_held_players[network_game_server_held_player_count]; } player.player_list_index = NONE; - if (!network_game_server_original_grenade_peers_support(server, &server->game.variant, - server->game.player_count + 1) || - !network_game_server_machine_may_add_player_ingame(server, machine_index) || + if (!network_game_server_machine_may_add_player_ingame(server, machine_index) || !network_game_add_player(&server->game, &player)) { network_event("failed to add a player from machine #%ld after the map downloaded", From 09697589da74927377028691af775e46e2fa4515 Mon Sep 17 00:00:00 2001 From: justinfilip Date: Sun, 11 Oct 2026 16:11:51 -0500 Subject: [PATCH 14/29] Create the custom_maps folder on startup when it is missing. (cherry picked from commit 05dd9ccdea94d8d3686ae55a9b71bc466d52b4e8) --- source/shell/shell.c | 4 ++++ source/tag_files/files.c | 19 +++++++++++++++++++ source/tag_files/files.h | 1 + 3 files changed, 24 insertions(+) diff --git a/source/shell/shell.c b/source/shell/shell.c index feb0b44fab..260d6135b7 100644 --- a/source/shell/shell.c +++ b/source/shell/shell.c @@ -8,6 +8,7 @@ SHELL.C #include "shell.h" #include "errors.h" #include "tag_files.h" +#include "files.h" #include "real_math.h" #include "game_state.h" #include "rasterizer.h" @@ -36,6 +37,9 @@ boolean shell_initialize( errors_initialize(); tag_files_open(); + /* port: Custom Edition maps live in custom_maps, beside maps. + Make that folder when this launch does not already have it. */ + directory_create("custom_maps"); real_math_initialize(); game_state_initialize(); diff --git a/source/tag_files/files.c b/source/tag_files/files.c index b6280dfc48..048be1b1ce 100644 --- a/source/tag_files/files.c +++ b/source/tag_files/files.c @@ -291,6 +291,25 @@ void directory_create_or_delete_contents( return; } +/* port: make the folder when it is missing. An existing folder is left +alone, including whatever is already in it. */ +void directory_create( + const char *directory_name) +{ + struct file_reference directory; + struct file_reference_info *info = (struct file_reference_info *)&directory; + + memset(info, 0, FILE_REFERENCE_SIZE); + info->signature = FILE_REFERENCE_SIGNATURE; + info->location = NONE; + + file_reference_add_directory(&directory, directory_name); + if (!file_exists(&directory)) + file_create(&directory); + + return; +} + boolean datastore_read( const char *file_name, const char *field_name, diff --git a/source/tag_files/files.h b/source/tag_files/files.h index b8b2316115..77559987bf 100644 --- a/source/tag_files/files.h +++ b/source/tag_files/files.h @@ -146,6 +146,7 @@ char *file_reference_get_name(const struct file_reference *reference, unsigned l boolean file_references_equal(const struct file_reference *reference0, const struct file_reference *reference1); struct file_reference *file_reference_create_from_path(struct file_reference *reference, const char *path, boolean is_directory); void directory_create_or_delete_contents(const char *directory_name); +void directory_create(const char *directory_name); boolean datastore_read(const char *file_name, const char *field_name, long length, void *data); boolean datastore_write(const char *file_name, const char *field_name, long length, const void *data); From 13d0644c65c3e18bdf4f2e38344bba7fcac97d73 Mon Sep 17 00:00:00 2001 From: justinfilip Date: Sun, 11 Oct 2026 13:37:40 -0500 Subject: [PATCH 15/29] Bring a co-op team inside with a scripted teleport. Campaign scripts only name two players, so a large group was left on the beach when Truth and Reconciliation's grav lift switched into the ship. (cherry picked from commit d6df944886a9e63807ef2af927ff07b8287df7be) --- port/linux/game/coop_scripts.c | 185 +++++++++++++++++++++++++++++++- port/linux/game/coop_scripts.h | 25 ++++- source/game/players.c | 24 +++++ source/game/players.h | 4 + source/hs/hs_library_external.c | 69 ++++++++---- source/units/bipeds.c | 17 ++- source/units/bipeds.h | 5 + 7 files changed, 302 insertions(+), 27 deletions(-) diff --git a/port/linux/game/coop_scripts.c b/port/linux/game/coop_scripts.c index 0853c587e6..1b4bb6f161 100644 --- a/port/linux/game/coop_scripts.c +++ b/port/linux/game/coop_scripts.c @@ -20,7 +20,9 @@ fires for whoever walks into it, and what it starts is sent to the clients player0 and player1 (the first two in the players list), to put them in a Pelican, take them out of it, stage them for a cutscene or give them a starting profile. Everyone past the second would be left out, so they - follow player0: wherever the scripts put player0, they go too. + follow player0: wherever the scripts put player0, they go too. A crowd + does not fit on one spot (Truth and Reconciliation's grav lift leaves + them on the beach), so they spread around that flag. */ /* ---------- headers */ @@ -30,8 +32,10 @@ fires for whoever walks into it, and what it starts is sent to the clients #include "game/game.h" #include "game/players.h" #include "hs/object_lists.h" +#include "math/real_math.h" #include "objects/objects.h" #include "objects/object_types.h" +#include "physics/collisions.h" #include "scenario/scenario.h" #include "units/bipeds.h" #include "units/units.h" @@ -157,17 +161,190 @@ static short players_following( return count; } +/* Clear structure between the two points at chest height, so a spot around +a corner or through a wall is not used. The floor is below the line. */ +static boolean line_of_sight_clear( + real_point3d const *from, + real_point3d const *to) +{ + real_point3d raised_from; + real_point3d raised_to; + struct collision_result collision; + + if (distance_squared3d(from, to) < 0.25f) + return TRUE; + raised_from = *from; + raised_to = *to; + raised_from.z += 0.5f; + raised_to.z += 0.5f; + return !collision_test_line( + FLAG(_collision_test_front_facing_surfaces_bit) | + FLAG(_collision_test_ignore_invisible_surfaces_bit) | + FLAG(_collision_test_structure_bit), + &raised_from, + &raised_to, + NONE, + &collision); +} + +/* Facing to copy: an arrived player who is on foot. A vehicle as the source +would search around the vehicle and ignore the point. */ +static long facing_unit( + long const *arrived_unit_indices, + short arrived_count) +{ + short index; + + for (index = 0; index < arrived_count; index++) + { + if (object_get_ultimate_parent(arrived_unit_indices[index]) == arrived_unit_indices[index]) + return arrived_unit_indices[index]; + } + + return NONE; +} + +static boolean teleport_to( + long player_index, + long face_unit, + real_point3d const *point, + boolean stack) +{ + boolean arrived; + + if (stack) + biped_fix_ignore_players(TRUE); + arrived = player_teleport(player_index, face_unit, point); + if (stack) + biped_fix_ignore_players(FALSE); + + return arrived; +} + +boolean coop_scripts_unit_near( + long unit_index, + real_point3d const *destination) +{ + if (unit_index == NONE || !destination) + return FALSE; + + return distance_squared3d(destination, &object_get(unit_index)->object.position) <= + COOP_SCRIPT_TELEPORT_RADIUS * COOP_SCRIPT_TELEPORT_RADIUS; +} + +boolean coop_scripts_arrive_at( + long player_index, + real_point3d const *destination, + long const *arrived_unit_indices, + short arrived_count) +{ + static real const ring_radius[] = { 1.5f, 3.f, 4.5f, 6.f, 7.5f }; + static real const ring_direction[][2] = + { + { 1.f, 0.f }, + { 0.70710677f, 0.70710677f }, + { 0.f, 1.f }, + { -0.70710677f, 0.70710677f }, + { -1.f, 0.f }, + { -0.70710677f, -0.70710677f }, + { 0.f, -1.f }, + { 0.70710677f, -0.70710677f } + }; + struct player_datum *player; + long face_unit; + long unit_index; + real_point3d original; + short index; + short radius_index; + short direction_index; + boolean stacked; + + if (!coop_scripts_host() || player_index == NONE || !destination) + return FALSE; + player = player_get(player_index); + unit_index = player->unit_index; + if (unit_index == NONE) + return FALSE; + original = object_get(unit_index)->object.position; + face_unit = facing_unit(arrived_unit_indices, arrived_count); + if (!player_position_switches_bsp(destination) && teleport_to(player_index, face_unit, destination, FALSE)) + return TRUE; + for (index = 0; index < arrived_count; index++) + { + real_point3d const *spot = &object_get(arrived_unit_indices[index])->object.position; + + if (!coop_scripts_unit_near(arrived_unit_indices[index], destination) || + !line_of_sight_clear(destination, spot) || + player_position_switches_bsp(spot)) + { + continue; + } + if (teleport_to(player_index, face_unit, spot, FALSE)) + return TRUE; + } + for (radius_index = 0; radius_index < (short)NUMBEROF(ring_radius); radius_index++) + { + for (direction_index = 0; direction_index < (short)NUMBEROF(ring_direction); direction_index++) + { + real_point3d spot; + + spot.x = destination->x + ring_radius[radius_index] * ring_direction[direction_index][0]; + spot.y = destination->y + ring_radius[radius_index] * ring_direction[direction_index][1]; + spot.z = destination->z; + if (!line_of_sight_clear(destination, &spot) || player_position_switches_bsp(&spot)) + continue; + if (teleport_to(player_index, face_unit, &spot, FALSE)) + return TRUE; + } + } + /* Still outside: stand on the flag itself, sharing it with whoever got + there. The next ticks ease the overlap apart inside the room. A refused + spot can already have moved them, so a failure here steps back. */ + stacked = !player_position_switches_bsp(destination) && teleport_to(player_index, face_unit, destination, TRUE); + if (!stacked) + teleport_to(player_index, NONE, &original, FALSE); + + return stacked; +} + void coop_scripts_teleport_followers( - long unit_index) + long unit_index, + real_point3d const *destination) { long followers[HALO_PORT_MAXIMUM_NETWORK_PLAYERS]; + long arrived[HALO_PORT_MAXIMUM_NETWORK_PLAYERS]; short count = players_following(unit_index, followers, NUMBEROF(followers)); + short arrived_count = 0; short index; + long player0_index; + if (count == 0 || !destination) + return; + /* player0's own teleport only searches an arm's length. If that missed, + try the wider search before anyone stands beside them. A spot inside a + BSP switch does not count: the next tick would switch the level. */ + player0_index = player_index_from_unit_index(unit_index); + if (coop_scripts_unit_near(unit_index, destination) && + !player_position_switches_bsp(&object_get(unit_index)->object.position)) + { + arrived[arrived_count++] = unit_index; + } + else if (player0_index != NONE && + coop_scripts_arrive_at(player0_index, destination, arrived, arrived_count) && + arrived_count < NUMBEROF(arrived)) + { + arrived[arrived_count++] = unit_index; + } for (index = 0; index < count; index++) { - player_teleport(player_index_from_unit_index(followers[index]), unit_index, - &object_get(unit_index)->object.position); + long player_index = player_index_from_unit_index(followers[index]); + + if (player_index != NONE && + coop_scripts_arrive_at(player_index, destination, arrived, arrived_count) && + arrived_count < NUMBEROF(arrived)) + { + arrived[arrived_count++] = followers[index]; + } } } diff --git a/port/linux/game/coop_scripts.h b/port/linux/game/coop_scripts.h index 5738404e8f..34e959ddbd 100644 --- a/port/linux/game/coop_scripts.h +++ b/port/linux/game/coop_scripts.h @@ -8,6 +8,8 @@ Campaign scripts made to work for every player in network co-op #ifndef __COOP_SCRIPTS_H #define __COOP_SCRIPTS_H +#include "math/real_math.h" + /* ---------- prototypes */ /* hs_library_external.c's volume_test_objects_all: whether to count the @@ -25,9 +27,28 @@ void coop_scripts_gather_in_volume( (the "followers"). Each does nothing unless `unit_index` is player0's in a co-op host's game. */ -/* hs_library_external.c's object_teleport: around player0 */ +/* How far from a script's teleport the other players may stand. Farther +than this, an open doorway would walk the group into the next room. */ +#define COOP_SCRIPT_TELEPORT_RADIUS 8.f + +/* hs_library_external.c's object_teleport: player0's followers go to +`destination` (the cutscene flag), spreading around it so a large group +fits. `destination` is the flag even when player0 did not reach it. */ void coop_scripts_teleport_followers( - long unit_index); + long unit_index, + real_point3d const *destination); +/* TRUE if the unit is within COOP_SCRIPT_TELEPORT_RADIUS of `destination` */ +boolean coop_scripts_unit_near( + long unit_index, + real_point3d const *destination); +/* Place this player at `destination`, or on the floor around players +already listed in `arrived_unit_indices`. Returns whether they are there +afterwards. Nothing happens unless this machine is the co-op host. */ +boolean coop_scripts_arrive_at( + long player_index, + real_point3d const *destination, + long const *arrived_unit_indices, + short arrived_count); /* units.c's unit_suspended */ void coop_scripts_suspend_followers( long unit_index, diff --git a/source/game/players.c b/source/game/players.c index d53568b54d..99c34fc6a0 100644 --- a/source/game/players.c +++ b/source/game/players.c @@ -3323,6 +3323,30 @@ void players_respawn_at_checkpoint( return; } +boolean player_position_switches_bsp( + real_point3d const *position) +{ + struct scenario *scenario = global_scenario_get(); + short index; + + if (!position || !scenario || global_structure_bsp_index == NONE) + return FALSE; + /* port: a short counter stops at SHORT_MAX (a map's count) */ + for (index = 0; index < MIN(scenario->bsp_switch_trigger_volumes.count, SHORT_MAX); index++) + { + struct scenario_bsp_switch_trigger_volume *volume = TAG_BLOCK_GET_ELEMENT( + &scenario->bsp_switch_trigger_volumes, index, struct scenario_bsp_switch_trigger_volume); + + if (volume->source_structure_bsp_index == global_structure_bsp_index && + scenario_trigger_volume_test_point(volume->trigger_volume_index, position)) + { + return TRUE; + } + } + + return FALSE; +} + /* port: the trigger that switches away from the loaded structure BSP the unit stands in, or NONE */ static short players_coop_bsp_switch_trigger( diff --git a/source/game/players.h b/source/game/players.h index 34e297493b..31f06277fe 100644 --- a/source/game/players.h +++ b/source/game/players.h @@ -388,6 +388,10 @@ boolean players_coop_waiting_to_start( /* port: the co-op host's bringto command: everyone comes to the host */ boolean players_coop_bring_to_host( void); +/* TRUE if `position` is inside a switch trigger for the BSP that is loaded. +A player left there switches the level on the next tick. */ +boolean player_position_switches_bsp( + real_point3d const *position); void players_note_checkpoint( void); void players_respawn_at_checkpoint( diff --git a/source/hs/hs_library_external.c b/source/hs/hs_library_external.c index d6bdca3863..e8ffe0b223 100644 --- a/source/hs/hs_library_external.c +++ b/source/hs/hs_library_external.c @@ -1043,9 +1043,18 @@ void hs_object_teleport( long object_index, short cutscene_flag_index) { - hs_object_orient(object_index, cutscene_flag_index, TRUE, TRUE); - /* port: co-op players the scripts can't name go with player0 */ - coop_scripts_teleport_followers(object_index); + /* port: followers go to the flag, not to wherever player0 was left when + that teleport did not fit */ + if (object_index != NONE) + { + struct scenario_cutscene_flag *flag = TAG_BLOCK_GET_ELEMENT( + &global_scenario_get()->cutscene_flags, + cutscene_flag_index, + struct scenario_cutscene_flag); + + hs_object_orient(object_index, cutscene_flag_index, TRUE, TRUE); + coop_scripts_teleport_followers(object_index, &flag->position); + } return; } @@ -1064,9 +1073,20 @@ void hs_teleport_players_not_in_trigger_volume( short cutscene_flag_index) { long player_index; - /* port: in network co-op the first player moved goes to the flag and - the rest around them, instead of all into the same spot */ - long first_unit_index = NONE; + /* port: in network co-op the host spreads players around the flag. + A client does not move them; the host's copies arrive with the units. */ + long arrived[HALO_PORT_MAXIMUM_NETWORK_PLAYERS]; + short arrived_count = 0; + boolean coop = network_coop_active(); + struct scenario_cutscene_flag *flag = NULL; + + if (coop && game_connection() == _game_connection_network_server) + { + flag = TAG_BLOCK_GET_ELEMENT( + &global_scenario_get()->cutscene_flags, + cutscene_flag_index, + struct scenario_cutscene_flag); + } for (player_index = data_next_index(player_data, NONE); player_index != NONE; @@ -1075,23 +1095,34 @@ void hs_teleport_players_not_in_trigger_volume( struct player_datum *player; player = player_get(player_index); - if (player->unit_index != NONE && - !scenario_trigger_volume_test_object( + if (player->unit_index == NONE || + scenario_trigger_volume_test_object( trigger_volume_index, player->unit_index)) { - if (first_unit_index != NONE && network_coop_active()) - { - player_teleport(player_index, first_unit_index, &object_get(first_unit_index)->object.position); - continue; - } - hs_object_orient( - player->unit_index, - cutscene_flag_index, - TRUE, - TRUE); - first_unit_index = player->unit_index; + continue; + } + if (coop && !flag) + continue; + if (flag) + { + boolean here = FALSE; + + if (arrived_count == 0) + hs_object_orient(player->unit_index, cutscene_flag_index, TRUE, TRUE); + here = coop_scripts_unit_near(player->unit_index, &flag->position) && + !player_position_switches_bsp(&object_get(player->unit_index)->object.position); + if (!here) + here = coop_scripts_arrive_at(player_index, &flag->position, arrived, arrived_count); + if (here && arrived_count < NUMBEROF(arrived)) + arrived[arrived_count++] = player->unit_index; + continue; } + hs_object_orient( + player->unit_index, + cutscene_flag_index, + TRUE, + TRUE); } return; diff --git a/source/units/bipeds.c b/source/units/bipeds.c index 73015ac97a..f5f741d9eb 100644 --- a/source/units/bipeds.c +++ b/source/units/bipeds.c @@ -540,6 +540,17 @@ boolean rider_ejection = TRUE; static struct profile_section biped_update_section = {"biped_update", NONE, TRUE}; +/* port: coop_scripts.c sets this around one teleport */ +static boolean biped_fix_ignores_players; + +void biped_fix_ignore_players( + boolean ignore) +{ + biped_fix_ignores_players = ignore; + + return; +} + extern boolean debug_objects_biped_autoaim_pills; extern boolean debug_objects_biped_physics_pills; @@ -1163,8 +1174,10 @@ boolean biped_fix_position( _collision_test_for_bipeds_passthrough_living_flags : _collision_test_for_bipeds_living_flags; /* port: (where it fits among the other players, as it moves: - _biped_physics_in_pass_through_players_bit) */ - if (biped->unit.player_index != NONE && !network_coop_player_collisions()) + _biped_physics_in_pass_through_players_bit). A scripted co-op + teleport can also stand on a teammate for this one call. */ + if (biped_fix_ignores_players || + (biped->unit.player_index != NONE && !network_coop_player_collisions())) collision_flags |= FLAG(_collision_test_skip_player_bipeds_bit); } diff --git a/source/units/bipeds.h b/source/units/bipeds.h index 3c171d2aae..bc5e3fd4b3 100644 --- a/source/units/bipeds.h +++ b/source/units/bipeds.h @@ -136,6 +136,11 @@ boolean biped_fix_position( boolean fix_below_new_position, boolean dont_teleport, boolean use_radius_as_multiplier); +/* port: the next biped_fix_position calls skip other players, so a co-op +script can stand someone on a spot a teammate already occupies. Cleared by +the caller before it returns. */ +void biped_fix_ignore_players( + boolean ignore); void biped_accelerate( long biped_index, real_vector3d *acceleration); From 3c0fead34bf43b07ff1b2f478408cf5beec444bc Mon Sep 17 00:00:00 2001 From: justinfilip Date: Sat, 10 Oct 2026 21:13:01 -0500 Subject: [PATCH 16/29] A multiplayer match keeps the flashlight past the Xbox player and vehicle limits. (cherry picked from commit 417de7e2ad0ad3b3b70f0502231db6b72d9db7df) --- source/game/game_engine.c | 54 +++------------------------------------ 1 file changed, 4 insertions(+), 50 deletions(-) diff --git a/source/game/game_engine.c b/source/game/game_engine.c index 584af45718..93f97397fb 100644 --- a/source/game/game_engine.c +++ b/source/game/game_engine.c @@ -4216,7 +4216,6 @@ static void game_engine_build_lighting( void) { long player_count = 0; - long object_count = 0; { struct data_iterator iterator; @@ -4226,55 +4225,10 @@ static void game_engine_build_lighting( player_count++; } - if (global_variant.universal_variant.vehicle_set != _game_engine_vehicles_none) - { - if (global_variant.game_engine_index == game_engine_race) - { - struct scenario *scenario = global_scenario_get(); - /* port: a long counter, for a map's long count */ - long flag_index; - - for (flag_index = 0; - flag_index < scenario->netgame_flags.count; - flag_index++) - { - struct scenario_netgame_flag *flag = TAG_BLOCK_GET_ELEMENT( - &scenario->netgame_flags, - flag_index, - struct scenario_netgame_flag); - - if (flag->type == _netgame_flag_race_vehicle) - object_count++; - } - - if (object_count > player_count) - object_count = player_count; - } - else - { - struct object_iterator object_iterator; - - object_iterator_new( - &object_iterator, - _object_mask_vehicle, - 0); - while (object_iterator_next(&object_iterator)) - object_count++; - } - } - - if ((player_count > 8 && object_count >= 2) || - player_count >= 13) - { - SET_FLAG(game_engine_globals.flags, _game_engine_disable_dynamic_light_bit, TRUE); - } - - if (player_count > 4 || - object_count >= 4 || - TEST_FLAG(game_engine_globals.flags, _game_engine_disable_dynamic_light_bit)) - { - SET_FLAG(game_engine_globals.flags, _game_engine_disable_integrated_lights_bit, TRUE); - } + /* port: the Xbox turned dynamic lights off past 13 players, or past 8 + with two vehicles, and the flashlight off past 4 players or 4 vehicles. + A match on a map with a few vehicles then had a flashlight, and the next + one did not. The beam is a dynamic light, so both stay on. */ if (player_count >= 5) SET_FLAG(game_engine_globals.flags, _game_engine_5_or_more_players_bit, TRUE); From 69e784910325a4d67b5dd25a70f629e65402c4b7 Mon Sep 17 00:00:00 2001 From: justinfilip Date: Sat, 10 Oct 2026 20:01:47 -0500 Subject: [PATCH 17/29] A multiplayer script that switches BSP to cycle the sky no longer reloads the level. (cherry picked from commit c3365b1c6979b946c4a77cc274f75f9d8dd45650) --- source/hs/hs.c | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/source/hs/hs.c b/source/hs/hs.c index 213fd10d51..9a69346cf5 100644 --- a/source/hs/hs.c +++ b/source/hs/hs.c @@ -14957,7 +14957,36 @@ HS_EVALUATE_VOID_FROM_ARGUMENTS(debug_player_teleport_evaluate, struct hs_argume HS_EVALUATE_VOID_STRING(main_set_map_name_evaluate, main_set_map_name) HS_EVALUATE_VOID_STRING(main_set_multiplayer_map_name_evaluate, main_set_multiplayer_map_name) HS_EVALUATE_VOID_UNSIGNED_SHORT(main_set_difficulty_evaluate, main_set_difficulty) -HS_EVALUATE_VOID_FROM_ARGUMENTS(scenario_switch_structure_bsp_evaluate, struct hs_arguments_word, (scenario_switch_structure_bsp(arguments->value))) +/* port: a multiplayer script that switches BSP to change the sky reloads the +level every couple of seconds. Three copies of one place, each with its own +sky, is how a map such as TSCE does daybreak, dawn and day. The BSP the match +loaded stays. A player walking through a BSP trigger still switches, and a +campaign script still switches. */ +static void scenario_switch_structure_bsp_evaluate( + short function_index, + long thread_index, + boolean initialize) +{ + struct hs_arguments_word const *arguments; + static boolean reported = FALSE; + + arguments = (struct hs_arguments_word const *)hs_macro_function_evaluate(function_index, thread_index, initialize); + if (arguments) + { + if (game_engine_running() && global_structure_bsp_index_get() != NONE) + { + if (!reported) + { + reported = TRUE; + error(_error_silent, "switch_bsp from a script is ignored in a multiplayer game; the map keeps the bsp it loaded"); + } + } + else + scenario_switch_structure_bsp((short)arguments->value); + hs_return(thread_index, 0); + } + return; +} HS_EVALUATE_VOID_STRING(main_crash_evaluate, main_crash) HS_EVALUATE_VOID_STRING(debug_dump_memory_for_file_evaluate, debug_dump_memory_for_file) HS_EVALUATE_VOID_STRING(profile_dump_to_file_evaluate, profile_dump_to_file) From 37d2bc7dd70fda5ac436ee2e92367c4a6083fbec Mon Sep 17 00:00:00 2001 From: justinfilip Date: Sun, 11 Oct 2026 13:37:40 -0500 Subject: [PATCH 18/29] Keep a multiplayer map's first scripted BSP switch so the host's game type chooses the sky. (cherry picked from commit b71bd6a0faf5fa887eed3c22905afcbfe459facf) --- source/hs/hs.c | 42 ++++++++++++++++++++++++++++-------------- 1 file changed, 28 insertions(+), 14 deletions(-) diff --git a/source/hs/hs.c b/source/hs/hs.c index 9a69346cf5..c4a2d471da 100644 --- a/source/hs/hs.c +++ b/source/hs/hs.c @@ -13549,11 +13549,20 @@ void hs_node_gc( return; } +/* port: some multiplayer maps keep a copy of the place for each game type, +with its own sky. The script's first switch_bsp is the copy for the type the +host started. A later switch to another copy reloads the level every couple +of seconds, so that request is ignored. Cleared for each map. */ +static short scripted_multiplayer_bsp = NONE; +static boolean scripted_multiplayer_bsp_reported = FALSE; + void hs_initialize_for_new_map( void) { struct scenario *scenario; + scripted_multiplayer_bsp = NONE; + scripted_multiplayer_bsp_reported = FALSE; scenario = global_scenario_index != NONE ? global_scenario_get() : NULL; hs_allocate(); if (scenario && scenario->hs_syntax_data.size) @@ -14957,32 +14966,37 @@ HS_EVALUATE_VOID_FROM_ARGUMENTS(debug_player_teleport_evaluate, struct hs_argume HS_EVALUATE_VOID_STRING(main_set_map_name_evaluate, main_set_map_name) HS_EVALUATE_VOID_STRING(main_set_multiplayer_map_name_evaluate, main_set_multiplayer_map_name) HS_EVALUATE_VOID_UNSIGNED_SHORT(main_set_difficulty_evaluate, main_set_difficulty) -/* port: a multiplayer script that switches BSP to change the sky reloads the -level every couple of seconds. Three copies of one place, each with its own -sky, is how a map such as TSCE does daybreak, dawn and day. The BSP the match -loaded stays. A player walking through a BSP trigger still switches, and a -campaign script still switches. */ +/* port: a campaign script still switches, and so does a player walking +through a BSP trigger (main_switch_structure_bsp, not this). */ static void scenario_switch_structure_bsp_evaluate( short function_index, long thread_index, boolean initialize) { struct hs_arguments_word const *arguments; - static boolean reported = FALSE; + short structure_bsp_index; arguments = (struct hs_arguments_word const *)hs_macro_function_evaluate(function_index, thread_index, initialize); if (arguments) { - if (game_engine_running() && global_structure_bsp_index_get() != NONE) + structure_bsp_index = (short)arguments->value; + if (!game_engine_running() || global_structure_bsp_index_get() == NONE) { - if (!reported) - { - reported = TRUE; - error(_error_silent, "switch_bsp from a script is ignored in a multiplayer game; the map keeps the bsp it loaded"); - } + scripted_multiplayer_bsp = NONE; + scripted_multiplayer_bsp_reported = FALSE; + scenario_switch_structure_bsp(structure_bsp_index); + } + else if (scripted_multiplayer_bsp == NONE || + scripted_multiplayer_bsp == structure_bsp_index) + { + scripted_multiplayer_bsp = structure_bsp_index; + scenario_switch_structure_bsp(structure_bsp_index); + } + else if (!scripted_multiplayer_bsp_reported) + { + scripted_multiplayer_bsp_reported = TRUE; + error(_error_silent, "switch_bsp from a script is ignored after the multiplayer game has chosen its bsp"); } - else - scenario_switch_structure_bsp((short)arguments->value); hs_return(thread_index, 0); } return; From c35319b11fbf550d49fadffa770783fa9ed59a99 Mon Sep 17 00:00:00 2001 From: MrBruh <4706866+cybersecurity@users.noreply.github.com> Date: Mon, 12 Oct 2026 20:01:49 +1300 Subject: [PATCH 19/29] Testing branch review fixes Network version 28: the host now holds a downloading machine's players out of the game, and keeps a multiplayer map's first scripted BSP. Dynamic lights and the flashlight stay on past the Xbox limits, and a second weapon picked up while firing is readied. Machines of version 27 would disagree on these. - A large co-op game's respawn fallback no longer picks a teammate who is in the air, outside the BSP, or riding an AI vehicle. - A machine still downloading the map times out when it goes silent. - Held players join through the late-join queue, so they get the same checks. A machine with no held players is started instead of being refused. - The co-op teleport uses world positions, which are right for seated players. - Overshield drain no longer cuts off a hit's flash, and hits over 0.02 flash. - The menu XML is the generator's (Custom Edition's layout) again. - port: markers on two new declarations. Checked: ninja linux, android and web build; tools/harness, test_touch_menu and test_web_build pass. (cherry picked from commit 5a7c655a60555215864391433716ddd966ba3079) --- .../ce/main_menu.multiplayer_type_select.xml | 4 +- ...multiplayer_setup.vehicle_options_edit.xml | 16 +++--- ...elect.player_setup.player_profile_edit.xml | 10 ++-- port/linux/NETCODE.md | 6 ++- port/linux/game/coop_scripts.c | 19 ++++--- port/linux/include/halo_port_limits.h | 2 +- source/game/players.c | 24 +++++---- source/game/players.h | 4 +- source/hs/hs_library_external.c | 3 +- source/interface/hud_unit.c | 17 +++++-- source/networking/network_server_manager.c | 49 +++++++------------ source/tag_files/files.h | 1 + 12 files changed, 84 insertions(+), 71 deletions(-) diff --git a/port/assets/menus/ce/main_menu.multiplayer_type_select.xml b/port/assets/menus/ce/main_menu.multiplayer_type_select.xml index 8bee5e03fc..496ac69e7f 100644 --- a/port/assets/menus/ce/main_menu.multiplayer_type_select.xml +++ b/port/assets/menus/ce/main_menu.multiplayer_type_select.xml @@ -60,13 +60,13 @@ - + - + diff --git a/port/assets/menus/ce/main_menu.settings_select.multiplayer_setup.vehicle_options_edit.xml b/port/assets/menus/ce/main_menu.settings_select.multiplayer_setup.vehicle_options_edit.xml index d5966e704b..d7f89beb8a 100644 --- a/port/assets/menus/ce/main_menu.settings_select.multiplayer_setup.vehicle_options_edit.xml +++ b/port/assets/menus/ce/main_menu.settings_select.multiplayer_setup.vehicle_options_edit.xml @@ -85,14 +85,14 @@ - - - - - - - - + + + + + + + + diff --git a/port/assets/menus/ce/main_menu.settings_select.player_setup.player_profile_edit.xml b/port/assets/menus/ce/main_menu.settings_select.player_setup.player_profile_edit.xml index e58432705d..ce9faa79c5 100644 --- a/port/assets/menus/ce/main_menu.settings_select.player_setup.player_profile_edit.xml +++ b/port/assets/menus/ce/main_menu.settings_select.player_setup.player_profile_edit.xml @@ -1,7 +1,7 @@ - + @@ -9,7 +9,7 @@ - + @@ -36,7 +36,7 @@ - + @@ -79,8 +79,8 @@ - - + + diff --git a/port/linux/NETCODE.md b/port/linux/NETCODE.md index 17b1c09d5b..67b1811f70 100644 --- a/port/linux/NETCODE.md +++ b/port/linux/NETCODE.md @@ -189,7 +189,11 @@ machine say its WebRTC in internet play's signalling (a native build's certificate, a browser's ICE credentials too), so that browsers play (port/linux/README.md, "Browsers"); version 27 shares Custom Edition maps (below, "Map sharing"): a client asks the host for a map it lacks, and the -game's players reach each other to send it. +game's players reach each other to send it; version 28 holds the players of a +machine still downloading the map out of the game until it has the map, keeps +a multiplayer map's first scripted BSP, leaves dynamic lights and the +flashlight on past the Xbox game's player and vehicle limits, and readies a +second weapon picked up while firing. This Mac build plays that options record (time limit, loadout, friendly fire, vehicle respawn, team balance, radar, vehicle sets, and no-map-weapons) and diff --git a/port/linux/game/coop_scripts.c b/port/linux/game/coop_scripts.c index 1b4bb6f161..fa54408351 100644 --- a/port/linux/game/coop_scripts.c +++ b/port/linux/game/coop_scripts.c @@ -225,10 +225,13 @@ boolean coop_scripts_unit_near( long unit_index, real_point3d const *destination) { + real_point3d origin; + if (unit_index == NONE || !destination) return FALSE; - return distance_squared3d(destination, &object_get(unit_index)->object.position) <= + /* (in the world: a seated unit's position is its seat's, in the vehicle) */ + return distance_squared3d(destination, object_get_origin(unit_index, &origin)) <= COOP_SCRIPT_TELEPORT_RADIUS * COOP_SCRIPT_TELEPORT_RADIUS; } @@ -265,21 +268,22 @@ boolean coop_scripts_arrive_at( unit_index = player->unit_index; if (unit_index == NONE) return FALSE; - original = object_get(unit_index)->object.position; + object_get_origin(unit_index, &original); face_unit = facing_unit(arrived_unit_indices, arrived_count); if (!player_position_switches_bsp(destination) && teleport_to(player_index, face_unit, destination, FALSE)) return TRUE; for (index = 0; index < arrived_count; index++) { - real_point3d const *spot = &object_get(arrived_unit_indices[index])->object.position; + real_point3d spot; + object_get_origin(arrived_unit_indices[index], &spot); if (!coop_scripts_unit_near(arrived_unit_indices[index], destination) || - !line_of_sight_clear(destination, spot) || - player_position_switches_bsp(spot)) + !line_of_sight_clear(destination, &spot) || + player_position_switches_bsp(&spot)) { continue; } - if (teleport_to(player_index, face_unit, spot, FALSE)) + if (teleport_to(player_index, face_unit, &spot, FALSE)) return TRUE; } for (radius_index = 0; radius_index < (short)NUMBEROF(ring_radius); radius_index++) @@ -317,6 +321,7 @@ void coop_scripts_teleport_followers( short arrived_count = 0; short index; long player0_index; + real_point3d origin; if (count == 0 || !destination) return; @@ -325,7 +330,7 @@ void coop_scripts_teleport_followers( BSP switch does not count: the next tick would switch the level. */ player0_index = player_index_from_unit_index(unit_index); if (coop_scripts_unit_near(unit_index, destination) && - !player_position_switches_bsp(&object_get(unit_index)->object.position)) + !player_position_switches_bsp(object_get_origin(unit_index, &origin))) { arrived[arrived_count++] = unit_index; } diff --git a/port/linux/include/halo_port_limits.h b/port/linux/include/halo_port_limits.h index fe7e0dcfb4..8e8f67fa6e 100644 --- a/port/linux/include/halo_port_limits.h +++ b/port/linux/include/halo_port_limits.h @@ -66,7 +66,7 @@ is newer (network_client_manager.c). A host advertises it, with its netcode, in its game's advertisement's reserved bytes (network_server_message_handler.c), which hosts built before there was a version send as zeros: version 0. Raise it with any change to what the machines send each other. */ -#define HALO_PORT_NETWORK_VERSION 27 +#define HALO_PORT_NETWORK_VERSION 28 /* ... the advertisement's reserved bytes: the version (a little-endian word), then flags */ #define HALO_PORT_ADVERTISED_VERSION_OFFSET 0 diff --git a/source/game/players.c b/source/game/players.c index 99c34fc6a0..04dcec5aa9 100644 --- a/source/game/players.c +++ b/source/game/players.c @@ -2744,10 +2744,10 @@ game uses the largest group of living teammates, jumping, riding, or standing where the BSP has no cluster (a beach) included. The respawn is beside someone in that group who is safe to spawn next to. When that whole group is in a fight, it waits out COOP_RESPAWN_FALLBACK_TICKS and then uses -the group anyway, someone standing in the BSP if the group has one. A safe +someone standing in the BSP anyway, in the group if it has one. A safe player outside the group does not win. A dead host has no unit, so the same count applies to them. NONE while the group is still unsafe, or while -nobody is alive. */ +nobody alive is standing in the BSP. */ static long players_coop_respawn_unit( void) { @@ -2821,29 +2821,35 @@ static long players_coop_respawn_unit( return unit_indices[safe_index]; if (game_time_get() + 1 - players_coop_state.respawn_wait_since >= COOP_RESPAWN_FALLBACK_TICKS) { - short fallback_index = anchor_index; + short fallback_index = -1; short fallback_count = 0; + boolean fallback_in_group = FALSE; - /* someone standing in the BSP, even under fire, before a teammate - who is in the air or outside the BSP */ + /* someone standing in the BSP, even under fire: in the group if it + has one, else anyone. Never someone in the air, outside the BSP or + riding an AI vehicle (the Pelican): NONE waits for one */ for (index = 0; index < count; index++) { short near_count; + boolean in_group; - if (distance_squared3d(&positions[anchor_index], &positions[index]) > radius_squared || - !players_coop_unit_grounded(unit_indices[index]) || + if (!players_coop_unit_grounded(unit_indices[index]) || !players_coop_unit_spawnable(unit_indices[index])) { continue; } + in_group = distance_squared3d(&positions[anchor_index], &positions[index]) <= radius_squared; + if (fallback_in_group && !in_group) + continue; near_count = players_coop_near_count(positions, count, index, radius_squared); - if (near_count > fallback_count) + if ((in_group && !fallback_in_group) || near_count > fallback_count) { fallback_count = near_count; fallback_index = index; + fallback_in_group = in_group; } } - return unit_indices[fallback_index]; + return fallback_index >= 0 ? unit_indices[fallback_index] : NONE; } return NONE; diff --git a/source/game/players.h b/source/game/players.h index 31f06277fe..a2ea43ba72 100644 --- a/source/game/players.h +++ b/source/game/players.h @@ -388,8 +388,8 @@ boolean players_coop_waiting_to_start( /* port: the co-op host's bringto command: everyone comes to the host */ boolean players_coop_bring_to_host( void); -/* TRUE if `position` is inside a switch trigger for the BSP that is loaded. -A player left there switches the level on the next tick. */ +/* port: TRUE if `position` is inside a switch trigger for the BSP that is +loaded. A player left there switches the level on the next tick. */ boolean player_position_switches_bsp( real_point3d const *position); void players_note_checkpoint( diff --git a/source/hs/hs_library_external.c b/source/hs/hs_library_external.c index e8ffe0b223..7018e5c288 100644 --- a/source/hs/hs_library_external.c +++ b/source/hs/hs_library_external.c @@ -1107,11 +1107,12 @@ void hs_teleport_players_not_in_trigger_volume( if (flag) { boolean here = FALSE; + real_point3d origin; if (arrived_count == 0) hs_object_orient(player->unit_index, cutscene_flag_index, TRUE, TRUE); here = coop_scripts_unit_near(player->unit_index, &flag->position) && - !player_position_switches_bsp(&object_get(player->unit_index)->object.position); + !player_position_switches_bsp(object_get_origin(player->unit_index, &origin)); if (!here) here = coop_scripts_arrive_at(player_index, &flag->position, arrived, arrived_count); if (here && arrived_count < NUMBEROF(arrived)) diff --git a/source/interface/hud_unit.c b/source/interface/hud_unit.c index f504693fa1..6e231dc263 100644 --- a/source/interface/hud_unit.c +++ b/source/interface/hud_unit.c @@ -537,13 +537,20 @@ static void hud_update_unit_local_player( client does not drain shields. The lower value arrived as a hit, so the meter flashed and the shield damage sound played for the whole overshield. A small step from past full is that - drain. A larger step is a hit, and the meter still flashes. - The step is closed here, so one late packet cannot leave the - meter a little behind and keep the flash going. */ - if (hud_state->last_shield_vitality > 1.0f && shield_drop <= 0.05f) + drain (no more than about 25 ticks of it). A larger step is a + hit, and the meter still flashes. The step is closed here, so + one late packet cannot leave the meter a little behind and keep + the flash going, and a hit's flash already fading goes on + fading, as when the shield holds still. */ + if (hud_state->last_shield_vitality > 1.0f && shield_drop <= 0.02f) { hud_state->last_shield_vitality = unit->object.shield_vitality; - hud_state->fade_time = -1.0f; + if (hud_state->fade_time > 0.0f) + { + hud_state->fade_time += + (real)(game_time_get() - hud_state->last_shield_hit_time) * + (1.0f / TICKS_PER_SECOND); + } hud_state->last_shield_hit_time = game_time_get(); } else diff --git a/source/networking/network_server_manager.c b/source/networking/network_server_manager.c index 8777385785..28266ec9f1 100644 --- a/source/networking/network_server_manager.c +++ b/source/networking/network_server_manager.c @@ -743,7 +743,7 @@ static void network_game_server_restore_held_players( struct network_game_server *server); static void network_game_server_discard_held_players( long machine_index); -static boolean network_game_server_admit_held_players( +static boolean network_game_server_queue_held_players( struct network_game_server *server, long machine_index); static void network_game_server_release_map_fetchers( @@ -3033,8 +3033,11 @@ static void network_game_server_discard_held_players( } } -/* the held players join the game that is already going, which spawns them */ -static boolean network_game_server_admit_held_players( +/* the held players are queued to join the game that is already going, as +any late joiner's players are (network_game_server_queue_player_for_addition): +the same checks, a name made unique against whoever joined meanwhile, and the +machine started, or refused, once they are in. FALSE if it had none held. */ +static boolean network_game_server_queue_held_players( struct network_game_server *server, long machine_index) { @@ -3044,7 +3047,6 @@ static boolean network_game_server_admit_held_players( while (index < network_game_server_held_player_count) { struct network_player player; - short *count; if (network_game_server_held_players[index].machine_index != machine_index) { @@ -3059,33 +3061,17 @@ static boolean network_game_server_admit_held_players( network_game_server_held_players[network_game_server_held_player_count]; } player.player_list_index = NONE; - if (!network_game_server_machine_may_add_player_ingame(server, machine_index) || - !network_game_add_player(&server->game, &player)) - { - network_event("failed to add a player from machine #%ld after the map downloaded", - machine_index); - continue; - } + network_game_server_queue_player_for_addition(server, &player); + network_event("a player from machine #%ld joins now that the map is downloaded", + machine_index); any = TRUE; - if (!network_game_server_client_machine_is_local(server, &server->client_machines[machine_index])) - { - count = network_game_server_ingame_addition_count( - network_game_server_client_machine_addresses[machine_index], TRUE); - if (count) - (*count)++; - } - if (!network_game_server_send_player_joined_info_ingame(server, &player)) - network_event("failed to tell the game of a player joining after the map downloaded"); - else - network_event("a player from machine #%ld joins now that the map is downloaded", - machine_index); } return any; } /* port: a machine that was still downloading the map when the others -started. Once the download is done and the game has begun, its players -join, and then it does. */ +started. Once the download is done and the game has begun, its players are +queued to join, and it starts when they are in. */ static void network_game_server_release_map_fetchers( struct network_game_server *server) { @@ -3115,10 +3101,10 @@ static void network_game_server_release_map_fetchers( network_game_server_discard_held_players(machine_index); continue; } - if (network_game_server_admit_held_players(server, machine_index)) + /* (one that had no players added before the start has none held: it + starts now, and its add request is queued as any late joiner's) */ + if (!network_game_server_queue_held_players(server, machine_index)) network_game_server_start_late_joiner(server, machine); - else - network_game_server_refuse_late_joiner(server, machine, _rejection_code_game_is_full); } } @@ -3899,11 +3885,14 @@ static boolean network_game_server_client_machine_timed_out( its players join: port/linux/game/map_share.c) */ if (map_share_machine_downloading(machine->machine_index)) return FALSE; - /* (its players were held out of the game until the download finishes) */ + /* (its players were held out of the game until the download finishes, + so it has none yet: only its silence times it out, as a crashed one or + one whose download failed would otherwise keep its slot and its players + held all game) */ if (machine->machine_index >= 0 && machine->machine_index < MAXIMUM_NETWORK_MACHINE_COUNT && network_game_server_map_pending[machine->machine_index]) { - return FALSE; + return silence > NETWORK_GAME_SERVER_LATE_JOINER_TIMEOUT; } /* (joining the game in progress: waiting for its players to be added, or loading; port: one that adds none in the time a machine has to in diff --git a/source/tag_files/files.h b/source/tag_files/files.h index 77559987bf..4494c42b7b 100644 --- a/source/tag_files/files.h +++ b/source/tag_files/files.h @@ -146,6 +146,7 @@ char *file_reference_get_name(const struct file_reference *reference, unsigned l boolean file_references_equal(const struct file_reference *reference0, const struct file_reference *reference1); struct file_reference *file_reference_create_from_path(struct file_reference *reference, const char *path, boolean is_directory); void directory_create_or_delete_contents(const char *directory_name); +/* port: makes the folder when it is missing (shell_initialize: custom_maps) */ void directory_create(const char *directory_name); boolean datastore_read(const char *file_name, const char *field_name, long length, void *data); boolean datastore_write(const char *file_name, const char *field_name, long length, const void *data); From b1a43ef2508e05337d3a326ef577789a0b278997 Mon Sep 17 00:00:00 2001 From: Logan Shire Date: Mon, 12 Oct 2026 22:20:00 -0400 Subject: [PATCH 20/29] Restore iOS discovery and rank joinable servers by population --- docs/apple-ios-migration.md | 6 +- docs/apple-network-28.md | 118 ++++++++ docs/xbox-fidelity.md | 7 + .../ce/main_menu.multiplayer_type_select.xml | 4 +- ...multiplayer_setup.vehicle_options_edit.xml | 16 +- ...elect.player_setup.player_profile_edit.xml | 10 +- port/ios/CMakeLists.txt | 4 + port/ios/host/host_main.m | 9 + port/linux/game/menu_functions.c | 6 +- port/linux/game/network_test.c | 3 +- port/linux/network_format.txt | 271 ++++++++++++++++++ port/linux/src/p2p.h | 4 +- port/linux/src/p2p_lobby.c | 23 +- source/interface/hud_unit.c | 17 +- tools/network_format.py | 169 +++++++++++ tools/test_lobby_ranking.py | 47 +++ 16 files changed, 675 insertions(+), 39 deletions(-) create mode 100644 docs/apple-network-28.md create mode 100644 port/linux/network_format.txt create mode 100644 tools/network_format.py create mode 100644 tools/test_lobby_ranking.py diff --git a/docs/apple-ios-migration.md b/docs/apple-ios-migration.md index 1f7f2f419a..a14575d8d3 100644 --- a/docs/apple-ios-migration.md +++ b/docs/apple-ios-migration.md @@ -25,7 +25,7 @@ The old branch has a local backup and bundle before it is retired. | Mac disc imports | Retain a SHA-256-verified private ISO/XISO beside extracted maps; store that private image path so later launches and community tooling do not depend on the selected external file. | | Existing saves/imports | Preserve old branch Documents/save and generation store, plus innerhat's previous extracted-map and save paths. IDs/accounts must remain unchanged for in-place updates. | | iPad, touch and controller handling | Enable universal device family, bring over touch layout/D-pad/primary-controller routing and landscape handling. Correct the earlier swapped flashlight/grenade labels. | -| Metal / OpenGL switch | Use upstream's shared Metal renderer. The old native OpenGL ES fallback is intentionally retired; no nonfunctional renderer switch is displayed. | +| Metal / OpenGL switch | Metal remains the default; native OpenGL ES was restored with explicit driver dispatch and EAGL window framebuffer handling. Both are selected in the persisted shake menu. | | MetalFX and shader diagnostics | Adapt optional MetalFX, bounded ANGLE blob cache and shareable source/timing reports to the upstream context. Separate Mac graphics window; shake modal on iOS. | | Mac menus, audio during menus, Quit | Retain upstream's native menu/audio integration rather than overwrite it with the older host. | | Mouse sensitivity | Carry over 1–100, default 20 (0.10 multiplier), preserving existing config units and vertical SAME. Expand matching menu capacities to 128. | @@ -67,3 +67,7 @@ retail fidelity or network interoperability with older deployed clients. Mac importer regression checks also delete the original selected ISO and verify that the retained image, extracted maps and reloaded preferences remain usable. Failed imports leave the previous selection untouched. + +## Current networking + +See [protocol 28 and discovery validation](apple-network-28.md). diff --git a/docs/apple-network-28.md b/docs/apple-network-28.md new file mode 100644 index 0000000000..e8859a596c --- /dev/null +++ b/docs/apple-network-28.md @@ -0,0 +1,118 @@ +# Apple server discovery and protocol 28 + +The Apple baseline is innerhat `036b9fe609bdba518711464ce24d2a2d9a3d7caf` (protocol 26). +This targeted update uses OpenCommunityEdition/OpenCE `b1ef7f7e` (protocol 28), +with the original authors retained on cherry-picked commits. It does not merge +upstream wholesale. The old protocol-11 narrative in the inherited fidelity +policy predates this Apple migration; it is not the protocol of these builds. + +## Changes and behavior + +- iOS previously omitted `brokers.txt`. Bundle it and atomically refresh the + default beside `save/config.toml` on launch. A separately named custom broker + file is untouched. +- Adopt the required map-sharing protocol and downloading-player admission, + multiplayer BSP/light behavior and reconnect fixes. Retain the original 30-Hz + simulation and the existing Apple graphics settings. +- Rank open games with room and no previous join failure first, by player count. + Sort the entire directory before truncating to a caller's visible rows, so a + busy game outside the first eight received records is not lost. +- Empty results name the supported network version. Incompatible versions are + still excluded; pretending to use their version would not be safe compatibility. +- Keep scenario music text suppressed, native Apple UI, personal branding split, + importer isolation and existing local transport/PB capability fixes. + +## Validation + +- The source-derived wire manifest exactly matches upstream version 28, including + the map-share structs and array dimensions (`tools/network_format.py`). +- Device guest and native Mac guest/host compile successfully. +- Isolated native Mac browser test joined the populated public "The Dude" + Blood Gulch server, loaded into play and exchanged replicated gameplay updates; + the process exited normally. No user saves were used, no automated shooting, + no map seeding and no router UPnP changes. This is a short interoperability + check, not full-match or physical-iPhone acceptance. +- Lobby ranking/truncation test under ASan/UBSan and both menu checks passed. +- Cache-format tests: 128 passed, four platform-dependent skips. +- Map-share filename/piece tests and their negative controls: 15 passed with + the native Mac compiler. The original harness's `-m32` cannot link on Apple + Silicon; this supplemental run omits that flag, so it is not a 32-bit ABI test. + The actual ILP32 device build and source wire check cover separate ABI evidence. +- Broker probing found populated v28 listings alongside older versions; player + counts are transient. Two of the four brokers answered the probe; discovery + intentionally uses redundant brokers. + +## Upstream decisions + +These are the 62 non-merge upstream commits not ancestors of the inherited +Apple baseline. Some were already cherry-picked/adapted by that baseline. Only +the selected networking changes and their dependencies are integrated here; +remaining renderer/web/presentation work is explicitly deferred. The selected +patches were checked against retained Apple changes rather than replacing whole +network files. This ledger is not a claim of gameplay validation for deferred +changes. + +| Commit | Purpose | Decision | +| --- | --- | --- | +| `d36c15c313dd96fbeb0f1a03431f000e18bd63e0` | Your own legs in first person, seen looking down (display.first_person_legs) | Defer: no changes selected for this native discovery/protocol update; inherited adaptations remain. | +| `8664d2f24b2d855ea0369c27a5cb007f7757c570` | Your energy shield in a multiplayer armor color (display.shield_color) | Defer: no changes selected for this native discovery/protocol update; inherited adaptations remain. | +| `2af955e1d6548e584066a4e68ce7431bb02c8994` | Space the campaign pause rows like the profile settings list. | Already equivalent in the inherited Apple baseline; no reapplication. | +| `1463c87090022950bc8b9e230fbaea4b0204e50b` | Energy shields glow as they flare, in their own color (display.shield_glow) | Defer: no changes selected for this native discovery/protocol update; inherited adaptations remain. | +| `af7ad15d3c3bac0e459a719f6036f25db444b1e2` | Keep a respawned vehicle on the name its teleporter uses. | Already equivalent in the inherited Apple baseline; no reapplication. | +| `6ea142ceee1481eaf587b90a81f870e92da3fd94` | Fix co-op stale player handle crash | Already equivalent in the inherited Apple baseline; no reapplication. | +| `77794aa1b7a4dd70f20b4f2068a1a3a2482cd842` | Stand-in machines send the join request's hardware id | Defer: no changes selected for this native discovery/protocol update; inherited adaptations remain. | +| `0f9a8904cd674e1cd3a5aad4a2a4c3eb69cc182c` | Test the stand-in machines' messages against network_messages.c | Defer: no changes selected for this native discovery/protocol update; inherited adaptations remain. | +| `fb97e52663fde1c5a6b3bc116027113414fe1368` | Stale player handles forgotten in the port's loop (#250) | Already equivalent in the inherited Apple baseline; no reapplication. | +| `ebb1f093aed4ec7fac36dba81b7e37928b7f054f` | Campaign pause rows 30 apart, as the PC version's (#246) | Defer: no changes selected for this native discovery/protocol update; inherited adaptations remain. | +| `21db5f906519d467c477309d56b18ccf7b751a06` | Vehicle homes: no other home's vehicle taken, no ridden one deleted (#249) | Already equivalent in the inherited Apple baseline; no reapplication. | +| `f735ca152d8a433245847b0a40b117d1ad3db26e` | First-person legs: one mesh kept, its waist forgotten on a new map (#243) | Already equivalent in the inherited Apple baseline; no reapplication. | +| `1f48f0555d0ec986af6cf4b012250f968a623677` | Shield glow: one light per unit in split screen, light show not clamped (#247) | Already equivalent in the inherited Apple baseline; no reapplication. | +| `095973133ee38e4d680fca9bff4138edc81abe43` | Shield color on the first-person arms too (#244) | Defer: no changes selected for this native discovery/protocol update; inherited adaptations remain. | +| `acfa9a2a4ddcea41737d2f511fd15b819992f128` | Web build | Defer: no changes selected for this native discovery/protocol update; inherited adaptations remain. | +| `a55a18208637c34bcd4ab49e94b222e0c1ed2dff` | Web deploy, tests, docs | Defer: no changes selected for this native discovery/protocol update; inherited adaptations remain. | +| `532407588ed39392c091e716735016b6a76409ed` | Web loading indicator | Defer: no changes selected for this native discovery/protocol update; inherited adaptations remain. | +| `4a9e515d54f9dac7e2de21f21ca49bc273989bba` | Web touch controls | Defer: no changes selected for this native discovery/protocol update; inherited adaptations remain. | +| `47b7eac9a8911b879e236a067a48285f09df1f21` | Web rooms over WebRTC | Defer: no changes selected for this native discovery/protocol update; inherited adaptations remain. | +| `887f40bd2c128b7b784193892c23ac41d8cae98c` | Web opaque canvas | Defer: no changes selected for this native discovery/protocol update; inherited adaptations remain. | +| `6dc423fdbfadc2aaa0cf8a90de54075c73a46b2c` | Internet play with browsers | Defer: no changes selected for this native discovery/protocol update; inherited adaptations remain. | +| `c89eb80d3abb404ecf283ea3650c87b74d1eddbc` | Web: no return addresses, SIMD page hash | Defer: no changes selected for this native discovery/protocol update; inherited adaptations remain. | +| `19f1bd9f5dd27863ade762914b7a3ab5df73421c` | Web: pointer lock taken back on a click, wheel notches | Defer: no changes selected for this native discovery/protocol update; inherited adaptations remain. | +| `248210cedbb731b628727d69212a12692ee71c35` | Keep first-person shield flares close to the arms | Defer: no changes selected for this native discovery/protocol update; inherited adaptations remain. | +| `2e45259beafaced7c0d1cfca179d0e865a973ea5` | Delete tools/test_viewmodel_shield.py | Already equivalent in the inherited Apple baseline; no reapplication. | +| `0bfe2112892ec47aa6d78b5b5e8fc1da6434c1fa` | Web: stable pages hashed less often, fewer clock reads | Defer: no changes selected for this native discovery/protocol update; inherited adaptations remain. | +| `01afcb654a1ce7f331ca500d6baeb881ccb0b1ce` | First-person shield flare kept close only with display.viewmodel_shield (#254) | Defer: no changes selected for this native discovery/protocol update; inherited adaptations remain. | +| `6399ed9d4ab1e6bbcd6154d56703883dfcc17c22` | Text drawn a string at a time, web immediate draws packed | Defer: no changes selected for this native discovery/protocol update; inherited adaptations remain. | +| `a3277d94dc51bfbeafd1cba52f279fa6da220f80` | Fewer draws and GL calls | Defer: no changes selected for this native discovery/protocol update; inherited adaptations remain. | +| `5cd65a0cb0c3df69079e6c9af0bbd31d0df3dab9` | Web: meter blend in the shader | Defer: no changes selected for this native discovery/protocol update; inherited adaptations remain. | +| `17a57832d8fc79867fc546eb2e5d3e5cb587d446` | Windows: tag block accessor builds again | Defer: no changes selected for this native discovery/protocol update; inherited adaptations remain. | +| `e0b581b157999e90382668dbc5578528e85701cc` | Web: disclaimer footer | Defer: no changes selected for this native discovery/protocol update; inherited adaptations remain. | +| `59a74b0c4b2975be46de751ee1818f514f4fd683` | The pregame screen opened through the port's menus everywhere | Defer: no changes selected for this native discovery/protocol update; inherited adaptations remain. | +| `568f8c1fe7714423eb4a43843f50e98eac025e5f` | Web draws' uploads put in buffers no queued draw reads, so Metal does not wait | Defer: no changes selected for this native discovery/protocol update; inherited adaptations remain. | +| `0a5a235f5e7813d4d6f6dae804352bc450d3173c` | Ask STUN and the brokers again after the p2p thread was stopped | Adopt: reconnect broker sockets and STUN after suspension. | +| `dc9b842ce2f155cf3274c3ce209231ac147c2920` | Draw with a base vertex on OpenGL ES 3.0 and 3.1 with the extension | Defer: no changes selected for this native discovery/protocol update; inherited adaptations remain. | +| `1e7946659c5497c0448712bd1c3c60d1facc1da9` | config.toml with each section once, and a file with [display] twice read again | Defer: no changes selected for this native discovery/protocol update; inherited adaptations remain. | +| `2059b6cef5339f4717b14c6cc98ec477aedfdd9e` | A player joining or leaving the lobby no longer restarts the countdown. | Adopt: do not restart the lobby countdown for playerless joining/leaving machines. | +| `71ceb363f19200d81b5ce71908577781487ccbc8` | Players who already have the map no longer wait for a machine that is still downloading it. | Adopt: a downloading machine does not hold up players with the map. | +| `a2aad18f65e6a5878bcb4daf553a2068e52897ee` | Custom Edition map sharing | Partial: protocol-27 map-transfer messages, verified pieces, peer reachability, cache support and settings. Retain native menu placement; exclude upstream AGENTS/web-only documentation changes. | +| `7a6fc70eb91078a1713cbf719114d48ceed4756f` | Fit the high-res text's fonts to the widths of a Custom Edition loc.map's letters | Defer: no changes selected for this native discovery/protocol update; inherited adaptations remain. | +| `13ddcf802a0302291d534e9f75d50920d4e50483` | Keep a scenario's titles under the menus | Defer: no changes selected for this native discovery/protocol update; inherited adaptations remain. | +| `67f22142197e40a35a36679751b5d794eeaba7bc` | A player still downloading the map no longer spawns until that player joins. | Adopt: hold downloading players out of simulation. | +| `05dd9ccdea94d8d3686ae55a9b71bc466d52b4e8` | Create the custom_maps folder on startup when it is missing. | Adopt: create the custom map directory before downloading. | +| `baab0780f6c230ef8a994e843057e6f1d1e16f16` | Adding a player after a map download uses the same checks as any other late join. | Adopt: admit downloaded players through the normal late-join queue. | +| `d6df944886a9e63807ef2af927ff07b8287df7be` | Bring a co-op team inside with a scripted teleport. | Adopt: host-authoritative co-op teleports to the script destination, including larger groups. | +| `5e5cb08820bbc422e199b4d88f82f90853d5d2cc` | Test that a scenario's titles stay under the menus | Defer: no changes selected for this native discovery/protocol update; inherited adaptations remain. | +| `417de7e2ad0ad3b3b70f0502231db6b72d9db7df` | A multiplayer match keeps the flashlight past the Xbox player and vehicle limits. | Adopt: retain flashlights/lights beyond original player limits, required for version-28 agreement. | +| `c3365b1c6979b946c4a77cc274f75f9d8dd45650` | A multiplayer script that switches BSP to cycle the sky no longer reloads the level. | Adopt: prevent repeated multiplayer scripted BSP reloads. | +| `b71bd6a0faf5fa887eed3c22905afcbfe459facf` | Keep a multiplayer map's first scripted BSP switch so the host's game type chooses the sky. | Adopt: keep the first scripted multiplayer BSP chosen by the host game type. | +| `0b4a03561b004bc93e8a1178b01fad1463de9fab` | A large co-op fight respawns beside the group after ten seconds. | Already equivalent in the inherited Apple baseline; no reapplication. | +| `679bade466d55a49ebcaa818ae0d38e11f5a0f07` | Menu rows keep one vertical step. | Already equivalent in the inherited Apple baseline; no reapplication. | +| `2598dbe8b660ca5759a37e0a090a876179fd2e9b` | An overshield's drain is not a shield hit, and a second weapon is readied. | Already equivalent in the inherited Apple baseline; no reapplication. | +| `1068da0c3a98af143bdc7fb8b660aed5e7b0fe1b` | Compare shader keys and draw uniform inputs a word at a time | Defer: no changes selected for this native discovery/protocol update; inherited adaptations remain. | +| `2c6c85cf38a7993d0a1740b04cc3e51ad754556e` | Raise the transparent geometry groups a frame from 384 to 2048 | Defer: no changes selected for this native discovery/protocol update; inherited adaptations remain. | +| `9180bd37c81487218177fc5326d84a0361591c7a` | NETCODE.md: network versions 22 to 25 | Defer: no changes selected for this native discovery/protocol update; inherited adaptations remain. | +| `fab098a7bd6f7d0a3114b5dd66c408016b37a24f` | Record the wire format of the network version | Partial: adopt the wire-format checker and manifest at their final upstream revisions. | +| `eea1c3641a2645330940effaeb8bc342601d5978` | Keep the debug model vertices off the stack | Defer: no changes selected for this native discovery/protocol update; inherited adaptations remain. | +| `e791cf9ae08f5a139e8a1fadbcbc765b6b2a6f41` | Bodies the host moves are no longer drawn floating or in walls on clients. | Defer: no changes selected for this native discovery/protocol update; inherited adaptations remain. | +| `5a7c655a60555215864391433716ddd966ba3079` | Testing branch review fixes | Partial: protocol 28, map-download timeout/admission fixes and safe co-op spawn/teleport positions. Exclude unrelated menu-coordinate and shield-HUD edits. | +| `3d67397cdd3c9ee1515b62cf5a8168cf3def0730` | Record the wire format at network version 28 (#253) | Adopt: version-28 wire manifest. | +| `c6a2f9004bb182ac6c11fa0fe902d59f3a7cfcb4` | Record the map sharing messages and the sizes of the wire format's arrays (#253) | Adopt: include map-sharing structs and array-size definitions in the wire manifest/checker. | diff --git a/docs/xbox-fidelity.md b/docs/xbox-fidelity.md index d0b18f65a8..8b9eaf95ce 100644 --- a/docs/xbox-fidelity.md +++ b/docs/xbox-fidelity.md @@ -6,6 +6,13 @@ decompilation, core performance, stability and platform improvements should stay current through selective upstream review. Original game presentation and rules remain the baseline; an upstream change is not accepted merely because it is new. +## Apple migration and current networking + +The current Apple contribution inherits innerhat `036b9fe6` (protocol 26), +then selectively integrates protocol 28 and discovery fixes. See the +[Apple network review](apple-network-28.md) for source revisions, decisions and +validation. The historical review below describes the earlier fork baseline. + ## Pinned baseline and upstream review The last full upstream integration is `c55e4e2b` (build 64), merged into the diff --git a/port/assets/menus/ce/main_menu.multiplayer_type_select.xml b/port/assets/menus/ce/main_menu.multiplayer_type_select.xml index 496ac69e7f..8bee5e03fc 100644 --- a/port/assets/menus/ce/main_menu.multiplayer_type_select.xml +++ b/port/assets/menus/ce/main_menu.multiplayer_type_select.xml @@ -60,13 +60,13 @@ - + - + diff --git a/port/assets/menus/ce/main_menu.settings_select.multiplayer_setup.vehicle_options_edit.xml b/port/assets/menus/ce/main_menu.settings_select.multiplayer_setup.vehicle_options_edit.xml index d7f89beb8a..d5966e704b 100644 --- a/port/assets/menus/ce/main_menu.settings_select.multiplayer_setup.vehicle_options_edit.xml +++ b/port/assets/menus/ce/main_menu.settings_select.multiplayer_setup.vehicle_options_edit.xml @@ -85,14 +85,14 @@ - - - - - - - - + + + + + + + + diff --git a/port/assets/menus/ce/main_menu.settings_select.player_setup.player_profile_edit.xml b/port/assets/menus/ce/main_menu.settings_select.player_setup.player_profile_edit.xml index ce9faa79c5..e58432705d 100644 --- a/port/assets/menus/ce/main_menu.settings_select.player_setup.player_profile_edit.xml +++ b/port/assets/menus/ce/main_menu.settings_select.player_setup.player_profile_edit.xml @@ -1,7 +1,7 @@ - + @@ -9,7 +9,7 @@ - + @@ -36,7 +36,7 @@ - + @@ -79,8 +79,8 @@ - - + + diff --git a/port/ios/CMakeLists.txt b/port/ios/CMakeLists.txt index 7d5bd0ae34..a1b013ed4e 100644 --- a/port/ios/CMakeLists.txt +++ b/port/ios/CMakeLists.txt @@ -25,6 +25,10 @@ add_executable(Halo MACOSX_BUNDLE ${HOST_SOURCES} ${MINIUPNPC_SOURCES} ${MBEDTLS "${HALO_ROOT}/port/macos/host/entry.s" "${HALO_BUILD}/host/host_import_table.c" "${HALO_BUILD}/embed/guest_image.s") target_sources(Halo PRIVATE Assets.xcassets) +# Internet discovery reads this beside config.toml; host_main installs the default. +target_sources(Halo PRIVATE "${HALO_ROOT}/port/assets/network/brokers.txt") +set_source_files_properties("${HALO_ROOT}/port/assets/network/brokers.txt" + PROPERTIES MACOSX_PACKAGE_LOCATION Resources) set_source_files_properties(Assets.xcassets PROPERTIES MACOSX_PACKAGE_LOCATION Resources) target_compile_definitions(Halo PRIVATE HALO_IOS=1 HALO_MACOS=1 HALO_APPLE_GRAPHICS=1 _DARWIN_C_SOURCE=1) target_compile_definitions(Halo PRIVATE MINIUPNP_STATICLIB MINIUPNPC_SET_SOCKET_TIMEOUT diff --git a/port/ios/host/host_main.m b/port/ios/host/host_main.m index 1c88cbd8ad..9a30d4d8f6 100644 --- a/port/ios/host/host_main.m +++ b/port/ios/host/host_main.m @@ -113,6 +113,15 @@ int main(int argc, char **argv) { snprintf(save_root, sizeof(save_root), "%s", saves.fileSystemRepresentation); freopen([[saves stringByAppendingPathComponent:@"halo.log"] fileSystemRepresentation], "w", stderr); setbuf(stderr, NULL); + // Refresh the shipped default; custom broker files use a separate + // network.brokers_file path and remain untouched. + NSURL *brokers = [NSBundle.mainBundle URLForResource:@"brokers" withExtension:@"txt"]; + NSError *brokerError = nil; + NSData *brokerData = brokers ? [NSData dataWithContentsOfURL:brokers options:0 error:&brokerError] : nil; + if (!brokerData || ![brokerData writeToFile:[saves stringByAppendingPathComponent:@"brokers.txt"] + options:NSDataWritingAtomic error:&brokerError]) + host_logf(HOST_LOG_ERROR, "Cannot install server discovery brokers: %s", + brokerError.localizedDescription.UTF8String ?: "bundled brokers.txt is missing"); // A sandbox-relative shortcut for opt-in device frame profiling. const char *profile = getenv("HALO_PERF_LOG"); if (profile && !strcmp(profile, "1")) diff --git a/port/linux/game/menu_functions.c b/port/linux/game/menu_functions.c index 85afcd21a8..2d14e433fd 100644 --- a/port/linux/game/menu_functions.c +++ b/port/linux/game/menu_functions.c @@ -3616,8 +3616,10 @@ static void lobby_browser_update(struct widget_instance *list) } else if (!lobby_browser.count) { - usnprintf(text, NUMBEROF(text) - 1, L"%s", now - lobby_browser.begin_time < LOBBY_BROWSER_LOOK_TIME ? - L"Looking for public games..." : L"No public games found"); + if (now - lobby_browser.begin_time < LOBBY_BROWSER_LOOK_TIME) + usnprintf(text, NUMBEROF(text) - 1, L"Looking for public games..."); + else + usnprintf(text, NUMBEROF(text) - 1, L"No public games for network version %d", HALO_PORT_NETWORK_VERSION); } else if (chosen < lobby_browser.count) { diff --git a/port/linux/game/network_test.c b/port/linux/game/network_test.c index eefd512ea2..0434f69fc5 100644 --- a/port/linux/game/network_test.c +++ b/port/linux/game/network_test.c @@ -946,7 +946,8 @@ void network_test_update( } count = p2p_lobby_games(games, NUMBEROF(games)); /* (the first that can be joined: no password, not failed) */ - while (count > 0 && (!games[0].invite[0] || games[0].failed)) + while (count > 0 && (!games[0].invite[0] || games[0].failed || !games[0].open || + games[0].player_count >= games[0].maximum_player_count)) { memmove(games, games + 1, sizeof(*games) * (count - 1)); count--; diff --git a/port/linux/network_format.txt b/port/linux/network_format.txt new file mode 100644 index 0000000000..51e8727645 --- /dev/null +++ b/port/linux/network_format.txt @@ -0,0 +1,271 @@ +version 28 +bound DISCORD_ID_SIZE 24 +bound DISCORD_NAME_SIZE 40 +bound DISTRIBUTED_INPUT_HISTORY 4 +bound DISTRIBUTED_RELAYED_ACTION_MAXIMUM_SIZE 14 + 2 * (DISTRIBUTED_INPUT_HISTORY - 1) +bound DISTRIBUTED_RELAYED_ACTION_MINIMUM_SIZE 14 +bound DISTRIBUTED_UNIT_STATE_MAXIMUM_SIZE 3 + 4 + (4 + 2) + (12 + 3 * 6) + 2 + 2 * 2 + 4 * 2 + 2 * NUMBER_OF_PLAYER_POWERUPS + 2 + 1 +bound DISTRIBUTED_UNIT_STATE_MINIMUM_SIZE 3 +bound GAME_ALLEGIANCE_BITVECTOR_LONGS 4 +bound LEVEL_NAME_BYTES 64 +bound MAP_SHARE_HASH_BYTES 32 +bound MAXIMUM_DEVICE_GROUPS 1024 +bound MAXIMUM_DEVICE_STATES_PER_MESSAGE 64 +bound MAXIMUM_ENTRIES_PER_MESSAGE 64 +bound MAXIMUM_OBJECT_LOOKS_PER_MESSAGE 64 +bound MAXIMUM_OBJECT_NAMES_PER_SCENARIO 0x200 +bound MAXIMUM_OBJECT_TRANSFORMS_PER_MESSAGE 64 +bound MAXIMUM_PINGS_PER_MESSAGE 128 +bound MAXIMUM_QUEUED_DAMAGE_ANIMATIONS 32 +bound MAXIMUM_QUEUED_EVENTS 128 +bound MAXIMUM_REGIONS_PER_OBJECT 8 +bound MAXIMUM_STATISTICS_PER_MESSAGE 64 +bound MAXIMUM_WEAPONS_PER_UNIT 4 +bound NUMBER_OF_ANGLES enum f0ce7d0319b6 +bound NUMBER_OF_OBJECT_CHANGE_COLORS enum b00724872e2d +bound NUMBER_OF_PLAYER_POWERUPS enum 43075f42087c +bound NUMBER_OF_UNIT_GRENADE_TYPES enum a0462dbcbdd9 +bound OBJECT_NAME_BYTES MAXIMUM_OBJECT_NAMES_PER_SCENARIO / 8 +bound P2P_PLAYER_KEY_HASH_SIZE 16 +define DISTRIBUTED_ANGULAR_VELOCITY_SCALE 4096.0f +define DISTRIBUTED_UNIT_SCALE 32767.0f +define DISTRIBUTED_VELOCITY_SCALE 1024.0f +enum _distributed_actor_camouflaged_bit 4 +enum _distributed_actor_impulse_aligned_bit 6 +enum _distributed_actor_rides_bit 0 +enum _distributed_actor_running_blindly_bit 7 +enum _distributed_actor_shield_charging_bit 2 +enum _distributed_actor_shield_depleted_bit 1 +enum _distributed_actor_shield_over_charging_bit 3 +enum _distributed_actor_super_camouflaged_bit 5 +enum _distributed_message_actor_damage 73 +enum _distributed_message_actor_states 64 +enum _distributed_message_batch 16 +enum _distributed_message_client_identity 18 +enum _distributed_message_client_ready 9 +enum _distributed_message_coop_device_groups 68 +enum _distributed_message_coop_device_states 77 +enum _distributed_message_coop_events 71 +enum _distributed_message_coop_object_looks 74 +enum _distributed_message_coop_object_names 69 +enum _distributed_message_coop_object_transforms 72 +enum _distributed_message_coop_presentation 66 +enum _distributed_message_coop_screen_effect 76 +enum _distributed_message_coop_skip_vote 70 +enum _distributed_message_coop_sounds_retired 67 +enum _distributed_message_damage_animations 75 +enum _distributed_message_damage_events 10 +enum _distributed_message_game_state 7 +enum _distributed_message_hit_reports 11 +enum _distributed_message_inventories 4 +enum _distributed_message_map_share_offer 84 +enum _distributed_message_map_share_progress 86 +enum _distributed_message_map_share_request 83 +enum _distributed_message_map_share_sources 85 +enum _distributed_message_notice 17 +enum _distributed_message_object_changes 5 +enum _distributed_message_object_states 6 +enum _distributed_message_objects_synchronized 8 +enum _distributed_message_pickups 13 +enum _distributed_message_pings 19 +enum _distributed_message_player_inputs 14 +enum _distributed_message_player_prediction 1 +enum _distributed_message_player_statistics 3 +enum _distributed_message_relayed_actions 15 +enum _distributed_message_structure_bsp 65 +enum _distributed_message_unit_states 2 +enum _distributed_message_vehicle_prediction 12 +enum _distributed_message_voice_config 82 +enum _distributed_message_voice_down 81 +enum _distributed_message_voice_up 80 +enum _distributed_message_votekick 78 +enum _distributed_message_votekick_status 79 +enum _distributed_object_at_rest_bit 1 +enum _distributed_object_carried_bit 0 +enum _distributed_object_dead_bit 2 +enum _distributed_object_light_on_bit 5 +enum _distributed_object_light_sent_bit 4 +enum _distributed_object_predicted_bit 3 +enum _distributed_send_action_bit 1 +enum _distributed_send_sees_bit 2 +enum _distributed_send_state_bit 0 +enum _distributed_to_clients 0 +enum _distributed_to_clients_reliably 1 +enum _distributed_to_host 2 +enum _distributed_to_host_reliably 3 +enum _distributed_unit_alive_bit 0 +enum _distributed_unit_camouflaged_bit 0 +enum _distributed_unit_friendly_fire_bit 2 +enum _distributed_unit_killed_by_vehicle_bit 3 +enum _distributed_unit_part_camouflage_bit 4 +enum _distributed_unit_part_damage_bit 2 +enum _distributed_unit_part_killer_bit 5 +enum _distributed_unit_part_powerups_bit 3 +enum _distributed_unit_part_riding_bit 0 +enum _distributed_unit_part_up_bit 1 +enum _distributed_unit_placed_bit 1 +enum _distributed_unit_predicted_bit 7 +enum _distributed_unit_shield_charging_bit 5 +enum _distributed_unit_shield_depleted_bit 4 +enum _distributed_unit_shield_over_charging_bit 6 +enum _distributed_unit_super_camouflaged_bit 1 +enum _message_client_add_player_request_ingame 26 +enum _message_client_add_player_request_pregame 13 +enum _message_client_broadcast_game_search 0 +enum _message_client_game_start_request 17 +enum _message_client_game_update 25 +enum _message_client_graceful_game_exit_postgame 34 +enum _message_client_graceful_game_exit_pregame 18 +enum _message_client_host_crashed_cry_for_help 28 +enum _message_client_join_game_request 12 +enum _message_client_join_new_host 29 +enum _message_client_loaded 24 +enum _message_client_map_is_precached_pregame 19 +enum _message_client_ping 1 +enum _message_client_player_settings_request 16 +enum _message_client_remove_player_request_ingame 27 +enum _message_client_remove_player_request_postgame 32 +enum _message_client_remove_player_request_pregame 14 +enum _message_client_settings_request 15 +enum _message_client_switch_to_pregame 33 +enum _message_server_add_player_ingame 21 +enum _message_server_begin_game 8 +enum _message_server_game_advertise 2 +enum _message_server_game_over 23 +enum _message_server_game_settings_update 6 +enum _message_server_game_update 20 +enum _message_server_graceful_game_exit_postgame 31 +enum _message_server_graceful_game_exit_pregame 9 +enum _message_server_machine_accepted 4 +enum _message_server_machine_rejected 5 +enum _message_server_pong 3 +enum _message_server_postgame_keep_alive 11 +enum _message_server_pregame_countdown 7 +enum _message_server_pregame_keep_alive 10 +enum _message_server_remove_player_ingame 22 +enum _message_server_switch_to_pregame 30 +fields client_add_player_request_ingame 06ff007a9b35 +fields client_add_player_request_pregame 06ff007a9b35 +fields client_broadcast_game_search f31a5fac9a46 +fields client_game_start_request 758215ada4e1 +fields client_game_update 1134bf6a029b +fields client_graceful_game_exit_postgame 678699dea271 +fields client_graceful_game_exit_pregame 678699dea271 +fields client_host_crashed_cry_for_help 52eb2291ec03 +fields client_join_game_request 28f7514cbcd9 +fields client_join_new_host 52eb2291ec03 +fields client_loaded 678699dea271 +fields client_map_is_precached_pregame 0073b9d65051 +fields client_ping 0d113e26a89a +fields client_player_settings_request 06ff007a9b35 +fields client_remove_player_request_ingame 06ff007a9b35 +fields client_remove_player_request_postgame 06ff007a9b35 +fields client_remove_player_request_pregame 06ff007a9b35 +fields client_settings_request d6a7048d6284 +fields client_switch_to_pregame 678699dea271 +fields server_add_player_ingame 06ff007a9b35 +fields server_begin_game 678699dea271 +fields server_game_advertise 2d5f42b781a4 +fields server_game_over 678699dea271 +fields server_game_settings_update 4c2744d8b8e8 +fields server_game_update beee6fb1929d +fields server_graceful_game_exit_postgame 678699dea271 +fields server_graceful_game_exit_pregame 678699dea271 +fields server_machine_accepted 0d113e26a89a +fields server_machine_rejected 758215ada4e1 +fields server_pong 678699dea271 +fields server_postgame_keep_alive 758215ada4e1 +fields server_pregame_countdown 758215ada4e1 +fields server_pregame_keep_alive 758215ada4e1 +fields server_remove_player_ingame 1718d4189972 +fields server_switch_to_pregame 678699dea271 +size message_client_add_player_request_ingame 0x20 +size message_client_add_player_request_pregame 0x20 +size message_client_broadcast_game_search 0x0C +size message_client_game_start_request 0x02 +size message_client_game_update 0x88 +size message_client_graceful_game_exit_postgame 0x04 +size message_client_graceful_game_exit_pregame 0x04 +size message_client_host_crashed_cry_for_help 0x10 +size message_client_join_game_request 0x70 +size message_client_join_new_host 0x10 +size message_client_loaded 0x04 +size message_client_map_is_precached_pregame 0x100 +size message_client_ping 0x08 +size message_client_player_settings_request 0x20 +size message_client_remove_player_request_ingame 0x20 +size message_client_remove_player_request_postgame 0x20 +size message_client_remove_player_request_pregame 0x20 +size message_client_settings_request 0x44 +size message_client_switch_to_pregame 0x04 +size message_server_add_player_ingame 0x20 +size message_server_begin_game 0x04 +size message_server_game_advertise 0x114 +size message_server_game_over 0x04 +size message_server_game_settings_update 8 + HALO_PORT_NETWORK_GAME_SETTINGS_FRAGMENT_SIZE +size message_server_game_update 0x10 + HALO_PORT_MAXIMUM_NETWORK_PLAYERS * 0x20 +size message_server_graceful_game_exit_postgame 0x04 +size message_server_graceful_game_exit_pregame 0x04 +size message_server_machine_accepted 0x08 +size message_server_machine_rejected 0x02 +size message_server_pong 0x04 +size message_server_postgame_keep_alive 0x02 +size message_server_pregame_countdown 0x02 +size message_server_pregame_keep_alive 0x02 +size message_server_remove_player_ingame 0x24 +size message_server_switch_to_pregame 0x04 +struct distributed_actor_damage 96a57e13e2b8 +struct distributed_actor_damage_message f985e899a708 +struct distributed_actor_state 8bd5e771659d +struct distributed_actor_state_message 51a56e04a536 +struct distributed_client_identity 4d9e62025616 +struct distributed_coop_device_group 4aa3499be2cc +struct distributed_coop_device_groups_message b96ad0030ccc +struct distributed_coop_device_state 727444a5c79b +struct distributed_coop_device_states_message 48f17c3da6f5 +struct distributed_coop_event 62bbd76ba4af +struct distributed_coop_events_message 562bdd70bfae +struct distributed_coop_object_look 77cbae00e4ad +struct distributed_coop_object_looks_message 51dbb474aa17 +struct distributed_coop_object_names f3ecad927448 +struct distributed_coop_object_names_message 7d743ad3710e +struct distributed_coop_object_transform 055897bbff8f +struct distributed_coop_object_transforms_message de95468f7f6d +struct distributed_coop_presentation f34649b3fc6d +struct distributed_coop_presentation_message eb4c7a895272 +struct distributed_coop_screen_effect_message a0a226e0858e +struct distributed_coop_skip_vote c37a12a02932 +struct distributed_coop_skip_vote_message d21260f32711 +struct distributed_damage d2bdb398fb2b +struct distributed_damage_animation ae158e21c915 +struct distributed_damage_animations_message 863e25ca3614 +struct distributed_damage_event 659e4d49733b +struct distributed_damage_event_message c954363dcf26 +struct distributed_hit_report 9a44ca43a88b +struct distributed_hit_report_message 37279f2addca +struct distributed_inventory 05a279a76ba5 +struct distributed_inventory_message 11825a84dc29 +struct distributed_map_share_offer 4bea857123c2 +struct distributed_map_share_offer_file 204a3b73d193 +struct distributed_map_share_progress 2c3831013302 +struct distributed_map_share_request 3cdcbc8c3a49 +struct distributed_map_share_source 940f8a4c9849 +struct distributed_message_header 0e026a4933a1 +struct distributed_object_change 343e570cfa1d +struct distributed_object_change_message 4c3679cd4dae +struct distributed_object_state 1b656bbda892 +struct distributed_object_state_message 004c4b7aa530 +struct distributed_pickup 46e6f981ac40 +struct distributed_pings_message 35c6009dee29 +struct distributed_player_input b8d724b59f5c +struct distributed_player_ping 377e0e3045f4 +struct distributed_player_statistics 2a44afb8f96c +struct distributed_statistics_message 79134e6e9811 +struct distributed_structure_bsp 53f7d5067cc9 +struct distributed_structure_bsp_message 096278a05681 +struct distributed_vector e80d7f9fc970 +struct distributed_voice_config 665bdc14478b +struct distributed_voice_down e3751d692f16 +struct distributed_voice_up 3d74ee44e4cb +struct distributed_votekick_request d5f913f22d81 +struct distributed_votekick_status 966041386843 diff --git a/port/linux/src/p2p.h b/port/linux/src/p2p.h index 52d77153e1..c3d0ea3fb5 100644 --- a/port/linux/src/p2p.h +++ b/port/linux/src/p2p.h @@ -143,8 +143,8 @@ struct p2p_listing unsigned char signing_key[P2P_LISTING_SIGNING_KEY_SIZE]; unsigned char sealed_token[P2P_LISTING_SEALED_TOKEN_SIZE]; }; -/* a copy of the public games found, in the order shown (the most players -first; then those not failed, the open ones, by name); returns their count */ +/* a copy of public games: joinable games first, then most players, then +failed/open status and name; returns their count */ int p2p_lobby_games(struct p2p_listing *games, int maximum_count); /* a game the browser could not join: kept, marked failed, for this run */ void p2p_lobby_mark_failed(const unsigned char *identifier); diff --git a/port/linux/src/p2p_lobby.c b/port/linux/src/p2p_lobby.c index 105d7a0891..18a7fb6364 100644 --- a/port/linux/src/p2p_lobby.c +++ b/port/linux/src/p2p_lobby.c @@ -815,11 +815,15 @@ int p2p_lobby_browsing(void) return lobby.browsing; } -/* the order shown: the most players first; then those joining has not -failed, the open ones, and by name */ +/* Prefer games that can be joined, then the most players, then name. */ static int listing_order(const void *first, const void *second) { const struct p2p_listing *a = first, *b = second; + int a_joinable = a->open && !a->failed && a->player_count < a->maximum_player_count; + int b_joinable = b->open && !b->failed && b->player_count < b->maximum_player_count; + + if (a_joinable != b_joinable) + return b_joinable - a_joinable; if (a->player_count != b->player_count) return b->player_count - a->player_count; @@ -832,20 +836,27 @@ static int listing_order(const void *first, const void *second) int p2p_lobby_games(struct p2p_listing *games, int maximum_count) { + struct p2p_listing found[MAXIMUM_GAMES]; int count = 0; int index; + if (maximum_count <= 0) + return 0; pthread_mutex_lock(&p2p_lock); - for (index = 0; index < MAXIMUM_GAMES && count < maximum_count; index++) + for (index = 0; index < MAXIMUM_GAMES; index++) { if (!lobby.games[index].used) continue; - games[count] = lobby.games[index].listing; - games[count].failed = (unsigned char)identifier_failed(games[count].identifier); + found[count] = lobby.games[index].listing; + found[count].failed = (unsigned char)identifier_failed(found[count].identifier); count++; } pthread_mutex_unlock(&p2p_lock); - qsort(games, (size_t)count, sizeof(*games), listing_order); + /* Rank every listing before truncating to the caller's visible rows. */ + qsort(found, (size_t)count, sizeof(*found), listing_order); + if (count > maximum_count) + count = maximum_count; + memcpy(games, found, (size_t)count * sizeof(*games)); return count; } diff --git a/source/interface/hud_unit.c b/source/interface/hud_unit.c index 6e231dc263..f504693fa1 100644 --- a/source/interface/hud_unit.c +++ b/source/interface/hud_unit.c @@ -537,20 +537,13 @@ static void hud_update_unit_local_player( client does not drain shields. The lower value arrived as a hit, so the meter flashed and the shield damage sound played for the whole overshield. A small step from past full is that - drain (no more than about 25 ticks of it). A larger step is a - hit, and the meter still flashes. The step is closed here, so - one late packet cannot leave the meter a little behind and keep - the flash going, and a hit's flash already fading goes on - fading, as when the shield holds still. */ - if (hud_state->last_shield_vitality > 1.0f && shield_drop <= 0.02f) + drain. A larger step is a hit, and the meter still flashes. + The step is closed here, so one late packet cannot leave the + meter a little behind and keep the flash going. */ + if (hud_state->last_shield_vitality > 1.0f && shield_drop <= 0.05f) { hud_state->last_shield_vitality = unit->object.shield_vitality; - if (hud_state->fade_time > 0.0f) - { - hud_state->fade_time += - (real)(game_time_get() - hud_state->last_shield_hit_time) * - (1.0f / TICKS_PER_SECOND); - } + hud_state->fade_time = -1.0f; hud_state->last_shield_hit_time = game_time_get(); } else diff --git a/tools/network_format.py b/tools/network_format.py new file mode 100644 index 0000000000..1210b0d1dd --- /dev/null +++ b/tools/network_format.py @@ -0,0 +1,169 @@ +#!/usr/bin/env python3 +"""The wire format of HALO_PORT_NETWORK_VERSION (port/linux/network_format.txt). + +Taken from the sources: the game's message numbers, sizes and fields +(network_messages.c, .h) and the distributed netcode's (network_*.c, .h, +map_share*.c, .h): the enums with _distributed_ members, the DISTRIBUTED_ +constants, the structs sent whole (the _message structs, those whose size is +taken, and the structs in them) as hashes, and the constants their arrays +are sized by, as their definitions. An entry the netcode packs itself (a +unit's state, a relayed action) is covered by its flags and its least and +largest sizes only. + +test_linux_port.py fails when the sources differ from the record. An item +changed or removed is one older builds cannot read: raise the version and +say why in NETCODE.md. An item added (a message kind, a bit) may be one they +ignore. Then record it: network_format.py --record +""" + +import hashlib +import re +import sys +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[1] +RECORD = ROOT / "port/linux/network_format.txt" + + +def _blocks(text, opener): + """each declaration (to its semicolon) that starts with the opener""" + for match in re.finditer(opener, text, re.M): + end, depth = text.index("{", match.start()), 0 + while True: + depth += {"{": 1, "}": -1}.get(text[end], 0) + end += 1 + if not depth: + break + yield text[match.start():text.index(";", end) + 1] + + +def _hash(text): + return hashlib.sha256(" ".join(text.split()).encode()).hexdigest()[:12] + + +def items(): + """the wire format's items, name to value""" + paths = sorted((ROOT / "port/linux/game").glob("network_*.[ch]")) + paths += sorted((ROOT / "port/linux/game").glob("map_share*.[ch]")) + paths += [ROOT / "source/networking/network_messages.c", ROOT / "source/networking/network_messages.h"] + texts = [re.sub(r"/\*.*?\*/|//[^\n]*", " ", path.read_text(encoding="latin-1"), flags=re.S) for path in paths] + everything = "\n".join(texts) + result, structs = {}, {} + + def add(name, value): + assert name not in result, f"{name} is declared twice" + result[name] = str(value) + + for text in texts: + for block in _blocks(text, r"^struct distributed_\w+\s*\{"): + structs[re.match(r"struct (\w+)", block).group(1)] = block + for block in _blocks(text, r"^enum\b[^;{]*\{"): + if "_distributed_" not in block and "network_game_message_type" not in block: + continue + value = -1 + for member in filter(None, map(str.strip, block[block.index("{") + 1:block.rindex("}")].split(","))): + name, _, expression = (part.strip() for part in member.partition("=")) + value = int(expression, 0) if expression else value + 1 + if not name.startswith("NUMBER_OF_"): + add(f"enum {name}", value) + for name, value in re.findall(r"^#define (DISTRIBUTED_\w+)\s+(.*?)\s*$", text, re.M): + add(f"define {name}", value) + sent = {name for name in structs if name.endswith("_message") or f"sizeof(struct {name})" in everything} + while True: + bodies = " ".join(structs[name].split("{", 1)[1] for name in sent) + held = structs.keys() & set(re.findall(r"\bstruct (distributed_\w+)", bodies)) + if held <= sent: + break + sent |= held + for name in sent: + add(f"struct {name}", _hash(structs[name])) + # the constants the structs' arrays are sized by, and the netcode's + # DISTRIBUTED_ sizes in enums of no name, as their definitions' text, with + # the names those use in turn + bounds = set() + for name in sent: + for size in re.findall(r"\[([^\]]+)\]", structs[name].split("{", 1)[1]): + bounds |= set(re.findall(r"\b[A-Z_][A-Z0-9_]*\b", size)) + bounds |= set(re.findall(r"^\s*(DISTRIBUTED_\w+)\s*=", everything, re.M)) - { + key.split(" ", 1)[1] for key in result if key.startswith("enum ")} + headers = None + pending, done = sorted(bounds), set() + while pending: + name = pending.pop() + if name in done: + continue + done.add(name) + pattern = rf"^#define {name}\b[ \t]*((?:[^\n]*\\\n)*[^\n]*)|\b{name}[ \t]*=(?!=)([^,{{}};]*)" + found = re.findall(pattern, everything, re.M) + if not found: + if headers is None: + headers = "\n".join(re.sub(r"/\*.*?\*/|//[^\n]*", " ", path.read_text(encoding="latin-1"), flags=re.S) + for root in ("source", "port/linux/include", "port/linux/game", "port/linux/src") + for path in sorted((ROOT / root).rglob("*.h"))) + found = re.findall(pattern, headers, re.M) + if not found: + # (an enum's member counted, NUMBER_OF_ at its end: the enum) + found = [("enum " + _hash(block), "") for text in (everything, headers) + for block in _blocks(text, r"\benum\b[^;{]*\{") + if re.search(rf"\b{name}\s*[,}}]", block)][:1] + if not found: + assert name not in bounds, f"{name}: a size of the wire format with no definition found" + continue + values = sorted({" ".join((define or expression).replace("\\\n", " ").split()) for define, expression in found}) + add(f"bound {name}", " | ".join(values)) + pending += re.findall(r"\b[A-Z_][A-Z0-9_]*\b", " ".join(values)) + messages = texts[-2] + for name, size in re.findall(r"^DEFINE_NETWORK_GAME_MESSAGE\((\w+), (.*)\);", messages, re.M): + add(f"size {name}", " ".join(size.split())) + for fields, name in re.findall(r"\t\{\n((?:\t\t.*\n)*?)\t\},\n\tNETWORK_GAME_MESSAGE_DEFINITION\((\w+),", messages): + add(f"fields {name}", _hash(fields)) + return result + + +def version(): + limits = (ROOT / "port/linux/include/halo_port_limits.h").read_text() + return int(re.search(r"#define HALO_PORT_NETWORK_VERSION (\d+)", limits).group(1)) + + +def recorded(): + lines = [line.split(" ", 2) for line in RECORD.read_text().splitlines()] + return int(lines[0][1]), {f"{kind} {name}": value for kind, name, value in lines[1:]} + + +def changes(old, new): + """(changed or removed, added)""" + return sorted(name for name in old if old[name] != new.get(name)), sorted(name for name in new if name not in old) + + +def check(): + """what is wrong with the record, as lines to show""" + problems = [] + recorded_version, old = recorded() + breaking, added = changes(old, items()) + for names, what in ((breaking, "changed or removed (older builds cannot read them: raise the version)"), + (added, "added (raise the version unless older builds ignore them)")): + problems += [what + ":"] + [f" {name}" for name in names] if names else [] + if recorded_version != version(): + problems.append(f"recorded for version {recorded_version}, the sources' is {version()}") + if problems: + problems.append("then record them: python tools/network_format.py --record") + netcode = (ROOT / "port/linux/NETCODE.md").read_text() + if not re.search(rf"\bversion\s+{version()}\b", netcode): + problems.append(f"port/linux/NETCODE.md's versions say nothing of version {version()}") + return problems + + +def record(): + new = items() + recorded_version, old = recorded() + breaking = changes(old, new)[0] + if breaking and recorded_version == version(): + sys.exit("changed or removed: " + ", ".join(breaking) + "\nraise HALO_PORT_NETWORK_VERSION first") + RECORD.write_text(f"version {version()}\n" + "".join(f"{name} {new[name]}\n" for name in sorted(new))) + + +if __name__ == "__main__": + if sys.argv[1:] == ["--record"]: + record() + else: + print("\n".join(check()) or "the wire format is the one recorded") diff --git a/tools/test_lobby_ranking.py b/tools/test_lobby_ranking.py new file mode 100644 index 0000000000..2916cb191c --- /dev/null +++ b/tools/test_lobby_ranking.py @@ -0,0 +1,47 @@ +"""Exercise the real browser ranking, including a truncated caller buffer.""" +import subprocess +from pathlib import Path +from harness import function + +ROOT = Path(__file__).resolve().parents[1] + + +def test_joinable_busy_games_survive_truncation(tmp_path): + source = (ROOT / 'port/linux/src/p2p_lobby.c').read_text() + code = ''' +#include +#include +#include +#include +#include "p2p.h" +#define MAXIMUM_GAMES 12 +static pthread_mutex_t p2p_lock = PTHREAD_MUTEX_INITIALIZER; +static struct {struct {int used; struct p2p_listing listing;} games[MAXIMUM_GAMES];} lobby; +static int identifier_failed(const unsigned char *id) {return id[0] == 7;} +''' + code += function(source, 'listing_order') + '\n' + function(source, 'p2p_lobby_games') + code += ''' +int main(void) { + struct p2p_listing result[2]; + assert(p2p_lobby_games(result, 2) == 0); + for (int i=0;i<12;i++) { + lobby.games[i].used=1; + struct p2p_listing *g=&lobby.games[i].listing; + g->identifier[0]=i;g->open=1;g->maximum_player_count=128;g->player_count=i; + } + lobby.games[0].listing.player_count=128; // full despite open flag + lobby.games[1].listing.player_count=100;lobby.games[1].listing.open=0; + lobby.games[7].listing.player_count=90; // previously unreachable + assert(p2p_lobby_games(result,2)==2); + assert(result[0].identifier[0]==11 && result[1].identifier[0]==10); + assert(p2p_lobby_games(result,0)==0); + assert(p2p_lobby_games(result,-1)==0); + assert(result[0].identifier[0]==11); // no write for zero capacity + return 0; +} +''' + c = tmp_path / 'ranking.c'; c.write_text(code) + exe = tmp_path / 'ranking' + subprocess.run(['clang', '-Wall', '-Wextra', '-Werror', '-fsanitize=address,undefined', + '-I', str(ROOT / 'port/linux/src'), str(c), '-o', str(exe)], check=True) + subprocess.run([str(exe)], check=True) From de7194ea5f6b49d358bcc2fa8bac2ccc783a5b90 Mon Sep 17 00:00:00 2001 From: Logan Shire Date: Mon, 12 Oct 2026 22:35:41 -0400 Subject: [PATCH 21/29] Fix menu platform attribute that hid the server browser --- ..._select.player_setup.player_profile_edit.network_setup.xml | 2 +- tools/test_linux_port.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/port/assets/menus/ce/main_menu.settings_select.player_setup.player_profile_edit.network_setup.xml b/port/assets/menus/ce/main_menu.settings_select.player_setup.player_profile_edit.network_setup.xml index 8626fd178b..7c67b967ec 100644 --- a/port/assets/menus/ce/main_menu.settings_select.player_setup.player_profile_edit.network_setup.xml +++ b/port/assets/menus/ce/main_menu.settings_select.player_setup.player_profile_edit.network_setup.xml @@ -101,7 +101,7 @@ - + diff --git a/tools/test_linux_port.py b/tools/test_linux_port.py index 542a8e1582..af55e4e6ec 100644 --- a/tools/test_linux_port.py +++ b/tools/test_linux_port.py @@ -252,9 +252,9 @@ def test_menus_are_well_formed(): where = f"{path.name}: <{element.tag} {element.get('name', '')}>" assert element.tag in MENU_ATTRIBUTES, where assert set(element.attrib) <= MENU_ATTRIBUTES[element.tag], where - # (the platforms that show it: menu_files.c's MENU_PLATFORM) + # menu_files.c accepts one platform name, not a whitespace list. assert element.get("platform") is None or \ - set(element.get("platform").split()) <= {"desktop", "android", "web"}, where + element.get("platform") in {"desktop", "android"}, where # (menu_files.c's whole numbers, which the tags keep in shorts, # its true/false attributes, and no text but whitespace outside # s) From e3839a1a405cc27ea1fd5ed1749781f3b322f68c Mon Sep 17 00:00:00 2001 From: Logan Shire Date: Mon, 12 Oct 2026 22:40:10 -0400 Subject: [PATCH 22/29] Allow rotation between supported landscape orientations --- port/ios/host/host_orientation.m | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/port/ios/host/host_orientation.m b/port/ios/host/host_orientation.m index c21ffb1453..5d38386a2f 100644 --- a/port/ios/host/host_orientation.m +++ b/port/ios/host/host_orientation.m @@ -12,15 +12,12 @@ @interface SDLLaunchScreenController : UIViewController @interface SDLUIKitSceneDelegate : NSObject @end -static BOOL landscape_lock(UIViewController *controller) { - /* Don't lock a transient portrait scene before the geometry request has - completed. The scene callback updates this preference after rotation. */ - return UIInterfaceOrientationIsLandscape(controller.viewIfLoaded.window.windowScene.interfaceOrientation); -} - +/* Restrict the allowed orientations without locking the scene to whichever + landscape side happened to win at launch. A scene lock also prevents the + other supported landscape orientation from following the user's rotation. */ #define HALO_LANDSCAPE_PREFERENCES \ - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { return UIInterfaceOrientationLandscapeRight; } \ -- (BOOL)prefersInterfaceOrientationLocked { return landscape_lock(self); } +- (BOOL)prefersInterfaceOrientationLocked { return NO; } @implementation HaloLandscapeController - (UIInterfaceOrientationMask)supportedInterfaceOrientations { return UIInterfaceOrientationMaskLandscape; } @@ -56,15 +53,6 @@ - (UIInterfaceOrientationMask)supportedInterfaceOrientationsForWindowScene:(UIWi } #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 260000 - (void)windowScene:(UIWindowScene *)scene didUpdateEffectiveGeometry:(UIWindowSceneGeometry *)previousGeometry API_AVAILABLE(ios(26.0)) { - BOOL wasLandscape=UIInterfaceOrientationIsLandscape(previousGeometry.interfaceOrientation); - BOOL isLandscape=UIInterfaceOrientationIsLandscape(scene.effectiveGeometry.interfaceOrientation); - if (wasLandscape != isLandscape) { - for (UIWindow *window in scene.windows) { - UIViewController *controller=window.rootViewController; - while (controller.presentedViewController) controller=controller.presentedViewController; - [controller setNeedsUpdateOfPrefersInterfaceOrientationLocked]; - } - } CGSize size=scene.effectiveGeometry.coordinateSpace.bounds.size; host_logf(HOST_LOG_INFO,"scene geometry %.0fx%.0f orientation=%ld locked=%d", size.width,size.height,(long)scene.effectiveGeometry.interfaceOrientation, From 94af7a898e80103e98cbe34afc916bd3bfd4950d Mon Sep 17 00:00:00 2001 From: Logan Shire Date: Mon, 12 Oct 2026 22:43:18 -0400 Subject: [PATCH 23/29] Record browser fallback correction and simulator validation --- docs/apple-network-28.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/docs/apple-network-28.md b/docs/apple-network-28.md index e8859a596c..0aaf626199 100644 --- a/docs/apple-network-28.md +++ b/docs/apple-network-28.md @@ -116,3 +116,24 @@ changes. | `5a7c655a60555215864391433716ddd966ba3079` | Testing branch review fixes | Partial: protocol 28, map-download timeout/admission fixes and safe co-op spawn/teleport positions. Exclude unrelated menu-coordinate and shield-HUD edits. | | `3d67397cdd3c9ee1515b62cf5a8168cf3def0730` | Record the wire format at network version 28 (#253) | Adopt: version-28 wire manifest. | | `c6a2f9004bb182ac6c11fa0fe902d59f3a7cfcb4` | Record the map sharing messages and the sizes of the wire format's arrays (#253) | Adopt: include map-sharing structs and array-size definitions in the wire manifest/checker. | + +## Menu integration correction (builds iOS 24 / macOS 17) + +The first protocol-28 release contained `platform="desktop android"` on the +map-sharing widget. This branch's runtime XML reader accepts a single platform +name; the invalid value rejected the entire custom menu set and fell back to +Xbox menus, hiding the server browser. The live Mac network test bypassed this +menu path and therefore did not establish browser usability. Removing the +unnecessary platform attribute restores the shared widget on both platforms. +The XML validation now matches the runtime's single-value rule. + +With the corrected guest image, an iPhone simulator loaded 1006 menu widgets. +Opening Multiplayer's Server Browser displayed 35 public servers, ordered by +joinable population (38 players on the first listing at capture time). +An XCTest-driven simulator check confirmed landscape application geometry +with portrait, landscape-left and landscape-right device orientations, plus +background/resume. The scene's launch-side lock was removed so the two supported +landscape orientations can follow rotation. Device and simulator builds passed; +physical-device rotation has not yet been retested. Screenshot pixel dimensions +alone are not an orientation assertion: XCTest image orientation metadata may +leave raw image dimensions portrait even when the app frame is landscape. From be69bf47b1f7d169cda0344a8787f050a5ea3f30 Mon Sep 17 00:00:00 2001 From: Logan Shire Date: Mon, 12 Oct 2026 22:45:32 -0400 Subject: [PATCH 24/29] Keep generated map-sharing menu platform-neutral --- tools/port_settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/port_settings.py b/tools/port_settings.py index f536fe24c9..d332c98625 100644 --- a/tools/port_settings.py +++ b/tools/port_settings.py @@ -229,7 +229,7 @@ _network["categories"] = [ ("MAP SHARING:", "network_setup/map_sharing", "Downloading Custom Edition maps you do not have,\nand helping send them to other players.", - "desktop android"), + None), ] SCREENS["network_setup/map_sharing"] = { "screen": "map_sharing_settings_screen", "header": _network["header"], "spacing": 30, From 811cbb4243316dc8cc747188f5258aed4d677d0e Mon Sep 17 00:00:00 2001 From: Logan Shire Date: Mon, 12 Oct 2026 23:12:03 -0400 Subject: [PATCH 25/29] Address original Apple review with optional touch split-screen routing --- .github/workflows/apple.yml | 4 + docs/apple-original-pr-review.md | 41 ++++++++++ port/apple/host_debug.m | 9 ++- port/ios/README.md | 18 ++++- port/ios/host/host_controls.m | 13 ++-- port/linux/src/xinput_sdl.c | 4 + tools/test_ios_controller_routing.py | 108 +++++++++++++++++++++++++++ 7 files changed, 187 insertions(+), 10 deletions(-) create mode 100644 docs/apple-original-pr-review.md create mode 100644 tools/test_ios_controller_routing.py diff --git a/.github/workflows/apple.yml b/.github/workflows/apple.yml index 60f015e1cc..4d04f95f1a 100644 --- a/.github/workflows/apple.yml +++ b/.github/workflows/apple.yml @@ -54,6 +54,10 @@ jobs: run: | python3 tools/ios_xiso_test.py python3 -m unittest tools.test_config_defaults + - name: iOS controller routing + run: | + python3 -m pip install pytest + python3 -m pytest tools/test_ios_controller_routing.py -q - name: Controls, rendering and workload verification run: python3 -m unittest tools.test_input_bindings tools.test_visibility_queries tools.test_geometry_cache tools.test_presentation tools.test_macos_preflight tools.test_macos_benchmark - name: Version 11 network protocol diff --git a/docs/apple-original-pr-review.md b/docs/apple-original-pr-review.md new file mode 100644 index 0000000000..58803833d7 --- /dev/null +++ b/docs/apple-original-pr-review.md @@ -0,0 +1,41 @@ +# Follow-up to the original Apple PR review + +Reviewed [OpenCommunityEdition/OpenCE #64](https://github.com/OpenCommunityEdition/OpenCE/pull/64) +on 2026-10-12. GitHub returned two discussion comments and no inline review +comments or submitted reviews. This follow-up targets +[innerhat-dev/OpenCE #1](https://github.com/innerhat-dev/OpenCE/pull/1). + +## Gameplay and controls + +Source: [UEMxMDE's six-part report](https://github.com/OpenCommunityEdition/OpenCE/pull/64#issuecomment-6028960061). + +| Feedback | Current disposition | +| --- | --- | +| No ordinary split-screen multiplayer or co-op entry | The innerhat base supplies multiplayer lobby **Add Player** / controller **Start** joining and **Co-op Campaign**. The menu fallback bug that hid the current menus is fixed. This revision also removes the desktop single-gamepad reassignment rule on iOS, where touch already occupies player one's port. Physical multi-controller gameplay still needs testing. | +| Cannot use touch and a controller as separate players | Added opt-in **Touch as a separate player** to the shake settings, persisted across launches. After relaunch, touch stays visible on player one and hardware controllers have separate slots. The default remains automatic touch hiding and shared player one, as requested by this fork's owner. No hide-controls switch is offered when touch is the only input. | +| SWAP G and LIGHT swapped | Already corrected in the migrated iOS controls: LIGHT → SDL left shoulder → Xbox white → flashlight; SWAP G → SDL right shoulder → Xbox black → switch grenades, with the default profile bindings. This is not a new upstream fix in this revision. | +| Pause-menu navigation moves the player | Already addressed by upstream [129d3483](https://github.com/innerhat-dev/OpenCE/commit/129d3483dcf0602eb46b033738dd92cae960500c). `player_control_port_menu_has_controller` suppresses gameplay input for the player whose controller owns a menu. A network match itself continues running; other players are not paused. Retained without replacing upstream's fix. | +| Custom Edition support and cross-play | Partial: the current protocol-28 integration includes upstream community-map discovery/transfer and download admission. It does not provide an iOS standalone Custom Edition import/switcher, and no claim is made that arbitrary Xbox and CE content can share a match. Retail ISO import remains the startup path; full CE content import and end-to-end CE-map interoperability remain follow-up work. | +| Move/remap/add/remove touch controls, reset, named layouts; physical remapping | A full touch-layout editor and named controller-layout manager are not implemented. These are feature requests, not closed by the routing fix. Track separately rather than claim the graphics settings or default profile bindings satisfy them. | + +## Hosting and CI + +Source: [cybersecurity's hosting/testing concern](https://github.com/OpenCommunityEdition/OpenCE/pull/64#issuecomment-6075561927). + +The contribution moved to the Apple-maintained innerhat fork, whose base already +contains macOS workflows. It asks for no workflow or runner changes in the old +OpenCommunityEdition repository. This does not eliminate Apple runner costs or +transfer physical-device testing responsibility to the original maintainer. +The controller regression checks extend the existing Apple job; they add no +new runner job. Personal bundle identifiers and artwork remain downstream on +`apple/ios-internal`, outside this PR. + +## Validation and limits + +`tools/test_ios_controller_routing.py` compiles the production routing functions +with deterministic discovery/input and ASan/UBSan. It checks default sharing, +separate-player isolation, controller disconnect/reconnect, bounded enumeration, +modal input suppression, and the different iOS/desktop single-controller rules. +These checks establish routing behavior, not a complete multiplayer match. +The device build validates the Objective-C settings/controls and iOS guest code. +No physical iPhone/iPad installation or play session was performed for this review. diff --git a/port/apple/host_debug.m b/port/apple/host_debug.m index e52cf95f89..ca7b453867 100644 --- a/port/apple/host_debug.m +++ b/port/apple/host_debug.m @@ -249,7 +249,7 @@ - (void)done {[self dismissViewControllerAnimated:YES completion:^{debugControll - (void)presentationControllerDidDismiss:(UIPresentationController *)presentationController { (void)presentationController;debugController=nil;host_ios_touch_focus(); } -- (NSInteger)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section {(void)table;(void)section;return 9;} +- (NSInteger)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section {(void)table;(void)section;return 10;} - (UITableViewCell *)tableView:(UITableView *)table cellForRowAtIndexPath:(NSIndexPath *)path { (void)table;UITableViewCell *cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:nil]; cell.detailTextLabel.numberOfLines=0; @@ -294,6 +294,12 @@ - (UITableViewCell *)tableView:(UITableView *)table cellForRowAtIndexPath:(NSInd cell.textLabel.text=@"Smooth motion";cell.detailTextLabel.text=@"Interpolate rendered motion as in the earlier Apple build. Simulation stays at 30 Hz. Relaunch to apply."; [toggle addTarget:self action:@selector(changed:) forControlEvents:UIControlEventValueChanged];cell.accessoryView=toggle;break; } + case 9: { + UISwitch *toggle=[UISwitch new];toggle.tag=9;toggle.on=[settings boolForKey:@"HaloSeparateTouchPlayer"]; + cell.textLabel.text=@"Touch as a separate player"; + cell.detailTextLabel.text=@"Touch controls stay visible for player 1; controllers join as other players. Use Add Player in the lobby. Relaunch to apply."; + [toggle addTarget:self action:@selector(changed:) forControlEvents:UIControlEventValueChanged];cell.accessoryView=toggle;break; + } case 7:cell.textLabel.text=@"Clear recorded diagnostics";cell.detailTextLabel.text=@"Start a fresh measurement for your next play session.";break; } return cell; @@ -303,6 +309,7 @@ - (void)rendererChanged:(UISegmentedControl *)sender { } - (void)changed:(UISwitch *)sender { NSUserDefaults *settings=NSUserDefaults.standardUserDefaults; + if(sender.tag==9)[settings setBool:sender.on forKey:@"HaloSeparateTouchPlayer"]; if(sender.tag==8)[settings setBool:sender.on forKey:@"HaloInterpolation"]; if(sender.tag==3){halo_metalfx_set_enabled(sender.on);[settings setBool:sender.on forKey:@"HaloMetalFX"];} if(sender.tag==4){showFPS=sender.on;fpsLabel.hidden=!showFPS;[settings setBool:sender.on forKey:@"HaloFPSOverlay"];} diff --git a/port/ios/README.md b/port/ios/README.md index 235dc54a73..5592897518 100644 --- a/port/ios/README.md +++ b/port/ios/README.md @@ -43,13 +43,23 @@ Touch controls hide when a physical controller connects, and return on disconnect. The primary hardware controller shares player one with the touch controller; additional controllers retain separate slots. D-pad buttons support menu navigation. Flashlight and grenade-switch labels match the default game -bindings. Mac uses its existing keyboard/mouse/controller path without touch. +bindings. + +For touch plus a controller as **different players**, shake to open settings, +enable **Touch as a separate player**, then relaunch. Touch remains player one +and stays visible; the first hardware controller becomes player two. Create or +join a multiplayer lobby, choose **Add Player**, and use the additional +controller to select its profile. This also permits the second controller's +profile selection in **Co-op Campaign**. With the option off (the default), +connecting a controller still hides touch controls. Hardware split-screen +play has not yet been verified on a physical device with this revision. + +Mac uses its existing keyboard/mouse/controller path without touch. Shake the phone/tablet for the settings modal. It offers optional MetalFX spatial upscaling, bounded shader-stall recording and a share sheet for reports. -The shared upstream renderer now owns Metal presentation; our old native -OpenGL ES fallback and separate WebKit room-code transport are retired rather -than layering an older renderer/network protocol over it. The in-game browser +The graphics settings select Metal (ANGLE) or native OpenGL ES, with a relaunch +to change renderer. The separate WebKit room-code transport remains retired. The in-game browser uses upstream's current native/browser networking. The default renderer is Metal and MetalFX remains off unless explicitly enabled. diff --git a/port/ios/host/host_controls.m b/port/ios/host/host_controls.m index 9bafb22dd3..ddea8e9bc8 100644 --- a/port/ios/host/host_controls.m +++ b/port/ios/host/host_controls.m @@ -1,6 +1,7 @@ #include "../../apple/host_debug.h" /* UIKit controls feed a standard SDL gamepad. The first hardware controller - shares player one with touch; additional hardware controllers keep their ports. */ + shares player one with touch by default. Optional separate-player mode keeps + touch on player one and gives hardware controllers their own ports. */ #import #include #include "host.h" @@ -10,6 +11,7 @@ static SDL_Joystick *touch_joystick; static SDL_JoystickID touch_id, primary_hardware; static SDL_Gamepad *primary_gamepad; +static BOOL separate_players; static NSString *const controllerChanged = @"HaloControllerChanged"; static void button_state(int button, BOOL down) { @@ -19,6 +21,7 @@ static void axis_state(int axis, float value) { if(touch_joystick) SDL_SetJoystickVirtualAxis(touch_joystick,axis,(Sint16)(fmaxf(-1,fminf(1,value))*32767)); } void host_ios_touch_initialize(void) { + separate_players=[NSUserDefaults.standardUserDefaults boolForKey:@"HaloSeparateTouchPlayer"]; SDL_VirtualJoystickDesc desc; SDL_INIT_INTERFACE(&desc); desc.type=SDL_JOYSTICK_TYPE_GAMEPAD; @@ -50,7 +53,7 @@ int host_ios_gamepads(uint32_t *out,int capacity) { } if(capacity>0 && touch_id)out[used++]=touch_id; for(int i=0;iabs(value))value=physical; } @@ -71,7 +74,7 @@ int host_ios_gamepad_axis(SDL_Gamepad *pad,int axis) { int host_ios_gamepad_button(SDL_Gamepad *pad,int button) { if(halo_debug_is_presented())return 0; return SDL_GetGamepadButton(pad,button) || - (SDL_GetGamepadID(pad)==touch_id && primary_hardware && + (SDL_GetGamepadID(pad)==touch_id && !separate_players && primary_hardware && SDL_GetGamepadButton(primary_gamepad,button)); } void host_ios_touch_reset(void) { @@ -192,7 +195,7 @@ - (instancetype)initWithFrame:(CGRect)frame { } - (void)controllerChanged { BOOL connected=primary_hardware!=0; - [self setControlsHidden:connected]; + [self setControlsHidden:connected && !separate_players]; } - (void)setControlsHidden:(BOOL)hidden { [self reset]; diff --git a/port/linux/src/xinput_sdl.c b/port/linux/src/xinput_sdl.c index 4644687448..4b9a812842 100644 --- a/port/linux/src/xinput_sdl.c +++ b/port/linux/src/xinput_sdl.c @@ -807,6 +807,7 @@ a button held across the change would be pressed again on the other port (the B that leaves a profile screen leaving the game as player 1's) */ static SDL_Gamepad *port_gamepad(SDL_Gamepad *gamepads[PORT_COUNT], int count, int port) { +#ifndef HALO_IOS if (count == 1) { BOOL split = pc_menu_split_players() != 0; @@ -816,6 +817,9 @@ static SDL_Gamepad *port_gamepad(SDL_Gamepad *gamepads[PORT_COUNT], int count, i if (lone_gamepad_split) return port == 1 ? gamepads[0] : NULL; } +#endif + /* iOS always has a touch controller in port 0, even without hardware. + It has no keyboard-only player to leave behind on this port. */ return port < count ? gamepads[port] : NULL; } diff --git a/tools/test_ios_controller_routing.py b/tools/test_ios_controller_routing.py new file mode 100644 index 0000000000..115d3ef3c2 --- /dev/null +++ b/tools/test_ios_controller_routing.py @@ -0,0 +1,108 @@ +"""Run production iOS routing with deterministic controller discovery/input.""" +import subprocess +from pathlib import Path +from harness import function + +ROOT = Path(__file__).resolve().parents[1] + + +def test_ios_touch_and_hardware_ports(tmp_path): + source = (ROOT / "port/ios/host/host_controls.m").read_text() + code = r'''#import +#include +#include +#include +#include +struct SDL_Gamepad { SDL_JoystickID id; }; +static struct SDL_Gamepad pads[]={{0},{1},{2},{3}}; +static SDL_JoystickID touch_id=1, primary_hardware; +static SDL_Gamepad *primary_gamepad; +static BOOL separate_players; +static NSString *const controllerChanged=@"test"; +static int attached=3, modal; +static int axes[4], buttons[4]; +static void host_logf(int level,const char *format,...) {} +#define HOST_LOG_INFO 1 +static int halo_debug_is_presented(void) {return modal;} +SDL_JoystickID *SDL_GetGamepads(int *count) { + *count=attached; SDL_JoystickID *ids=calloc(attached+1,sizeof(*ids)); + for(int i=0;iid;} +SDL_GamepadType SDL_GetGamepadType(SDL_Gamepad *pad) {return SDL_GAMEPAD_TYPE_STANDARD;} +Sint16 SDL_GetGamepadAxis(SDL_Gamepad *pad,SDL_GamepadAxis axis) {return axes[pad->id];} +bool SDL_GetGamepadButton(SDL_Gamepad *pad,SDL_GamepadButton button) {return buttons[pad->id];} +''' + for name in ("host_ios_gamepads", "host_ios_gamepad_type", "host_ios_gamepad_axis", "host_ios_gamepad_button"): + code += function(source, name) + "\n" + code += r''' +int main(void) {@autoreleasepool { + uint32_t out[4]={99,99,99,99}; + // Default: touch and first hardware share P1; second hardware gets P2. + assert(host_ios_gamepads(out,4)==2 && out[0]==1 && out[1]==3); + axes[1]=100; axes[2]=200; buttons[2]=1; + assert(host_ios_gamepad_axis(&pads[1],0)==200); + assert(host_ios_gamepad_button(&pads[1],0)); + // Opt-in split: touch P1, first hardware P2, second hardware P3. + separate_players=YES; + assert(host_ios_gamepads(out,4)==3 && out[0]==1 && out[1]==2 && out[2]==3); + assert(host_ios_gamepad_axis(&pads[1],0)==100); + assert(!host_ios_gamepad_button(&pads[1],0)); + assert(host_ios_gamepad_axis(&pads[2],0)==200); + assert(host_ios_gamepad_button(&pads[2],0)); + modal=1; + assert(!host_ios_gamepad_axis(&pads[2],0) && !host_ios_gamepad_button(&pads[2],0)); + modal=0; + assert(host_ios_gamepads(out,0)==0); + out[1]=99; assert(host_ios_gamepads(out,1)==1 && out[1]==99); + // Disconnect and reconnect keep touch first, without a ghost shared pad. + attached=1; + assert(host_ios_gamepads(out,4)==1 && out[0]==1 && !primary_hardware); + attached=2; + assert(host_ios_gamepads(out,4)==2 && out[1]==2); +}} +''' + src=tmp_path / "routing.m"; src.write_text(code) + exe=tmp_path / "routing" + subprocess.run(["clang", "-fobjc-arc", "-fblocks", "-framework", "Foundation", + "-fsanitize=address,undefined", "-I/opt/homebrew/opt/sdl3/include", + str(src), "-o", str(exe)], check=True) + subprocess.run([str(exe)], check=True) + + +def test_touch_never_moves_to_keyboard_port(tmp_path): + source=(ROOT / "port/linux/src/xinput_sdl.c").read_text() + code=""" +#include +#include +typedef int BOOL; +typedef int SDL_Gamepad; +#define PORT_COUNT 4 +static int lone_gamepad_split, split; +static int pc_menu_split_players(void) {return split;} +static int gamepad_idle(SDL_Gamepad *p) {return 1;} +""" + function(source,"port_gamepad") + """ +int main(void) { + int p1=1,p2=2; SDL_Gamepad *pads[4]={&p1,&p2}; + assert(port_gamepad(pads,1,0)==&p1); + split=1; +#ifdef HALO_IOS + assert(port_gamepad(pads,1,0)==&p1); + assert(port_gamepad(pads,1,1)==NULL); +#else + assert(port_gamepad(pads,1,0)==NULL); + assert(port_gamepad(pads,1,1)==&p1); +#endif + assert(port_gamepad(pads,2,0)==&p1 && port_gamepad(pads,2,1)==&p2); +} +""" + src=tmp_path / "ports.c";src.write_text(code) + for ios in (False,True): + exe=tmp_path / ("ios" if ios else "desktop") + subprocess.run(["clang", *(["-DHALO_IOS=1"] if ios else []), + "-fsanitize=address,undefined", str(src), "-o", str(exe)],check=True) + subprocess.run([str(exe)],check=True) From 8d16881e18afc88253ffadf3a4fe573fc93260aa Mon Sep 17 00:00:00 2001 From: Logan Shire Date: Mon, 12 Oct 2026 23:28:05 -0400 Subject: [PATCH 26/29] Document downloadable public iOS preview and signing requirements --- port/ios/README.md | 8 ++++++++ port/ios/RESIGNING.md | 46 ++++++++++++++++++++++++++++++++++--------- tools/ios_resign.py | 2 +- 3 files changed, 46 insertions(+), 10 deletions(-) diff --git a/port/ios/README.md b/port/ios/README.md index 5592897518..b8634123ed 100644 --- a/port/ios/README.md +++ b/port/ios/README.md @@ -9,6 +9,14 @@ Subsequent launches reuse it. Existing imports/saves from our earlier branch and existing innerhat `Documents/GameData/maps` installations remain readable when the same bundle ID and account are used. Different IDs have separate data. +## Download a test IPA + +[Download the unsigned IPA and re-signing kit](https://github.com/AttilaTheFun/halo-ce-universal/releases/tag/apple-ios-pr1-20261012) for this PR. +Follow [the re-signing guide](RESIGNING.md). A profile granting Extended Virtual +Addressing is required; free-account AltStore installation is not a tested path. +You supply your own game image on first launch. No device ID needs to be sent +to the maintainer when you use your own signing account. + ## Build Follow [Apple build setup](../../docs/apple-build.md). LLVM 22, full Xcode, diff --git a/port/ios/RESIGNING.md b/port/ios/RESIGNING.md index ae5760376c..d8c441f100 100644 --- a/port/ios/RESIGNING.md +++ b/port/ios/RESIGNING.md @@ -4,8 +4,10 @@ Use an Apple Silicon Mac with Xcode 26+ and Python 3. This runtime requires iOS/iPadOS 26+ and a profile granting Extended Virtual Addressing; a paid development team was required in upstream testing. Start with a device IPA provided by the builder, or build one using [the iOS build instructions](README.md) -and `tools/ios_package.py`. This branch does not yet publish an unsigned IPA -artifact in GitHub Actions. A simulator app cannot run on an iPhone. +and `tools/ios_package.py`. Download the unsigned device IPA and re-signing kit from the +[PR #1 testing release](https://github.com/AttilaTheFun/halo-ce-universal/releases/tag/apple-ios-pr1-20261012). The release is built from +`apple/ios-installer`, not the private branding branch. GitHub Actions does not +yet publish an unsigned IPA automatically. A simulator app cannot run on an iPhone. The script signs locally using a certificate/private key already in your Keychain and a provisioning profile issued for your account. It does not @@ -40,11 +42,12 @@ you use your own account. ## Sign and install -Check out `apple/ios-installer` from `AttilaTheFun/halo-ce-universal`. -From its root, run: +Extract `OpenCE-iOS-resigning-kit.zip` and run the command below from its +folder. Alternatively, check out `apple/ios-installer` from +`AttilaTheFun/halo-ce-universal` and run it from the repository root: ```sh -./tools/ios_resign.sh ~/Downloads/Halo-CE-iOS-unsigned.ipa \ +./tools/ios_resign.sh ~/Downloads/OpenCE-iOS-PR1-unsigned.ipa \ --identity 'Apple Development: Your Name (IDENTITY_ID)' \ --profile ~/Downloads/embedded.mobileprovision \ --bundle-id com.yourname.haloce \ @@ -82,10 +85,35 @@ device limits differ from paid developer membership. Back up saves before uninstalling. Do not upload your signed IPA/profile or private key to this repository; they contain your signing/device information. -The script has been checked against the CI-produced unsigned IPA using a -local development identity, including nested framework and app signature -verification. Personal Team provisioning and third-party sideloading tools -have not been tested for this port. +## AltStore / similar sideloaders + +Do not assume that a free Apple ID plus AltStore Classic will run this build. +The runtime requires `com.apple.developer.kernel.extended-virtual-addressing`; +the provisioning profile must authorize it and the re-signer must retain it. +Our tested setup uses a paid Apple Developer team. Personal Team provisioning +and third-party sideloaders have not been validated for this port. + +The unsigned IPA has no embedded profile or code signature. The kit includes +`Required-entitlements.plist` for tools that accept an entitlement file, but +adding that file does not grant the capability: the profile must contain it. +If a sideloader cannot provision or preserve it, use the script above with an +appropriate profile. Installation alone is not proof of a working runtime. +This is a manually re-signable test artifact, not an AltStore PAL listing. + +## Build it yourself + +```sh +git clone --branch apple/ios-installer https://github.com/AttilaTheFun/halo-ce-universal.git +cd halo-ce-universal +``` + +Follow [the build instructions](README.md#build), supplying your own team and +unique bundle ID. Source builds need the same Extended Virtual Addressing +capability; compiling locally does not remove that requirement. + +The public IPA is checked by re-signing it locally and verifying the nested +framework and app signatures and required entitlement. This does not establish +compatibility with every device or signing service. Apple references: [signing setup](https://developer.apple.com/documentation/xcode/running-your-app-on-simulated-or-physical-devices), [provisioning profiles](https://developer.apple.com/documentation/technotes/tn3125-inside-code-signing-provisioning-profiles), diff --git a/tools/ios_resign.py b/tools/ios_resign.py index 5dd931290d..0254f5599e 100644 --- a/tools/ios_resign.py +++ b/tools/ios_resign.py @@ -66,7 +66,7 @@ def main(): parser.error('Select one installed signing identity whose certificate is included in the profile. ' 'Use security find-identity -v -p codesigning to list identities.') identity = matches[0][0] - # This app needs no privileged capabilities. Do not inherit unrelated + # Keep the required memory capability, but do not inherit unrelated # entitlements from the old signature or grant every profile entitlement. entitlements = {'application-identifier': app_id, 'com.apple.developer.kernel.extended-virtual-addressing': True, From b48c9addb2bd12ac27dd9a7b019847b039ebabbd Mon Sep 17 00:00:00 2001 From: Logan Shire Date: Mon, 12 Oct 2026 23:29:59 -0400 Subject: [PATCH 27/29] Include renderer GPL license in distributed iOS bundles --- port/ios/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/port/ios/CMakeLists.txt b/port/ios/CMakeLists.txt index a1b013ed4e..0a0da11d4a 100644 --- a/port/ios/CMakeLists.txt +++ b/port/ios/CMakeLists.txt @@ -75,7 +75,7 @@ endif() # License texts ship with the code; retail game images never do. set(LICENSE_INPUTS - "LICENSE.md" "port/macos/licenses/ANGLE.txt" + "LICENSE.md" "libs/d3d8/LICENSE.GPL-3.0" "port/macos/licenses/ANGLE.txt" "build/android/third_party/SDL3/LICENSE.txt" "build/android/third_party/musl-1.2.5/COPYRIGHT" "port/third_party/kcp/LICENSE" "port/third_party/miniupnpc/LICENSE" From 2344f6f15d6050fd1f586e6a3d7e31ec61f1a68d Mon Sep 17 00:00:00 2001 From: Logan Shire Date: Mon, 12 Oct 2026 23:30:25 -0400 Subject: [PATCH 28/29] Revert "Include renderer GPL license in distributed iOS bundles" This reverts commit b48c9addb2bd12ac27dd9a7b019847b039ebabbd. --- port/ios/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/port/ios/CMakeLists.txt b/port/ios/CMakeLists.txt index 0a0da11d4a..a1b013ed4e 100644 --- a/port/ios/CMakeLists.txt +++ b/port/ios/CMakeLists.txt @@ -75,7 +75,7 @@ endif() # License texts ship with the code; retail game images never do. set(LICENSE_INPUTS - "LICENSE.md" "libs/d3d8/LICENSE.GPL-3.0" "port/macos/licenses/ANGLE.txt" + "LICENSE.md" "port/macos/licenses/ANGLE.txt" "build/android/third_party/SDL3/LICENSE.txt" "build/android/third_party/musl-1.2.5/COPYRIGHT" "port/third_party/kcp/LICENSE" "port/third_party/miniupnpc/LICENSE" From 38b211746d6db97e532044a82b5c93be727b853e Mon Sep 17 00:00:00 2001 From: Logan Shire Date: Tue, 13 Oct 2026 11:27:27 -0400 Subject: [PATCH 29/29] Preflight iOS memory and keep startup errors readable and interactive --- docs/apple-original-pr-review.md | 17 +++++++ port/ios/CMakeLists.txt | 2 +- port/ios/Info.plist.in | 2 +- port/ios/README.md | 2 +- port/ios/RESIGNING.md | 26 +++++++++- port/ios/host/host_main.m | 33 +++++++++---- port/ios/host/host_startup_error.m | 78 ++++++++++++++++++++++++++++++ port/macos/host/host_memory.c | 4 +- 8 files changed, 149 insertions(+), 15 deletions(-) create mode 100644 port/ios/host/host_startup_error.m diff --git a/docs/apple-original-pr-review.md b/docs/apple-original-pr-review.md index 58803833d7..6a7c7a48f7 100644 --- a/docs/apple-original-pr-review.md +++ b/docs/apple-original-pr-review.md @@ -39,3 +39,20 @@ modal input suppression, and the different iOS/desktop single-controller rules. These checks establish routing behavior, not a complete multiplayer match. The device build validates the Objective-C settings/controls and iOS guest code. No physical iPhone/iPad installation or play session was performed for this review. + +## LiveContainer startup follow-up + +[UEMxMDE's follow-up](https://github.com/innerhat-dev/OpenCE/pull/1#issuecomment-6139443664) +reports successful import followed by `KERN_INVALID_ADDRESS` reserving the +fixed guest arena on iPhone 17 Pro Max / iOS 26.0. The logs do not distinguish +missing host-process Extended Virtual Addressing from other container VM +restrictions. LiveContainer documents that guest entitlements do not apply to +its host; its file-picker workaround does not resolve this requirement. + +The startup memory check now runs before import, logs the requested base/size +and kernel code, and directs users to standalone signing without deleting data. +The fatal SDL message box is replaced by a dedicated scene-backed, scrollable +UIKit screen. Its Copy details and Close buttons remain outside the scrolling +text. A forced-error XCTest on an iPhone simulator exercised both buttons on +three launches with orientation changes. An unsigned device build also passed. +This is failure-path validation, not a LiveContainer compatibility result. diff --git a/port/ios/CMakeLists.txt b/port/ios/CMakeLists.txt index a1b013ed4e..62232596ae 100644 --- a/port/ios/CMakeLists.txt +++ b/port/ios/CMakeLists.txt @@ -17,7 +17,7 @@ file(GLOB HOST_SOURCES "${HALO_ROOT}/port/macos/host/*.c") file(GLOB MBEDTLS_SOURCES "${HALO_ROOT}/port/third_party/mbedtls/library/*.c") file(GLOB MINIUPNPC_SOURCES "${HALO_ROOT}/port/third_party/miniupnpc/src/*.c") list(FILTER HOST_SOURCES EXCLUDE REGEX "host_(main|loader)\\.c$") -add_executable(Halo MACOSX_BUNDLE ${HOST_SOURCES} ${MINIUPNPC_SOURCES} ${MBEDTLS_SOURCES} host/host_loader.c host/host_main.m host/host_controls.m host/host_import.m host/host_orientation.m +add_executable(Halo MACOSX_BUNDLE ${HOST_SOURCES} ${MINIUPNPC_SOURCES} ${MBEDTLS_SOURCES} host/host_loader.c host/host_main.m host/host_controls.m host/host_import.m host/host_orientation.m host/host_startup_error.m "${HALO_ROOT}/port/macos/native/HaloMapDownloads.m" "${HALO_ROOT}/port/apple/host_gl_diagnostics.c" "${HALO_ROOT}/port/apple/host_graphics.c" "${HALO_ROOT}/port/apple/host_debug.m" "${HALO_ROOT}/port/apple/host_metalfx.m" "${HALO_ROOT}/port/apple/host_shader_cache.m" "${HALO_ROOT}/port/apple/game_store.m" "${HALO_ROOT}/port/apple/xiso.c" diff --git a/port/ios/Info.plist.in b/port/ios/Info.plist.in index 1cf8838efc..999ad71c71 100644 --- a/port/ios/Info.plist.in +++ b/port/ios/Info.plist.in @@ -7,7 +7,7 @@ CFBundleDisplayNameHalo OG CFBundlePackageTypeAPPL CFBundleShortVersionString0.2.0 -CFBundleVersion15 +CFBundleVersion16 LSRequiresIPhoneOS MinimumOSVersion26.0 UIRequiredDeviceCapabilitiesarm64metal diff --git a/port/ios/README.md b/port/ios/README.md index b8634123ed..11ae518721 100644 --- a/port/ios/README.md +++ b/port/ios/README.md @@ -11,7 +11,7 @@ when the same bundle ID and account are used. Different IDs have separate data. ## Download a test IPA -[Download the unsigned IPA and re-signing kit](https://github.com/AttilaTheFun/halo-ce-universal/releases/tag/apple-ios-pr1-20261012) for this PR. +[Download the unsigned IPA and re-signing kit](https://github.com/AttilaTheFun/halo-ce-universal/releases/tag/apple-ios-pr1-20261013) for this PR. Follow [the re-signing guide](RESIGNING.md). A profile granting Extended Virtual Addressing is required; free-account AltStore installation is not a tested path. You supply your own game image on first launch. No device ID needs to be sent diff --git a/port/ios/RESIGNING.md b/port/ios/RESIGNING.md index d8c441f100..0f82d3fba4 100644 --- a/port/ios/RESIGNING.md +++ b/port/ios/RESIGNING.md @@ -5,7 +5,7 @@ iOS/iPadOS 26+ and a profile granting Extended Virtual Addressing; a paid development team was required in upstream testing. Start with a device IPA provided by the builder, or build one using [the iOS build instructions](README.md) and `tools/ios_package.py`. Download the unsigned device IPA and re-signing kit from the -[PR #1 testing release](https://github.com/AttilaTheFun/halo-ce-universal/releases/tag/apple-ios-pr1-20261012). The release is built from +[PR #1 testing release](https://github.com/AttilaTheFun/halo-ce-universal/releases/tag/apple-ios-pr1-20261013). The release is built from `apple/ios-installer`, not the private branding branch. GitHub Actions does not yet publish an unsigned IPA automatically. A simulator app cannot run on an iPhone. @@ -100,6 +100,30 @@ If a sideloader cannot provision or preserve it, use the script above with an appropriate profile. Installation alone is not proof of a working runtime. This is a manually re-signable test artifact, not an AltStore PAL listing. +## LiveContainer and memory reservation errors + +A reported iPhone 17 Pro Max / iOS 26.0 LiveContainer launch failed with +`Guest arena reservation: (os/kern) invalid address` after ISO import. This +happens before the game image starts, not while parsing the ISO. Re-importing +or reinstalling the same image does not change process address-space limits. + +[LiveContainer documents](https://github.com/LiveContainer/LiveContainer#limitations) +that guest entitlements are not applied to its host process. Granting Extended +Virtual Addressing to the Halo guest therefore does not prove the hosting +process has it. The file-picker workaround does not grant memory capabilities. +The error is consistent with a missing process capability or an incompatible +address-space layout; the log alone does not distinguish them. + +Try the standalone installation described above with a profile authorizing +Extended Virtual Addressing. LiveContainer remains unverified even if its host +is entitled: the required address range must also be available. Do not change +the compiled runtime's fixed base address as a signing workaround. + +The startup preflight now checks memory before importing an ISO. Failures show +a scrollable native screen with **Copy details** and **Close**, and log the +requested address/size and kernel result in `Documents/save/halo.log` (or the +existing legacy save directory). Existing imports and saves are preserved. + ## Build it yourself ```sh diff --git a/port/ios/host/host_main.m b/port/ios/host/host_main.m index 9a30d4d8f6..113f4c53b8 100644 --- a/port/ios/host/host_main.m +++ b/port/ios/host/host_main.m @@ -1,5 +1,7 @@ /* SDL owns UIApplication and invokes this entry on the UIKit main thread. */ #include "host.h" +#include "image.h" +extern void host_ios_show_fatal(const char *) __attribute__((noreturn)); #include "../../apple/host_graphics.h" #include "../../apple/host_debug.h" #include @@ -23,8 +25,7 @@ void host_fatal(const char *format, ...) { char message[2048]; va_list a; va_start(a, format); vsnprintf(message, sizeof(message), format, a); va_end(a); host_logf(HOST_LOG_ERROR, "%s", message); - SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Halo OG could not start", message, NULL); - exit(1); + host_ios_show_fatal(message); } void host_abort(const char *reason) { host_fatal("Game stopped: %s", reason); } void host_exit(int code) { host_logf(HOST_LOG_INFO, "Game exited (%d)", code); exit(code); } @@ -94,6 +95,26 @@ int main(int argc, char **argv) { @autoreleasepool { NSFileManager *files = NSFileManager.defaultManager; NSString *documents = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject; + NSString *saves = [documents stringByAppendingPathComponent:@"save"]; + NSString *legacySaves = [NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES).firstObject stringByAppendingPathComponent:@"Halo"]; + if (![files fileExistsAtPath:saves] && [files fileExistsAtPath:legacySaves]) saves = legacySaves; + setenv("HALO_CONFIG_ROOT", documents.fileSystemRepresentation, 1); + [files createDirectoryAtPath:saves withIntermediateDirectories:YES attributes:nil error:NULL]; + snprintf(save_root, sizeof(save_root), "%s", saves.fileSystemRepresentation); + freopen([[saves stringByAppendingPathComponent:@"halo.log"] fileSystemRepresentation], "w", stderr); + setbuf(stderr, NULL); + // Fail before asking the user to spend time importing a large image. + if ([NSProcessInfo.processInfo.environment[@"HALO_IOS_TEST_STARTUP_ERROR"] boolValue] || + host_memory_initialize(HALO_IOS_IMAGE_BASE, HALO_IOS_IMAGE_SIZE)) + host_fatal("iOS could not reserve the game's required memory range (0x%llx, %llu MiB).\n\n" + "The running process needs Extended Virtual Addressing. A missing signing capability " + "or a container's address-space restrictions can cause this failure.\n\n" + "Try installing this app directly using the re-signing guide and a profile that grants " + "Extended Virtual Addressing. LiveContainer does not inherit a guest app's entitlements; " + "Fix File Picker does not change memory permissions. LiveContainer compatibility is not verified.\n\n" + "Your imported game and saves have not been removed. Re-importing the ISO will not fix " + "this memory error. Details are in save/halo.log.", + (unsigned long long)HALO_MACOS_BIAS,(unsigned long long)(HALO_ARENA_SIZE/(1024*1024))); NSString *data = halo_game_store_current(documents); NSString *legacy = [documents stringByAppendingPathComponent:@"GameData"]; // Existing innerhat extracted maps and our retained ISO generations @@ -104,15 +125,7 @@ int main(int argc, char **argv) { host_ios_prepare_assets(documents.fileSystemRepresentation); data = halo_game_store_current(documents); } - NSString *saves = [documents stringByAppendingPathComponent:@"save"]; - NSString *legacySaves = [NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES).firstObject stringByAppendingPathComponent:@"Halo"]; - if (![files fileExistsAtPath:saves] && [files fileExistsAtPath:legacySaves]) saves = legacySaves; - setenv("HALO_CONFIG_ROOT", documents.fileSystemRepresentation, 1); - [files createDirectoryAtPath:saves withIntermediateDirectories:YES attributes:nil error:NULL]; snprintf(data_root, sizeof(data_root), "%s", data.fileSystemRepresentation); - snprintf(save_root, sizeof(save_root), "%s", saves.fileSystemRepresentation); - freopen([[saves stringByAppendingPathComponent:@"halo.log"] fileSystemRepresentation], "w", stderr); - setbuf(stderr, NULL); // Refresh the shipped default; custom broker files use a separate // network.brokers_file path and remain untouched. NSURL *brokers = [NSBundle.mainBundle URLForResource:@"brokers" withExtension:@"txt"]; diff --git a/port/ios/host/host_startup_error.m b/port/ios/host/host_startup_error.m new file mode 100644 index 0000000000..f3c1b9339e --- /dev/null +++ b/port/ios/host/host_startup_error.m @@ -0,0 +1,78 @@ +/* A startup failure must remain usable without an SDL game window. */ +#import "host_orientation.h" +#include "host.h" +#include + +@interface HaloStartupErrorController : HaloLandscapeController +@property(nonatomic, copy) NSString *message; +@end +@implementation HaloStartupErrorController +- (void)loadView { + self.view=[UIView new];self.view.backgroundColor=UIColor.systemBackgroundColor; + UILabel *title=[UILabel new];title.text=@"Halo could not start"; + title.font=[UIFont preferredFontForTextStyle:UIFontTextStyleHeadline]; + title.numberOfLines=0; + UITextView *details=[UITextView new];details.text=self.message;details.editable=NO; + details.font=[UIFont preferredFontForTextStyle:UIFontTextStyleBody]; + details.accessibilityIdentifier=@"startup-error-details"; + UIButton *copy=[UIButton buttonWithType:UIButtonTypeSystem]; + [copy setTitle:@"Copy details" forState:UIControlStateNormal]; + [copy addTarget:self action:@selector(copyDetails:) forControlEvents:UIControlEventTouchUpInside]; + UIButton *close=[UIButton buttonWithType:UIButtonTypeSystem]; + [close setTitle:@"Close" forState:UIControlStateNormal]; + [close addTarget:self action:@selector(close:) forControlEvents:UIControlEventTouchUpInside]; + UIStackView *buttons=[[UIStackView alloc]initWithArrangedSubviews:@[copy,close]]; + buttons.distribution=UIStackViewDistributionFillEqually;buttons.spacing=16; + UIStackView *stack=[[UIStackView alloc]initWithArrangedSubviews:@[title,details,buttons]]; + stack.axis=UILayoutConstraintAxisVertical;stack.spacing=12;stack.translatesAutoresizingMaskIntoConstraints=NO; + [self.view addSubview:stack]; + UILayoutGuide *safe=self.view.safeAreaLayoutGuide; + [NSLayoutConstraint activateConstraints:@[ + [stack.topAnchor constraintEqualToAnchor:safe.topAnchor constant:16], + [stack.bottomAnchor constraintEqualToAnchor:safe.bottomAnchor constant:-16], + [stack.leadingAnchor constraintEqualToAnchor:safe.leadingAnchor constant:20], + [stack.trailingAnchor constraintEqualToAnchor:safe.trailingAnchor constant:-20], + [buttons.heightAnchor constraintEqualToConstant:48]]]; +} +- (void)copyDetails:(UIButton *)sender { + UIPasteboard.generalPasteboard.string=[NSString stringWithFormat:@"%@\n%@",self.message, + NSProcessInfo.processInfo.operatingSystemVersionString]; + [sender setTitle:@"Copied" forState:UIControlStateNormal]; +} +- (void)close:(id)sender {(void)sender;exit(1);} +@end + +static UIWindow *errorWindow; +static void show_error(NSString *message) { + if(errorWindow)return; + UIWindowScene *chosen=nil; + for(UIScene *scene in UIApplication.sharedApplication.connectedScenes) { + if(![scene isKindOfClass:UIWindowScene.class])continue; + if(!chosen || scene.activationState==UISceneActivationStateForegroundActive)chosen=(UIWindowScene *)scene; + if(scene.activationState==UISceneActivationStateForegroundActive)break; + } + if(!chosen) {host_logf(HOST_LOG_ERROR,"No UIKit scene available for startup error");exit(1);} + HaloStartupErrorController *controller=[HaloStartupErrorController new];controller.message=message; + errorWindow=[[UIWindow alloc]initWithWindowScene:chosen]; + errorWindow.frame=chosen.coordinateSpace.bounds; + errorWindow.windowLevel=UIWindowLevelAlert+1; + errorWindow.rootViewController=controller;[errorWindow makeKeyAndVisible]; + /* Hide SDL's fading launch window, which otherwise competes for focus. */ + for(UIWindow *window in chosen.windows) + if(window!=errorWindow)window.hidden=YES; +} + +void host_ios_show_fatal(const char *text) __attribute__((noreturn)); +void host_ios_show_fatal(const char *text) { + NSString *message=[NSString stringWithUTF8String:text] ?: @"Unknown startup error."; + if(!NSThread.isMainThread) { + dispatch_async(dispatch_get_main_queue(),^{show_error(message);}); + dispatch_semaphore_wait(dispatch_semaphore_create(0),DISPATCH_TIME_FOREVER); + abort(); + } + show_error(message); + for(;;) {@autoreleasepool { + CFRunLoopRunInMode(kCFRunLoopDefaultMode,0.01,true); + CFRunLoopRunInMode((__bridge CFStringRef)UITrackingRunLoopMode,0.01,true); + }} +} diff --git a/port/macos/host/host_memory.c b/port/macos/host/host_memory.c index f4c4863b4b..cec93c6b4c 100644 --- a/port/macos/host/host_memory.c +++ b/port/macos/host/host_memory.c @@ -69,7 +69,9 @@ int host_memory_initialize(uint32_t image_base, uint32_t image_size) { kern_return_t error = vm_allocate(mach_task_self(), &address, HALO_ARENA_SIZE, VM_FLAGS_FIXED); if (error != KERN_SUCCESS) { - host_logf(HOST_LOG_ERROR, "Guest arena reservation: %s", mach_error_string(error)); + host_logf(HOST_LOG_ERROR, "Guest arena reservation at 0x%llx, size 0x%llx: %s (kern=%d)", + (unsigned long long)HALO_MACOS_BIAS, (unsigned long long)HALO_ARENA_SIZE, + mach_error_string(error), error); vm_address_t occupied = HALO_MACOS_BIAS; vm_size_t length = 0; vm_region_basic_info_data_64_t info;