game-compatibility icon indicating copy to clipboard operation
game-compatibility copied to clipboard

545107E1 - Avatar: The Last Airbender - The Burning Earth

Open heysehaven opened this issue 8 years ago • 5 comments

Marketplace Test with EmuCr Xenia Git (2015/11/12) Load screen freezes Log Video

xenia

heysehaven avatar Nov 16 '15 18:11 heysehaven

Tested this with both DirectX and Vulkan versions (Latest Versions as of this post). The game crashes to the desktop with no error messages before the title screen on both branches. Here is a log... Vulkan Log: xenia.log

DirectX12 Log: xenia.log

Specs: Ryzen 7 2700X 4.1Ghz, NVidia RTX 2070, 16 GB RAM

KBouder avatar Apr 11 '19 00:04 KBouder

Tested on https://github.com/xenia-project/xenia/commit/9418f3f2c5fb3b98421cca7f71506bc02fa48735

Booted game. Xenia closes immediately.

xenia.zip

state-crash-host | regression | KeSetCurrentStackPointers

Etokapa avatar Aug 07 '20 23:08 Etokapa

Title ID should be 545107E1.

Tested on https://github.com/xenia-project/xenia/commit/99024aec3294f5db423d30450218040abfa5f00b

Completed Chapter 1. 30-60FPS with shaders cached. Saves work. Probably Playable.

⚠️You must set disassemble_functions=true!

atla (5)

More Screenshots

atla (1) atla (2) atla (3) atla (4) atla (6)

xenia.zip

state-gameplay

Etokapa avatar Mar 29 '21 21:03 Etokapa

Seems the disassemble_functions=true fix works because with that set, PPCHIRBuilder::AnnotateLabel is used to set Label::name field to a string of the form loc_{address}, but when disassemble_functions isn't set AnnotateLabel is never called, instead name gets set in FinalizationPass::Run, which sets it to _label{id} based on Label::id field

Only 4 chars are allocated for that though making it limited to 0-9999 (the ID is checked for <=9999 with assert_true too), seems this title and maybe others that disassemble_functions helped with have Labels with id set to more than 9999 though, triggering that assert.

If assert is skipped it seems to make Xbyak freak out and crash, I guess because different labels end up sharing the same name or something.

Editing FinalizationPass::Run so it can use 5 chars for the label name (changing label_len = 6 + 4 to label_len = 6 + 5, expanding it to range 0-99999) & updating the assert_true seems to let it work fine without needing disassemble_functions. I'm not sure if this is actually the main issue here though, or if maybe the problem is with whatever is creating 9999+ Labels?

emoose avatar May 18 '21 20:05 emoose

Runs on the Steam Deck w/ Windows 11 with --disassemble_functions=true. There appears to be a lot of missing graphical effects when attacking. I'm using the latest Canary at the time of this post.

KBouder avatar Sep 05 '22 15:09 KBouder