xenia-project / game-compatibility

https://xenia.jp
BSD 3-Clause "New" or "Revised" License
472 stars 145 forks source link

4C4107D5 - Star Wars Battlefront III (Build 70217) #397

Closed SonofUgly closed 5 years ago

SonofUgly commented 8 years ago

The game was never released, this is a leaked build. Tested on benvanik/xenia@d414517 Tested on benvanik/xenia@d52d2c4 (2016/2/18) Tested on benvanik/xenia@cfc65a0 (2017/8/7) Tested on xenia-project/xenia@8e9d50d (2018/5/24) Tested on xenia-project/xenia@b35fe93 (2018/6/1)

Issues:

Running default.xex crashes during loading Hangs after the first intro splash Corrupt textures in the main menu Heavy graphical glitches in-game

Running bf_gold.xenon.xex immediately closes xenia (Same issue as https://github.com/xenia-project/game-compatibility/issues/133#issuecomment-130126097)

Log:

Log (5MB) ~~Log (2017/8/7) (265KB) Log from bf_gold.xenon.xex~~ Log (9MB)

Screenshot:

Labels:

state-gameplay gpu-corrupt-drawing

Razzile commented 8 years ago

Is this meant to be battlefront 2 or the new one?

Khiu commented 8 years ago

Neither, this is a different game that was never finished and got leaked today on 4chan and Reddit. http://puu.sh/mD5iw/7f5aae52fd.png

Razzile commented 8 years ago

ohh that one. I didn't know it was built for 360

Blackbird88 commented 8 years ago

Wow nice find indeed. Interesting it doesn't use devkit key like SR:Money Shot for default.xex and only bf_gold.xenon.xex

SonofUgly commented 8 years ago

Guess I forgot to post this, but on a older Vulkan build it did show a purple screen before crashing, which is what it's suppose to show as the game didn't have intros at that point in development. Log and screenshot: It worked on this build: https://github.com/benvanik/xenia/pull/556#issuecomment-221413160, but now crashes during load like before.

theoldsport commented 8 years ago

GET HYPE

[OpenGL] ohyeaa

Log file

state-intro

MattFiler commented 8 years ago

Interesting, I guess it's to do with whatever software is on your PC then. Perhaps with a better PC environment (some different drivers, etc) it would work fully?

I only get a black screen and later a message saying the guest has crashed.

Looking at the log it seems to possibly be an issue relating to a resource called xbdm. Is this something missing from the emulator or something we could add to the Battlefront build perhaps?

After a quick Google, xbdm seems to be something that is available within the Xbox Dev Kits which this build of Battlefront 3 was meant for. Perhaps if we can download the relevant files it will work? Might be worth a shot.

Here's a link I found about it.

EDIT: xbdm seems to be the "Xbox Debug Monitor" which is used by devs when testing builds of games to see what is happening when errors occur. Perhaps this is missing from Xenia itself and could be implemented in an update? Within the build logs of Battlefront 3 I can see references to xbdm.xex and the Xbox 360 SDK. image

hiddenusername commented 8 years ago

So I figured i'd give this a try with my PC and the intro works for me as well I'm getting that same startup into with a paused screen same as "theoldsport"

I'm new to all of this but I think this is my log ... link to my log : https://gist.github.com/hiddenusername/be491e3f4dfa5be06b2747609e3d7f95

This game can only currently be played on modded xbox 360's but If we can get this game working MANY more people can play this and in turn support the reboot project "galaxy in turmoil" !

You can compare our specs:

theoldsport: CPU - Intel Core i7 4790K @ 4.00 Ghz RAM - 8 GB GPU - Nvidia GeForce GTX Titan X OS - Windows 10 64bit

hiddenusername: CPU - Intel Core i5 3570K @ 3.40 Ghz RAM - 16 GB GPU - GeForce GTX 660 (driver version: 368.22) OS - Windows 10 64bit

feel free to ask me any questions

hiddenusername commented 8 years ago

--- ATTENTION DEVELOPER, I THINK I KNOW WHAT YOU NEED TO FIX THIS GAME ---

So I took another look at this unfinished masterpiece of a game. I opened the default.xex to see what was inside and found lots of cool stuff. MattFiler was right, the game freezes searching for functions not contained in xenia but I have specifics on what xenia needs in order to run the game ! This issue is actually making its way around the internet so for all the new comers I created a "simple explanation" of the whole issue which may be deleted and posted some where else later.

We'll need a dev to look at this

-------------------------------------Xenia Developer info -------------------------------- xbdm.xex is a library similar to xam.xex and xboxkrnl.exe, its contained in dev kits. only 6 xbdm.xex functions need to be imported and hey maybe this will cause other jtag only games to work in xenia !!!

xenia says we need to Import these kernel function to get the game to work xbdm_091 __xbdm_033 xbdm_052 xbdm_004 __xbdm_024 xbdm_08D

using the "x360_imports" as a cross reference I searched up the numbers and found this

for 091 (id == 0x00000091) funcName = "DmFindPdbSignature"; for 033 (id == 0x00000033) funcName = "DmWalkLoadedModules"; for 052 (id == 0x00000052) funcName = "DmCaptureStackBackTrace"; for 004 (id == 0x00000004) funcName = "DmCloseModuleSections"; for 024 (id == 0x00000024) funcName = "DmSendNotificationString"; for 08D (id == 0x0000008D) funcName = "DmMapDevkitDrive";

(08D looks important)

this is how xenia list it in my log.

xbdm.xex - 6 imports Version: 0.0.6534.32 Min Version: 0.0.0.32

Total: 6 Known: 0% (0 known, 6 unknown) Implemented: 0% (0 implemented, 6 unimplemented)

F 82000514 82A27F54 091 (145) !! UNKNOWN F 82000518 82A27F44 033 ( 51) !! UNKNOWN F 8200051C 82A27F34 052 ( 82) !! UNKNOWN F 82000520 82A27F24 004 ( 4) !! UNKNOWN F 82000524 82A27F14 024 ( 36) !! UNKNOWN F 82000528 82A27F64 08D (141) !! UNKNOWN F 82000514 82A27F54 091 (145) !! UNKNOWN F 82000518 82A27F44 033 ( 51) !! UNKNOWN F 8200051C 82A27F34 052 ( 82) !! UNKNOWN F 82000520 82A27F24 004 ( 4) !! UNKNOWN F 82000524 82A27F14 024 ( 36) !! UNKNOWN F 82000528 82A27F64 08D (141) !! UNKNOWN

As a side note, these functions are what's missing out of the xboxkrnl.exe and the xbdm.xex and MAY not need to be required for battlefront to at least run.

xam.xex

F 82000420 82A27804 2F7 (759) !! XamUserCreateStatsEnumerator F 82000430 82A27844 2D5 (725) !! XamShowGamerCardUIForXUID F 82000434 82A27854 2C6 (710) !! XamShowPlayerReviewUI F 82000454 82A278D4 2DC (732) !! XamShowMessageBoxUIEx F 82000478 82A281B4 30E (782) !! XamVoiceSubmitPacket F 82000488 82A28174 022 ( 34) !! NetDll___WSAFDIsSet F 820004F0 82A27FE4 039 ( 57) !! NetDll_XNetXnAddrToInAddr F 820004F4 82A27FD4 037 ( 55) !! NetDll_XNetRegisterKey F 820004F8 82A27FC4 036 ( 54) !! NetDll_XNetCreateKey F 820004E8 82A27FF4 03C ( 60) !! NetDll_XNetInAddrToXnAddr

xboxkrnl.exe

F 8200061C 82A27B94 0F1 (241) !! NtReadFileScatter F 82000660 82A27AA4 1A5 (421) !! __C_specific_handler V 82000690 01B ( 27) !! ExThreadObjectType F 82000708 82A282F4 147 (327) !! RtlUnwind F 82000740 82A283C4 119 (281) !! RtlCaptureContext

-------------------------------- Simple Explanation ( for new comers )------------------------

(the following explanation goes into more depth for things you might already know) Xbox 360 games take data (functions) they need from something called "libraries" "xam.xex" and "xboxkrnl.exe" are two very common libraries 360 games need to take things from.

These 2 libraries' funtions are coded into xenia and allow some games to work. However not every function is in xenia yet which is why we have game compatibility issues, some games run but get glitched up because functions are missing out of xenia and some games require functions that aren't in xenia yet and don't work at all.

lets look at part of the code that's from my error report (log file) from running battlefront 3.

xboxkrnl.exe - 133 imports Version: 0.0.6534.32 Min Version: 0.0.0.32

Total: 133 Known: 100% (133 known, 0 unknown) Implemented: 96% (128 implemented, 5 unimplemented)

So what do we see here ? xboxkrnl.exe (one of those common library's) has 133 functions in it battlefront 3 needs in order to work perfectly ! xenia knows 100% of WHAT it needs but it only HAS 96% implemented. That's pretty GOOD ! The other library, "xam.xex" is the same at 100% know but at 85% implemented ! and that's still good !

but there is another library xenia doesn't even know about that is the xbdm.xex library ! this library is found in dev kits as matt stated above xenia doesn't even know what it is ! the problem can bee seen is in this line of code from my log

xbdm.xex - 6 imports Version: 0.0.6534.32 Min Version: 0.0.0.32

Total: 6 Known: 0% (0 known, 6 unknown) Implemented: 0% (0 implemented, 6 unimplemented)

because this is an unfished version of battlefront 3 it was meant to run on special developer kits for the xbox 360. the game is looking for what the devkit needs to give it, xenia doesn't have those things so it freezes as a result. Xenia doesn't know the 6 things it needs and it doesn't contain them either. BUT I KNOW WHAT IT NEEDS and that can be found under "developer info" above

taking the xbdm required things out of the default.xex MIGHT work - BUT not only would it be extremely hard to do but it most likely also break the game AND It may be against the rules to even discuss that here soooo yeah


Static Libraries 0) XAPILIB v2.0.6534.1 1) D3D9 v2.0.6534.1 2) XGRAPHC v2.0.6534.1 3) XBOXKRNL v2.0.6534.1 4) XONLINE v2.0.6534.1 5) XAUD v2.0.6534.1 6) X3DAUD v2.0.6534.1 7) XHV v2.0.6534.1 8) LIBCMT v2.0.6534.1 9) D3DX9 v2.0.6534.1

