174 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			174 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#ifndef EDITOR_H
 | 
						|
#define EDITOR_H
 | 
						|
 | 
						|
#include <stdint.h>
 | 
						|
#include <string>
 | 
						|
#include <vector>
 | 
						|
 | 
						|
#ifndef STAND_ALONE
 | 
						|
#include <SDL.h>
 | 
						|
#endif
 | 
						|
 | 
						|
 | 
						|
#define INPUT_RIGHT   0x01
 | 
						|
#define INPUT_LEFT    0x02
 | 
						|
#define INPUT_DOWN    0x04
 | 
						|
#define INPUT_UP      0x08
 | 
						|
#define INPUT_START   0x10
 | 
						|
#define INPUT_SELECT  0x20
 | 
						|
#define INPUT_B       0x40
 | 
						|
#define INPUT_A       0x80
 | 
						|
 | 
						|
#define HW_PS2_LEFT     1
 | 
						|
#define HW_PS2_RIGHT    2
 | 
						|
#define HW_PS2_UP       3
 | 
						|
#define HW_PS2_DOWN     4
 | 
						|
#define HW_PS2_START    7
 | 
						|
#define HW_PS2_SELECT   8
 | 
						|
#define HW_PS2_INPUT_A  9
 | 
						|
#define HW_PS2_INPUT_B  27
 | 
						|
#define HW_PS2_CTLR_C   3
 | 
						|
#define HW_PS2_CR       13
 | 
						|
#define HW_PS2_DEL      127
 | 
						|
#define HW_PS2_ENABLE   5
 | 
						|
#define HW_PS2_DISABLE  6
 | 
						|
 | 
						|
#define HEX_BASE_ADDRESS     0x0200
 | 
						|
#define LOAD_BASE_ADDRESS    0x0200
 | 
						|
#define VARS_BASE_ADDRESS    0x0030
 | 
						|
#define VIDEO_Y_ADDRESS      0x0009
 | 
						|
#define FRAME_COUNT_ADDRESS  0x000E
 | 
						|
 | 
						|
#define INPUT_CONFIG_INI  "input_config.ini"
 | 
						|
 | 
						|
 | 
						|
