<sect>Memory layout<p>
cc65 generated programs with the default setup run with the I/O area and the
-kernal enabled, which gives a usable memory range of $400 - $C038.
+kernal enabled, which gives a usable memory range of $400 - $C037.
Special locations:
'?' for all keys down at the same time.
<tag/Stack/
- The C runtime stack is located at $C037 and growing downwards.
+ The C runtime stack is located at $C037 (or $A057 if collision
+ detection is enabled) and growing downwards.
<tag/Heap/
The C heap is located at the end of the program and grows towards the C
runtime stack.
+ <tag/Screen/
+ The collision detection screen is at $A058 if it is enabled. The
+ double buffered screens are at $C038 and $E018.
+
</descrip><p>
will wait for the next VBL interrupt and set the draw buffer to the
view buffer. The draw buffer is also changed to (drawbuffer xor 1).
+You can also enable or disable collision detection by a call to
+tgi_setcollisiondetection(active) or tgi_ioctl(5, active). The collision
+result is located before the sprite structure by default in this driver.
+
<sect1>Extended memory drivers<p>
No extended memory drivers are currently available for the Lynx.
#define tgi_setframerate(rate) tgi_ioctl(3, (unsigned)(rate))
#define tgi_busy() tgi_ioctl(4, 0)
#define tgi_updatedisplay() tgi_ioctl(4, 1)
+#define tgi_setcollisiondetection(active) tgi_ioctl(5, (unsigned)(active))
/* End of lynx.h */
#endif
; Enable interrupts for VBL
lda #$80
tsb VTIMCTLA
+; Set up collision buffer to $A058
+ lda #$58
+ sta COLLBASL
+ lda #$A0
+ sta COLLBASH
+; Put collision index before sprite data
+ lda #$FE
+ sta COLLOFFL
+ lda #$FF
+ sta COLLOFFH
; Done, reset the error code
lda #TGI_ERR_OK
sta ERROR
;
; To update displays you can call tgi_ioctl(4, 1) it will wait for the
; next VBL interrupt and swap draw and view buffers.
+;
+; Activate or deactivate collision detection by calling tgi_ioctl(5, 0/1).
CONTROL:
pha ; Almost all control routines succeed
sta ERROR
pla
+ cmp #5
+ bne ControlSwap
+ lda ptr1
+ bne @L0
+ lda __sprsys
+ ora #$20
+ bra @L1
+@L0: lda __sprsys
+ and #$df
+@L1: sta __sprsys
+ sta SPRSYS
+ rts
+
+ControlSwap:
cmp #4
bne ControlFramerate