Import Libraries 0) xam.xex v2.0.6534.0 (min v2.0.0.0) 1) xboxkrnl.exe v2.0.6534.0 (min v2.0.0.0) 2) xbdm.xex v2.0.6534.0 (min v2.0.0.0)

according to xenia the libraries are Import Libraries 0) xam.xex v0.0.6534.32 (min v0.0.0.32) 1) xboxkrnl.exe v0.0.6534.32 (min v0.0.0.32) 2) xbdm.xex v0.0.6534.32 (min v0.0.0.32)


( did you know this build was created Mon Mar 17 07:22:02 2008 ?!) (it seems to me the bf_gold.xenon.xex is just an Encrypted verstion of the default.xex bf_gold.xenon xex is also the default.xex's original PE name whatever that means !)

xenia the last hope this unfinished masterpiece could become available to sooooo many people. With lots of dedicated battlefront fans playing this game and seeing what could have been, it may just prompt for a new battlefront game to be created ! and with xenia containing about 83% of what this game needs already we may be closer than we think !

ghost commented 8 years ago

I'm looking into some of those imports. The XAM imports look to be all available in the retail XAM (and seem to be mostly LIVE related) and some of the xboxkrnl imports seem to be supported in Windows. The XBDM imports, on the other hand, are obviously used by the devs for debugging purposes. Most of the XBDM imports don't look too complex after looking over them; I'll use DmCloseModuleSections as an example.

int DmCloseModuleSections(PVOID pPool)
{
    // Checks if it is a null pointer.
    if(pPool != NULL)
        ExFreePool(pPool); // Present in Windows via Wdm.h.

    return 0x02DA0000;
}

DmMapDevkitDrive seems similar to mounting drives on retail, modified Xbox 360s. It attempts to mount the following drives (depending on whether KeGetCurrentProcessType equals to SYSTEM_PROC (2) or not):

\system??\E:

\??\E:

and

\system??\DEVKIT:

\??\DEVKIT:

using this as the device:

\Device\Harddisk0\Partition1\DEVKIT

Is there support for ObCreateSymbolicLink yet? I'll be sure to update you guys if I progress.

XeClutch commented 8 years ago

You guys should start looking into the 360 modding scene a little more. You've been struggling over this xbdm thing but in reality the modders have had xbdm RE'd and open sourced for years. Not going to post a download link but a quick google search "xbdm source" should get you what you want.

ghost commented 7 years ago

Even with the XBDM source, that leaves:

DmFindPdbSignature DmCaptureStackBackTrace DmSendNotificationString

firestar300 commented 7 years ago

For informations, as theoldsport, I can see the Free Radical logo introduction and crash...

https://youtu.be/4mwF8pOKgxc bf3

log file

Imagine, playing this game with constant 30 fps !

gibbed commented 7 years ago

Stop with the irrelevant comments. This issue is to discuss compatibility issues, not beg developers to make the game work.

Further irrelevant comments will be removed, and repeat offenders will be blocked from commenting.

ghost commented 7 years ago

I have made progress, rgh loader needs xex menu to run xex games. So I downloaded xex menu and ran it and the xex menu lunched if we can find a way to lunch the game from within xex menu we could get the game to run I will try to do it. if anyone succeeds please tell us how.

XEX Menu is irrelevant; the game won't run because of the unsupported devkit XBDM imports (which, I'm sure, would be illegal to add to Xenia).

