/* 3dsspec - Nintendo 3DS Spectrum emulator Copyright (C) 2021 Ian Cowburn (ianc@noddybox.co.uk) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, see ------------------------------------------------------------------------- Provides the emulation for the Spectrum */ #ifndef DSSPEC_SPEC_H #define DSSPEC_SPEC_H #include #include "framebuffer.h" #include "z80.h" #include "keyboard.h" /* Sample rate for sound emulation */ #define SAMPLE_RATE 22050 /* Initialise the SPEC */ void SPECInit(Z80 *z80); /* Start the frame */ void SPECStartFrame(Framebuffer *fb); /* Handle keypresses */ void SPECHandleKey(SoftKey k, int is_pressed); /* Enable fopen() loading of tape files */ void SPECEnableFileSystem(int enable); /* Set a file to load from tape */ void SPECSetTape(const Z80Byte *image, int len); /* Reset the spectrum */ void SPECReset(Z80 *z80); /* Tell the spectrum that config may have changed. */ void SPECReconfigure(void); /* Interfaces for the Z80 */ Z80Byte SPECReadPort(Z80 *z80, Z80Word port); void SPECWritePort(Z80 *z80, Z80Word port, Z80Byte val); /* Interface for snap */ void SPECWriteMemSNAP(Z80Word addr, Z80Byte val); /* Interfaces to allows the SPEC to save/load itself as a snapshot to/from a stream. */ void SPECSaveSnapshot(FILE *fp); void SPECLoadSnapshot(FILE *fp); #endif /* END OF FILE */