FreeCalypso > hg > freecalypso-tools
view target-utils/buzplayer/melplay.c @ 1001:7df4c9ae6ba4
loadtools/scripts: w220.{config,init} => chimei.{config,init}
Motorola W220, first touched by FreeCalypso in 2019-05, is an ODM phone
made by Chi-Mei, and its peculiar property of relevance to loadtools
is that it has XRAM on Calypso nCS3 instead of the usual nCS1 - which
matters for fc-xram. We are now discovering other Chi-Mei phones
including Sony Ericsson J120, and they share the same quirk of XRAM
on nCS3 - hence we rename this loadtools target from w220 to chimei.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sat, 09 Dec 2023 17:53:44 +0000 |
parents | 158dd05fb9f9 |
children |
line wrap: on
line source
#include "types.h" #include "melody.h" extern struct melentry *melody_buf_start, *melody_buf_tailptr; extern int melody_mode; #define ARMIO_LOAD_TIM (*(volatile u16 *) 0xFFFE4808) #define BUZZ_LIGHT_REG (*(volatile u16 *) 0xFFFE480E) #define PWT_FRC_REG (*(volatile u8 *) 0xFFFE8800) #define PWT_VCR_REG (*(volatile u8 *) 0xFFFE8801) void melody_play_bu() { struct melentry *p; int count; wait_for_tdma_frame(); for (p = melody_buf_start; p < melody_buf_tailptr; p++) { if (p->tone) { ARMIO_LOAD_TIM = p->tone; BUZZ_LIGHT_REG = 1; } else BUZZ_LIGHT_REG = 0; for (count = p->dur; count; count--) wait_for_tdma_frame(); BUZZ_LIGHT_REG = 0; } } void melody_play_pwt() { struct melentry *p; int count; wait_for_tdma_frame(); for (p = melody_buf_start; p < melody_buf_tailptr; p++) { PWT_FRC_REG = p->tone; PWT_VCR_REG = p->vol; for (count = p->dur; count; count--) wait_for_tdma_frame(); PWT_VCR_REG = 0; } } void melody_play() { switch (melody_mode) { case 1: melody_play_bu(); return; case 2: melody_play_pwt(); return; default: printf("ERROR: no melody entered\n"); } }