/* Copyright 2004-2005 Guillaume Duhamel Copyright 2004-2006 Theo Berkau This file is part of Yabause. Yabause 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 2 of the License, or (at your option) any later version. Yabause 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 Yabause; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef YUI_H #define YUI_H #include "cdbase.h" #include "sh2core.h" #include "sh2int.h" #include "scsp.h" #include "smpc.h" #include "vdp1.h" #include "yabause.h" #define RED_SIZE 1 #define GREEN_SIZE 2 #define BLUE_SIZE 3 #define DEPTH_SIZE 4 #define DOUBLEBUFFER 5 /* This function should be the "main" function of the program. * The function passed as an argument is the main emulation function and should be called as often as possible */ int YuiInit(void); /* quit yui_init */ void YuiQuit(void); /* hide or show the interface */ void YuiHideShow(void); /* If Yabause encounters any fatal errors, it sends the error text to this function */ void YuiErrorMsg(const char *string); /* Sets bios filename in the yui - used to specify bios from the commandline */ void YuiSetBiosFilename(const char *); /* Sets ISO filename in the yui - used to specify an ISO from the commandline */ void YuiSetIsoFilename(const char *); /* Sets CDROM filename in the yui - used to specify the CDROM from the commandline */ void YuiSetCdromFilename(const char *); /* Tells the yui to enable, or disable sound. By default it should be assumed that sound is enabled */ void YuiSetSoundEnable(int enablesound); /* Tells the yui to resize window. Ports that don't have to deal with windows should just ignore this. The w and h variables are the width and height of the client area. Take this into account when you resize your window. */ void YuiVideoResize(unsigned int w, unsigned int h, int isfullscreen); /* Sets attribute for the Video display. The values passed to this function depends on what Video core is being used at the time. This may end up being moved to the Video Core. */ void YuiSetVideoAttribute(int type, int val); /* Tells the yui it wants to setup the display to display the specified video format. It's up to the yui to setup the actual display. This may end up being moved to the Video Core. */ int YuiSetVideoMode(int width, int height, int bpp, int fullscreen); /* Tells the yui to exchange front and back video buffers. This may end up being moved to the Video Core. */ void YuiSwapBuffers(); ////////////////////////////////////////////////////////////////////////////// // Helper functions(you can use these in your own port) ////////////////////////////////////////////////////////////////////////////// /* int MappedMemoryLoad(const char *filename, u32 addr); Loads the specified file(filename) to specified address(addr). Returns zero on success, less than zero if an error has occured. Note: Some areas in memory are read-only and won't acknowledge any writes. */ /* int MappedMemorySave(const char *filename, u32 addr, u32 size); Saves data from specified address(addr) by specified amount of bytes(size) to specified file(filename). Returns zero on success, less than zero if an error has occured. Note: Some areas in memory are write-only and will only return zero on reads. */ /* void MappedMemoryLoadExec(const char *filename, u32 pc); Loads the specified file(filename) to specified address(pc) and sets Master SH2 to execute from there. Note: Some areas in memory are read-only and won't acknowledge any writes. */ /* void FormatBackupRam(void *mem, u32 size); Formats the specified Backup Ram memory area(mem) of specified size(size). */ /* void SH2Disasm(u32 v_addr, u16 op, int mode, char *string); Generates a disassembled instruction into specified string(string) based on specified address(v_addr) and specified opcode(op). mode should always be 0. */ /* void SH2Step(SH2_struct *context); For the specified SH2 context(context), it executes 1 instruction. context should be either MSH2 or SSH2. */ /* void SH2GetRegisters(SH2_struct *context, sh2regs_struct * r); For the specified SH2 context(context), copies the current registers into the specified structure(r). context should be either MSH2 or SSH2. */ /* void SH2SetRegisters(SH2_struct *context, sh2regs_struct * r); For the specified SH2 context(context), copies the specified structure(r) to the current registers. context should be either MSH2 or SSH2. */ /* void SH2SetBreakpointCallBack(SH2_struct *context, void (*func)(void *, u32)); For the specified SH2 context(context), it sets the breakpoint handler function(func). context should be either MSH2 or SSH2. */ /* int SH2AddCodeBreakpoint(SH2_struct *context, u32 addr); For the specified SH2 context(context), it adds a code breakpoint for specified address(addr). context should be either MSH2 or SSH2. Returns zero on success, or less than zero if an error has occured(such as the breakpoint list being full) */ /* int SH2DelCodeBreakpoint(SH2_struct *context, u32 addr); For the specified SH2 context(context), it deletes a code breakpoint for specified address(addr). context should be either MSH2 or SSH2. Returns zero on success, or less than zero if an error has occured. */ /* codebreakpoint_struct *SH2GetBreakpointList(SH2_struct *context); For the specified SH2 context(context), it returns a pointer to the code breakpoint list for the processor. context should be either MSH2 or SSH2. */ /* void SH2ClearCodeBreakpoints(SH2_struct *context); For the specified SH2 context(context), it deletes every code breakpoint entry. context should be either MSH2 or SSH2. */ /* u32 M68KDisasm(u32 addr, char *outstring); Generates a disassembled instruction into specified string(string) based on instruction stored at specified address(addr). Returns address of next instruction. */ /* void M68KStep(); Executes 1 68k instruction. */ /* void M68KGetRegisters(m68kregs_struct *regs); Copies the current 68k registers into the specified structure(regs). */ /* void M68KSetRegisters(m68kregs_struct *regs); Copies the specified structure(regs) to the current 68k registers. */ /* void M68KSetBreakpointCallBack(void (*func)(u32)); It sets the breakpoint handler function(func) for the 68k. */ /* int M68KAddCodeBreakpoint(u32 addr); It adds a 68K code breakpoint for specified address(addr). Returns zero on success, or less than zero if an error has occured(such as the breakpoint list being full) */ /* int M68KDelCodeBreakpoint(u32 addr); It deletes a 68k code breakpoint for specified address(addr). Returns zero on success, or less than zero if an error has occured. */ /* m68kcodebreakpoint_struct *M68KGetBreakpointList(); It returns a pointer to the code breakpoint list for the 68k. */ /* void M68KClearCodeBreakpoints(); It deletes every code breakpoint entry for the 68k. */ /* void ScuDspDisasm(u8 addr, char *outstring); Generates a disassembled instruction into specified string(string) based on instruction stored at specified address(addr). */ /* void ScuDspStep(void); Executes 1 SCU DSP step */ /* void ScuDspGetRegisters(scudspregs_struct *regs); Copies the current SCU DSP registers into the specified structure(regs). */ /* void ScuDspSetRegisters(scudspregs_struct *regs); Copies the specified structure(regs) to the current SCU DSP registers. */ /* void ScuDspSetBreakpointCallBack(void (*func)(u32)); It sets the breakpoint handler function(func) for the SCU DSP. */ /* int ScuDspAddCodeBreakpoint(u32 addr); It adds a SCU DSP code breakpoint for specified address(addr). Returns zero on success, or less than zero if an error has occured(such as the breakpoint list being full) */ /* int ScuDspDelCodeBreakpoint(u32 addr); It deletes a SCU DSP code breakpoint for specified address(addr). Returns zero on success, or less than zero if an error has occured. */ /* scucodebreakpoint_struct *ScuDspGetBreakpointList(); It returns a pointer to the code breakpoint list for the SCU DSP. */ /* void ScuDspClearCodeBreakpoints(); It deletes every code breakpoint entry for the SCU DSP. */ /* void Vdp2DebugStatsRBG0(char *outstring, int *isenabled); void Vdp2DebugStatsNBG0(char *outstring, int *isenabled); void Vdp2DebugStatsNBG1(char *outstring, int *isenabled); void Vdp2DebugStatsNBG2(char *outstring, int *isenabled); void Vdp2DebugStatsNBG3(char *outstring, int *isenabled); Fills a specified string pointer(outstring) with debug information for the specified screen. It also fills a variable(isenabled) with the screen's current status */ #endif