ghost commented 7 years ago

we are looking at the dev kits would a rgh code work because if you use xex menu on a jtag or rgh system you can launch it

RGH/JTAG versions of XBDM are incomplete and XEX Menu has no part in this -- it's just a glorified file explorer. Executing the game is not the problem - emulating the missing XBDM exports is (something that XEX Menu does not do).

ghost commented 7 years ago

So there is way to emulate the Battlefront build or not ? Install XBDM or whatever it is on Xenia is possible ?

It's possible to emulate it, but it requires reverse engineering the missing XBDM exports or potentially patching the BF3 executable to disregard those exports.

jackchentwkh commented 7 years ago

the deafult.xex has there imports. .rdata:82000514 Imports from xbdm.xex v2.0.6534.0 .rdata:82000514 .rdata:82000514 impDmFindPdbSignature:.short 2, 0x91 .rdata:82000518 impDmWalkLoadedModules:.short 2, 0x33 .rdata:8200051C impDmCaptureStackBackTrace:.short 2, 0x52 .rdata:82000520 impDmCloseModuleSections:.short 2, 4 .rdata:82000524 impDmSendNotificationString:.short 2, 0x24 .rdata:82000528 impDmMapDevkitDrive:.short 2, 0x8D

totally 6 imports from XBDM.xex I think with further study of these xbdm apis, we could either patch the default.xex directly or add these xbdm function to xenia. anyway, just my two cents.

