SPC music playback tools for real snes apu

Dependencies:   mbed

Committer:
akkera102
Date:
Mon Jan 09 13:54:39 2017 +0000
Revision:
0:5bd52e196edb
Child:
2:62e6e22f8be2
first

Who changed what in which revision?

UserRevisionLine numberNew contents of line
akkera102 0:5bd52e196edb 1 /* hwapu - SPC music playback tools for real snes apu
akkera102 0:5bd52e196edb 2 * Copyright (C) 2004-2005 Raphael Assenat <raph@raphnet.net>
akkera102 0:5bd52e196edb 3 *
akkera102 0:5bd52e196edb 4 * This program is free software; you can redistribute it and/or modify
akkera102 0:5bd52e196edb 5 * it under the terms of the GNU General Public License as published by
akkera102 0:5bd52e196edb 6 * the Free Software Foundation; either version 2 of the License, or
akkera102 0:5bd52e196edb 7 * (at your option) any later version.
akkera102 0:5bd52e196edb 8 *
akkera102 0:5bd52e196edb 9 * This program is distributed in the hope that it will be useful,
akkera102 0:5bd52e196edb 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
akkera102 0:5bd52e196edb 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
akkera102 0:5bd52e196edb 12 * GNU General Public License for more details.
akkera102 0:5bd52e196edb 13 *
akkera102 0:5bd52e196edb 14 * You should have received a copy of the GNU General Public License
akkera102 0:5bd52e196edb 15 * along with this program; if not, write to the Free Software
akkera102 0:5bd52e196edb 16 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
akkera102 0:5bd52e196edb 17 */
akkera102 0:5bd52e196edb 18 #ifndef _apu_h__
akkera102 0:5bd52e196edb 19 #define _apu_h__
akkera102 0:5bd52e196edb 20
akkera102 0:5bd52e196edb 21
akkera102 0:5bd52e196edb 22 typedef struct {
akkera102 0:5bd52e196edb 23 unsigned char (*read)(int address);
akkera102 0:5bd52e196edb 24 void (*write)(int address, unsigned char data);
akkera102 0:5bd52e196edb 25 void (*reset)(void);
akkera102 0:5bd52e196edb 26 /* should return -1 if error and print an error message,
akkera102 0:5bd52e196edb 27 * return 0 on success. */
akkera102 0:5bd52e196edb 28 int (*init)(char *cmdline);
akkera102 0:5bd52e196edb 29 void (*shutdown)(void);
akkera102 0:5bd52e196edb 30 } APU_ops;
akkera102 0:5bd52e196edb 31
akkera102 0:5bd52e196edb 32
akkera102 0:5bd52e196edb 33 void apu_setOps(APU_ops *ops);
akkera102 0:5bd52e196edb 34
akkera102 0:5bd52e196edb 35 unsigned char apu_read(int address);
akkera102 0:5bd52e196edb 36
akkera102 0:5bd52e196edb 37 void apu_write(int address, unsigned char data);
akkera102 0:5bd52e196edb 38
akkera102 0:5bd52e196edb 39 /* Write to address 'address', write the previously
akkera102 0:5bd52e196edb 40 * read value from port0 back to port 0 and wait
akkera102 0:5bd52e196edb 41 * for port0 value to be different from the written one.
akkera102 0:5bd52e196edb 42 */
akkera102 0:5bd52e196edb 43 int apu_writeHandshake(int address, int data);
akkera102 0:5bd52e196edb 44
akkera102 0:5bd52e196edb 45 /* Write many bytes using handshake (see apu_writeHandshake) */
akkera102 0:5bd52e196edb 46 int apu_writeBytes(unsigned char *data, int len);
akkera102 0:5bd52e196edb 47
akkera102 0:5bd52e196edb 48 /* reset the apu */
akkera102 0:5bd52e196edb 49 void apu_reset(void);
akkera102 0:5bd52e196edb 50
akkera102 0:5bd52e196edb 51 /* wait for a port to contain given value, with timeout */
akkera102 0:5bd52e196edb 52 int apu_waitInport(int port, unsigned char data, int timeout_ms);
akkera102 0:5bd52e196edb 53
akkera102 0:5bd52e196edb 54 /*
akkera102 0:5bd52e196edb 55 * Initialise an spc transfer at 'address'.
akkera102 0:5bd52e196edb 56 * To be used after reset of after jumping to rom
akkera102 0:5bd52e196edb 57 *
akkera102 0:5bd52e196edb 58 * Use apu_newTransfer for additional transfers
akkera102 0:5bd52e196edb 59 *
akkera102 0:5bd52e196edb 60 * return -1 on error, 0 if success
akkera102 0:5bd52e196edb 61 */
akkera102 0:5bd52e196edb 62 int apu_initTransfer(unsigned short address);
akkera102 0:5bd52e196edb 63
akkera102 0:5bd52e196edb 64 /* initialise a new transfer after the first transfer.
akkera102 0:5bd52e196edb 65 *
akkera102 0:5bd52e196edb 66 * returns 0 on success, -1 on error */
akkera102 0:5bd52e196edb 67 int apu_newTransfer(unsigned short address);
akkera102 0:5bd52e196edb 68
akkera102 0:5bd52e196edb 69 /* End transfer and jump to address
akkera102 0:5bd52e196edb 70 */
akkera102 0:5bd52e196edb 71 void apu_endTransfer(unsigned short start_address);
akkera102 0:5bd52e196edb 72
akkera102 0:5bd52e196edb 73 #endif // _apu_h__
akkera102 0:5bd52e196edb 74