Beyond Demo

All about ST/STE demos

Moderators: Mug UK, lotek_style, Moderator Team

User avatar
Marcer
Atarilegend
Atarilegend
Posts: 4183
Joined: Wed Mar 10, 2004 6:21 pm
Location: sweden
Contact:

Beyond Demo

Postby Marcer » Sat Dec 10, 2005 10:48 am

I was testing Beyond Demo from Kruz..

I found out this demo seems not to be workin in steem or Saint..
is there any patched version of this demo for emu's ?

// Marcer
- 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_/|\_

User avatar
leonard
Moderator
Moderator
Posts: 658
Joined: Thu May 23, 2002 10:48 pm
Contact:

Postby leonard » Mon Jan 02, 2006 11:03 am

well I just see there is no "beyond" demo on pacidemo. Looks strange, I remember to patch the protection in order to run under emulators. I'll check this at home if I get some time (and remember it that night :-))

btw beyond demo was a very cool and technical demo !
Leonard/OXYGENE.

User avatar
ggn
Atari God
Atari God
Posts: 1258
Joined: Sat Dec 28, 2002 4:49 pm

Postby ggn » Mon Jan 02, 2006 12:50 pm

leonard wrote:btw beyond demo was a very cool and technical demo !


Yep, it had 5 (iirc) very cool screens and a lovely main menu.

George
is 73 Falcon patched atari games enough ? ^^

mOa
Obsessive compulsive Atari behavior
Obsessive compulsive Atari behavior
Posts: 123
Joined: Sun May 12, 2002 11:53 pm

Postby mOa » Wed Jan 04, 2006 7:47 pm

strange

Beyond used to work with older versions of STEem but not with v3.2
Maybe emulation accuracy broke it :roll:

User avatar
Brume
Red eyes
Red eyes
Posts: 4185
Joined: Mon Apr 22, 2002 10:16 am
Location: France
Contact:

Postby Brume » Wed Jan 04, 2006 8:03 pm

leonard wrote:well I just see there is no "beyond" demo on pacidemo. Looks strange, I remember to patch the protection in order to run under emulators. I'll check this at home if I get some time (and remember it that night :-))

btw beyond demo was a very cool and technical demo !


I've never got this patch :cry:

User avatar
leonard
Moderator
Moderator
Posts: 658
Joined: Thu May 23, 2002 10:48 pm
Contact:

Postby leonard » Wed Jan 04, 2006 11:47 pm

Hi brume ! how are you? Seems nobody can reach you since a while?

Humm I don't have any patch for beyond demo, maybe I dreamed about it. I'll do one if I get some time.
Leonard/OXYGENE.

User avatar
Brume
Red eyes
Red eyes
Posts: 4185
Joined: Mon Apr 22, 2002 10:16 am
Location: France
Contact:

Postby Brume » Thu Jan 05, 2006 12:11 am

leonard wrote:Hi brume ! how are you? Seems nobody can reach you since a while?

i'm fine mate, sorry if i didn't answer to your last message, we had a lot of issues at the office... and the company is out now (all the magazines won't be published anymore, i'm unemployed). hope you don't mind. i'll send an email in a few ;)

leonard wrote:Humm I don't have any patch for beyond demo, maybe I dreamed about it. I'll do one if I get some time.

tia :)
take care,
Brume.
Last edited by Brume on Thu Jan 05, 2006 5:43 pm, edited 1 time in total.

User avatar
leonard
Moderator
Moderator
Posts: 658
Joined: Thu May 23, 2002 10:48 pm
Contact:

Postby leonard » Thu Jan 05, 2006 5:08 pm

sorry for your office...

Well I've patched the beyond demo, but unfortunatly the mainmenu is not running in SainT since v1.80. As I changed the prefetch-stuff in 1.85 (and I know it's not perfect), I'm pretty sure it's a nasty prefetch bug.

Humm, have to fix SainT before releasing the patch :-) But prefetch stuff is a weird world... It may take a lot of time...
Leonard/OXYGENE.