tale a look at the 360 XDK help file and you can understand what these api functions are supposed to do and return.

frostygraybob commented 7 years ago

Well which one would be easier or provide less problems? Reverse engineering the missing XBDM exports or patching the .xex directly to not call on those files?

XeClutch commented 7 years ago

It would be best to emulate the XBDM exports so that way you don't have to deal with something like this again on other builds/games. XBDM isn't super complicated anyways so it's not even like it's very difficult to do.

hiddenusername commented 7 years ago

Yeah guys are right it would be best but recently I've made an extraordinary find in the other direction. Check it out :

... so because I know nothing about emulating the XBDM code I decided to hold us off I would look into editing the defult.xex (the executable for battlefront 3) with IDC so that it would totally skip over the whole XBDM thing.

I followed a tutorial for editing and looking into an XEX what I discovered was astonishing :

https://s29.postimg.org/mbluhzfrr/pic2.jpg https://s29.postimg.org/laq76lo5z/pic4.jpg https://s29.postimg.org/dw0ve82af/pic5.jpg https://s29.postimg.org/7d3fnk0pj/pic_6.jpg https://s29.postimg.org/ci98ix313/pic6.jpg https://s29.postimg.org/ikgv9erh3/pic7.jpg

... In my mind all I have to do is delete it then save this as an XEX and then in theory it would work!! but THE PROBLEM IS I have no idea how to SAVE it as an xex !!!

IF anyone reading this KNOW ANYTHING about this IDC program please tell me HOW to save this file as an xex. ...or... HECK try it yourselves, here are the links to the IDC tutorial video - use IDC to open up your battlefront 3 xex's : https://www.youtube.com/watch?v=cIm1UcpE1bs (I stopped after "part 4" was done because he goes into something else)

... and firestar has a good point guys we are not even completely sure if the xex will operate without the xbdm library - but its worth a shot to try if you have some free time and can find out how to actually save this thing as an xex.

To test to see if the xex no longer includes the xbdm library I would recommend putting the new xex into a reader program called XEXtool

https://s29.postimg.org/tdjs46jdj/pic1.jpg

Now I know the information I presented in those pictures was long and drawn out but I did it to encourage and show the people who visit this page on how to get as far as I did.

and maybe my pictures can help one of the xenia developers to emulate the xbdm thing, who knows.

I'm not against emulating the XBDM thing but I figure I would at get the xex to a place where and we could actually see how this thing will play on a PC.

Razzile commented 7 years ago

removing imports will just make the xex crash. you'd need to edit every function that uses those imports too to essentially "skip over" the import. This would also probably lead to a crash as the imports are most likely important to the functionality of various functions

jackchentwkh commented 7 years ago

that's not the way you patch a xex or any execution files. The way you deleted those functions is actually removing the function definition in the IDA Pro, not removing the functions in actual xex file. What we need to do is to trace back to those subroutines call these import functions. Figure out the logic behind each api calls, then patch the api calls and the followed instructions to make sure the execution flows in "normal" direction. some PPC assembly must be applied, then a binary difference can be produced so we can patch the actual xex binary. that's the way you patch a execution file. I am really unfamiliar with PPC assembly, so it's too tough for me to figure out the possible patch. But to patch the xex seems to be a easier and quicker way because most of the 6 XBDM api calls simply return OK or not_OK, only one or two needs to return certain data. Maybe someone with better PPC assembly experience can give us a hand here.

1. DmSendNotificationString is only called once inside sub_8246A718, and sub_8246A718 was called 6 times by a section of unlinked instructions. I would bet that we could simply NOP out DmSendNotificationString or replace it with another API call such as DbgPrint which is a safer way.