namespace Editor
 | 
						|
{
 | 
						|
    enum MemoryMode {RAM=0, ROM0, ROM1, NumMemoryModes};
 | 
						|
    enum EditorMode {Hex=0, Rom, Load, Dasm, Term, Image, Audio, NumEditorModes};
 | 
						|
    enum KeyboardMode {Giga=0, PS2, HwGiga, HwPS2, NumKeyboardModes};
 | 
						|
    enum FileType {File=0, Dir, Fifo, Link, NumFileTypes};
 | 
						|
    enum OnVarType {OnNone=0, OnCpuA, OnCpuB, OnHex, OnVars, OnWatch, NumOnVarTypes};
 | 
						|
 | 
						|
#ifndef STAND_ALONE
 | 
						|
    struct KeyCodeMod
 | 
						|
    {
 | 
						|
        int _scanCode;
 | 
						|
        SDL_Keymod _keyMod;
 | 
						|
    };
 | 
						|
#endif
 | 
						|
 | 
						|
    struct MouseState
 | 
						|
    {
 | 
						|
        int _x, _y;
 | 
						|
        uint32_t _state;
 | 
						|
    };
 | 
						|
 | 
						|
    struct RomEntry
 | 
						|
    {
 | 
						|
        uint8_t _type;
 | 
						|
        std::string _name;
 | 
						|
    };
 | 
						|
 | 
						|
 | 
						|
    int getCursorX(void);
 | 
						|
    int getCursorY(void);
 | 
						|
    bool getHexEdit(void);
 | 
						|
    bool getSingleStepEnabled(void);
 | 
						|
 | 
						|
    bool getPageUpButton(void);
 | 
						|
    bool getPageDnButton(void);
 | 
						|
    bool getDelAllButton(void);
 | 
						|
 | 
						|
    MemoryMode getMemoryMode(void);
 | 
						|
    EditorMode getEditorMode(void);
 | 
						|
    EditorMode getEditorModePrev(void);
 | 
						|
    KeyboardMode getKeyboardMode(void);
 | 
						|
    OnVarType getOnVarType(void);
 | 
						|
 | 
						|
    uint8_t getMemoryDigit(void);
 | 
						|
    uint8_t getAddressDigit(void);
 | 
						|
    uint16_t getNtvBaseAddress(void);
 | 
						|
    uint16_t getHexBaseAddress(void);
 | 
						|
    uint16_t getVpcBaseAddress(void);
 | 
						|
    uint16_t getLoadBaseAddress(void);
 | 
						|
    uint16_t getVarsBaseAddress(void);
 | 
						|
    uint16_t getSingleStepAddress(void);
 | 
						|
    uint16_t getCpuUsageAddressA(void);
 | 
						|
    uint16_t getCpuUsageAddressB(void);
 | 
						|
 | 
						|
    int getNtvBreakPointsSize(void);
 | 
						|
    uint16_t getNtvBreakPointAddress(int index);
 | 
						|
    void addNtvBreakPoint(uint16_t address);
 | 
						|
    void clearNtvBreakPoints(void);
 | 
						|
 | 
						|
    int getVpcBreakPointsSize(void);
 | 
						|
    uint16_t getVpcBreakPointAddress(int index);
 | 
						|
    void addVpcBreakPoint(uint16_t address);
 | 
						|
    void clearVpcBreakPoints(void);
 | 
						|
 | 
						|
    int getFileEntriesIndex(void);
 | 
						|
    int getFileEntriesSize(void);
 | 
						|
    FileType getFileEntryType(int index);
 | 
						|
    FileType getCurrentFileEntryType(void);
 | 
						|
    std::string* getFileEntryName(int index);
 | 
						|
    std::string* getCurrentFileEntryName(void);
 | 
						|
 | 
						|
    int getRomEntriesIndex(void);
 | 
						|
    int getRomEntriesSize(void);
 | 
						|
    uint8_t getRomEntryType(int index);
 | 
						|
    uint8_t getCurrentRomEntryType(int& index);
 | 
						|
    std::string* getRomEntryName(int index);
 | 
						|
    std::string* getCurrentRomEntryName(int& index);
 | 
						|
    int getCurrentRomEntryIndex(void);
 | 
						|
    void addRomEntry(uint8_t type, std::string& name);
 | 
						|
 | 
						|
    void resetEditor(void);
 | 
						|
    void setEditorToPrevMode(void);
 | 
						|
    void setEditorMode(EditorMode editorMode);
 | 
						|
 | 
						|
    void setCursorX(int x);
 | 
						|
    void setCursorY(int y);
 | 
						|
    void setHexEdit(bool hexEdit);
 | 
						|
    void setSingleStepAddress(uint16_t address);
 | 
						|
    void setLoadBaseAddress(uint16_t address);
 | 
						|
    void setCpuUsageAddressA(uint16_t address);
 | 
						|
    void setCpuUsageAddressB(uint16_t address);
 | 
						|
 | 
						|
    void getMouseState(MouseState& mouseState);
 | 
						|
    void setMouseState(MouseState& mouseState);
 | 
						|
 | 
						|
    void getMouseUiCursor(int& x, int& y, int& cy);
 | 
						|
 | 
						|
    int getEmulatorScanCode(const std::string& keyWord);
 | 
						|
 | 
						|
#ifndef STAND_ALONE
 | 
						|
    SDL_Keymod getEmulatorKeyMod(const std::string& keyWord);
 | 
						|
#endif
 | 
						|
 | 
						|
    std::string getBrowserPath(bool removeSlash=false);
 | 
						|
    void setBrowserPath(const std::string& path);
 | 
						|
 | 
						|
    void initialise(void);
 | 
						|
 | 
						|
    void browseDirectory(void);
 | 
						|
    void browseDirectory(const std::vector<std::string>& suffixes);
 | 
						|
    void changeBrowseDirectory(void);
 | 
						|
 | 
						|
#ifndef STAND_ALONE
 | 
						|
    void handleBrowsePageUp(uint16_t numRows);
 | 
						|
    void handleBrowsePageDown(uint16_t numRows);
 | 
						|
    void handleGuiEvents(SDL_Event& event);
 | 
						|
#endif
 | 
						|
 | 
						|
    bool handleDebugger(void);
 | 
						|
    void handleInput(void);
 | 
						|
 | 
						|
    void startDebugger(void);
 | 
						|
    void resetDebugger(void);
 | 
						|
    void runToBreakpoint(void);
 | 
						|
    void singleStepWatch(void);
 | 
						|
    void singleStepPc(void);
 | 
						|
}
 | 
						|
 | 
						|
#endif |