Dear Tkeahi Virtua_Cop_3_1GB: you can launch vc3_T.xbe with test mode or not (with 512 version not freeze when select mission like ghost squad)
A crash log from ghost squad boot: http://ti1ca.com/i4wm5jiy-Minidump-vsg-t-xbe-Minidump_vsg_t_xbe.png.html Maybe one way, increase virtual memory in HDD like on CPX3 (cps3 emulator) , but How to?
If Chihiro games keep crashing do the following: - Log all API calls which have to do with file handling, any access to "\Device\MediaBoard" or it's partition: "mbfs:", it's communication port "mbcom:", boot rom "mbrom:" or Disc device "\Device\CdRom0" will have to be handled manually. This includes all IDE/ATA requests. You can use DXBX / CXBX function analysis as a starting point. - Chihiro games use almost the same memory management as the original Xbox. Set the AGP Bridge prefetch limit from 0xF3F0 to 0xF7F0 or tag your Xbox as arcade version (0x8 flag) from the beginning - I can't remember wether this resulted in trouble with the mediaboard driver though. There are some other changes but I believe they are only so the mediaboard has access to the same variables as the kernel. - Gamepad data is requested via JVS, probably through the mediaboard filesystem. However, it's basicly hooking the Xbox gamepad routines. You shouldn't have to worry. - There is no virtual memory support on the Xbox. If you want Chihiro games on 64MB Xboxes you'll have to add it yourself (I did that and it did work) and somehow find a way to make data available to the GPU (That's something I did not get to work). It's easier to just buy a 128MB Xbox or work on an emulator for PC (MAME looks promising [but probably too slow for games]). - LPC Registers starting at 0x4000 to (including) 0x40F4 belong to Chihiro and are used for figuring out the DIMM size, query the dipswitches and various other things. Hook this and check if the game maybe gets stuck because of it. Maybe only needed by segaboot/kernel though.
Virtua_Cop_3_1GB: vc3_t.xbe (test mode) works, but if you select "exit" from test mode and start the game that way it will freeze after the intro video. If you press start prior to the intro video the game will hang at the mission select screen. Would that be in the BIOS? Give me more information, I'm willing to try it.
If I was you I'd simply fix the prefetch for the AGP Bridge. It should be similar what MAME does for 128MB - but for the GPU. This is very likely also the problem with VC3. Normally the GPU will only be able to access 64MB RAM, anything above that is strictly for the CPU. I believe what happens is that MAME turns the "Write Combined" memory into "Write Back" memory. So instead of reaching the GPU it will reach the CPU memory - the game will continue to work but not everything gets uploaded to the GPU. Once the GPU attempts to read those broken parts it will crash because the data is still sitting in the CPU cache. If you don't run MAME before the GPU probably gets a combined write from an address it's not allowed to read back from. Hence it will crash. According to https://github.com/docbrown/vxb/wiki/Xbox-Hardware-Information the AGP Bridge is Device 30, function 0. Now http://wiki.osdev.org/PCI tells us the prefetch limit is at 0x24. You should be able to read that value and also figure out where it gets written - maybe it's even possible to reconfigure the bridge at runtime. However, I'm not sure wether this would stick during a reset / launch of another application. I'll probably try this myself - but without a 128MB xbox there is really no point in trying for me yet.
For all you have done so far, and I'm sure what you will continue doing for the development of getting Chihiro games running on the original Xbox, would you like a 128mb of ram Xbox Jayfoxrox? I could get one ready for you. Free of charge
Run at your own risk: http://www.jannikvogel.de/scratchpad/xbox/launch-chihiro.xbe Bumps the GPU to 128MB and returns to your dashboard. There is no way to turn it back to 64MB until a cold reboot. It sticks during a quick-reboot, not sure about a normal reboot. If it works I'll work on a proper launcher. If it doesn't I'll try adding some cache changes like MAME does. But really.. I can't test it out without a 128MB xbox //Edit: I'm also online from around 4pm to 4am (Berlin timezone) in #cxbx on efnet these days. You can also /query me on most other huge IRC chans. So if anyone tests this and has feedback it's probably best to talk directly.
I'll give it a try and report my results here. If it works then It will save me from having to launch MAMEoX 128 Plus first to get the Chihiro games to run.
Well this is a different approach. What MAMEoX does might even be entirely wrong. I didn't add what MAMEoX does yet but only what a real Chihiro bios (or any other xbox bios detecting that it is running on a Chihiro!) would do. In fact by just looking at the code I'd guess that MAMEoX makes the situation worse.
Does this somehow make retail xbox have 128MB virtual memory? IE is it for retail console 64MB work like a modded 128MB one?
I just tried it and it doesn't work on retail MCPX3 based 128MB systems. The app does launch then return to dash so that's working. After that when I launch VC3 it hangs and takes forever like it does when the memory allocation isn't proper. It has been sitting at the warning screen for several minutes now just like a 64MB system does. The game finally loaded and it's acting just like it does on a 64MB console. It doesn't work.
No, it's really only changing the prefetch limit on the AGP Bridge. Currently no plans to search my old virtual memory code. It's a horrible hack, very slow and also won't work for chihiro because you get the problem which the prefetch limit causes: GPU can't access virtual memory. The way virtual memory works is by reserving a larger memory address range than exists. Once the game tries to access that data the CPU will throw an exception. You can catch that exception, manually force it to load the data from elsewhere (HDD for example) and then tell the CPU to continue. With a GPU this does not work. If your GPU wants memory it simply takes it. You can't pause the GPU or force it to use another region. Actually, you probably can - but it would take a lot of work and it's a really dirty solution. As much as I love the original Xbox, I'd rather help espes with his xqemu code and run Chihiro and Xbox games on a PC. //Edit: I'll try adding some more code tomorrow but if it doesn't work I'll wait until I have my own 128MB Xbox.
My words is can be redundant, but with debug/dev kit (MCPX 2 and 128 ram), more virtual memory on HDD, could be run game. In effect when we reduced ghost squad files about games run without some of textures. The game crash maybe for it.
The thing is we never confirmed that it was actually a RAM issue. It could be some sort of security check for all we know.
If so then MAMEoX 128 Plus somehow passes that check and lets the few games that actually run boot. I don't know anything about it. I just know running it, returning to dash from menue, then loading Outrun 2 Beta and VC3 makes it work properly. Maybe the secret is in something MAME does upon launch?
I wish we could figure out the reason mameOX128 makes the RAM usable and use that to make XBMC or what ever dash use that when it first boots up. Because once you do a soft reset the RAM is usable until a hard reset. Someone needs to decompile mameOX128 to figure it out. For now I will just keep running mame and doing the IGR. I have also heard that some people do not have to do the meme trick to get virtua cop 3 to run. What makes there xbox different? Of course mine has the 128 RAM so that is not it. Maybe it is the motherboard version. My 1.0 and 1.1 need mame. I do not have any other version of the xbox with thr 128 RAM upgrade.
http://www.jannikvogel.de/scratchpad/xbox/launch-chihiro-2.xbe (Previous version renamed to launch-chihiro-1) Try this: - Create: E:/chihiro; E:/chihiro/mbrom; E:/chihiro/mbcom - Put this file into your VC3 directory - Start this file, it will parse boot.id and launch the game XBE Notes: - If your LED turns orange for about 1 second something went wrong with the launch - If you don't end up in the game check E:/chihiro/log.txt - Bottom region of screen will be blue to verify everything is alright - Upper region is red if prefetch was at 64MB - Upper region is green if prefetch was at 128MB - Will always turn 128MB on, regardless of color - Pressing start should instantly boot into the chihiro game - Will automaticly start after about 10 seconds I checked and the configuration space gets overwritten in many situations. Also this new launcher should mount the filesystem properly. Also stop the stupid MAMEoX discussion. Here is how it (MAMEoX) works: As you can see all it does is change the default memory mode to WriteBack. We knew this for the past couple of years - it's open source after all.. In layman terms: Basicly instead of writing to the GPU the CPU will write to cache. Hence you will delay the crash. The proper fix is to make the GPU aware of the new memory which will then be able to actually handle the "requests". //Edit: This is my theory at least.. and it makes sense because nvidia uses Write Combined memory for their GPU Registers. Also removing the graphics from the games mean that the game GPU resources stay in the lower 64MB RAM. As soon as you enable the cache it will work but there will be problems caused by it probably because the data never actually reaches the GPU, it's only sitting in the cache. The other problem with games could be setting of a videomode (which is not supported by the xbox), problems with overlapping memory (because the PFN Database is elsewhere on Chihiro), filesystem errors (related to the mediaboard), EEPROM issues (related to different EEPROM meaning), too much initialization leftovers (from boot animation or previous running executable), missing launchpage data (such as arguments passed from segaboot), media checks (which your bios does not patch)
Thank you for your work on this. I am testing on a 128MB retail box, 4981 BIOS, unleashx as a dash (although I usually use XBMC since it has 128MB support). When using your latest launcher I get red screen over blue and VC3 hangs as if all of the RAM is not being used. Log file: Found 1 pad(s) Prefetch limit is 0xF3F0 Prefetch limit is 0xF3F0 Prefetch limit is 0xF3F0 Written! Prefetch limit is 0xF7F0 Prefetch limit is 0xF7F0 Prefetch limit is 0xF7F0 Default Pad pressed! Getting launcher path 0: Got launcher path: \Device\Harddisk0\Partition1\chihiro\VC3_1GB\ Now at 0 Launching 'VIRTUA COP 3' at '\Device\Harddisk0\Partition1\chihiro\VC3_1GB\vc3.xbe' Unmounted D: and Disc Drive Mounting '\Device\Harddisk0\Partition1\chihiro\VC3_1GB\Device\Harddisk0\Partition1\chihiro\VC3_1GB\' to Disc Drive and Mediaboard Filesystem Mounting '\Device\Harddisk0\Partition1\chihiro\mbcom\' to Mediaboard Communication Mounting '\Device\Harddisk0\Partition1\chihiro\mbrom\' to Mediaboard ROM Exit!
Same thing with a 1.4 board (128MB of course), IND-BIOS 5003, and UnleashX dash. Made sure the configs were set properly after going over the log and I get the same issue of VC3 acting like it doesn't use all the RAM. Now here's the interesting thing. I know you don't want to hear anymore about MAME but I feel this is important. When I launch the loader from default the top bar is red and game fails to load like a 64MB system. When I launch MAME then return to dash and launch the loader the top bar is green and game loads. Interesting...