English Amiga Board

English Amiga Board (https://eab.abime.net/index.php)
-   Coders. General (https://eab.abime.net/forumdisplay.php?f=37)
-   -   Why is it missing ? (https://eab.abime.net/showthread.php?t=25079)

-Rob- 19 August 2006 13:28

Why is it missing ?
 
..

Galahad/FLT 19 August 2006 14:52

I don't understand the question. Is this for a specifc game?

-Rob- 19 August 2006 15:48

Not really, but it happens with ex. Super Space Invaders.

If the usually trainer code i run, then when game is loaded, the spaceship is invisable, its not there..
Might have something to do with sprites ??

-Rob- 19 August 2006 16:50

move.w #83c0,dff096 is the problem. if this removed in init code of trainer, then game works, but trainer does not..:banghead

thomas 19 August 2006 17:39

Just a guess: what happens if you add move.w #03c0,dff096 to the exit code of the trainer ?

-Rob- 19 August 2006 17:42

Quote:

Originally Posted by thomas
Just a guess: what happens if you add move.w #03c0,dff096 to the exit code of the trainer ?

Thanks for the idea, but it just hangs the miggy..

Galahad/FLT 19 August 2006 17:47

move.w #$87e0,$dff096

Find the ingame DMA setting that gets it going, and and put $e0 to the end of it.

musashi5150 19 August 2006 18:06

I don't have a HW manual handy to look up that DMA value, but if it's a sprite problem it could be to do with not waiting for the vertical blank. If sprite DMA is in use, but is turned off during the frame, the DMA will jam up which can cause problems sometimes.... like when you get a solid red 'bar' down the screen from the mouse pointer.

It might not be this, but it's worth remembering :)

Galahad/FLT 19 August 2006 18:31

Its probably badly coded, and the game doesn't setup the sprite DMA at all, but the fact that Kickstart does, is why it ordinarily works.

1943 was just as stupid. Lots of blitter setup and initialisation wasn't done, but because Kickstart 1.2/1.3 set it up properly, it would work, but on AGA machines, it was different, hence the screen blits not working properly.

-Rob- 19 August 2006 21:17

Is there a way to save dff096 before intro mess with it and then restore it after the intro ?

musashi5150 19 August 2006 21:58

Quote:

Originally Posted by -Rob-
Is there a way to save dff096 before intro mess with it and then restore it after the intro ?

Sure, you need to read DMACONR ($dff002). Just be sure to set the upper bit (set/clr) before you write it back to DMACON ($dff096) later. Most coders save DMACONR, INTENAR and CIAs in their startup code so they can restore it later.

bobbybearing 20 August 2006 11:47

take a look at sources of cracktros (do you know flashtro.com ? :D )
you can found offsets of dma channel and how to save/set

-Rob- 20 August 2006 12:11

Quote:

Originally Posted by bobbybearing
take a look at sources of cracktros (do you know flashtro.com ? :D )
you can found offsets of dma channel and how to save/set

Hehe, yeah, allready tried it :)
Just can't get it working. Also got the problem with Twinworld. The little dude is totally missing from game :(

I'am pretty clueless ATM.

bobbybearing 20 August 2006 12:44

with what trainer ? you use the same boot ?

-Rob- 20 August 2006 12:47

The usually trainer code used on Flashtro stuff.
At first I thought i screwd up the game with the trainer code, but problem contines if just the menu is run..

Galahad/FLT 20 August 2006 13:07

There is a problem with your closedown and restore in your trainer menu then, if I can see the source, or I'll view it in Action Replay, either way, should be an easy fix.

-Rob- 20 August 2006 13:37

Quote:

Originally Posted by Galahad/FLT
There is a problem with your closedown and restore in your trainer menu then, if I can see the source, or I'll view it in Action Replay, either way, should be an easy fix.

Would be nice. Source is in The Zone

Galahad/FLT 20 August 2006 16:46

Right...
 
Firstly, I've only had a quick scan, but so far you have the following problems.

At the start of your Init routine you are doing:

MOVE.W #$4000,$DFF09A
MOVE.W $DFF01C,INTENA
MOVE.W $DFF002,DMACRAP
MOVE.W $DFF010,ADKCON
MOVE.W #%7fff,$DFF096
MOVE.W #%7fff,$DFF09A
MOVE.W #%7fff,$dff09c
MOVE.W #%83c0,$dff096
; MOVE.W #%c030,$DFF09A
MOVE.L 4.W,A6 ; INTERRUPT VOM SYSTEM ANFORDERN.
JSR -132(A6) ; FORBID ()

I've ditched the binary references because they are confusing and converted them to hexidecimal.

move.w #$4000,$dff09a is unecessary

Forbid multitasking should come before you halt the interrupts

your move.w #$83c0,$dff096 should come after you have installed the copperlist not before. I would change that value to $87e0 instead.

Before I install the copperlist, I always to a vertical blank wait first.

Afterwards I also clr.w $dff088

Your permit multitasking should come at the end of your restore routine, not at the start of it. (jsr -138(a6) )

In your closedown routine, you have reinstalled the system copperlist before your kill interrupts code (move.w #$7fff,$dff0x0 etc)

There is no vertical blank wait before you reinstall the copperlist

In your closedown routine you have incorrectly used ori.w #$c000,d0 to restore $dff09a, it should be $8000 in all cases.

As an extra, in your preserve routine at the start, store the contents of $dff010 for restoration later in $dff09e, again ori.w #$8000 to the value before moving.

Thats what I can spot so far, give that a whirl and see if that improves things

-Rob- 20 August 2006 17:01

Quote:

Originally Posted by Galahad/FLT
Firstly, I've only had a quick scan, but so far you have the following problems.

At the start of your Init routine you are doing:

MOVE.W #$4000,$DFF09A
MOVE.W $DFF01C,INTENA
MOVE.W $DFF002,DMACRAP
MOVE.W $DFF010,ADKCON
MOVE.W #%7fff,$DFF096
MOVE.W #%7fff,$DFF09A
MOVE.W #%7fff,$dff09c
MOVE.W #%83c0,$dff096
; MOVE.W #%c030,$DFF09A
MOVE.L 4.W,A6 ; INTERRUPT VOM SYSTEM ANFORDERN.
JSR -132(A6) ; FORBID ()

I've ditched the binary references because they are confusing and converted them to hexidecimal.

move.w #$4000,$dff09a is unecessary

Forbid multitasking should come before you halt the interrupts

your move.w #$83c0,$dff096 should come after you have installed the copperlist not before. I would change that value to $87e0 instead.

Before I install the copperlist, I always to a vertical blank wait first.

Afterwards I also clr.w $dff088

Your permit multitasking should come at the end of your restore routine, not at the start of it. (jsr -138(a6) )

In your closedown routine, you have reinstalled the system copperlist before your kill interrupts code (move.w #$7fff,$dff0x0 etc)

There is no vertical blank wait before you reinstall the copperlist

In your closedown routine you have incorrectly used ori.w #$c000,d0 to restore $dff09a, it should be $8000 in all cases.

As an extra, in your preserve routine at the start, store the contents of $dff010 for restoration later in $dff09e, again ori.w #$8000 to the value before moving.

Thats what I can spot so far, give that a whirl and see if that improves things

Ok, sounds good. Would also be great if you could upload the fixed code to The Zone :)

Galahad/FLT 20 August 2006 17:07

I haven't chucked it through an assembler yet, thats just what I could spot.

Its missing a raw file for me to assemble so if you chuck across all files it needs, I can assemble and check.


All times are GMT +2. The time now is 20:32.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.

Page generated in 0.04826 seconds with 11 queries