Jump to content
IGNORED

Ultimate Cart XEX Loader Technical Issues


glurk

Recommended Posts

I don't know if that's so much of the problem.  As an example XEX that works, this "Aquatron" loads one huge segment from $7F5E-$ BFDE, a tiny 11-byte segment at $0400, and has a run address.  And it loads and runs perfectly.  --> Aquatron.XEX

 

I never really know what's going to work and what's not until I try it, and even then I'm still not really too certain what the main issue is with the broken ones.  Sorry that that's not really all that helpful.

 

Link to comment
Share on other sites

9 hours ago, ascrnet said:

I keep checking and testing games I found several more that are incompatible. I have noticed that the problem is when the XEX needs to use the memory between $8000 to $BFFF I think it is missing telling it that that memory is free to use, but something tells it that it is occupied "I guess by a cartridge" and this causes it not to load the XEX.?

Have you tried loading Air Strike II on maxflash studio?

Link to comment
Share on other sites

Been looking at and tweaking the Ultimate Cart loader, but I still haven't nailed the Air Strike II issue. The Turbo Freezer debugger actually shows that the warmstart completed without problems, but for some reason critical code overwites itself during the game's initialisation phase. Quite a head scratcher at the moment.

  • Like 1
Link to comment
Share on other sites

25 minutes ago, flashjazzcat said:

Been looking at and tweaking the Ultimate Cart loader, but I still haven't nailed the Air Strike II issue. The Turbo Freezer debugger actually shows that the warmstart completed without problems, but for some reason critical code overwites itself during the game's initialisation phase. Quite a head scratcher at the moment.

I think that that version of Air strike II writes on the $D5xx area, making a mess on the cartridge banking scheme.

 

The same happens with some versions of Gyruss. That forces to modify the XEX file in order to avoid the writing to that memory area.

  • Like 1
Link to comment
Share on other sites

9 hours ago, glurk said:

I don't know if that's so much of the problem.  As an example XEX that works, this "Aquatron" loads one huge segment from $7F5E-$ BFDE, a tiny 11-byte segment at $0400, and has a run address.  And it loads and runs perfectly.  --> Aquatron.XEX

 

I never really know what's going to work and what's not until I try it, and even then I'm still not really too certain what the main issue is with the broken ones.  Sorry that that's not really all that helpful.

 

it is well that it fails that is the other problem, I explain you in $700 to $90x is the charger of the XEX that is why it does not work for you.

ultimate.thumb.png.fe5cbcde243ea15cf8d275a5bcffc78a.png

2 hours ago, Wilheim said:

Have you tried loading Air Strike II on maxflash studio?

1 and 2 work without problems.air.car

 

Other games with incompatibility problem : Zaxxon, Jungle Boy, Bruce Lee.

Link to comment
Share on other sites

as far as I understand the Air Strike II game sets it to 2 that is cassette boot successful.

air.thumb.png.6aee108d0918df8a58af9f8fa1184782.png


The ultimate cart menu sets it to 3 at startup to leave the diskette and cassette booting successful.

	lda #$FF
	sta CH				; set last key pressed to none
	sta BootFlag
	jsr copy_wait_for_reboot
	jsr CopyXEXLoader
	mva #3 BOOT			; patch reset - from mapping the atari (revised) appendix 11
	mwa #reset_routine CASINI
	jsr InitJoystick
	jsr SetUpDisplay
	jsr clear_screen
Link to comment
Share on other sites

11 hours ago, ascrnet said:

as far as I understand the Air Strike II game sets it to 2 that is cassette boot successful.

air.thumb.png.6aee108d0918df8a58af9f8fa1184782.png


The ultimate cart menu sets it to 3 at startup to leave the diskette and cassette booting successful.


	lda #$FF
	sta CH				; set last key pressed to none
	sta BootFlag
	jsr copy_wait_for_reboot
	jsr CopyXEXLoader
	mva #3 BOOT			; patch reset - from mapping the atari (revised) appendix 11
	mwa #reset_routine CASINI
	jsr InitJoystick
	jsr SetUpDisplay
	jsr clear_screen

Allow me to disent. That routine is not what it runs at the first warmstart. The initialization routine is at $BB00-$BB54.

 

If the Ultimate Cart sets BOOT? with 3, then it hangs because it tries to run CASINI vector, where this game is not set.

 

I just patched the XEX from Air Strike to initialize the CASINI vector, and now it works with the Ultimate Cartridge. So I think the issue is related to the BOOT? address.

 

I suggest to initialize the BOOT? address with 0 and DOSVEC as the run vector.

Link to comment
Share on other sites

7 minutes ago, Wrathchild said:

Aren't you still at the mercy of the XEX's run or init code setting things?

 

Probably we are. These kind of things occurs when the XEX is not properly initialized and assummes OS address with default values. In this case, BOOT?

Edited by Wilheim
Link to comment
Share on other sites

16 minutes ago, Wilheim said:

Another idea: run the XEX loader with CASINI on the warmstart and then reinitialize BOOT?, DOSVEC, DOSINI and CASINI at the beginning of the XEX loader.

The XEX you uploaded works (which is great), but nothing I have changed in the Ultimate loader allows the unpatched version to work yet, and it's important to note that the SIDE loader (which loads the unpatched XEX perfectly well on and XL/XE) doesn't do anything complex with the system vectors or boot flags.

Link to comment
Share on other sites

10 minutes ago, flashjazzcat said:

The XEX you uploaded works (which is great), but nothing I have changed in the Ultimate loader allows the unpatched version to work yet, and it's important to note that the SIDE loader (which loads the unpatched XEX perfectly well on and XL/XE) doesn't do anything complex with the system vectors or boot flags.

Maybe these lines would require a patch:

 

	mva #3 BOOT			; patch reset - from mapping the atari (revised) appendix 11
	mwa #reset_routine CASINI

Change BOOT to 0 and CASINI to DOSVEC. Let's see what happens.

 

Link to comment
Share on other sites

3 minutes ago, Wilheim said:

Maybe these lines would require a patch

I already tried commenting out this stuff, and have now tried your suggestion but it makes no difference. I also (earlier) attempted carefully managing all the boot vectors and flags separately (later on, during InitLoader), but nothing works as yet.

Link to comment
Share on other sites

Well, it was actually sufficient to simply set BOOT? to $01 to allow Airstrike II to load, but this was hard to see when I was forgetting to put the underscore at the front of the '_boot.rom' file, and thus simply repeatedly testing the same ROM-based loader. :D But when you live in Clownworld, I suppose you gotta do some honking. :)

 

_Boot.zip

 

That's a quick build, anyway, just to prove the point.

  • Haha 2
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...