
Giana Sisters STE - New Game!
Moderators: simonsunnyboy, Mug UK, ICS, Doctor Bob Gordon, Moderator Team
Re: Giana Sisters STE - New Game!
Another high quality STE conversion, thank you! 

"4160" STE with Ultrasatan | Falcon 030 14MB with CF-reader | TT030 | STacy | 520STFM x 2 | 520ST x 2
- bod/STAX
- Atari Super Hero
- Posts: 508
- Joined: Wed Nov 24, 2004 8:13 pm
- Location: Halesowen, West Midlands, England
Re: Giana Sisters STE - New Game!
I ripped that code out of the Life's a Bitch demo bootsector years ago. I have some different code now:AtariZoll wrote:That simple way may cause problems on Mega STE - there are some + lines of PSG port used. So, better is to deselect only drive A selection line. I talk from own experience.bod/STAX wrote:The way I check for the floppy motor to stop in R-Type is this:
Code: Select all
moveq #0,d0 .l1 move.w $fffff8604.w,d0 btst #7,d0 bne.s .l1 move.l #$e0e0707,$fffff8800.w ; turn off drive light
Code: Select all
.... move.b #14,$FFFF8800.w move.b $FFFF8800.w,d0 and.b #$FC,d0 * Desel. drive A and side B move.b d0,$FFFF8802.w
Code: Select all
move.w #$80,$fffff8606.w
.l1 move.w $fffff8604.w,d0
btst #7,d0
bne.s .l1
moveq #7,d0
move.b #$e,$fffff8800.w
move.b $fffff8800.w,d1
and.b #$f8,d1
or.b d0,d1
move.b d1,$fffff8802.w
It deselects the current drive rather than specifically drive 'A'.
Sorry I don't know that much about DMA stuff.
So let it be written, So let it be done. I'm sent here by the chosen one.
Re: Giana Sisters STE - New Game!
Regarding the unstability of the bottom part of the screen on Hatari, this is due to a limitation in Hatari when reading the video counter and when this read overlaps with the point where a new HBL starts.
The code you use to correct the offset you sometimes have because of the blitter does this in part :
The last read in $ff8209 sometimes overlaps with the new HBL by just a few cycles (12 at max), it's normal to have a small jitter during this exception.
When the read overlaps, Hatari will return the value for the counter of the next line, so your code will try to correct a blitter-unstability that didn't really happen, hence the problem.
I plan to change this in Hatari, but it has more general effect in other programs / demos, so it will require a lot of changes.
In the meantime, you can change slightly your code to make it work under Hatari : if you speed up these 3 reads in the video counter, then there will be no overlap and it should work :
- use short address, $ffff8205.w, not $fff8205.l (save 4 cycle per read)
- use a pointer to save the result : save 8 cycles per read
Both will save 12 cycles per read, more could be save by using more registers, but this will be enough for Hatari (and as you save cycles, this will benefit to real STE too
)
So, new code could be :
Nicolas
The code you use to correct the offset you sometimes have because of the blitter does this in part :
Code: Select all
[wait for a change in $ffa21, then]
cpu video_cyc= 51640 440@100 : $17b554 : 13f9 ffff 8205 0017 9375 move.b $ffff8205,$179375
cpu video_cyc= 51668 468@100 : $17b55e : 13f9 ffff 8207 0017 9376 move.b $ffff8207,$179376
cpu video_cyc= 51696 496@100 : $17b568 : 13f9 ffff 8209 0017 9377 move.b $ffff8209,$179377
HBL 100 video_cyc=51724 pending_cyc=12 jitter=4
cpu video_cyc= 51724 12@101 : $17b572 : 2039 0017 9374 move.l $179374,d0
cpu video_cyc= 51744 32@101 : $17b578 : 90b9 0017 9380 sub.l $179380,d0
cpu video_cyc= 51768 56@101 : $17b57e : b0bc 0000 3700 cmp.l #$3700,d0
cpu video_cyc= 51784 72@101 : $17b584 : 6e06 bgt.s $17b58c
When the read overlaps, Hatari will return the value for the counter of the next line, so your code will try to correct a blitter-unstability that didn't really happen, hence the problem.
I plan to change this in Hatari, but it has more general effect in other programs / demos, so it will require a lot of changes.
In the meantime, you can change slightly your code to make it work under Hatari : if you speed up these 3 reads in the video counter, then there will be no overlap and it should work :
- use short address, $ffff8205.w, not $fff8205.l (save 4 cycle per read)
- use a pointer to save the result : save 8 cycles per read
Both will save 12 cycles per read, more could be save by using more registers, but this will be enough for Hatari (and as you save cycles, this will benefit to real STE too

So, new code could be :
Note that "lea video_adr+1(pc),a0" should be made *before* waiting for the change in $fffa21, this way you have the faster code possible once $fffa21 changes.lea video_adr+1(pc),a0 ; this is $179375 in above code
move.b $ff8205.w,(a0)+
move.b $ff8207.w,(a0)+
move.b $ff8209.w,(a0)+
Nicolas
Re: Giana Sisters STE - New Game!
Yes, that code is better, because it only changes drives/side bits, but leaves all other bits unchanged.bod/STAX wrote: This is actually written by Griff/Inner Circle. Would this work better on Mega STE?
It deselects the current drive rather than specifically drive 'A'.
Sorry I don't know that much about DMA stuff.
AtariZoll code is similar, deselects drive A/B, but leaves side as it was. Both versions will work.
[EDIT] note that Griff's code deselects both drives, not just drive A
Re: Giana Sisters STE - New Game!
Well, actually, it is best to deselect all - so drive B too, even if there is no such. So, best to and with #$F8 .
Really good code should add some time-out for motor-on line test - after couple seconds should go further - so no freeze if drive is empty - good for hard disk users which have no money for floppies after buying Gigafile
Instead looking diverse demo or game code better idea is to look how TOS does it
It is not so much DMA stuff, but because in Mega STE PSG output port A controls Xlan for instance, and changing that line may trigger some not welcome interrupt.
Really good code should add some time-out for motor-on line test - after couple seconds should go further - so no freeze if drive is empty - good for hard disk users which have no money for floppies after buying Gigafile

Instead looking diverse demo or game code better idea is to look how TOS does it

It is not so much DMA stuff, but because in Mega STE PSG output port A controls Xlan for instance, and changing that line may trigger some not welcome interrupt.
Famous Schrodinger's cat hypothetical experiment says that cat is dead or alive until we open box and see condition of poor animal, which deserved better logic. Cat is always in some certain state - regardless from is observer able or not to see what the state is.
Re: Giana Sisters STE - New Game!
GREAT GREAT GREAT Giana Sisters!!!
Superb work! I just have tried it in Steem 3.2 and works just fine. I have to transfer this to disk and try it on a real machine. This will be perfect for the "demo room" at Retrospelsmässan 2014! If it´s ok to run it there?
Superb work! I just have tried it in Steem 3.2 and works just fine. I have to transfer this to disk and try it on a real machine. This will be perfect for the "demo room" at Retrospelsmässan 2014! If it´s ok to run it there?
Re: Giana Sisters STE - New Game!
Thanks for the help!
I have now put out a new version with some minor fixes. It should now work in Hatari and be able to run from HD. I also put in a check so that if you start it from a machine that is not an STE you get's an message.
I have now put out a new version with some minor fixes. It should now work in Hatari and be able to run from HD. I also put in a check so that if you start it from a machine that is not an STE you get's an message.
ST / STFM / STE / Mega STE / Falcon / TT030 / Portfolio / 2600 / 7800 / Jaguar / 600xl / 130xe
Re: Giana Sisters STE - New Game!
Just tested it and it works much better, no more flicker in Hatari and no more lock at start !Zamuel_a wrote:Thanks for the help!
I have now put out a new version with some minor fixes. It should now work in Hatari and be able to run from HD. I also put in a check so that if you start it from a machine that is not an STE you get's an message.
Still, I saw another problem : when you lost, the game will do some disk access and will loop forever at $b66, waiting for FDC to complete. Same problem, this can't work without a floppy in drive :
Code: Select all
$000b60 : 0838 0005 fa01 btst #5,$fffffa01.w
$000b66 : 66f8 bne.s $b60
$000b68 : 3038 8604 move.w $ffff8604.w,d0
$000b6c : 0280 0000 00ff andi.l #$ff,d0
$000b72 : 2b40 0018 move.l d0,$18(a5)
$000b76 : 4e75 rts
Code: Select all
fdc type I restore spinup=on verify=off steprate=3 drive=0 tr=0x5 head_track=0x5 VBL=6974 video_cyc=71784 104@140 pc=b50
fdc type II read sector sector=0x5 multi=off spinup=on settle=off tr=0x0 head_track=0x0 side=0 drive=0 dmasector=12 addr=0x2000 VBL=6975 video_cyc=36408 56@71 pc=b50
Re: Giana Sisters STE - New Game!
Hmm ok. Well I can try and see what is possible to do. So the best thing is not to die 
I can remove the looping and see what happenes.

I can remove the looping and see what happenes.
Last edited by Zamuel_a on Sat Apr 05, 2014 12:51 pm, edited 1 time in total.
ST / STFM / STE / Mega STE / Falcon / TT030 / Portfolio / 2600 / 7800 / Jaguar / 600xl / 130xe
Re: Giana Sisters STE - New Game!
Then add a trainer menuZamuel_a wrote:Hmm ok. Well I can try and see what is possible to do. So the best thing is not to die

Re: Giana Sisters STE - New Game!
Tests on real HW:
Mega STE: similar as by SSB - shaking pic , freeze at first run. Second run worked, but control of player is weird - left-right movement is with slowdowns. I'm pretty sure that reason is code for reading enhanced STE joystick ports, which are not present in Mega STE. So, should add HW test, and disabling Jagpad read code if run on MSTE.
And if no floppy freezes - solution already given - best to remove completely that motor on test.
Falcon: freezes with white screen right after start. I removed Vfreq ( $FF820A) write . This on Falcon ? I think that should work - there is blitter, there is JagPad ... But solving it without Falcon would be almost impossible.
TT: needs setting of TT address bus in 24-bit mode, removing Vfreq write (see above) - after that it worked until play start, when freezed - of course - no blitter in TT ! So, if could solve without blitter on 4x faster CPU ...
I recommend that change all HW regiser access to short addressing, so instead $FF8800 use $FFFF8800.w (Devpac expects that form), but address will take only 2 bytes, and is more compatible with 68030 CPU.
Mega STE: similar as by SSB - shaking pic , freeze at first run. Second run worked, but control of player is weird - left-right movement is with slowdowns. I'm pretty sure that reason is code for reading enhanced STE joystick ports, which are not present in Mega STE. So, should add HW test, and disabling Jagpad read code if run on MSTE.
And if no floppy freezes - solution already given - best to remove completely that motor on test.
Falcon: freezes with white screen right after start. I removed Vfreq ( $FF820A) write . This on Falcon ? I think that should work - there is blitter, there is JagPad ... But solving it without Falcon would be almost impossible.
TT: needs setting of TT address bus in 24-bit mode, removing Vfreq write (see above) - after that it worked until play start, when freezed - of course - no blitter in TT ! So, if could solve without blitter on 4x faster CPU ...

I recommend that change all HW regiser access to short addressing, so instead $FF8800 use $FFFF8800.w (Devpac expects that form), but address will take only 2 bytes, and is more compatible with 68030 CPU.
Famous Schrodinger's cat hypothetical experiment says that cat is dead or alive until we open box and see condition of poor animal, which deserved better logic. Cat is always in some certain state - regardless from is observer able or not to see what the state is.
Re: Giana Sisters STE - New Game!
I noticed that game reloads level always after dying. So, another place where need to remove completely FDC chip access.
All this is because crack, on which this is based, and which uses Ramdisk, did not remove floppy access. But work on hard disk on machine without floppy demands it - I did removal in several cases in hard disk adapts.
All this is because crack, on which this is based, and which uses Ramdisk, did not remove floppy access. But work on hard disk on machine without floppy demands it - I did removal in several cases in hard disk adapts.
Famous Schrodinger's cat hypothetical experiment says that cat is dead or alive until we open box and see condition of poor animal, which deserved better logic. Cat is always in some certain state - regardless from is observer able or not to see what the state is.
Re: Giana Sisters STE - New Game!
He he, well it feels strange to add a trainer menu into a "offical" game and not a cracked release. There ARE several cheats that can be turned on by pressing the right button at the right screenThen add a trainer menu

This will be easy to do.Mega STE: similar as by SSB - shaking pic , freeze at first run. Second run worked, but control of player is weird - left-right movement is with slowdowns. I'm pretty sure that reason is code for reading enhanced STE joystick ports, which are not present in Mega STE. So, should add HW test, and disabling Jagpad read code if run on MSTE.
Can't undestand why it freeze at first run. That has never happened to me.
ST / STFM / STE / Mega STE / Falcon / TT030 / Portfolio / 2600 / 7800 / Jaguar / 600xl / 130xe
Re: Giana Sisters STE - New Game!
Most likely because access to JagPad caused bus error - freeze happened at play start. This answers not why works at second attempt, I know - but in Ataris is everything possible. Disable that JagPad read, and we will see ...
Famous Schrodinger's cat hypothetical experiment says that cat is dead or alive until we open box and see condition of poor animal, which deserved better logic. Cat is always in some certain state - regardless from is observer able or not to see what the state is.
Re: Giana Sisters STE - New Game!
I disabled the jagpad if it detects a Mega STE and it worked on my Mega without a problem.
ST / STFM / STE / Mega STE / Falcon / TT030 / Portfolio / 2600 / 7800 / Jaguar / 600xl / 130xe
Re: Giana Sisters STE - New Game!
Wow, you've done a great job on this conversion! Even more interesting that the new scrolling, sprites etc. has been retrofitted to an existing game!Zamuel_a wrote:Well that looked worse than the ST imageIt is with 256 colors, and reducing to 16 colors (with even 24 bit palette), 320x200px gives best this:I guess it's not so easy to just convert it. It needs to be redrawn. A Highcolor image is best ofcourse, but when I need to play a sample in the background so it would take alot of space and wouldn't fit on a disk, so maybe not worth it for something you look at only one time and after that try to pass as quick as possible.
As for titlepic/image - I once did a version of PCS which performed MOD channel mixing in the borders, so you could display 2-field hicolour and run an STE modplayer at the same time. I don't think I have the code now but the changes are relatively straightforward. One mix operation per scanline times 200 scanlines, plus filler in the lower border time - I think that was enough for 25khz replay.
It's also possible to produce a custom display routine with adjusted colour timings to make more room if higher quality (50khz) replay is wanted - but not sure if the trade is advantageous with a simple unrolled mixer.
Anyway, enough about that - great to see another nice project from you

d:m:l
Home: http://www.leonik.net/dml/sec_atari.py
AGT project https://bitbucket.org/d_m_l/agtools (source) https://bitbucket.org/d_m_l/agtools/downloads?tab=tags
BadMooD p/l: http://www.youtube.com/playlist?list=PL ... oOGiLtcniv
Quake II p/l: http://www.youtube.com/playlist?list=PL ... 5nMm10m0UM
Home: http://www.leonik.net/dml/sec_atari.py
AGT project https://bitbucket.org/d_m_l/agtools (source) https://bitbucket.org/d_m_l/agtools/downloads?tab=tags
BadMooD p/l: http://www.youtube.com/playlist?list=PL ... oOGiLtcniv
Quake II p/l: http://www.youtube.com/playlist?list=PL ... 5nMm10m0UM
Re: Giana Sisters STE - New Game!
New version uploaded.
Should now work on Mega STE by removing the Jagpad code if MSTE detected.
Will also not get stucked in a loop if runned from a HD. It will not really save the highscore but who cares... With cheats on the highscore is useless anyway
Should now work on Mega STE by removing the Jagpad code if MSTE detected.
Will also not get stucked in a loop if runned from a HD. It will not really save the highscore but who cares... With cheats on the highscore is useless anyway
ST / STFM / STE / Mega STE / Falcon / TT030 / Portfolio / 2600 / 7800 / Jaguar / 600xl / 130xe
Re: Giana Sisters STE - New Game!
Great job again Zamuel!
Indeed, with your enhancements, it can now be seen on STe as a worthy SMB clone.
[edit] I noticed a little collision bug. The bullet goes through the pillar, when Giana is positioned exactly there :
Indeed, with your enhancements, it can now be seen on STe as a worthy SMB clone.

[edit] I noticed a little collision bug. The bullet goes through the pillar, when Giana is positioned exactly there :
You do not have the required permissions to view the files attached to this post.
-= Personal pages hub = YM-Rockerz =-
Re: Giana Sisters STE - New Game!
Interessting[edit] I noticed a little collision bug. The bullet goes through the pillar, when Giana is positioned exactly there

ST / STFM / STE / Mega STE / Falcon / TT030 / Portfolio / 2600 / 7800 / Jaguar / 600xl / 130xe
Re: Giana Sisters STE - New Game!
For anyone that might think this game is a little to hard, Press T at the intro scroller screen to get infinity life's 

ST / STFM / STE / Mega STE / Falcon / TT030 / Portfolio / 2600 / 7800 / Jaguar / 600xl / 130xe
Re: Giana Sisters STE - New Game!
Updated v. works better on Mega STE - controls are now OK with joystick. Works without floppy drive attached too.
But first run is still problematic: still shaking and after that freeze, crash. After reset it works fine - so is playable somehow.
May be that problem is because some different crystal freq. in MSTE revision. I have machine made for Germany.
But first run is still problematic: still shaking and after that freeze, crash. After reset it works fine - so is playable somehow.
May be that problem is because some different crystal freq. in MSTE revision. I have machine made for Germany.
You do not have the required permissions to view the files attached to this post.
Famous Schrodinger's cat hypothetical experiment says that cat is dead or alive until we open box and see condition of poor animal, which deserved better logic. Cat is always in some certain state - regardless from is observer able or not to see what the state is.
Re: Giana Sisters STE - New Game!
Is this only on Mega STE? I have tried it on my STE and Mega STE and didn't get that error at all. On my regular STE I have started it 20+ times or something without any problems.But first run is still problematic: still shaking and after that freeze, crash. After reset it works fine - so is playable somehow.
ST / STFM / STE / Mega STE / Falcon / TT030 / Portfolio / 2600 / 7800 / Jaguar / 600xl / 130xe
Re: Giana Sisters STE - New Game!
About the music. It all depends how much work you are intressted todo. But one idea is to Use ste digi for the sfx and then use a timer for the tune for sid fx in the tune.
Skickat från min C6903 via Tapatalk
Skickat från min C6903 via Tapatalk
- Atari ST/FM/E - Mega sTe - Portfolio - Falcon 030 FX 3 in 1 -- Atari 7800/Lynx/Jaguar -
- FTP... Ask for info
- Atari Legend (Games all-a-round)
- Paradize (Chip Music)
- Elite (Atari Softs)
- The Legion (Demos)
- Alive Maggie Team
_/|\_YM-RockerZ_/|\_
- FTP... Ask for info
- Atari Legend (Games all-a-round)
- Paradize (Chip Music)
- Elite (Atari Softs)
- The Legion (Demos)
- Alive Maggie Team
_/|\_YM-RockerZ_/|\_
Re: Giana Sisters STE - New Game!
If it's just to replace the YM player with another one, sure it's not a problem. Adding DMA samples for effects are rather easy to. If I can get all the effects.
ST / STFM / STE / Mega STE / Falcon / TT030 / Portfolio / 2600 / 7800 / Jaguar / 600xl / 130xe
Re: Giana Sisters STE - New Game!
Are there any other ST games that should be remade for STE? 

ST / STFM / STE / Mega STE / Falcon / TT030 / Portfolio / 2600 / 7800 / Jaguar / 600xl / 130xe