Jump to content
IGNORED

[AQUARIUS] POKE 14336 Screen Left Control


Pset

Recommended Posts

This memory address acts like some kind of control over where the cursor position starts to print text.

It seems to jump a number of steps backwards according to the increment value given.

Text does not auto wrap around when typing or printing strings that exceed the screen border after a new cursor position is set.

5 print chr$(11)

10 for x = 1 to 22

20 inc=1 : REM increment

30 POKE 14336,I : REM sets cursor position

40 PRINT X

50 NEXT X

Maybe someone can find a use for this.

Link to comment
Share on other sites

This memory address acts like some kind of control over where the cursor position starts to print text.

It seems to jump a number of steps backwards according to the increment value given.

 

This memory address controls the cursor row position on screen.

For more memory addresses than controls the Aquarius behaviour look at http://www.vdsteenoven.com/aquarius/mempointer.html

Link to comment
Share on other sites

  • 3 weeks later...

I got distracted trying to making a scrolling game and ended up making digital rain instead.
Thanks for the pokes. I wish the inputs to the pokes had some kind of sense to them.

 

iQxt0E9.png

 
5 PRINT CHR$(11)
10 P = 47
20 REM 14338 & 14337 Address of the cursor within the cursor matrix
100 POKE 14338,P
110 GOSUB 610
130 GOTO 10
 
610 FOR D=1 TO 25
630 PE = PEEK(14337)
685 gosub 2000
690 NEXT D
695 poke 14336,1 : Rem move print column back
700 RETURN
 
2000 REm Print here
2025 if rr =0 then rs$= "01100000010000100000100001"
2022 if rr=1 then rs$=  "10100010001000100001010110"
2023 if rr=2 then rs$=  "11001000100101010110001011" 
2024 if rr >3 then rs$= "11100000100010000101010001"
2030 rr=rr+1: if rr = 4 then rr= 0
2050 print rs$
2060 rs$=""
2100 return
Edited by Pset
Link to comment
Share on other sites

This was written on the following FAQ about these addresses http://archive.kontek.net/aqemu.classicgaming.gamespy.com/aqfaq2.htm

 

"14336. This location usually is value 0. Poking a 1 will move the normal left margin, governing text appearing on the screen, one location to the LEFT. Larger numbers will push printing further left, making it wrap and reappear on the screen at the right. Thus a POKE 14336,38 moves the margin 38 places to the left and makes it appear (on a 40-column screen) that the margin has been moved two places to the right. Text beyond the right margin may be lost, may wrap, or may wrap and cause reinstatement of the normal left margin"

 

PS Just to be curious, what kind of scrolling game do you have in mind?

Link to comment
Share on other sites

Scrambler, Vanguard, Defender type.

I could probably just go into extended basic and use the locate command to reposition the cursor.

I really want the pattern to get the cursor back to 0,0.

In theory it should be possible to make a map scroll sideways with left$, mid$, and right$ by shifting characters.

Assuming you don't overload a string, ugh.

 

Lol, note from your link "14338, 14342-14343, 14407, 14550-14553, 16313. Avoid poking these locations."

I found Poke 14338,47 repeated gives a five column tab set up with the cursor starting to print just above the screen top.

46 and under takes it up and away higher, i can't see what its doing

 

Setting P to 48 in line 10 will cause the printing to hammer the bottom of the screen.

 

Setting it higher can push the printing into the color matrix, then higher it eventually appears to lock the emulator,

but Control C a bunch of times and you'll find the cursor scrolling down the screen from some hidden height in.

 

If you totally lose the cursor you can type (in the unseen world) poke 14338,48 a few times and get it back, if not the first time.

Edited by Pset
  • Like 1
Link to comment
Share on other sites

Well here ya go, this returns to the home position.

 

try this to see it in action

poke 14337,1 : poke 14338,48

And here's a scrolling road without the whole window scrolling for an example

 

new
5 print chr$(11)
10 dim road$(20),rm$(21)
20 for r = 0 to 19
30 read road$(r)
50 next r 
 
110 for a= 1 to 19
120 print road$(a)
125 rm$(a-1)=road$(a)
135 next a
 
199 REM looping road
200 rm$(19)=road$(0)
250 for i=0 to 19 :road$(i)=rm$(i) : next i
300 poke 14337,1:poke 14338,48
400 goto 100
 
