projects
/
bootcensus
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
added makefile rule to create bootable CDs and removed a printf call in
[bootcensus]
/
src
/
test
/
vbetest.c
diff --git
a/src/test/vbetest.c
b/src/test/vbetest.c
index
1133dec
..
ee7fb68
100644
(file)
--- a/
src/test/vbetest.c
+++ b/
src/test/vbetest.c
@@
-5,8
+5,10
@@
#include "keyb.h"
#include "psaux.h"
#include "contty.h"
#include "keyb.h"
#include "psaux.h"
#include "contty.h"
+#include "audio.h"
static void draw_cursor(int x, int y, uint16_t col);
static void draw_cursor(int x, int y, uint16_t col);
+static int click_sound_callback(void *buffer, int size, void *cls);
static uint16_t *framebuf;
static uint16_t *framebuf;
@@
-31,10
+33,16
@@
static uint16_t cursor[] = {
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xffff, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
};
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xffff, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
};
+static int click;
+
+/* defined in sndsamples.s */
+extern signed char snd_click[];
+extern int snd_click_size;
+
int vbetest(void)
{
int i, j, nmodes, mx, my;
int vbetest(void)
{
int i, j, nmodes, mx, my;
- unsigned int st;
+ unsigned int st, prev_st = 0;
struct video_mode vi;
uint16_t *fbptr;
struct video_mode vi;
uint16_t *fbptr;
@@
-78,6
+86,8
@@
int vbetest(void)
set_mouse_bounds(0, 0, 639, 479);
set_mouse_bounds(0, 0, 639, 479);
+ audio_set_callback(click_sound_callback, 0);
+
/* empty the kb queue */
while(kb_getkey() != -1);
/* empty the kb queue */
while(kb_getkey() != -1);
@@
-87,6
+97,19
@@
int vbetest(void)
}
st = mouse_state(&mx, &my);
}
st = mouse_state(&mx, &my);
+
+ for(i=0; i<3; i++) {
+ unsigned int bit = 1 << i;
+ if(((st & bit) ^ (prev_st & bit)) & (st & bit)) {
+ click = 1;
+ }
+ }
+ if(click) {
+ audio_play(22050, 1);
+ }
+
+ prev_st = st;
+
draw_cursor(mx, my, st & 1 ? 0xf800 : (st & 2 ? 0x7e0 : (st & 4 ? 0x00ff : 0)));
halt_cpu();
draw_cursor(mx, my, st & 1 ? 0xf800 : (st & 2 ? 0x7e0 : (st & 4 ? 0x00ff : 0)));
halt_cpu();
@@
-147,3
+170,14
@@
static void draw_cursor(int x, int y, uint16_t col)
savp += CURSOR_XSZ - w;
}
}
savp += CURSOR_XSZ - w;
}
}
+
+/* snd_click_size is < 65536 so we can just throw it all at once in there */
+static int click_sound_callback(void *buffer, int size, void *cls)
+{
+ if(click) {
+ memcpy(buffer, snd_click, snd_click_size);
+ click = 0;
+ return snd_click_size;
+ }
+ return 0;
+}