SNES: Fixed ambiguous includes

This commit is contained in:
Alex Duchesne 2024-08-24 12:51:27 -04:00
parent fb1bf402ef
commit f8eba73736
54 changed files with 248 additions and 246 deletions

View File

@ -1,4 +1,4 @@
set(COMPONENT_SRCDIRS ".")
set(COMPONENT_SRCDIRS "src")
set(COMPONENT_ADD_INCLUDEDIRS ".")
set(COMPONENT_REQUIRES "retro-go")
register_component()

View File

@ -0,0 +1,6 @@
# Snes9x port for Retro-Go
## Based on:
## Modifications:

View File

@ -1,229 +1,9 @@
/* This file is part of Snes9x. See LICENSE file. */
#ifndef _SNES9X_H_
#define _SNES9X_H_
#include <stdlib.h>
#include <stdint.h>
#include "port.h"
#include "65c816.h"
#define ROM_NAME_LEN 22
/* SNES screen width and height */
#define SNES_WIDTH 256
#define SNES_HEIGHT 224
#define SNES_HEIGHT_EXTENDED 239
#define SNES_SPRITE_TILE_PER_LINE 34
#define SNES_MAX_NTSC_VCOUNTER 262
#define SNES_MAX_PAL_VCOUNTER 312
#define SNES_HCOUNTER_MAX 341
#define SPC700_TO_65C816_RATIO 2
#define AUTO_FRAMERATE 200
/* NTSC master clock signal 21.47727MHz
* PPU: master clock / 4
* 1 / PPU clock * 342 -> 63.695us
* 63.695us / (1 / 3.579545MHz) -> 228 cycles per scanline
* From Earth Worm Jim: APU executes an average of 65.14285714 cycles per
* scanline giving an APU clock speed of 1.022731096MHz */
/* PAL master clock signal 21.28137MHz
* PPU: master clock / 4
* 1 / PPU clock * 342 -> 64.281us
* 64.281us / (1 / 3.546895MHz) -> 228 cycles per scanline. */
#define SNES_SCANLINE_TIME (63.695e-6)
#define SNES_CLOCK_SPEED (3579545u)
#define SNES_CLOCK_LEN (1.0 / SNES_CLOCK_SPEED)
#define SNES_CYCLES_PER_SCANLINE ((uint32_t) ((SNES_SCANLINE_TIME / SNES_CLOCK_LEN) * 6 + 0.5))
#ifdef SNES_OVERCLOCK_CYCLES
#define ONE_CYCLE (overclock_cycles ? one_c : 6u)
#define SLOW_ONE_CYCLE (overclock_cycles ? slow_one_c : 8u)
#define TWO_CYCLES (overclock_cycles ? two_c : 12u)
#else
#define ONE_CYCLE (6u)
#define SLOW_ONE_CYCLE (8u)
#define TWO_CYCLES (12u)
#endif
#define SNES_TR_MASK (1u << 4)
#define SNES_TL_MASK (1u << 5)
#define SNES_X_MASK (1u << 6)
#define SNES_A_MASK (1u << 7)
#define SNES_RIGHT_MASK (1u << 8)
#define SNES_LEFT_MASK (1u << 9)
#define SNES_DOWN_MASK (1u << 10)
#define SNES_UP_MASK (1u << 11)
#define SNES_START_MASK (1u << 12)
#define SNES_SELECT_MASK (1u << 13)
#define SNES_Y_MASK (1u << 14)
#define SNES_B_MASK (1u << 15)
extern bool overclock_cycles;
extern int one_c, slow_one_c, two_c;
enum
{
SNES_MULTIPLAYER5,
SNES_JOYPAD,
SNES_MOUSE,
SNES_SUPERSCOPE,
SNES_JUSTIFIER,
SNES_JUSTIFIER_2,
SNES_MAX_CONTROLLER_OPTIONS
};
#define DEBUG_MODE_FLAG (1u << 0)
#define TRACE_FLAG (1u << 1)
#define SINGLE_STEP_FLAG (1u << 2)
#define BREAK_FLAG (1u << 3)
#define SCAN_KEYS_FLAG (1u << 4)
#define SAVE_SNAPSHOT_FLAG (1u << 5)
#define DELAYED_NMI_FLAG (1u << 6)
#define NMI_FLAG (1u << 7)
#define PROCESS_SOUND_FLAG (1u << 8)
#define FRAME_ADVANCE_FLAG (1u << 9)
#define DELAYED_NMI_FLAG2 (1u << 10)
#define IRQ_PENDING_FLAG (1u << 11)
typedef struct
{
uint32_t Flags;
bool BranchSkip;
bool NMIActive;
uint8_t IRQActive;
bool WaitingForInterrupt;
bool InDMA;
uint8_t WhichEvent;
uint8_t* PC;
uint8_t* PCBase;
uint8_t* PCAtOpcodeStart;
uint8_t* WaitAddress;
uint32_t WaitCounter;
long Cycles; /* For savestate compatibility can't change to int32_t */
long NextEvent; /* For savestate compatibility can't change to int32_t */
long V_Counter; /* For savestate compatibility can't change to int32_t */
long MemSpeed; /* For savestate compatibility can't change to int32_t */
long MemSpeedx2; /* For savestate compatibility can't change to int32_t */
long FastROMSpeed; /* For savestate compatibility can't change to int32_t */
uint32_t SaveStateVersion;
bool SRAMModified;
uint32_t NMITriggerPoint;
bool UNUSED2;
bool TriedInterleavedMode2;
uint32_t NMICycleCount;
uint32_t IRQCycleCount;
} SCPUState;
#define HBLANK_START_EVENT 0u
#define HBLANK_END_EVENT 1u
#define HTIMER_BEFORE_EVENT 2u
#define HTIMER_AFTER_EVENT 3u
#define NO_EVENT 4u
typedef struct
{
/* CPU options */
bool APUEnabled;
bool Shutdown;
int32_t H_Max;
int32_t HBlankStart;
int32_t CyclesPercentage;
bool DisableIRQ;
/* Joystick options */
bool JoystickEnabled;
/* ROM timing options (see also H_Max above) */
bool ForcePAL;
bool ForceNTSC;
bool PAL;
uint32_t FrameTimePAL;
uint32_t FrameTimeNTSC;
uint32_t FrameTime;
/* ROM image options */
bool ForceLoROM;
bool ForceHiROM;
bool ForceHeader;
bool ForceNoHeader;
bool ForceInterleaved;
bool ForceInterleaved2;
bool ForceNotInterleaved;
/* Peripheral options */
bool ForceSuperFX;
bool ForceNoSuperFX;
bool ForceDSP1;
bool ForceNoDSP1;
bool ForceSA1;
bool ForceNoSA1;
bool ForceC4;
bool ForceNoC4;
bool ForceSDD1;
bool ForceNoSDD1;
bool MultiPlayer5;
bool Mouse;
bool SuperScope;
bool SRTC;
uint32_t ControllerOption;
bool MultiPlayer5Master;
bool SuperScopeMaster;
bool MouseMaster;
bool SuperFX;
bool DSP1Master;
bool SA1;
bool C4;
bool SDD1;
bool SPC7110;
bool SPC7110RTC;
bool OBC1;
uint8_t DSP;
/* Sound options */
uint32_t SoundPlaybackRate;
#ifdef USE_BLARGG_APU
uint32_t SoundInputRate;
#endif
bool TraceSoundDSP;
bool EightBitConsoleSound; /* due to caching, this needs S9xSetEightBitConsoleSound() */
int32_t SoundBufferSize;
int32_t SoundMixInterval;
bool SoundEnvelopeHeightReading;
bool DisableSoundEcho;
bool DisableMasterVolume;
bool SoundSync;
bool InterpolatedSound;
bool ThreadSound;
bool Mute;
bool NextAPUEnabled;
/* Others */
bool ApplyCheats;
/* Fixes for individual games */
bool StarfoxHack;
bool WinterGold;
bool BS; /* Japanese Satellite System games. */
bool JustifierMaster;
bool Justifier;
bool SecondJustifier;
int8_t SETA;
bool HardDisableAudio;
} SSettings;
extern SSettings Settings;
extern SCPUState CPU;
extern char String [513];
void S9xSetPause(uint32_t mask);
void S9xClearPause(uint32_t mask);
#endif
#include "src/snes9x.h"
#include "src/soundux.h"
#include "src/memmap.h"
#include "src/apu.h"
#include "src/display.h"
#include "src/gfx.h"
#include "src/cpuexec.h"
#include "src/srtc.h"
#include "src/save.h"

