Jump to content
Sign in to follow this  
Pengwin

Custom Display Lists with Quick

Recommended Posts

I need some help fro anyone out there who knows Quick.

 

I have taken a page from XXL's book and am trying to port some simple spectrum games to A8. Unlike XXL, I am not using assembly, I will be using the Quick language. In theory, this should be straight forward, but I have already hit a snag.

 

I am trying to create a custom display list (actually, there will be 2 in the game, but one at a time here).

I 'think' it is creating the correct list, but when I try to poke a character to the screen, I get nothing.

I tried virtually the same in TurboBasic and I got a character on the screen. Could any one help?

 

I am posting the code to both the Quick and the TurboBasic versions so maybe someone could see something.

 

Quick Code

BYTE
[
 DMACTL=559
]
WORD
[
 SDLSTL=560
 MENUDLI
 MENUSCRN
]
* FRONT MENU DISPAY LIST
DATA($7000)
[
 112,112,112,71,232,148
 7,7,7,6,6,6,6,7,7,7,65,0,70
]
MAIN
 MENUDLI=$7000
 MENUSCRN=$94E8
 .FRONTMENU
ENDMAIN

* DISPLAY FRONT SCREEN
PROC FRONTMENU
LOCAL
WORD
[
 PKPOS
]
BEGIN
 DMACTL=0
 SDLSTL=MENUDLI
 DMACTL=34
 CLR($70,1)
 ADD(MENUSCRN,56,PKPOS)
 POKE(PKPOS,65)
ENDPROC

 

TurboBasic Code

1 DMACTL=559:SDLSTL=560:MENUDLI=28672
2 MENUSCRN=38123
3 HSBMENU=INT(MENUDLI/256)
4 LSBMENU=(MENUDLI-(HSBMENU*256))
10 FOR F=0 TO 18
20   READ A
30   POKE MENUDLI+F,A
40 NEXT F
100 POKE DMACTL,0
110 POKE SDLSTL,LSBMENU
120 POKE SDLSTL+1,HSBMENU
130 POKE DMACTL,34
150 POKE MENUSCRN,99
1000 DATA 112,112,112,71,232,148,7,7,7,6,6,6,6,7,7,7,65,0,70

 

Any help would be very greatly appreciated.

Share this post


Link to post
Share on other sites

Just spotted one thing...the last byte of the display list should have been 112, not 70. But but still doesn't work

Share this post


Link to post
Share on other sites

Maybe try running it in Altirra with the debugger.

Put a line at the end so it endlessly loops or something.

 

Then you can use the debugger to check if stuff like SDLIST gets changed properly.

 

Or you could even single-step through the program. A method I use is to have a breakpoint set e.g. to writes at $E000. Then just put writes to $E000 inside your program where you want to start to trace.

Share this post


Link to post
Share on other sites

Thanks for the tip Rybags. I can't use Altirra though (I'm on a mac), but atari800MacX does have a decent monitor and debugger.

What I discovered is that the displaylist, which should be entered into memory with

 

 

DATA($7000)
[
 112,112,112,71,232,148
 7,7,7,6,6,6,6,7,7,7,65,0,112
]

 

doesn't seem to be in memory. Not sure why. I tried out one of the demo games that is available on the AtariWiki, and that fails to put the display list in memory. Looks like there could be a problem with Quick itself.

 

Edit: Just tried with Quick 2.1 (I was using 2.2) and the data is now being stored in memory.

Edited by Pengwin

Share this post


Link to post
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...
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...