ijor
Hardware Guru
Hardware Guru
Posts: 3821
Joined: Sat May 29, 2004 7:52 pm
Contact:

Postby ijor » Thu Jan 05, 2006 6:02 pm

leonard wrote:Well I've patched the beyond demo,


Please preserve the demos in it's original form. It's ok to patch them to make them compatible but we want to preserve the original form as well.

This is not just an issue of preserving an unmodified software. It is an issue of being able eventually to improve emulation.

So please, keep both the patched and unpatched versions. And if some site makes the patched version available, give the user the possibility of downloading the original version as well.

User avatar
leonard
Moderator
Moderator
Posts: 658
Joined: Thu May 23, 2002 10:48 pm
Contact:

Postby leonard » Fri Jan 06, 2006 9:30 am

I totally agree with you Ijor. I always keep original disk image. One day emulation will be so perfect all original disks will work. (it's actually the case with the DSOTS protection which run on recent SainT without patch :-))
Leonard/OXYGENE.

User avatar
leonard
Moderator
Moderator
Posts: 658
Joined: Thu May 23, 2002 10:48 pm
Contact:

Postby leonard » Fri Jan 06, 2006 10:29 pm

Hey Ijor I just read seriously your article about 68000 prefetch and it's brilliant. The article is very accurate and explain many strange behavior I always asked myself. Now I have to think about how implement that in the current 68000 core emulation in SainT.

Thanks for your work !
Leonard/OXYGENE.

ijor
Hardware Guru
Hardware Guru
Posts: 3821
Joined: Sat May 29, 2004 7:52 pm
Contact:

Postby ijor » Sun Jan 08, 2006 3:01 am

Thanks Leonard, glad it is helpful. Let me know if something is not clear or you need any additional info.

User avatar
leonard
Moderator
Moderator
Posts: 658
Joined: Thu May 23, 2002 10:48 pm
Contact:

Postby leonard » Mon Jan 09, 2006 11:38 am

Hi Ijor,

Not sure about it, but I find a strange behavior. In your article, you said general move is "class 1" instruction, exept some case. One of these case is

MOVE memory,(XXXX).L

which is class 2, if source is memory (so when source is NOT dreg, areg or immediate).

But, it seems the MOVE is class 1 instruction for areg too !

ex: move.l a0,(XXXX).L

Am I right ?

Cheers,
Arnaud
Leonard/OXYGENE.

ijor
Hardware Guru
Hardware Guru
Posts: 3821
Joined: Sat May 29, 2004 7:52 pm
Contact:

Postby ijor » Mon Jan 09, 2006 9:19 pm

Hi Leonard,

leonard wrote:But, it seems the MOVE is class 1 instruction for areg too !

ex: move.l a0,(XXXX).L


This is exactly what the article says. Only when source is memory operand it is class 2. Or you mean that is class 2 when source is address register as well?

The following code proofs that it is class 1:

Code: Select all

   moveq   #0,D0
   move.l   #$4e714e71,D1
   move.l   D1,A0
   move.l   A0,(selfModify).L
selfModify:   
   addq   #1,D0
   addq   #1,D0


The result in D0 is 1. So one, and only one word of the prefetch stream was affected by the move.

User avatar
leonard
Moderator
Moderator
Posts: 658
Joined: Thu May 23, 2002 10:48 pm
Contact:

Postby leonard » Tue Jan 10, 2006 10:13 am

I enderstand your article. I just say I think it's class 2 instruction just because of a test in the "Beyond Demo" by "Kruz". In that demo, during the mainmenu, the demo runs that code:

$1f4e2: move.l a6,$1e4ea
$1f4e8: lea $0.L,a6

in the demo, a6 is a screen pointer, and a6 swap each frame between values #$6fd00 and #$68000 ( :-) )

So if I consider the move as a class 1 instruction, at the very first frame, the LEA is patched as:

$1f4e8: lea $fd00,a6 (instead of lea $6fd00,a6)

and the demo crash few VBL after (because $fd00 patch in some 3d polygones code)

did you test that specific case on specific hardware (with your "addq.w #1,d0" trick) ?

it's very strange...

if you have any idea let me know !

cheers!
Arnaud

PD: Of course if I consider move.l an,$xxx.L as class 2 instruction, beyond demo works fine.
Leonard/OXYGENE.

User avatar
leonard
Moderator
Moderator
Posts: 658
Joined: Thu May 23, 2002 10:48 pm
Contact:

Postby leonard » Tue Jan 10, 2006 10:16 am

oh I just read I made a mystake in my first question:

But, it seems the MOVE is class 1 instruction for areg too !


I wanted to say "seems the MOVE is class 2 instruction for areg too !"

My previous post is still valid, and I still don't enderstand the move.l areg,$xxx.L in the case of the Beyond Demo.

Let me know if you have any idea about it.

cheers,
Arnaud
Leonard/OXYGENE.

ijor
Hardware Guru
Hardware Guru
Posts: 3821
Joined: Sat May 29, 2004 7:52 pm
Contact:

Postby ijor » Tue Jan 10, 2006 4:04 pm

Hi Leonard,

leonard wrote:I enderstand your article. I just say I think it's class 2 instruction just because of a test in the "Beyond Demo" by "Kruz". In that demo, during the mainmenu, the demo runs that code:

$1f4e2: move.l a6,$1f4ea
$1f4e8: lea $0.L,a6


(Note: changed your $1e4ea typo to $1f4ea)

You are looking at this the wrong way.

The class number, doesn't dictate how many bytes of the prefetch stream will be affected. But only the maximum possible. The exact number of words affected depends on the address that was written (in relation to the next instruction location).

In this case the move is writing one word beyond the next opcode, and not at the next opcode. That is, it's writing at $1f4ea, and not at $1f4e8 (the location of the next instruction).

So yes, the $0 is replaced with $6. But not because it is a class 2 instruction, but instead because it's writing one word ahead. And then it's replacing only one word (only the second one) of the prefetch.

In other words, a class 1 instruction can "overwrite" words in the instruction prefetch starting one word beyond the next opcode (at $1f4ea in this case). I called it "class 1" because if it starts one word beyond, then only one word can be affected. The second word that this instruction writes is too far away, and was never part of the prectch.

So this move is overwriting one word only of the prefetch stream. It is not overwriting two words, that would mean overwriting the actual opcode (lea). Of course that in this case it will never overwrite the opcode because it's writing one word beyond. But even if you attempt to overwrite the opcode with this instruction, it won't. That's the meaning of being class 1 and not class 2.

ijor
Hardware Guru
Hardware Guru
Posts: 3821
Joined: Sat May 29, 2004 7:52 pm
Contact:

Postby ijor » Tue Jan 10, 2006 5:21 pm

May be a further elaboration will be helpful.

You should always looks at the cycle-by-cycle execution tables. Because this explains everything. The “prefetch effect” is actually just a consequence of this.

For a class 1 instruction, the order of bus cycles is as follow:

Code: Select all

- Prefetch the opcode of the next instruction.
- Perform write cycle(s). Note that the (endian) order of the two write cycles for a long write varies and is not described in the article. But this is not relevant for the prefetch effect.
- Prefetch one word after the next opcode.



For this specific case is:

Code: Select all

- Prefetch LEA opcode at $1f4e8
- Perform two write cycles at $1f4ea and $1f4ec
- Prefetch extension word at $1f4ea



Another way of looking at this is: When the write is performed starting one word beyond the next opcode, then the effect of a class 2 and 1 instruction is same.

User avatar
leonard
Moderator
Moderator
Posts: 658
Joined: Thu May 23, 2002 10:48 pm
Contact:

Postby leonard » Tue Jan 10, 2006 7:27 pm

Oh you're right! I forgot the LEA opcode...

Hummm seems harder to do inside the current 68000 core emulation... have to think about it again...

thanks for help and support ! :-)
Leonard/OXYGENE.


Social Media

     

Return to “Demos - General”

Who is online

Users browsing this forum: No registered users and 12 guests