View File

@ -0,0 +1,229 @@
/* This file is part of Snes9x. See LICENSE file. */
#ifndef _SNES9X_H_
#define _SNES9X_H_
#include <stdlib.h>
#include <stdint.h>
#include "port.h"
#include "65c816.h"
#define ROM_NAME_LEN 22
/* SNES screen width and height */
#define SNES_WIDTH 256
#define SNES_HEIGHT 224
#define SNES_HEIGHT_EXTENDED 239
#define SNES_SPRITE_TILE_PER_LINE 34
#define SNES_MAX_NTSC_VCOUNTER 262
#define SNES_MAX_PAL_VCOUNTER 312
#define SNES_HCOUNTER_MAX 341
#define SPC700_TO_65C816_RATIO 2
#define AUTO_FRAMERATE 200
/* NTSC master clock signal 21.47727MHz
* PPU: master clock / 4
* 1 / PPU clock * 342 -> 63.695us
* 63.695us / (1 / 3.579545MHz) -> 228 cycles per scanline
* From Earth Worm Jim: APU executes an average of 65.14285714 cycles per
* scanline giving an APU clock speed of 1.022731096MHz */
/* PAL master clock signal 21.28137MHz
* PPU: master clock / 4
* 1 / PPU clock * 342 -> 64.281us
* 64.281us / (1 / 3.546895MHz) -> 228 cycles per scanline. */
#define SNES_SCANLINE_TIME (63.695e-6)
#define SNES_CLOCK_SPEED (3579545u)
#define SNES_CLOCK_LEN (1.0 / SNES_CLOCK_SPEED)
#define SNES_CYCLES_PER_SCANLINE ((uint32_t) ((SNES_SCANLINE_TIME / SNES_CLOCK_LEN) * 6 + 0.5))
#ifdef SNES_OVERCLOCK_CYCLES
#define ONE_CYCLE (overclock_cycles ? one_c : 6u)
#define SLOW_ONE_CYCLE (overclock_cycles ? slow_one_c : 8u)
#define TWO_CYCLES (overclock_cycles ? two_c : 12u)
#else
#define ONE_CYCLE (6u)
#define SLOW_ONE_CYCLE (8u)
#define TWO_CYCLES (12u)
#endif
#define SNES_TR_MASK (1u << 4)
#define SNES_TL_MASK (1u << 5)
#define SNES_X_MASK (1u << 6)
#define SNES_A_MASK (1u << 7)
#define SNES_RIGHT_MASK (1u << 8)
#define SNES_LEFT_MASK (1u << 9)
#define SNES_DOWN_MASK (1u << 10)
#define SNES_UP_MASK (1u << 11)
#define SNES_START_MASK (1u << 12)
#define SNES_SELECT_MASK (1u << 13)
#define SNES_Y_MASK (1u << 14)
#define SNES_B_MASK (1u << 15)
extern bool overclock_cycles;
extern int one_c, slow_one_c, two_c;
enum
{
SNES_MULTIPLAYER5,
SNES_JOYPAD,
SNES_MOUSE,
SNES_SUPERSCOPE,
SNES_JUSTIFIER,
SNES_JUSTIFIER_2,
SNES_MAX_CONTROLLER_OPTIONS
};
#define DEBUG_MODE_FLAG (1u << 0)
#define TRACE_FLAG (1u << 1)
#define SINGLE_STEP_FLAG (1u << 2)
#define BREAK_FLAG (1u << 3)
#define SCAN_KEYS_FLAG (1u << 4)
#define SAVE_SNAPSHOT_FLAG (1u << 5)
#define DELAYED_NMI_FLAG (1u << 6)
#define NMI_FLAG (1u << 7)
#define PROCESS_SOUND_FLAG (1u << 8)
#define FRAME_ADVANCE_FLAG (1u << 9)
#define DELAYED_NMI_FLAG2 (1u << 10)
#define IRQ_PENDING_FLAG (1u << 11)
typedef struct
{
uint32_t Flags;
bool BranchSkip;
bool NMIActive;
uint8_t IRQActive;
bool WaitingForInterrupt;
bool InDMA;
uint8_t WhichEvent;
uint8_t* PC;
uint8_t* PCBase;
uint8_t* PCAtOpcodeStart;
uint8_t* WaitAddress;
uint32_t WaitCounter;
long Cycles; /* For savestate compatibility can't change to int32_t */
long NextEvent; /* For savestate compatibility can't change to int32_t */
long V_Counter; /* For savestate compatibility can't change to int32_t */
long MemSpeed; /* For savestate compatibility can't change to int32_t */
long MemSpeedx2; /* For savestate compatibility can't change to int32_t */
long FastROMSpeed; /* For savestate compatibility can't change to int32_t */
uint32_t SaveStateVersion;
bool SRAMModified;
uint32_t NMITriggerPoint;
bool UNUSED2;
bool TriedInterleavedMode2;
uint32_t NMICycleCount;
uint32_t IRQCycleCount;
} SCPUState;
#define HBLANK_START_EVENT 0u
#define HBLANK_END_EVENT 1u
#define HTIMER_BEFORE_EVENT 2u
#define HTIMER_AFTER_EVENT 3u
#define NO_EVENT 4u
typedef struct
{
/* CPU options */
bool APUEnabled;
bool Shutdown;
int32_t H_Max;
int32_t HBlankStart;
int32_t CyclesPercentage;
bool DisableIRQ;
/* Joystick options */
bool JoystickEnabled;
/* ROM timing options (see also H_Max above) */
bool ForcePAL;
bool ForceNTSC;
bool PAL;
uint32_t FrameTimePAL;
uint32_t FrameTimeNTSC;
uint32_t FrameTime;
/* ROM image options */
bool ForceLoROM;
bool ForceHiROM;
bool ForceHeader;
bool ForceNoHeader;
bool ForceInterleaved;
bool ForceInterleaved2;
bool ForceNotInterleaved;
/* Peripheral options */
bool ForceSuperFX;
bool ForceNoSuperFX;
bool ForceDSP1;
bool ForceNoDSP1;
bool ForceSA1;
bool ForceNoSA1;
bool ForceC4;
bool ForceNoC4;
bool ForceSDD1;
bool ForceNoSDD1;
bool MultiPlayer5;
bool Mouse;
bool SuperScope;
bool SRTC;
uint32_t ControllerOption;
bool MultiPlayer5Master;
bool SuperScopeMaster;
bool MouseMaster;
bool SuperFX;
bool DSP1Master;
bool SA1;
bool C4;
bool SDD1;
bool SPC7110;
bool SPC7110RTC;
bool OBC1;
uint8_t DSP;
/* Sound options */
uint32_t SoundPlaybackRate;
#ifdef USE_BLARGG_APU
uint32_t SoundInputRate;
#endif
bool TraceSoundDSP;
bool EightBitConsoleSound; /* due to caching, this needs S9xSetEightBitConsoleSound() */
int32_t SoundBufferSize;
int32_t SoundMixInterval;
bool SoundEnvelopeHeightReading;
bool DisableSoundEcho;
bool DisableMasterVolume;
bool SoundSync;
bool InterpolatedSound;
bool ThreadSound;
bool Mute;
bool NextAPUEnabled;
/* Others */
bool ApplyCheats;
/* Fixes for individual games */
bool StarfoxHack;
bool WinterGold;
bool BS; /* Japanese Satellite System games. */
bool JustifierMaster;
bool Justifier;
bool SecondJustifier;
int8_t SETA;
bool HardDisableAudio;
} SSettings;
extern SSettings Settings;
extern SCPUState CPU;
extern char String [513];
void S9xSetPause(uint32_t mask);
void S9xClearPause(uint32_t mask);
#endif

View File

@ -1,22 +1,9 @@
#include <rg_system.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
#include "shared.h"
#include <snes9x.h>
#include <math.h>
#include "../components/snes9x/snes9x.h"
#include "../components/snes9x/soundux.h"
#include "../components/snes9x/memmap.h"
#include "../components/snes9x/apu.h"
#include "../components/snes9x/display.h"
#include "../components/snes9x/gfx.h"
#include "../components/snes9x/cpuexec.h"
#include "../components/snes9x/srtc.h"
#include "../components/snes9x/save.h"
#include "keymap_snes.h"
#include "shared.h"
#define AUDIO_LOW_PASS_RANGE ((60 * 65536) / 100)