edit, the name of sub_8246A718 is acutally DebugConsolePrintf, which we can obtained from the given map file. it's should be safe to remove this function.

  1. DmWalkLoadedModules DmCloseModuleSections DmSendNotificationString DmMapDevkitDrive

these 4 APIs are called only inside sub_826EE060,and sub_826EE060 is only called once at text:826EDF28,I think we can neglect the whole sub_826EE060,so simply NOP out the bl instruction at text:826EDF28 would do it.

edit, the name of sub_826EE060 is acutally WriteLoadedModulesInfo, which we can obtained from the given map file. it's should be safe to remove this function. 3. DmCaptureStackBackTrace

this is the most complicate API here, see the XDK description below:

HRESULT DmCaptureStackBackTrace( ULONG FramesToCapture, PVOID *BackTrace )

Parameters FramesToCapture Number of stack frames to walk, beginning with the current stack frame. Maximum value for FramesToCapture is 256. BackTrace PVOID array that receives the return addresses. The array must be large enough to contain at least FramesToCapture variables of type PVOID. Return Value If the function succeeds, it returns XBDM_NOERR. Otherwise, an error code defined in xbdm.h is returned.

This API was called only once at text:826E616C,since the mechanism behind the stack frame capture is way too complicate, I would suggest to NOP out the API call directly, let the return value be an error message, that should be enough for us to try.

in the map file, I couldn't find any names near by text:826E616C. this section of instructions seems not being called. I would suggest to either skip it or simply NOP out it.

If any one with PPC assembly knowledge can help us create the patch pattern, we can try it right away. 3 patches only. Any one?

ghost commented 7 years ago

In my mind all I have to do is delete it then save this as an XEX and then in theory it would work!! but THE PROBLEM IS I have no idea how to SAVE it as an xex !!!

Deleting functions in IDA (at least without the aid of plugins) will only delete the label -- the code will still exist. IDA almost never modifies the file that it disassembles.

On another note, the majority of the XBDM imports are being used in a single function (obviously they're split into other functions, but they're all referenced by one). This function seems to simply dump stack to "d:\xbox360_callstack.dat".

darkroar360 commented 7 years ago

Anyone who wants a copy of the 70217 build completely unedited, email postmortemsoftware@gmail.com and I'll send you the link. I also want to add people on skype to team up and crack the game.

hiddenusername commented 7 years ago

Thanks but hey guys remember what gibbed said 11 days ago "Further irrelevant comments will be removed, and repeat offenders will be blocked from commenting"

This thread is the place to contribute to getting BF3 to work on xenia, not to have general discussions about it. I'm not trying to be mean, I just don't want you guys to get banned.

jackchentwkh commented 7 years ago

ok, first, the default.xex can be loaded and run without any patch for XBDM related api. So currently what blocks xenia from emulating this game normally isn't the XBDM api.

2nd, I managed to patch all xbdm api usages in the default.xex, here they are.

  1. For DmSendNotificationString address machine code Patched To text:8246A784: 48 5B D7 91 ---> 38 60 00 00 38 60 00 01 38 21 01 70 this simply patches the bl DmSendNotificationString to li r3, 0 use a hex editor, search hex value 48 5B D7 91 38 60 00 01 38 21 01 70,change the first 4 bytes to 38 60 00 00,save and done.

  2. For DmCaptureStackBackTrace address machine code Patched To text. 826E616C: 48 34 1D C9 ---> 38 60 00 00 3D 60 02 DA this simply patches the bl DmCaptureStackBackTrace to li r3, 0 use a hex editor, search hex value 48 34 1D C9 3D 60 02 DA,change the first 4 bytes to 38 60 00 00 ,save and done.

and right after this call, the return result is checked, if it's not 02DA, then all the other XBDM api won't be called. so number 3 patch is not necessary. but I still list it here down below.

  1. For the other 4 XBDM apis, they are called inside a subroutine called WriteLoadedModulesInfo,which begins at text:826EE060,and WriteLoadedModulesInfo is only called once at text:826EDF28,so I patched the bl WriteLoadedModulesInfo instruction at text:826EDF28,

address machine code Patched To text. 826E616C: 48 00 01 39 ---> 38 60 00 00 39 20 00 00 39 00 00 00 use a hex editor, search hex value 48 00 01 39 39 20 00 00 39 00 00 00,change the first 4 bytes to 38 60 00 00,save and done.

after applying these 3 patched above, there is not change for the emulation result. The graphic thread status of emulation is "?", I checked the log, and there are messages showing that there are writings to unknown GPU registers, and also some unknown/unsupported GPU command. I believe that after certain progress of xenia itself, we should be able to go further in this game. Mean while, we shall sit back and wait, stop bothering the developers.

