mirror of
https://github.com/cc65/cc65.git
synced 2025-02-02 15:37:58 +00:00
Merge pull request #453 from mrdudz/waitvsync
waitvblank for cbm targets
This commit is contained in:
commit
6002e59c28
@ -437,7 +437,7 @@ function.
|
|||||||
|
|
||||||
<!-- <itemize> -->
|
<!-- <itemize> -->
|
||||||
<!-- <item><ref id="get_tv" name="get_tv"> -->
|
<!-- <item><ref id="get_tv" name="get_tv"> -->
|
||||||
<!-- <item><ref id="waitvblank" name="waitvblank"> -->
|
<!-- <item><ref id="waitvsync" name="waitvsync"> -->
|
||||||
<!-- </itemize> -->
|
<!-- </itemize> -->
|
||||||
|
|
||||||
(incomplete)
|
(incomplete)
|
||||||
|
@ -69,8 +69,8 @@ Programs containing NES specific code may use the <tt/nes.h/ header file.
|
|||||||
<sect1>NES specific functions<p>
|
<sect1>NES specific functions<p>
|
||||||
|
|
||||||
<itemize>
|
<itemize>
|
||||||
<item>waitvblank - wait until the start of vblank
|
<item>waitvsync - wait until the start of the next frame</item>
|
||||||
<item>get_tv
|
<item>get_tv</item>
|
||||||
</itemize>
|
</itemize>
|
||||||
|
|
||||||
|
|
||||||
|
@ -77,7 +77,7 @@ Programs containing PCE specific code may use the <tt/pce.h/ header file.
|
|||||||
<sect1>PCE specific functions<p>
|
<sect1>PCE specific functions<p>
|
||||||
|
|
||||||
<itemize>
|
<itemize>
|
||||||
<item>waitvblank</item>
|
<item>waitvsync</item>
|
||||||
<item>get_tv (since all PCE systems are NTSC, this always returns TV_NTSC)</item>
|
<item>get_tv (since all PCE systems are NTSC, this always returns TV_NTSC)</item>
|
||||||
</itemize>
|
</itemize>
|
||||||
|
|
||||||
|
@ -66,7 +66,7 @@ Programs containing Supervision specific code may use the <tt/supervision.h/ hea
|
|||||||
<sect1>Supervision specific functions<p>
|
<sect1>Supervision specific functions<p>
|
||||||
|
|
||||||
<itemize>
|
<itemize>
|
||||||
<item>waitvblank
|
<item>waitvsync</item>
|
||||||
</itemize>
|
</itemize>
|
||||||
|
|
||||||
|
|
||||||
|
@ -153,7 +153,10 @@ struct cbm_dirent {
|
|||||||
unsigned char get_tv (void);
|
unsigned char get_tv (void);
|
||||||
/* Return the video mode the machine is using. */
|
/* Return the video mode the machine is using. */
|
||||||
|
|
||||||
|
#if !defined(__CBM610__) && !defined(__PET__)
|
||||||
|
void waitvsync (void);
|
||||||
|
/* wait for the start of the next frame */
|
||||||
|
#endif
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/* CBM kernal functions */
|
/* CBM kernal functions */
|
||||||
|
@ -188,8 +188,8 @@ extern void gamate_stdjoy_joy[]; /* Referred to by joy_static_stddrv[] */
|
|||||||
#define JOY_START 6
|
#define JOY_START 6
|
||||||
#define JOY_SELECT 7
|
#define JOY_SELECT 7
|
||||||
|
|
||||||
void waitvblank (void);
|
void waitvsync (void);
|
||||||
/* Wait for the vertical blanking */
|
/* Wait for start of next frame */
|
||||||
|
|
||||||
/* NOTE: all Gamate are "NTSC" */
|
/* NOTE: all Gamate are "NTSC" */
|
||||||
#define get_tv() TV_NTSC
|
#define get_tv() TV_NTSC
|
||||||
|
@ -163,8 +163,8 @@ extern void nes_64_56_2_tgi[]; /* Referred to by tgi_static_stddrv[] */
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void waitvblank (void);
|
void waitvsync (void);
|
||||||
/* Wait for the vertical blanking */
|
/* Wait for start of the next frame */
|
||||||
|
|
||||||
unsigned char get_tv (void);
|
unsigned char get_tv (void);
|
||||||
/* Return the video mode the machine is using. */
|
/* Return the video mode the machine is using. */
|
||||||
|
@ -83,8 +83,8 @@ extern void pce_stdjoy_joy[]; /* Referred to by joy_static_stddrv[] */
|
|||||||
#define JOY_SELECT 6
|
#define JOY_SELECT 6
|
||||||
#define JOY_RUN 7
|
#define JOY_RUN 7
|
||||||
|
|
||||||
void waitvblank (void);
|
void waitvsync (void);
|
||||||
/* Wait for the vertical blanking */
|
/* Wait for start of the next frame */
|
||||||
|
|
||||||
/* NOTE: all PCE are NTSC */
|
/* NOTE: all PCE are NTSC */
|
||||||
#define get_tv() TV_NTSC
|
#define get_tv() TV_NTSC
|
||||||
|
30
libsrc/c128/waitvsync.s
Normal file
30
libsrc/c128/waitvsync.s
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
;
|
||||||
|
; Written by Groepaz <groepaz@gmx.net>
|
||||||
|
;
|
||||||
|
; void waitvsync (void);
|
||||||
|
;
|
||||||
|
|
||||||
|
.export _waitvsync
|
||||||
|
|
||||||
|
.include "c128.inc"
|
||||||
|
|
||||||
|
_waitvsync:
|
||||||
|
|
||||||
|
bit MODE
|
||||||
|
bmi @c80
|
||||||
|
|
||||||
|
@l1:
|
||||||
|
bit VIC_CTRL1
|
||||||
|
bpl @l1
|
||||||
|
@l2:
|
||||||
|
bit VIC_CTRL1
|
||||||
|
bmi @l2
|
||||||
|
rts
|
||||||
|
|
||||||
|
@c80:
|
||||||
|
;FIXME: do we have to switch banks?
|
||||||
|
@l3:
|
||||||
|
lda VDC_INDEX
|
||||||
|
and #$20
|
||||||
|
beq @l3
|
||||||
|
rts
|
18
libsrc/c64/waitvsync.s
Normal file
18
libsrc/c64/waitvsync.s
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
;
|
||||||
|
; Written by Groepaz <groepaz@gmx.net>
|
||||||
|
;
|
||||||
|
; void waitvsync (void);
|
||||||
|
;
|
||||||
|
|
||||||
|
.export _waitvsync
|
||||||
|
|
||||||
|
.include "c64.inc"
|
||||||
|
|
||||||
|
_waitvsync:
|
||||||
|
@l1:
|
||||||
|
bit VIC_CTRL1
|
||||||
|
bpl @l1
|
||||||
|
@l2:
|
||||||
|
bit VIC_CTRL1
|
||||||
|
bmi @l2
|
||||||
|
rts
|
28
libsrc/cbm510/waitvsync.s
Normal file
28
libsrc/cbm510/waitvsync.s
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
;
|
||||||
|
; Written by Groepaz <groepaz@gmx.net>
|
||||||
|
;
|
||||||
|
; void waitvsync (void);
|
||||||
|
;
|
||||||
|
|
||||||
|
.export _waitvsync
|
||||||
|
.import PALFLAG
|
||||||
|
.import sys_bank, restore_bank
|
||||||
|
|
||||||
|
.importzp vic
|
||||||
|
|
||||||
|
.include "cbm510.inc"
|
||||||
|
|
||||||
|
_waitvsync:
|
||||||
|
jsr sys_bank ; Switch to the system bank
|
||||||
|
sei
|
||||||
|
|
||||||
|
ldy #VIC_CTRL1
|
||||||
|
@l1:
|
||||||
|
lda (vic),y
|
||||||
|
bpl @l1
|
||||||
|
@l2:
|
||||||
|
lda (vic),y
|
||||||
|
bmi @l2
|
||||||
|
|
||||||
|
cli
|
||||||
|
jmp restore_bank
|
@ -1,16 +1,18 @@
|
|||||||
;
|
;
|
||||||
; void waitvblank (void);
|
; Written by Groepaz <groepaz@gmx.net>
|
||||||
|
;
|
||||||
|
; void waitvsync (void);
|
||||||
;
|
;
|
||||||
|
|
||||||
.include "gamate.inc"
|
.include "gamate.inc"
|
||||||
.include "extzp.inc"
|
.include "extzp.inc"
|
||||||
|
|
||||||
.forceimport ticktock
|
.forceimport ticktock
|
||||||
.export _waitvblank
|
.export _waitvsync
|
||||||
|
|
||||||
; FIXME: is this actually correct?
|
; FIXME: is this actually correct?
|
||||||
|
|
||||||
.proc _waitvblank
|
.proc _waitvsync
|
||||||
|
|
||||||
lda tickcount
|
lda tickcount
|
||||||
@lp: cmp tickcount
|
@lp: cmp tickcount
|
@ -1,15 +1,15 @@
|
|||||||
;
|
;
|
||||||
; Written by Groepaz/Hitmen <groepaz@gmx.net>
|
; Written by Groepaz <groepaz@gmx.net>
|
||||||
; Cleanup by Ullrich von Bassewitz <uz@cc65.org>
|
; Cleanup by Ullrich von Bassewitz <uz@cc65.org>
|
||||||
;
|
;
|
||||||
; void waitvblank(void);
|
; void waitvsync(void);
|
||||||
;
|
;
|
||||||
|
|
||||||
.export _waitvblank
|
.export _waitvsync
|
||||||
|
|
||||||
.include "nes.inc"
|
.include "nes.inc"
|
||||||
|
|
||||||
.proc _waitvblank
|
.proc _waitvsync
|
||||||
|
|
||||||
wait: lda PPU_STATUS
|
wait: lda PPU_STATUS
|
||||||
bpl wait
|
bpl wait
|
@ -1,14 +1,16 @@
|
|||||||
;
|
;
|
||||||
; void waitvblank (void);
|
; Written by Groepaz <groepaz@gmx.net>
|
||||||
|
;
|
||||||
|
; void waitvsync (void);
|
||||||
;
|
;
|
||||||
|
|
||||||
.include "pce.inc"
|
.include "pce.inc"
|
||||||
.include "extzp.inc"
|
.include "extzp.inc"
|
||||||
|
|
||||||
.forceimport ticktock
|
.forceimport ticktock
|
||||||
.export _waitvblank
|
.export _waitvsync
|
||||||
|
|
||||||
.proc _waitvblank
|
.proc _waitvsync
|
||||||
|
|
||||||
lda tickcount
|
lda tickcount
|
||||||
@lp: cmp tickcount
|
@lp: cmp tickcount
|
17
libsrc/plus4/waitvsync.s
Normal file
17
libsrc/plus4/waitvsync.s
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
;
|
||||||
|
; Written by Groepaz <groepaz@gmx.net>
|
||||||
|
;
|
||||||
|
; void waitvsync (void);
|
||||||
|
;
|
||||||
|
|
||||||
|
.export _waitvsync
|
||||||
|
|
||||||
|
.include "plus4.inc"
|
||||||
|
|
||||||
|
_waitvsync:
|
||||||
|
@l1:
|
||||||
|
lda TED_VLINEHI
|
||||||
|
and #$01
|
||||||
|
ora TED_VLINELO
|
||||||
|
bne @l1
|
||||||
|
rts
|
16
libsrc/vic20/waitvsync.s
Normal file
16
libsrc/vic20/waitvsync.s
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
;
|
||||||
|
; Written by Groepaz <groepaz@gmx.net>
|
||||||
|
;
|
||||||
|
; void waitvsync (void);
|
||||||
|
;
|
||||||
|
|
||||||
|
.export _waitvsync
|
||||||
|
|
||||||
|
.include "vic20.inc"
|
||||||
|
|
||||||
|
_waitvsync:
|
||||||
|
@l2:
|
||||||
|
lda VIC_HLINE
|
||||||
|
bne @l2
|
||||||
|
rts
|
||||||
|
|
@ -117,8 +117,8 @@ void main(void)
|
|||||||
gotoxy(7 + inpos,1);
|
gotoxy(7 + inpos,1);
|
||||||
|
|
||||||
#if defined(__NES__) || defined(__PCE__) || defined(__GAMATE__)
|
#if defined(__NES__) || defined(__PCE__) || defined(__GAMATE__)
|
||||||
/* not all targets have waitvblank */
|
/* not all targets have waitvsync */
|
||||||
waitvblank();
|
waitvsync();
|
||||||
/* for targets that do not have a keyboard, read the first
|
/* for targets that do not have a keyboard, read the first
|
||||||
joystick */
|
joystick */
|
||||||
joy = joy_read(JOY_1);
|
joy = joy_read(JOY_1);
|
||||||
|
@ -41,7 +41,7 @@ int main(int argc, char *argv[])
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
waitvblank();
|
waitvsync();
|
||||||
|
|
||||||
(*((unsigned char*)LCD_XPOS)) = x;
|
(*((unsigned char*)LCD_XPOS)) = x;
|
||||||
(*((unsigned char*)LCD_YPOS)) = y;
|
(*((unsigned char*)LCD_YPOS)) = y;
|
||||||
|
@ -123,7 +123,7 @@ void main(void)
|
|||||||
p[8],p[9],p[10],p[11],p[12],p[13],p[14],p[15]);
|
p[8],p[9],p[10],p[11],p[12],p[13],p[14],p[15]);
|
||||||
}
|
}
|
||||||
|
|
||||||
waitvblank();
|
waitvsync();
|
||||||
++n;
|
++n;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user