7001 Data "########          ##################"
7002 Data "#########          #################"
7003 Data "##########          ################"
7004 Data "###########          ###############"
7005 Data "#############          #############"
7006 Data "#########            ###############"
7007 Data "#########          #################"
7008 Data "#######          ###################"
7009 Data "######          ####################"
7010 Data "########          ##################"
7011 Data "#########         ##################"
7012 Data "#########          #################"
7013 Data "########            ################"
7014 Data "#######          ###################"
7015 Data "######          ####################"
7016 Data "########          ##################"
7017 Data "############          ##############"
7018 Data "#############          #############"
7019 Data "#############        ###############"
7020 Data "#########          #################"
7021 Data "##########         #################"
run
 
Edited by Pset
  • Like 1
Link to comment
Share on other sites

missing line 100 in the above code.

 

 

new
5 print chr$(11)
10 dim road$(20),rm$(21)
20 for r = 0 to 19
30 read road$(r)
50 next r 
100 rem looping road
110 for a= 1 to 19
120 print road$(a)
125 rm$(a-1)=road$(a)
135 next a
 
199 REM looping road
200 rm$(19)=road$(0)
250 for i=0 to 19 :road$(i)=rm$(i) : next i
300 poke 14337,1:poke 14338,48
400 goto 100
 
7001 Data "########          ##################"
7002 Data "#########          #################"
7003 Data "##########          ################"
7004 Data "###########          ###############"
7005 Data "#############          #############"
7006 Data "#########            ###############"
7007 Data "#########          #################"
7008 Data "#######          ###################"
7009 Data "######          ####################"
7010 Data "########          ##################"
7011 Data "#########         ##################"
7012 Data "#########          #################"
7013 Data "########            ################"
7014 Data "#######          ###################"
7015 Data "######          ####################"
7016 Data "########          ##################"
7017 Data "############          ##############"
7018 Data "#############          #############"
7019 Data "#############        ###############"
7020 Data "#########          #################"
7021 Data "##########         #################"
  • Like 1
Link to comment
Share on other sites

Nicely done!! Have you ever looked at this effort from Martin: http://atariage.com/forums/topic/174798-aquarius-man-goes-on-holiday/?hl=%2Bpanscr&do=findComment&comment=2173637

 

This is probably done in assembly, so not really comparable, but it shows the potential of the Aquarius.

 

Wow that was amazing.

Been planning on consolidating all the Aquarius links under one post for 2014, it's a good thing you dug that up!

Surprised I didn't see this in the Machine Code thread, the .asm file in this project is well documented, would be a good start for a tutorial.

Maybe for building a RAD library, how could that work?

Maybe directories sorted into routines like showSprite, moveSprite, getInput, then more specific files, with some replaceable text scheme like

 

playerSpriteLeft2.txt

 

~spriteName~_left2:

ld a, ~asciiValue~ ; ~spriteName~'s head facing left #2

call ~displaySprite~

ret

Think I'll try that tonight. Oh boy!
Link to comment
Share on other sites

Wow that was amazing.

Been planning on consolidating all the Aquarius links under one post for 2014, it's a good thing you dug that up!

Surprised I didn't see this in the Machine Code thread, the .asm file in this project is well documented, would be a good start for a tutorial.

Maybe for building a RAD library, how could that work?

Maybe directories sorted into routines like showSprite, moveSprite, getInput, then more specific files, with some replaceable text scheme like

 

playerSpriteLeft2.txt

 

~spriteName~_left2:

ld a, ~asciiValue~ ; ~spriteName~'s head facing left #2

call ~displaySprite~

ret

 

Think I'll try that tonight. Oh boy!

So you know a bit of assembler I guess? Something like that would indeed make life easier for us less fortunate and trying to get the hang of it:) Edited by Aquaman
Link to comment
Share on other sites

So you know a bit of assembler I guess? Something like that would indeed make life easier for us less fortunate and trying to get the hang of it:)

None at all. But the scripting language we developed for my game engine early on was very much like assembler.

 

 

 

//igame3d T3DScript macro code 
begin spinm
type 2
axis 7//remember angles
mark
mark 4
type 1
addf 2,5.0
addf 5,-100
poke 1,1,e
collnormal 1
dirToAngles 1,1
addf 1,90
end
 
begin posOnPlane
axis
setf 10,f2
spinm
setf 4,f2
multf 4,-1
roty
setf 4,f10
roty
spin
end

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...