last edit on 10th Jan. 2017, sorry for my error for mixing up those patched pattern and address info.

hiddenusername commented 7 years ago

I'm not sure, but it might be against the xenia rules to share xex 'es

@jackchentwkh I applied you patch pattern to my default xex and double checked it to make sure I did everything right and its not working. Even with my nvidia graphics card, it freezes after the logo screen. I also tried that older vulkan build we talked about when this thread first started - same result. NEVER THE LESS, THANK YOU SO MUCH for taking your time to try. We might just have to wait until the devs add the xbdm stuff (if its even the xbdm stuff at all) ... I will post my log below but I wanted to bring something to everyone's attention first.


https://s23.postimg.org/hjd383n1n/vbf3_1.png https://s23.postimg.org/s7gu6xx0r/vbf3_2.png https://s23.postimg.org/jqhbw0sbv/vbf3_3.png https://s23.postimg.org/q5gcsoz1n/vbf3_4.png https://s23.postimg.org/967edfnu3/vbf3_5.png

(feel free to share those pictures around the internet) I'm showing you guys these pictures for a few reasons.

Version 1 is the version that we are working with here on Xenia. Xenia IS a young xbox360 emulator and dose not have everything it needs yet, so it glitches and crashes on a very large number of games already. Since we might be getting close to getting past the start Icon on this game, I want you guys to just notice the part in my picture where I said "this game may work at SOME level of playability. SOME . Xenia is still soooooo young and the majority of games that have been tested for xenia don't even really work, not only that but Version 1 of BF3 is ALREADY a very crashy, buggy, and slow game when it runs on a proper 360 anyways.

I'm not trying to ruin anyone's excitement here because I really want this game to work. I'm just trying to say if we get it working by patching it or even if the devs make the xbdm stuff work we might have to wait a few years until all the xam and xboxkrnl stuff is emulated for Xenia to get the full experience.

Things like multiplayer are completely out of range for conversation right now. Not only will multiplayer probably crash on Version 1, but because its being emulated - Xenia would have to talk to other computers with Xenia in order for multiplayer to even MAYBE possibly work.

The purpose of this thread is NOT to be a "Frontwire Studios" and resurrect this game to its full glory. we are just trying to get it to run. Just like all the other 360 games people have made threads about.

Topics like multiplayer, reskining the storm troopers, modding this game, ect is NOT to be posted here. I'm not trying to be a bossy mr.know-it-all or pretend like I'm some kind of Admin, because I'm not. I don't want the devs to get mad and close this thread so lets not discuss that stuff here.

Once it runs and looks like this : https://www.youtube.com/watch?v=9lR2nEbPkMA the our goal is complete and the developers will close this thread.

I am not against modding this game to its former glory once it works (if that's even possible) but maybe in the future, a discord server can be dedicated to that kind of stuff but we are just getting this game to "work" like it normally would on a dev kit.


This is my log: https://gist.github.com/hiddenusername/b12bcbc2a555a369122872b306cb6d2a as always, if anyone makes progress with this or maybe improves the patch or something post it here. and maybe that patch did actually work so feel free to cross reference the log I just posted to my log from post 19.

jackchentwkh commented 7 years ago

As I stated in my comment regarding to the patch pattern, currently XBDM isn't the problem keeping xenia from emulating this game. And I also stated that after applying these patches, there is not change for emulation result. I see in recent commits there has been XBDM import stubs added into xenia, but no actual emulation yet. But this won't get us any progress. That's simply not the key issue.

CorraAshu commented 7 years ago

This build while it maybe buggy is a direct port from the PC with controller support cause they were working on the PC version for sometime and Lucasarts told them to focus on a the 360 version than port it to the rest, so they took the current pc build they was working on and ported it right over to the 360 without any edits to it.

Also if you ever watch anyone playing this game and notice when they start it up and show the free radical logo it lags so bad you can't even hardly watch it but with xenia it runs at a full 30fps so it does show it will run a little bit better on here with xenia

I have been editing the code of the game to make things work as they was intended to, like changing characters to work in the proper missions and challenges...ect along with editing the code for animations as there is a lot of animations that was complete but wasn't ever applied to their proper models in the code like the B1 battledroid or the proper grenade animations....ect and it has turned out really well done.

I've also been looking at how they handle how many bots they have on screen from within the code and once it does get fixed with xenia i'll upload and release all of this code i've editedand tell you guys how to make it work.

frostygraybob commented 7 years ago

@JakeGreen163 Have you been testing it on an xdk? If so you should put up a video somewhere so we can see your work in action.

ghost commented 7 years ago

For DmSendNotificationString address machine code Patched To text:8246A784: 48 5B D7 91 ---> 38 60 00 00 38 60 00 01 38 21 01 70 this simply patches the bl DmSendNotificationString to li r3, 0 use a hex editor, search hex value 48 5B D7 91 38 60 00 01 38 21 01 70,change the first 4 bytes to 38 60 00 00,save and done. For DmCaptureStackBackTrace address machine code Patched To text. 826E616C: 48 34 1D C9 ---> 38 60 00 00 3D 60 02 DA this simply patches the bl DmCaptureStackBackTrace to li r3, 0 use a hex editor, search hex value 48 34 1D C9 3D 60 02 DA,change the first 4 bytes to 38 60 00 00 ,save and done.

Why patch the branches? Just edit the functions that reference the XBDM imports to return its respective success value at the beginning of the function.

hiddenusername commented 7 years ago

@ExternTheGod The xbdm thing is not the problem.

The latest version of xenia has the xbdm ports in it and the game still freezes after the free radical into. here's part of my log from the newer xenia :


xbdm.xex - 6 imports Version: 0.0.6534.32 Min Version: 0.0.0.32

Total: 6 Known: 100% (6 known, 0 unknown) Implemented: 100% (6 implemented, 0 unimplemented)

F 82000514 82A27F54 091 (145) DmFindPdbSignature F 82000518 82A27F44 033 ( 51) DmWalkLoadedModules F 8200051C 82A27F34 052 ( 82) DmCaptureStackBackTrace F 82000520 82A27F24 004 ( 4) DmCloseLoadedModules F 82000524 82A27F14 024 ( 36) DmSendNotificationString F 82000528 82A27F64 08D (141) DmMapDevkitDrive


So if its not xdbm its something else, maybe something is throwing it into an endless loop or its looking for something and cant find it because remember it doesn't crash - it freeze. A look at my full new log from the latest xenia may have some answers: https://gist.github.com/hiddenusername/a18251ce7c17d230a1b47069b2c0171b

XMAGelite commented 7 years ago

If anyone wants to help me and someone else we are looking for a group of people to help contribute on unfucking this game if anyone wants to help heres my skype

Skype: elitecommandoyt

frostygraybob commented 7 years ago

@hiddenusername I believe as it was said before to be a gpu problem. You mentioned a loop and that seems to begin as a GPU proccess is called that i do not believe the emulator is capable of.

d> 00000010 KeSetEvent(82AABF9C, 00000001, 00000000) d> 00000010 KeWaitForMultipleObjects(00000002, 400EFEE0(82AABF8C), 00000001, 00000003, 00000001, 00000000, 00000000, 400EFEF0) d> 000000D4 XNotifyGetNext(000000D0, 00000000, 40B3FDC0, 40B3FDC4) d> 000000D4 NtWaitForSingleObjectEx(000000D8, 00000001, 00000000, 00000000) d> 000000AC XAudioGetVoiceCategoryVolumeChangeMask(41550000, 40597E38(00000000)) d> 000000AC KeSetEvent(82AABF8C, 00000001, 00000000) d> 000000AC KeWaitForSingleObject(82AABF9C, 00000003, 00000001, 00000000, 00000000) d> 00000010 XAudioSubmitRenderDriverFrame(41550000, 4059B600) d> 00000010 KeSetEvent(82AABF9C, 00000001, 00000000) d> 00000010 KeWaitForMultipleObjects(00000002, 400EFEE0(82AABF8C), 00000001, 00000003, 00000001, 00000000, 00000000, 400EFEF0) d> 000000AC XAudioGetVoiceCategoryVolumeChangeMask(41550000, 40597E38(00000000)) d> 000000AC KeSetEvent(82AABF8C, 00000001, 00000000) d> 000000AC KeWaitForSingleObject(82AABF9C, 00000003, 00000001, 00000000, 00000000) d> 00000010 XAudioSubmitRenderDriverFrame(41550000, 4059B600) d> 000000D4 XNotifyGetNext(000000D0, 00000000, 40B3FDC0, 40B3FDC4) d> 000000D4 NtWaitForSingleObjectEx(000000D8, 00000001, 00000000, 00000000) d> 00000070 KeWaitForSingleObject(4018697C, 00000003, 00000001, 00000000, 4029FE80(FFFFFFFFFFFB6C20)) G> 00000004 Unimplemented GPU OPCODE: 0x5E COUNT: 1 !> 00000004 **** INDIRECT RINGBUFFER: Failed to execute packet.

After this the same thing is looped over and over until you kill the program

darkroar360 commented 7 years ago

@Rj2004 If you keep spamming I'm going to report you to a moderator.

hiddenusername commented 7 years ago

Yeah guys so a quick update: This line form my log frostygraybob posted caught my eye : G> 00000004 Unimplemented GPU OPCODE: 0x5E COUNT: 1

In IDC I did a quick search for "0x5E" and I found a lot of results for 0x5E - which kinda bothers me because above the log says " COUNT: 1 " and I found tons of results ( now that "COUNT:1" may or may not be related to how many results showed up but just thought id mention it)

I know Xbox code is set up like 0x00 or something so what does 0x5E mean ? (one example of the many results for 0x5E) .rdata:82000E07 .byte 0x5E # ^

Also I had a quick thought, a few post ago JakeGreen said that this was originally a PC build of the game that was quickly ported over to the 360. Also - I have witnessed first hand the whole 30 fps start up screen thing as if it was meant to run on a pc . soooo do you guys think MAYBE this specific build is meant to run on a PC's GPU and the 360 is just quickly emulating that (which would explain the 360 slow downs). Maybe it was running 30 FPS on pc because Xenia has SOME PC GPU in it that the game was designed for but at the same time xenia crashes because its not made for PC GPU code.
I know it sounds silly but its kinda just an Idea. What do you think ?

Anyways I think that this ... G> 00000004 Unimplemented GPU OPCODE: 0x5E COUNT: 1 is a good start so if maybe someone can look further into 0x5E or translate it with IDC or something we could work from there.

ghost commented 7 years ago

@hiddenusername, I believe that this relates to an unsupported GPU instruction; an opcode is a hexadecimal representation of an assembly instruction (also known as machine code). Just like the Xbox 360 CPU, the GPU has its own architecture. This is opcode is likely documented by AMD (the creator of the Xbox 360 GPU). Lastly, the "count" is probably referencing to opcode size in bytes - in this case, it's just one byte.

rlabrecque commented 7 years ago

This thread doesn't need to be shut down, it's a somewhat valuable marker of where things are at. But unless something has changed then there's no need for further discussion, and we can all refrain from doing so.

darkroar360 commented 7 years ago

We're going to need some serious team coordination to do this. Working separately this could take us years, anyone who wants to team up, email postmortemsoftware@gmail.com

frostygraybob commented 7 years ago

So, not much of an update. However, i can confirm things are progressing. My log is looking a bit different than a few months ago. Still a ringbuffer error and an unimplemented GPU code, but now its generating vertex shaders. Which is an improvement. xenialog.zip

XMAGelite commented 7 years ago

if theres anything i can help out with let me know because i bought a dev kit

email me royalroachemail@gmail.com

firestar300 commented 7 years ago

Where did you buy it ?

frostygraybob commented 7 years ago

well, people are working on the emulator. Not the game itself. Xenia unfortunately progresses at a snails pace so expect nothing for a while. Also, if you bought a dev kit just play the game on there for now. its the only current way to do so. no sense in waiting.

XMAGelite commented 7 years ago

@firestar300 a website called sevens

DarthKenobiHQ commented 7 years ago

i have a dev kit as well i will be doing some tests

hiddenusername commented 7 years ago

@fihn14 It's Illegal to discuss where to get the battlefront 3 leaked prototype files here. I don't want you to get banned so we probably shouldn't discuss it here. QUOTE : "WARNING: Anyone asking about or sharing information related to illegal activities will be banned from IRC/GitHub/etc."

And let me just say something to everyone who might be reading this as a visitor :

This page is one of many pages for a app called Xenia. Xenia is an app for PC that plays Xbox 360 games but it's still in early development. Every Xbox game we test on Xenia gets a page just like this one where we discuss, test, and occasionally modify the game to try to get it to run. As frostygray said WE aren't doing anything to get battlefront 3 to work because we've pretty much done what we can to the game itself. We are waiting for the app to get to the point where it can play this game.

The good news is that I believe one day we will be able to play battlefront 3 through Xenia, It's just a matter of time.

I want to play the leaked battlefront 3 without a dev kit just like all of you but at this point all we can really do is wait for the Xenia app to be completed.

IF you are a hardcore programmer and would like to help develop the app to not only play battlefront 3 but other Xbox games as well visit : http://xenia.jp/development/quickstart/

I not trying to be mean or "baby" you guys I just thought I'd throw that in because this page receives a lot of traffic from people who just don't know.


I too can also confirm with my nvidia 10 series card that the vertex shaders are generating - a step in the right direction (:

Irixion commented 7 years ago

@jc1999 What? A contributeR needs to have an AMD card. Iirc, one recently acquired one (Their name is escaping my mind). That's why AMD users now have at least 2D elements showing up vs nothing previously.

frostygraybob commented 7 years ago

I wasn't actually using my gtx 1080 to run battlefront in that log i posted. I was using my gt 650m. so I believe that vertex shaders are generating on other series cards as well

Razzile commented 7 years ago

@Gamertist an official game that was cancelled before release